Esempio n. 1
0
        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);
 }
Esempio n. 3
0
        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();
            }
        }
Esempio n. 4
0
        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();
            }
        }