public void NewAzureVMProcess() { NewQuickVM.NewQuickVM variable = null; string serviceName; string instanceSize; Uri uri; string name; string str; Action<string> action = null; SubscriptionData currentSubscription = CmdletSubscriptionExtensions.GetCurrentSubscription(this); CloudStorageAccount currentStorageAccount = null; try { currentStorageAccount = currentSubscription.GetCurrentStorageAccount(base.Channel); } catch (EndpointNotFoundException endpointNotFoundException) { throw new ArgumentException("CurrentStorageAccount is not accessible. Ensure the current storage account is accessible and in the same location or affinity group as your cloud service."); } if (currentStorageAccount != null) { NewQuickVM.NewQuickVM variable1 = variable; PersistentVMRole persistentVMRole = new PersistentVMRole(); persistentVMRole.AvailabilitySetName = this.AvailabilitySetName; persistentVMRole.ConfigurationSets = new Collection<ConfigurationSet>(); persistentVMRole.DataVirtualHardDisks = new Collection<DataVirtualHardDisk>(); PersistentVMRole persistentVMRole1 = persistentVMRole; if (string.IsNullOrEmpty(this.Name)) { serviceName = this.ServiceName; } else { serviceName = this.Name; } persistentVMRole1.RoleName = serviceName; PersistentVMRole persistentVMRole2 = persistentVMRole; if (string.IsNullOrEmpty(this.InstanceSize)) { instanceSize = null; } else { instanceSize = this.InstanceSize; } persistentVMRole2.RoleSize = instanceSize; persistentVMRole.RoleType = "PersistentVMRole"; persistentVMRole.Label = ServiceManagementHelper.EncodeToBase64String(this.ServiceName); variable1.vm = persistentVMRole; PersistentVMRole persistentVMRole3 = uri1; OSVirtualHardDisk oSVirtualHardDisk = new OSVirtualHardDisk(); oSVirtualHardDisk.DiskName = null; oSVirtualHardDisk.SourceImageName = this.ImageName; OSVirtualHardDisk oSVirtualHardDisk1 = oSVirtualHardDisk; if (string.IsNullOrEmpty(this.MediaLocation)) { uri = null; } else { uri = new Uri(this.MediaLocation); } oSVirtualHardDisk1.MediaLink = uri; oSVirtualHardDisk.HostCaching = this.HostCaching; persistentVMRole3.OSVirtualHardDisk = oSVirtualHardDisk; if (oSVirtualHardDisk1.MediaLink == null && string.IsNullOrEmpty(oSVirtualHardDisk1.DiskName)) { DateTime now = DateTime.Now; object[] roleName = new object[6]; roleName[0] = this.ServiceName; roleName[1] = uri1.RoleName; roleName[2] = now.Year; roleName[3] = now.Month; roleName[4] = now.Day; roleName[5] = now.Millisecond; string str1 = string.Format("{0}-{1}-{2}-{3}-{4}-{5}.vhd", roleName); string absoluteUri = currentStorageAccount.BlobEndpoint.AbsoluteUri; if (!absoluteUri.EndsWith("/")) { absoluteUri = string.Concat(absoluteUri, "/"); } oSVirtualHardDisk1.MediaLink = new Uri(string.Concat(absoluteUri, "vhds/", str1)); } NetworkConfigurationSet networkConfigurationSet = new NetworkConfigurationSet(); networkConfigurationSet.InputEndpoints = new Collection<InputEndpoint>(); if (this.SubnetNames != null) { networkConfigurationSet.SubnetNames = new SubnetNamesCollection(); string[] subnetNames = this.SubnetNames; for (int i = 0; i < (int)subnetNames.Length; i++) { string str2 = subnetNames[i]; networkConfigurationSet.SubnetNames.Add(str2); } } if (!base.ParameterSetName.Equals("Windows", StringComparison.OrdinalIgnoreCase)) { LinuxProvisioningConfigurationSet linuxProvisioningConfigurationSet = new LinuxProvisioningConfigurationSet(); LinuxProvisioningConfigurationSet linuxProvisioningConfigurationSet1 = linuxProvisioningConfigurationSet; if (string.IsNullOrEmpty(this.Name)) { name = this.ServiceName; } else { name = this.Name; } linuxProvisioningConfigurationSet1.HostName = name; linuxProvisioningConfigurationSet.UserName = this.LinuxUser; linuxProvisioningConfigurationSet.UserPassword = this.Password; linuxProvisioningConfigurationSet.DisableSshPasswordAuthentication = new bool?(false); if (this.SSHKeyPairs != null && this.SSHKeyPairs.Count > 0 || this.SSHPublicKeys != null && this.SSHPublicKeys.Count > 0) { linuxProvisioningConfigurationSet.SSH = new LinuxProvisioningConfigurationSet.SSHSettings(); linuxProvisioningConfigurationSet.SSH.PublicKeys = this.SSHPublicKeys; linuxProvisioningConfigurationSet.SSH.KeyPairs = this.SSHKeyPairs; } InputEndpoint inputEndpoint = new InputEndpoint(); inputEndpoint.LocalPort = 22; inputEndpoint.Protocol = "tcp"; inputEndpoint.Name = "SSH"; networkConfigurationSet.InputEndpoints.Add(inputEndpoint); uri1.ConfigurationSets.Add(linuxProvisioningConfigurationSet); uri1.ConfigurationSets.Add(networkConfigurationSet); } else { WindowsProvisioningConfigurationSet windowsProvisioningConfigurationSet = new WindowsProvisioningConfigurationSet(); windowsProvisioningConfigurationSet.AdminPassword = this.Password; WindowsProvisioningConfigurationSet windowsProvisioningConfigurationSet1 = windowsProvisioningConfigurationSet; if (string.IsNullOrEmpty(this.Name)) { str = this.ServiceName; } else { str = this.Name; } windowsProvisioningConfigurationSet1.ComputerName = str; windowsProvisioningConfigurationSet.EnableAutomaticUpdates = new bool?(true); windowsProvisioningConfigurationSet.ResetPasswordOnFirstLogon = false; windowsProvisioningConfigurationSet.StoredCertificateSettings = this.Certificates; InputEndpoint inputEndpoint1 = new InputEndpoint(); inputEndpoint1.LocalPort = 0xd3d; inputEndpoint1.Protocol = "tcp"; inputEndpoint1.Name = "RemoteDesktop"; networkConfigurationSet.InputEndpoints.Add(inputEndpoint1); uri1.ConfigurationSets.Add(windowsProvisioningConfigurationSet); uri1.ConfigurationSets.Add(networkConfigurationSet); } new List<string>(); Operation operation = null; bool flag = this.DoesCloudServiceExist(this.ServiceName); using (OperationContextScope operationContextScope = new OperationContextScope((IContextChannel)base.Channel)) { try { DateTime dateTime = DateTime.Now; DateTime universalTime = dateTime.ToUniversalTime(); string str3 = string.Format("Implicitly created hosted service{0}", universalTime.ToString("yyyy-MM-dd HH:mm")); if (!string.IsNullOrEmpty(this.Location) || !string.IsNullOrEmpty(this.AffinityGroup) || !string.IsNullOrEmpty(this.VNetName) && !flag) { CreateHostedServiceInput createHostedServiceInput = new CreateHostedServiceInput(); createHostedServiceInput.AffinityGroup = this.AffinityGroup; createHostedServiceInput.Location = this.Location; createHostedServiceInput.ServiceName = this.ServiceName; createHostedServiceInput.Description = str3; createHostedServiceInput.Label = ServiceManagementHelper.EncodeToBase64String(this.ServiceName); CmdletExtensions.WriteVerboseOutputForObject(this, createHostedServiceInput); base.RetryCall((string s) => base.Channel.CreateHostedService(s, createHostedServiceInput)); Operation operation1 = base.WaitForOperation(string.Concat(base.CommandRuntime.ToString(), " - Create Cloud Service")); ManagementOperationContext managementOperationContext = new ManagementOperationContext(); managementOperationContext.set_OperationDescription(string.Concat(base.CommandRuntime.ToString(), " - Create Cloud Service")); managementOperationContext.set_OperationId(operation1.OperationTrackingId); managementOperationContext.set_OperationStatus(operation1.Status); ManagementOperationContext managementOperationContext1 = managementOperationContext; base.WriteObject(managementOperationContext1, true); } } catch (CommunicationException communicationException1) { CommunicationException communicationException = communicationException1; this.WriteErrorDetails(communicationException); return; } } if (operation == null || string.Compare(operation.Status, "Failed", StringComparison.OrdinalIgnoreCase) != 0) { if (base.CurrentDeployment != null) { if (this.VNetName != null || this.DnsSettings != null) { base.WriteWarning("VNetName or DnsSettings can only be specified on new deployments."); } } else { using (OperationContextScope operationContextScope1 = new OperationContextScope((IContextChannel)base.Channel)) { try { Deployment deployment = new Deployment(); deployment.DeploymentSlot = "Production"; deployment.Name = this.ServiceName; deployment.Label = this.ServiceName; List<Role> roles = new List<Role>(); roles.Add(uri1); deployment.RoleList = new RoleList(roles); deployment.VirtualNetworkName = this.VNetName; Deployment dnsSetting = deployment; if (this.DnsSettings != null) { dnsSetting.Dns = new DnsSettings(); dnsSetting.Dns.DnsServers = new DnsServerList(); DnsServer[] dnsSettings = this.DnsSettings; for (int j = 0; j < (int)dnsSettings.Length; j++) { DnsServer dnsServer = dnsSettings[j]; dnsSetting.Dns.DnsServers.Add(dnsServer); } } CmdletExtensions.WriteVerboseOutputForObject(this, dnsSetting); base.RetryCall((string s) => base.Channel.CreateDeployment(s, this.ServiceName, dnsSetting)); Operation operation2 = base.WaitForOperation(string.Concat(base.CommandRuntime.ToString(), " - Create Deployment with VM ", uri1.RoleName)); ManagementOperationContext managementOperationContext2 = new ManagementOperationContext(); managementOperationContext2.set_OperationDescription(string.Concat(base.CommandRuntime.ToString(), " - Create Deployment with VM ", uri1.RoleName)); managementOperationContext2.set_OperationId(operation2.OperationTrackingId); managementOperationContext2.set_OperationStatus(operation2.Status); ManagementOperationContext managementOperationContext3 = managementOperationContext2; base.WriteObject(managementOperationContext3, true); } catch (CommunicationException communicationException3) { CommunicationException communicationException2 = communicationException3; if (communicationException2 as EndpointNotFoundException == null) { this.WriteErrorDetails(communicationException2); return; } else { throw new Exception("Cloud Service does not exist. Specify -Location or -Affinity group to create one."); } } this.CreatedDeployment = true; } } if (operation == null || string.Compare(operation.Status, "Failed", StringComparison.OrdinalIgnoreCase) != 0) { if (!this.CreatedDeployment) { using (OperationContextScope operationContextScope2 = new OperationContextScope((IContextChannel)base.Channel)) { try { CmdletExtensions.WriteVerboseOutputForObject(this, uri1); NewQuickVM newQuickVM = this; if (action == null) { action = (string s) => base.Channel.AddRole(s, this.ServiceName, this.ServiceName, uri1); } ((CmdletBase<IServiceManagement>)newQuickVM).RetryCall(action); Operation operation3 = base.WaitForOperation(string.Concat(base.CommandRuntime.ToString(), " - Create VM ", uri1.RoleName)); ManagementOperationContext managementOperationContext4 = new ManagementOperationContext(); managementOperationContext4.set_OperationDescription(string.Concat(base.CommandRuntime.ToString(), " - Create VM ", uri1.RoleName)); managementOperationContext4.set_OperationId(operation3.OperationTrackingId); managementOperationContext4.set_OperationStatus(operation3.Status); ManagementOperationContext managementOperationContext5 = managementOperationContext4; base.WriteObject(managementOperationContext5, true); } catch (CommunicationException communicationException5) { CommunicationException communicationException4 = communicationException5; this.WriteErrorDetails(communicationException4); return; } } } return; } else { return; } } return; } else { throw new ArgumentException("CurrentStorageAccount is not set. Use Set-AzureSubscription subname -CurrentStorageAccount storageaccount to set it."); } }
protected void SetProvisioningConfiguration(WindowsProvisioningConfigurationSet provisioningConfiguration) { provisioningConfiguration.AdminPassword = this.Password; SwitchParameter resetPasswordOnFirstLogon = this.ResetPasswordOnFirstLogon; provisioningConfiguration.ResetPasswordOnFirstLogon = resetPasswordOnFirstLogon.IsPresent; provisioningConfiguration.StoredCertificateSettings = this.Certificates; SwitchParameter disableAutomaticUpdates = this.DisableAutomaticUpdates; provisioningConfiguration.EnableAutomaticUpdates = new bool?(!disableAutomaticUpdates.IsPresent); if (!string.IsNullOrEmpty(this.TimeZone)) { provisioningConfiguration.TimeZone = this.TimeZone; } if (base.ParameterSetName == "WindowsDomain") { WindowsProvisioningConfigurationSet.DomainJoinSettings domainJoinSetting = new WindowsProvisioningConfigurationSet.DomainJoinSettings(); WindowsProvisioningConfigurationSet.DomainJoinCredentials domainJoinCredential = new WindowsProvisioningConfigurationSet.DomainJoinCredentials(); domainJoinCredential.Username = this.DomainUserName; domainJoinCredential.Password = this.DomainPassword; domainJoinCredential.Domain = this.Domain; domainJoinSetting.Credentials = domainJoinCredential; domainJoinSetting.MachineObjectOU = this.MachineObjectOU; domainJoinSetting.JoinDomain = this.JoinDomain; provisioningConfiguration.DomainJoin = domainJoinSetting; } }
protected override void ProcessRecord() { bool flag; bool flag1; try { base.ProcessRecord(); PersistentVM instance = this.VM.GetInstance(); SwitchParameter linux = base.Linux; if (!linux.IsPresent) { WindowsProvisioningConfigurationSet windowsProvisioningConfigurationSet = instance.ConfigurationSets.OfType<WindowsProvisioningConfigurationSet>().SingleOrDefault<WindowsProvisioningConfigurationSet>(); if (windowsProvisioningConfigurationSet == null) { windowsProvisioningConfigurationSet = new WindowsProvisioningConfigurationSet(); instance.ConfigurationSets.Add(windowsProvisioningConfigurationSet); } base.SetProvisioningConfiguration(windowsProvisioningConfigurationSet); windowsProvisioningConfigurationSet.ComputerName = instance.RoleName; SwitchParameter noRDPEndpoint = base.NoRDPEndpoint; if (!noRDPEndpoint.IsPresent) { NetworkConfigurationSet networkConfigurationSet = instance.ConfigurationSets.OfType<NetworkConfigurationSet>().SingleOrDefault<NetworkConfigurationSet>(); if (networkConfigurationSet == null) { networkConfigurationSet = new NetworkConfigurationSet(); instance.ConfigurationSets.Add(networkConfigurationSet); } if (networkConfigurationSet.InputEndpoints == null) { networkConfigurationSet.InputEndpoints = new Collection<InputEndpoint>(); } foreach (InputEndpoint inputEndpoint in networkConfigurationSet.InputEndpoints) { if (string.Compare(inputEndpoint.Name, "RDP", StringComparison.OrdinalIgnoreCase) != 0 && inputEndpoint.LocalPort != 0xd3d) { continue; } flag1 = false; int? nullable = null; inputEndpoint.Port = nullable; break; } if (flag1) { InputEndpoint inputEndpoint1 = new InputEndpoint(); inputEndpoint1.LocalPort = 0xd3d; inputEndpoint1.Protocol = "tcp"; inputEndpoint1.Name = "RDP"; networkConfigurationSet.InputEndpoints.Add(inputEndpoint1); } } } else { LinuxProvisioningConfigurationSet linuxProvisioningConfigurationSet = instance.ConfigurationSets.OfType<LinuxProvisioningConfigurationSet>().SingleOrDefault<LinuxProvisioningConfigurationSet>(); if (linuxProvisioningConfigurationSet == null) { linuxProvisioningConfigurationSet = new LinuxProvisioningConfigurationSet(); instance.ConfigurationSets.Add(linuxProvisioningConfigurationSet); } base.SetProvisioningConfiguration(linuxProvisioningConfigurationSet); linuxProvisioningConfigurationSet.HostName = instance.RoleName; SwitchParameter disableSSH = base.DisableSSH; if (disableSSH.IsPresent) { SwitchParameter noSSHEndpoint = base.NoSSHEndpoint; if (!noSSHEndpoint.IsPresent) { goto Label0; } } NetworkConfigurationSet inputEndpoints = instance.ConfigurationSets.OfType<NetworkConfigurationSet>().SingleOrDefault<NetworkConfigurationSet>(); if (inputEndpoints == null) { inputEndpoints = new NetworkConfigurationSet(); inputEndpoints.InputEndpoints = new Collection<InputEndpoint>(); instance.ConfigurationSets.Add(inputEndpoints); } foreach (InputEndpoint inputEndpoint2 in inputEndpoints.InputEndpoints) { if (string.Compare(inputEndpoint2.Name, "SSH", StringComparison.OrdinalIgnoreCase) != 0 && inputEndpoint2.LocalPort != 22) { continue; } flag = false; int? nullable1 = null; inputEndpoint2.Port = nullable1; break; } if (flag) { InputEndpoint inputEndpoint3 = new InputEndpoint(); inputEndpoint3.LocalPort = 22; inputEndpoint3.Protocol = "tcp"; inputEndpoint3.Name = "SSH"; inputEndpoints.InputEndpoints.Add(inputEndpoint3); } } Label0: CmdletExtensions.WriteVerboseOutputForObject(this, this.VM); base.WriteObject(this.VM, true); } catch (Exception exception1) { Exception exception = exception1; base.WriteError(new ErrorRecord(exception, string.Empty, ErrorCategory.CloseError, null)); } }