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); } }
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); }