-Allow site value to disable vcenter autojoin
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@8008 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		@@ -43,6 +43,7 @@ my $currkey;
 | 
			
		||||
my $requester;
 | 
			
		||||
my $viavcenter;
 | 
			
		||||
my $viavcenterbyhyp;
 | 
			
		||||
my $vcenterautoconnect=1;
 | 
			
		||||
my $vmwaresdkdetect = eval {
 | 
			
		||||
    require VMware::VIRuntime;
 | 
			
		||||
    VMware::VIRuntime->import();
 | 
			
		||||
@@ -297,6 +298,13 @@ sub process_request {
 | 
			
		||||
		if ($ref and $ref->{value}) {
 | 
			
		||||
			$usehostnamesforvcenter = $ref->{value};
 | 
			
		||||
		}
 | 
			
		||||
		(my $ref) = $sitetab->getAttribs({key => 'vcenterautoconnect'}, 'value');
 | 
			
		||||
		if ($ref and $ref->{value}) {
 | 
			
		||||
			$vcenterautoconnect = $ref->{value};
 | 
			
		||||
            if ($vcenterautoconnect =~ /^n/ or $vcenterautoconnect =~ /^dis/) {
 | 
			
		||||
                $vcenterautoconnect=0;
 | 
			
		||||
            }
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -2758,7 +2766,9 @@ sub validate_vcenter_prereqs { #Communicate with vCenter and ensure this host is
 | 
			
		||||
    if ($hview) { 
 | 
			
		||||
        if ($hview->{'summary.config.name'} =~ /^$hyp(?:\.|\z)/ or $hview->{'summary.config.name'} =~ /^$name(?:\.|\z)/) { #Looks good, call the dependent function after declaring the state of vcenter to hypervisor as good
 | 
			
		||||
            if ($hview->{'summary.runtime.connectionState'}->val eq 'connected') {
 | 
			
		||||
                enable_vmotion(hypname=>$hyp,hostview=>$hview,conn=>$hyphash{$hyp}->{vcenter}->{conn});
 | 
			
		||||
                if ($vcenterautoconnect) { #admin has requested manual vcenter management, don't mess with vmotion settings
 | 
			
		||||
                    enable_vmotion(hypname=>$hyp,hostview=>$hview,conn=>$hyphash{$hyp}->{vcenter}->{conn});
 | 
			
		||||
                }
 | 
			
		||||
                $vcenterhash{$vcenter}->{goodhyps}->{$hyp} = 1;
 | 
			
		||||
                $depfun->($depargs);
 | 
			
		||||
                if ($hview->parent->type eq 'ClusterComputeResource') { #if it is in a cluster, we can directly remove it
 | 
			
		||||
@@ -2769,7 +2779,7 @@ sub validate_vcenter_prereqs { #Communicate with vCenter and ensure this host is
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                return 1;
 | 
			
		||||
            } else {
 | 
			
		||||
            } elsif ($vcenterautoconnect) { #if allowed autoconnect and the current view seems corrupt, throw it away and rejoin
 | 
			
		||||
                my $ref_to_delete;
 | 
			
		||||
                if ($hview->parent->type eq 'ClusterComputeResource') { #We are allowed to specifically kill a host in a cluster
 | 
			
		||||
                    $ref_to_delete = $hview->{mo_ref};
 | 
			
		||||
@@ -2792,9 +2802,19 @@ sub validate_vcenter_prereqs { #Communicate with vCenter and ensure this host is
 | 
			
		||||
#               $running_tasks{$task}->{conn} = $hyphash{$hyp}->{vcenter}->{conn};
 | 
			
		||||
#               $running_tasks{$task}->{data} = { depfun => $depfun, depargs => $depargs, conn=>  $hyphash{$hyp}->{vcenter}->{conn}, connspec=>$connspec,hostview=>$hview,hypname=>$hyp,vcenter=>$vcenter };
 | 
			
		||||
#ADDHOST
 | 
			
		||||
            } else {
 | 
			
		||||
            	xCAT::SvrUtils::sendmsg([1,": Failed to communicate with $hyp, vCenter reports it as in inventory but not connected and xCAT is set to not autojoin"], $output_handler);
 | 
			
		||||
                    $hyphash{$hyp}->{conn} = undef;
 | 
			
		||||
                    return "failed";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    unless ($vcenterautojoin) {
 | 
			
		||||
            	xCAT::SvrUtils::sendmsg([1,": Failed to communicate with $hyp, vCenter does not have it in inventory and xCAT is set to not autojoin"], $output_handler);
 | 
			
		||||
                    $hyphash{$hyp}->{conn} = undef;
 | 
			
		||||
                    return "failed";
 | 
			
		||||
            }
 | 
			
		||||
    }
 | 
			
		||||
    #If still in function, haven't found any likely host entries, make a new one
 | 
			
		||||
    unless ($hyphash{$hyp}->{offline}) {
 | 
			
		||||
        eval {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user