public async Task SetAffinity(string isolationTag, Vm[] vms, bool start) { if (_config.IsVCenter) { var configSpec = new ClusterConfigSpec(); var affinityRuleSpec = new ClusterAffinityRuleSpec(); var clusterRuleSpec = new ClusterRuleSpec(); affinityRuleSpec.vm = vms.Select(m => m.Reference.AsReference()).ToArray(); affinityRuleSpec.name = $"Affinity#{isolationTag}"; affinityRuleSpec.enabled = true; affinityRuleSpec.enabledSpecified = true; affinityRuleSpec.mandatory = true; affinityRuleSpec.mandatorySpecified = true; clusterRuleSpec.operation = ArrayUpdateOperation.add; clusterRuleSpec.info = affinityRuleSpec; configSpec.rulesSpec = new ClusterRuleSpec[] { clusterRuleSpec }; _logger.LogDebug("setaffinity: reconfiguring cluster "); await _vim.ReconfigureCluster_TaskAsync(_res, configSpec, true); } if (start) { List <Task <Vm> > tasks = new List <Task <Vm> >(); foreach (Vm vm in vms) { tasks.Add(Start(vm.Id)); } await Task.WhenAll(tasks.ToArray()); } }
/// <summary> /// Converts the <see cref="sourceValue" /> parameter to the <see cref="destinationType" /> parameter using <see cref="formatProvider" /// /> and <see cref="ignoreCase" /> /// </summary> /// <param name="sourceValue">the value to convert into an instance of <see cref="ClusterConfigSpec" />.</param> /// <returns> /// an instance of <see cref="ClusterConfigSpec" />, or <c>null</c> if there is no suitable conversion. /// </returns> public static object ConvertFrom(dynamic sourceValue) { if (null == sourceValue) { return(null); } try { ClusterConfigSpec.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString()); } catch { // Unable to use JSON pattern } try { return(new ClusterConfigSpec { AuthorizedPublicKeyList = sourceValue.AuthorizedPublicKeyList, CertificationSigningInfo = CertificationSigningInfoTypeConverter.ConvertFrom(sourceValue.CertificationSigningInfo), ClientAuth = ClientAuthTypeConverter.ConvertFrom(sourceValue.ClientAuth), EnabledFeatureList = sourceValue.EnabledFeatureList, EncryptionStatus = sourceValue.EncryptionStatus, ExternalConfigurations = ExternalConfigurationsSpecTypeConverter.ConvertFrom(sourceValue.ExternalConfigurations), GpuDriverVersion = sourceValue.GpuDriverVersion, OperationMode = sourceValue.OperationMode, RedundancyFactor = sourceValue.RedundancyFactor, SoftwareMap = sourceValue.SoftwareMap, SupportedInformationVerbosity = sourceValue.SupportedInformationVerbosity, Timezone = sourceValue.Timezone, }); } catch { } return(null); }
public bool CreateManagedEntity() { try { cb.connect(); var itemType = GetItemType(); var itemName = GetItemName(); ManagedObjectReference folderMoRef = cb.getServiceUtil() .GetDecendentMoRef(null, "Folder", getParentName()); if (folderMoRef == null) { Console.WriteLine("Parent folder '" + getParentName() + "' not found"); } else { if (itemType.Equals("Folder")) { cb.getConnection()._service.CreateFolder( folderMoRef, itemName); Console.WriteLine("Sucessfully created '{0}' '{1}'", itemType, itemName); return true; } else if (itemType.Equals("Datacenter")) { cb.getConnection()._service.CreateDatacenter( folderMoRef, itemName); Console.WriteLine("Sucessfully created '{0}' '{1}'", itemType, itemName); return true; } else if (itemType.Equals("Cluster")) { ClusterConfigSpec clusterSpec = new ClusterConfigSpec(); cb.getConnection()._service.CreateCluster( folderMoRef, itemName, clusterSpec); Console.WriteLine("Sucessfully created '{0}' '{1}'", itemType, itemName); return true; } else if (itemType.Equals("Host-Standalone")) { HostConnectSpec hostSpec = new HostConnectSpec(); hostSpec.hostName = itemName; hostSpec.userName = getUserName(); hostSpec.password = getPassword(); hostSpec.port = getPort(); //this method will create a problem with automation hostSpec.sslThumbprint = getThumbPrint(); ComputeResourceConfigSpec configSpec = new ComputeResourceConfigSpec(); ManagedObjectReference taskMoRef = cb.getConnection()._service .AddStandaloneHost_Task(folderMoRef, hostSpec, configSpec, false, getLicense()); if (taskMoRef != null) { String status = cb.getServiceUtil().WaitForTask( taskMoRef); if (status.Equals("sucess")) { Console.WriteLine("Sucessfully created::" + itemName); } else { Console.WriteLine("Host'" + itemName + " not created::"); } } } else { Console.WriteLine("Unknown Type. Allowed types are:"); Console.WriteLine(" Host-Standalone"); Console.WriteLine(" Cluster"); Console.WriteLine(" Datacenter"); Console.WriteLine(" Folder"); } } return false; } finally { cb.disConnect(); } }
public bool CreateManagedEntity() { try { cb.connect(); var itemType = GetItemType(); var itemName = GetItemName(); ManagedObjectReference folderMoRef = cb.getServiceUtil() .GetDecendentMoRef(null, "Folder", getParentName()); if (folderMoRef == null) { Console.WriteLine("Parent folder '" + getParentName() + "' not found"); } else { if (itemType.Equals("Folder")) { cb.getConnection()._service.CreateFolder( folderMoRef, itemName); Console.WriteLine("Sucessfully created '{0}' '{1}'", itemType, itemName); return(true); } else if (itemType.Equals("Datacenter")) { cb.getConnection()._service.CreateDatacenter( folderMoRef, itemName); Console.WriteLine("Sucessfully created '{0}' '{1}'", itemType, itemName); return(true); } else if (itemType.Equals("Cluster")) { ClusterConfigSpec clusterSpec = new ClusterConfigSpec(); cb.getConnection()._service.CreateCluster( folderMoRef, itemName, clusterSpec); Console.WriteLine("Sucessfully created '{0}' '{1}'", itemType, itemName); return(true); } else if (itemType.Equals("Host-Standalone")) { HostConnectSpec hostSpec = new HostConnectSpec(); hostSpec.hostName = itemName; hostSpec.userName = getUserName(); hostSpec.password = getPassword(); hostSpec.port = getPort(); //this method will create a problem with automation hostSpec.sslThumbprint = getThumbPrint(); ComputeResourceConfigSpec configSpec = new ComputeResourceConfigSpec(); ManagedObjectReference taskMoRef = cb.getConnection()._service .AddStandaloneHost_Task(folderMoRef, hostSpec, configSpec, false, getLicense()); if (taskMoRef != null) { String status = cb.getServiceUtil().WaitForTask( taskMoRef); if (status.Equals("sucess")) { Console.WriteLine("Sucessfully created::" + itemName); } else { Console.WriteLine("Host'" + itemName + " not created::"); } } } else { Console.WriteLine("Unknown Type. Allowed types are:"); Console.WriteLine(" Host-Standalone"); Console.WriteLine(" Cluster"); Console.WriteLine(" Datacenter"); Console.WriteLine(" Folder"); } } return(false); } finally { cb.disConnect(); } }