protected override void ProcessRecord()
        {
            // initialize return object
            if (_parametersValid)
            {
                // initialize return object
                AzureParameters azureparameters = new AzureParameters()
                {
                    parameters = new AzureParameters.Parameters()
                    {
                        SubscriptionID = _subscriptionId,
                        PathToManagementCertificate  = _pathToManagementCertificate,
                        CertificateEncryptedPassword = _mgmtCertificateEncryptedPassword,
                        StorageAccountName           = _storageAccountName,
                        AffinityGroupName            = _affinityGroupName,
                        StorageAccountKey            = _storageAccountKey,
                        NumberOfNodes = 0
                    },

                    clusterready = false
                };

                WriteObject(azureparameters);
            }
            else
            {
                WriteObject(null);
            }
        }
Exemple #2
0
        protected override void ProcessRecord()
        {
            // Create Azure Service
            if (_parametersValid)
            {
                // prepare objects
                var subscription = new AzureSubscription()
                {
                    SubscriptionId        = _subscriptionId,
                    ManagementCertificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(_pathToManagementCertificate, _mgmtCertificateEncryptedPassword),
                    StorageAccount        = _storageAccountName,
                    StorageAccountKey     = _storageAccountKey
                };

                AzureCloudController controller = new AzureCloudController(subscription, _affinityGroupName);

                // check if azure service name is available
                bool available = controller.IsCloudServiceNameAvailable(_azureServiceName);

                if (!available)
                {
                    PSArgumentException ex = new PSArgumentException("Azure Service name: " + _azureServiceName + " already exists.");
                    WriteError(new ErrorRecord(ex, "Argument Exception", ErrorCategory.InvalidData, _azureServiceName));

                    return;
                }

                AzureStorageHelper      storage  = new AzureStorageHelper(subscription, _azureServiceName);
                AzureDeploymentTemplate template = new AzureDeploymentTemplate(_pathToDeploymentTemplate);


                AzureDynamicCluster cluster = new AzureDynamicCluster(storage, controller);
                cluster.Initialize(_azureServiceName, _storageAccountName, _storageAccountKey, new AzureInstanceType()
                {
                    Name = _sizeOfNodes
                }, _numberOfNodes, template);

                //create Cluster
                Console.WriteLine("Creating cluster. Please wait...");
                cluster.CreateCluster();
                Console.WriteLine("Creating cluster finished.");
                Console.WriteLine("Please wait until it is ready (may take up to 10 min.)");


                // remember Cursor possition
                int left = Console.CursorLeft;
                int top  = Console.CursorTop;

                // initialize stopwatch
                Stopwatch sw = new Stopwatch();

                sw.Start();
                while (!_serviceCreatedAndReady)
                {
                    Thread.Sleep(5000);
                    var state = cluster.GetState();
                    if (!state.ClusterReady)
                    {
                        Console.CursorLeft = left;
                        Console.CursorTop  = top;

                        Console.WriteLine("Cluster not ready:");
                        foreach (var instanceState in state.InstanceStates)
                        {
                            Console.WriteLine("Instance State = " + instanceState.AzureStateName + "          ");
                            Console.WriteLine("Instance State Details = " + (instanceState.AzureStateDetails ?? "N/A"));
                        }

                        Console.WriteLine(string.Format("Elapsed time: {0}:{1}", Math.Floor(sw.Elapsed.TotalMinutes), sw.Elapsed.ToString("ss")));
                    }
                    else
                    {
                        _serviceCreatedAndReady = true;
                        Console.WriteLine();
                        Console.WriteLine("Cluster ready!");
                    }
                }

                sw.Stop();
            }
            else
            {
                WriteObject(null);
                return;
            }

            // initialize return object
            AzureParameters azureparameters = new AzureParameters()
            {
                parameters = new AzureParameters.Parameters()
                {
                    SubscriptionID = _subscriptionId,
                    PathToManagementCertificate  = _pathToManagementCertificate,
                    CertificateEncryptedPassword = _mgmtCertificateEncryptedPassword,
                    StorageAccountName           = _storageAccountName,
                    AffinityGroupName            = _affinityGroupName,
                    StorageAccountKey            = _storageAccountKey,
                    NumberOfNodes = _numberOfNodes
                },

                clusterready = _serviceCreatedAndReady
            };

            WriteObject(azureparameters);
        }