public async Task CreatePoolAsync(
     string poolId,
     string virtualMachineSize,
     int?targetDedicated,
     string autoScaleFormula,
     bool communicationEnabled,
     string subnetId,
     CloudServiceConfigurationOptions cloudServiceConfigurationOptions,
     VirtualMachineConfigurationOptions virtualMachineConfigurationOptions,
     int maxTasksPerComputeNode,
     TimeSpan?timeout,
     StartTaskOptions startTask)
 {
     await this.Service.CreatePoolAsync(
         poolId,
         virtualMachineSize,
         targetDedicated,
         autoScaleFormula,
         communicationEnabled,
         subnetId,
         cloudServiceConfigurationOptions,
         virtualMachineConfigurationOptions,
         maxTasksPerComputeNode,
         timeout,
         startTask);
 }
Example #2
0
        /// <summary>
        /// Creates a pool.
        /// </summary>
        /// <returns></returns>
        public async Task CreatePoolAsync(
            string poolId,
            string virtualMachineSize,
            int?targetDedicated,
            string autoScaleFormula,
            bool communicationEnabled,
            string subnetId,
            CloudServiceConfigurationOptions cloudServiceConfigurationOptions,
            VirtualMachineConfigurationOptions virtualMachineConfigurationOptions,
            int maxTasksPerComputeNode,
            TimeSpan?timeout,
            StartTaskOptions startTask)
        {
            CloudPool unboundPool;

            if (cloudServiceConfigurationOptions != null)
            {
                unboundPool = this.Client.PoolOperations.CreatePool(
                    poolId,
                    virtualMachineSize: virtualMachineSize,
                    cloudServiceConfiguration: new CloudServiceConfiguration(cloudServiceConfigurationOptions.OSFamily, cloudServiceConfigurationOptions.OSVersion),
                    targetDedicated: targetDedicated);
            }
            else if (virtualMachineConfigurationOptions != null)
            {
                unboundPool = this.Client.PoolOperations.CreatePool(
                    poolId,
                    virtualMachineSize: virtualMachineSize,
                    virtualMachineConfiguration: new VirtualMachineConfiguration(
                        new ImageReference(
                            publisher: virtualMachineConfigurationOptions.Publisher,
                            offer: virtualMachineConfigurationOptions.Offer,
                            sku: virtualMachineConfigurationOptions.SkuId,
                            version: virtualMachineConfigurationOptions.Version),
                        virtualMachineConfigurationOptions.NodeAgentSkuId,
                        virtualMachineConfigurationOptions.EnableWindowsAutomaticUpdates.HasValue ? new WindowsConfiguration(virtualMachineConfigurationOptions.EnableWindowsAutomaticUpdates) : null),
                    targetDedicated: targetDedicated);
            }
            else
            {
                throw new ArgumentException("Must set cloudServiceConfiguration or virtualMachineConfiguration");
            }

            unboundPool.InterComputeNodeCommunicationEnabled = communicationEnabled;
            unboundPool.ResizeTimeout          = timeout;
            unboundPool.MaxTasksPerComputeNode = maxTasksPerComputeNode;

            if (!string.IsNullOrEmpty(subnetId))
            {
                unboundPool.NetworkConfiguration = new NetworkConfiguration
                {
                    SubnetId = subnetId
                };
            }

            if (!string.IsNullOrEmpty(autoScaleFormula))
            {
                unboundPool.AutoScaleEnabled = true;
                unboundPool.AutoScaleFormula = autoScaleFormula;
            }

            if (startTask != null)
            {
                unboundPool.StartTask = new StartTask
                {
                    CommandLine    = startTask.CommandLine,
                    RunElevated    = startTask.RunElevated,
                    ResourceFiles  = startTask.ResourceFiles.ConvertAll(f => new ResourceFile(f.BlobSource, f.FilePath)),
                    WaitForSuccess = true,
                };
            }

            await unboundPool.CommitAsync();
        }