-Add web.pm and webrun command to support xCAT web interface; webrun now can support pping and update ,but still in development
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@3578 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -157,6 +157,7 @@ ln -sf ../bin/xcatclientnnr $RPM_BUILD_ROOT/%{prefix}/bin/monadd | ||||
| ln -sf ../bin/xcatclientnnr $RPM_BUILD_ROOT/%{prefix}/bin/monrm | ||||
| ln -sf ../bin/xcatclientnnr $RPM_BUILD_ROOT/%{prefix}/bin/sinv | ||||
| ln -sf ../bin/xcatclientnnr $RPM_BUILD_ROOT/%{prefix}/bin/rollupdate | ||||
| ln -sf ../bin/xcatclientnnr $RPM_BUILD_ROOT/%{prefix}/bin/webrun | ||||
| ln -sf ../bin/xcatDBcmds $RPM_BUILD_ROOT/%{prefix}/bin/mkdsklsnode | ||||
| ln -sf ../bin/xcatDBcmds $RPM_BUILD_ROOT/%{prefix}/bin/rmdsklsnode | ||||
| ln -sf ../bin/xcatDBcmds $RPM_BUILD_ROOT/%{prefix}/bin/mknimimage | ||||
|   | ||||
							
								
								
									
										92
									
								
								xCAT-server/lib/xcat/plugins/web.pm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								xCAT-server/lib/xcat/plugins/web.pm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | ||||
| # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html | ||||
| #------------------------------------------------------- | ||||
| =head 1 | ||||
|     xCAT plugin package to handle webrun command | ||||
|  | ||||
| =cut | ||||
| #------------------------------------------------------- | ||||
|  | ||||
| package xCAT_plugin::web; | ||||
| use strict; | ||||
|  | ||||
| require xCAT::Utils; | ||||
|  | ||||
| require xCAT::MsgUtils; | ||||
|  | ||||
| use Getopt::Long; | ||||
| use Data::Dumper; | ||||
|  | ||||
|  | ||||
| sub handled_commands | ||||
| { | ||||
|     return { webrun => "web",}; | ||||
| } | ||||
|  | ||||
| #sub preprocess_request | ||||
| #{ | ||||
| #} | ||||
|  | ||||
| sub process_request | ||||
| { | ||||
|     my $request = shift; | ||||
|     my $callback = shift; | ||||
|     my $sub_req = shift; | ||||
|     my %authorized_cmds = ( | ||||
|         #command => function | ||||
|         'pping' => \&web_pping, | ||||
|         'update'=> \&web_update, | ||||
|         #'xdsh' => \&web_xdsh, | ||||
|         #THIS list needs to be updated | ||||
|     ); | ||||
|  | ||||
|     #to check whether the request is authorized or not | ||||
|     split ' ', $request->{arg}->[0]; | ||||
|     my $cmd = $_[0]; | ||||
|     if(grep { $_ eq $cmd } keys %authorized_cmds) { | ||||
|         my $func = $authorized_cmds{$cmd}; | ||||
|         $func->($request, $callback, $sub_req); | ||||
|     } | ||||
|     else { | ||||
|         $callback->({error=>"$cmd is not authorizied!\n",errorcode=>[1]}); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub web_pping { | ||||
|     my ($request, $callback, $sub_req) = @_; | ||||
|     #treat the argument as the commandline, run it and get the return message | ||||
|     my $ret = `$request->{arg}->[0]`; | ||||
|  | ||||
|     #parse the message, and use $callback to send back to the web interface | ||||
|  | ||||
|     #the message is like this: | ||||
|     #  xcat_n02: ping | ||||
|     #  xcat_n03: ping | ||||
|     #  xcat_n51: ping | ||||
|     #  xcat_n52: noping | ||||
|     my @total_stat = split '\n', $ret; | ||||
|     my $str; | ||||
|     foreach $str(@total_stat) { | ||||
|         #TODO | ||||
|         split ':', $str; | ||||
|         $callback->({node=>[{name=>[$_[0]],data=>[{contents=>[$_[1]]}]}]}); | ||||
|     } | ||||
| } | ||||
|  | ||||
| sub web_update { | ||||
|     my ($request, $callback, $sub_req) = @_; | ||||
|     #update the xcat-web rpm package  | ||||
|     #TODO | ||||
|     #Note: this is not finished now! | ||||
|     my $repo_dir = "/root/svn/xcat-core/trunk/aix-core-snap"; | ||||
|     my $REPO; | ||||
|     my @flist; | ||||
|     if( -d $repo_dir) { | ||||
|         opendir REPO, $repo_dir; | ||||
|         @flist = readdir REPO; | ||||
|     } | ||||
|     closedir REPO; | ||||
|     #get the name of xcat-web package | ||||
|     my ($file) =  grep(/^xCAT\-web/, @flist); | ||||
|  | ||||
|     system("rpm -Uvh $repo_dir/$file");#TODO:use runcmd() to replace it | ||||
| } | ||||
		Reference in New Issue
	
	Block a user