mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 03:12:30 +00:00 
			
		
		
		
	Merge pull request #1647 from bybai/xcatuirest
rest api to get network adapters and to get network adapter infor based on dev
This commit is contained in:
		| @@ -134,7 +134,7 @@ sub handle_rest_request { | ||||
| =head3  handler to list network adapters | ||||
|  | ||||
|   Subroutine to handle rest request | ||||
|   GET /localres/adapter/ | ||||
|   GET /localres/adapters/ | ||||
|  | ||||
|   Usage example: | ||||
|         This function is called from handle_rest_request, | ||||
| @@ -142,25 +142,61 @@ sub handle_rest_request { | ||||
| =cut | ||||
|  | ||||
| #------------------------------------------------------- | ||||
| sub list_adapter { | ||||
|     my ($rsp, $result, $i); | ||||
|     if (!opendir DIR, "/sys/class/net") { | ||||
|         $rsp->{data}->[0] = "Unable open /sys/class/net dir."; | ||||
|         xCAT::MsgUtils->message("E", $rsp, $::callback); | ||||
|         return 1; | ||||
|     } | ||||
|     my @dir = readdir(DIR); | ||||
|     closedir(DIR); | ||||
|     $i = 0; | ||||
|     foreach my $item (@dir) { | ||||
|         if ($item eq '.' || $item eq '..') { | ||||
|             next; | ||||
| sub list_adapters { | ||||
|     my ($rsp, $cmd, $tmpres, $vline); | ||||
|     my ($mac, $ip, $adapter, $preadapter, $samenic); | ||||
|     my (@cmdres, @origin, @eachline, @line, @result); | ||||
|         $cmd = "ip -o addr"; | ||||
|         @cmdres = xCAT::Utils->runcmd("$cmd", -1); | ||||
|         if ($::RUNCMD_RC != 0) { | ||||
|             $rsp->{data}->[0] = "Executing ip command failed."; | ||||
|             xCAT::MsgUtils->message("E", $rsp, $::callback); | ||||
|             return 1; | ||||
|         } | ||||
|         $result->[ $i++ ] = $item; | ||||
|     } | ||||
|     return $result; | ||||
|         # sort ip -o addr result | ||||
|         for (my $i=0; $i<@cmdres; $i++) { | ||||
|             @eachline = split(' ',$cmdres[$i]); | ||||
|             if ( $eachline[1] =~ "lo" ) { | ||||
|                 next; | ||||
|             } | ||||
|             $adapter = $eachline[1]; | ||||
|             $adapter =~ s/://; | ||||
|             if ( !$preadapter ) { | ||||
|                 $preadapter = $adapter; | ||||
|             } elsif ( $preadapter ne $adapter ) { | ||||
|                 $samenic->{$preadapter} = "@origin"; | ||||
|                 @origin = ""; | ||||
|                 $preadapter = $adapter; | ||||
|             } | ||||
|             push (@origin, @eachline); | ||||
|             if ( @cmdres == $i+1 ) { | ||||
|                 $samenic->{$adapter} = "@origin"; | ||||
|             } | ||||
|         } | ||||
|         # get net ip and mac | ||||
|         foreach my $key (keys %{$samenic}){ | ||||
|             $vline=${$samenic}{$key}; | ||||
|             @line = split(' ',$vline); | ||||
|             $tmpres->{'name'} = $key; | ||||
|             for (my $i=0; $i<@line; $i++) { | ||||
|  | ||||
|                 if ( $line[$i] =~ /^inet$/ ) { | ||||
|                     $ip = $line[$i+1]; | ||||
|                     $tmpres->{'ip'} = $ip; | ||||
|                 } | ||||
|  | ||||
|                 if ( $line[$i] =~ 'ether' ) { | ||||
|                     $mac = $line[$i+1]; | ||||
|                     $tmpres->{'mac'} = $mac; | ||||
|                 } | ||||
|            } | ||||
|            push (@result, $tmpres); | ||||
|        } | ||||
|     return \@result; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| #------------------------------------------------------- | ||||
|  | ||||
| =head3  handler to download credential files | ||||
|   | ||||
		Reference in New Issue
	
	Block a user