示例#1
0
        public override void ExecuteCmdlet()
        {
            VirtualMachine pendingVirtualMachine    = null;
            var            virtualMachineOperations = new VirtualMachineOperations(this.WebClientFactory);
            Guid?          jobId = Guid.Empty;

            var newVirtualMachine = new VirtualMachine()
            {
                Name               = Name,
                VMTemplateId       = Template.ID,
                LocalAdminUserName = VMCredential.UserName,
                LocalAdminPassword = ExtractSecureString(VMCredential.Password),
            };

            pendingVirtualMachine = virtualMachineOperations.Create(newVirtualMachine, out jobId);

            if (!jobId.HasValue)
            {
                throw new WAPackOperationException(Resources.CreateFailedErrorMessage);
            }
            WaitForJobCompletion(jobId);

            var createdVM = virtualMachineOperations.Read(pendingVirtualMachine.ID);

            WriteObject(createdVM);
        }
        public override void ExecuteCmdlet()
        {
            VirtualMachine pendingVirtualMachine = null;
            var virtualMachineOperations = new VirtualMachineOperations(this.WebClientFactory);
            Guid? jobId = Guid.Empty;

            var newVirtualMachine = new VirtualMachine()
            {
                Name = Name,
                VMTemplateId = Template.ID,
                UserName = VMCredential.UserName,
                Password = ExtractSecureString(VMCredential.Password),
            };

            pendingVirtualMachine = virtualMachineOperations.Create(newVirtualMachine, out jobId);

            if (!jobId.HasValue)
            {
                throw new WAPackOperationException(Resources.CreateFailedErrorMessage);
            }

            var jobInfo = new JobOperations(this.WebClientFactory).WaitOnJob(jobId.Value);
            if (jobInfo.jobStatus == JobStatusEnum.Failed)
            {
                this.WriteErrorDetails(new Exception(jobInfo.errorMessage));
            }

            var createdVM = virtualMachineOperations.Read(pendingVirtualMachine.ID);
           
            WriteObject(createdVM);
        }
示例#3
0
        public override void ExecuteCmdlet()
        {
            VirtualMachine newVirtualMachine        = null;
            var            virtualMachineOperations = new VirtualMachineOperations(this.WebClientFactory);
            Guid?          jobId = Guid.Empty;

            var virtualNetworkAdaptersWithVNet = this.CustomizeVnaInput();

            if (this.ParameterSetName == WAPackCmdletParameterSets.CreateWindowsVMFromTemplate)
            {
                newVirtualMachine = new VirtualMachine()
                {
                    Name                          = Name,
                    VMTemplateId                  = Template.ID,
                    LocalAdminUserName            = VMCredential.UserName,
                    LocalAdminPassword            = ExtractSecureString(VMCredential.Password),
                    NewVirtualNetworkAdapterInput = virtualNetworkAdaptersWithVNet,
                    ProductKey                    = ProductKey,
                };
            }
            else if (this.ParameterSetName == WAPackCmdletParameterSets.CreateLinuxVMFromTemplate)
            {
                newVirtualMachine = new VirtualMachine()
                {
                    Name                           = Name,
                    VMTemplateId                   = Template.ID,
                    LocalAdminUserName             = VMCredential.UserName,
                    LocalAdminPassword             = ExtractSecureString(VMCredential.Password),
                    NewVirtualNetworkAdapterInput  = virtualNetworkAdaptersWithVNet,
                    LinuxAdministratorSSHKeyString = AdministratorSSHKey
                };
            }
            else if (this.ParameterSetName == WAPackCmdletParameterSets.CreateVMFromOSDisks)
            {
                newVirtualMachine = new VirtualMachine()
                {
                    Name = Name,
                    HardwareProfileId             = VMSizeProfile.ID,
                    VirtualHardDiskId             = OSDisk.ID,
                    NewVirtualNetworkAdapterInput = virtualNetworkAdaptersWithVNet
                };
            }

            var createdVirtualMachine = virtualMachineOperations.Create(newVirtualMachine, out jobId);

            if (!jobId.HasValue)
            {
                throw new WAPackOperationException(Resources.CreateFailedErrorMessage);
            }

            var jobInfo = new JobOperations(this.WebClientFactory).WaitOnJob(jobId.Value);

            if (jobInfo.jobStatus == JobStatusEnum.Failed)
            {
                this.WriteErrorDetails(new Exception(jobInfo.errorMessage));
            }

            createdVirtualMachine = virtualMachineOperations.Read(createdVirtualMachine.ID);
            WriteObject(createdVirtualMachine);
        }
        public override void ExecuteCmdlet()
        {
            VirtualMachine pendingVirtualMachine = null;
            var virtualMachineOperations = new VirtualMachineOperations(this.WebClientFactory);
            Guid? jobId = Guid.Empty;

            var newVirtualMachine = new VirtualMachine()
            {
                Name = Name,
                VMTemplateId = Template.ID,
                LocalAdminUserName = VMCredential.UserName,
                LocalAdminPassword = ExtractSecureString(VMCredential.Password),
            };

            pendingVirtualMachine = virtualMachineOperations.Create(newVirtualMachine, out jobId);

            if (!jobId.HasValue)
            {
                throw new WAPackOperationException(Resources.CreateFailedErrorMessage);
            }
            WaitForJobCompletion(jobId);

            var createdVM = virtualMachineOperations.Read(pendingVirtualMachine.ID);
           
            WriteObject(createdVM);
        }
示例#5
0
        public void CreateVMFromTemplate()
        {
            var mockChannel = new MockRequestChannel();

            var testCloud = new Cloud {
                ID = Guid.NewGuid(), StampId = Guid.NewGuid()
            };

            mockChannel.AddReturnObject(testCloud);

            var vmToCreate = new VirtualMachine {
                VMTemplateId = Guid.NewGuid(), Name = "Test"
            };
            var vmToReturn = new VirtualMachine
            {
                ID      = Guid.NewGuid(),
                Name    = vmToCreate.Name,
                CloudId = testCloud.ID,
                StampId = testCloud.StampId
            };

            mockChannel.AddReturnObject(vmToReturn, new WebHeaderCollection {
                "x-ms-request-id:" + Guid.NewGuid()
            });

            var vmOps = new VirtualMachineOperations(new WebClientFactory(new Subscription(), mockChannel));

            Guid?jobOut;
            var  resultVM = vmOps.Create(vmToCreate, out jobOut);

            //Check the results that client returns
            Assert.NotNull(resultVM);
            Assert.True(resultVM is VirtualMachine);
            Assert.Equal(resultVM.ID, vmToReturn.ID);
            Assert.Equal(resultVM.Name, vmToReturn.Name);
            Assert.Equal(resultVM.CloudId, vmToReturn.CloudId);
            Assert.Equal(resultVM.StampId, vmToReturn.StampId);

            //Check the requests that the client made
            var requestList = mockChannel.ClientRequests;

            Assert.Equal(requestList.Count, 2);
            Assert.Equal(requestList[1].Item1.Method, HttpMethod.Post.ToString());
            Assert.True(requestList[1].Item1.RequestUri.ToString().TrimEnd(new[] { '/' }).EndsWith("/VirtualMachines"));

            var sentVM = mockChannel.DeserializeClientPayload <VirtualMachine>(requestList[1].Item2);

            Assert.NotNull(sentVM);
            Assert.True(sentVM.Count == 1);
            Assert.Equal(sentVM[0].CloudId, testCloud.ID);
            Assert.Equal(sentVM[0].StampId, testCloud.StampId);
            Assert.Equal(sentVM[0].Name, vmToCreate.Name);
            Assert.Equal(sentVM[0].VMTemplateId, vmToCreate.VMTemplateId);
        }
示例#6
0
        public void VmCreateShouldThrowWhenNoObjectReturned()
        {
            var mockChannel = new MockRequestChannel();

            var testCloud = new Cloud {
                ID = Guid.NewGuid(), StampId = Guid.NewGuid()
            };

            mockChannel.AddReturnObject(testCloud);

            var vmOps = new VirtualMachineOperations(new WebClientFactory(new Subscription(), mockChannel));

            var vmToCreate = new VirtualMachine {
                VirtualHardDiskId = Guid.NewGuid(), Name = "Test"
            };

            Guid?jobOut;

            Assert.Throws <WAPackOperationException>(() => vmOps.Create(vmToCreate, out jobOut));
        }
示例#7
0
        public void VmCreateShouldThrowIfNoVhdAndNoTemplateSupplied()
        {
            var channel   = new MockRequestChannel();
            var testCloud = new Cloud {
                ID = Guid.NewGuid(), StampId = Guid.NewGuid()
            };

            channel.AddReturnObject(testCloud);

            var sub   = new Subscription();
            var vmOps = new VirtualMachineOperations(new WebClientFactory(sub, channel));

            var vmToCreate = new VirtualMachine {
                Name = "Test"
            };

            Guid?jobOut;

            Assert.Throws <WAPackOperationException>(() => vmOps.Create(vmToCreate, out jobOut));
        }
        public override void ExecuteCmdlet()
        {
            Utilities.WAPackIaaS.DataContract.VirtualMachine newVirtualMachine = null;
            var virtualMachineOperations = new VirtualMachineOperations(this.WebClientFactory);
            Guid? jobId = Guid.Empty;
            
            var virtualNetworkAdaptersWithVNet = this.CustomizeVnaInput();

            if (this.ParameterSetName == WAPackCmdletParameterSets.CreateWindowsVMFromTemplate)
            {
                newVirtualMachine = new Utilities.WAPackIaaS.DataContract.VirtualMachine()
                {
                    Name = Name,
                    VMTemplateId = Template.ID,
                    LocalAdminUserName = VMCredential.UserName,
                    LocalAdminPassword = ExtractSecureString(VMCredential.Password),
                    NewVirtualNetworkAdapterInput = virtualNetworkAdaptersWithVNet,
                    ProductKey = ProductKey,
                };
            }
            else if (this.ParameterSetName == WAPackCmdletParameterSets.CreateLinuxVMFromTemplate)
            {
                newVirtualMachine = new Utilities.WAPackIaaS.DataContract.VirtualMachine()
                {
                    Name = Name,
                    VMTemplateId = Template.ID,
                    LocalAdminUserName = VMCredential.UserName,
                    LocalAdminPassword = ExtractSecureString(VMCredential.Password),
                    NewVirtualNetworkAdapterInput = virtualNetworkAdaptersWithVNet,
                    LinuxAdministratorSSHKeyString = AdministratorSSHKey
                };
            }
            else if (this.ParameterSetName == WAPackCmdletParameterSets.CreateVMFromOSDisks)
            {
                newVirtualMachine = new Utilities.WAPackIaaS.DataContract.VirtualMachine()
                {
                    Name = Name,
                    HardwareProfileId = VMSizeProfile.ID,
                    VirtualHardDiskId = OSDisk.ID,
                    NewVirtualNetworkAdapterInput = virtualNetworkAdaptersWithVNet
                };
            }

            var createdVirtualMachine = virtualMachineOperations.Create(newVirtualMachine, out jobId);

            if (!jobId.HasValue)
            {
                throw new WAPackOperationException(Resources.CreateFailedErrorMessage);
            }
            WaitForJobCompletion(jobId);

            createdVirtualMachine = virtualMachineOperations.Read(createdVirtualMachine.ID);
            WriteObject(createdVirtualMachine);
        }
        public void VmCreateShouldThrowWhenNoObjectReturned()
        {
            var mockChannel = new MockRequestChannel();

            var testCloud = new Cloud { ID = Guid.NewGuid(), StampId = Guid.NewGuid() };
            mockChannel.AddReturnObject(testCloud);

            var vmOps = new VirtualMachineOperations(new WebClientFactory(new Subscription(), mockChannel));

            var vmToCreate = new VirtualMachine { VirtualHardDiskId = Guid.NewGuid(), Name = "Test" };

            Guid? jobOut;
            vmOps.Create(vmToCreate, out jobOut);
        }
        public void VmCreateShouldThrowIfNoVhdAndNoTemplateSupplied()
        {
            var channel = new MockRequestChannel();
            var testCloud = new Cloud { ID = Guid.NewGuid(), StampId = Guid.NewGuid() };
            channel.AddReturnObject(testCloud);

            var sub = new Subscription();
            var vmOps = new VirtualMachineOperations(new WebClientFactory(sub, channel));

            var vmToCreate = new VirtualMachine {Name = "Test"};

            Guid? jobOut;
            vmOps.Create(vmToCreate, out jobOut);
        }
        public void CreateVMFromTemplate()
        {
            var mockChannel = new MockRequestChannel();

            var testCloud = new Cloud { ID = Guid.NewGuid(), StampId = Guid.NewGuid() };
            mockChannel.AddReturnObject(testCloud);

            var vmToCreate = new VirtualMachine { VMTemplateId = Guid.NewGuid(), Name = "Test" };
            var vmToReturn = new VirtualMachine
            {
                ID = Guid.NewGuid(),
                Name = vmToCreate.Name,
                CloudId = testCloud.ID,
                StampId = testCloud.StampId
            };
            mockChannel.AddReturnObject(vmToReturn, new WebHeaderCollection { "x-ms-request-id:" + Guid.NewGuid() });

            var vmOps = new VirtualMachineOperations(new WebClientFactory(new Subscription(), mockChannel));

            Guid? jobOut;
            var resultVM = vmOps.Create(vmToCreate, out jobOut);

            //Check the results that client returns
            Assert.IsNotNull(resultVM);
            Assert.IsInstanceOfType(resultVM, typeof(VirtualMachine));
            Assert.AreEqual(resultVM.ID, vmToReturn.ID);
            Assert.AreEqual(resultVM.Name, vmToReturn.Name);
            Assert.AreEqual(resultVM.CloudId, vmToReturn.CloudId);
            Assert.AreEqual(resultVM.StampId, vmToReturn.StampId);

            //Check the requests that the client made
            var requestList = mockChannel.ClientRequests;
            Assert.AreEqual(requestList.Count, 2);
            Assert.AreEqual(requestList[1].Item1.Method, HttpMethod.Post.ToString());
            Assert.IsTrue(requestList[1].Item1.RequestUri.ToString().TrimEnd(new[] { '/' }).EndsWith("/VirtualMachines"));

            var sentVM = mockChannel.DeserializeClientPayload<VirtualMachine>(requestList[1].Item2);
            Assert.IsNotNull(sentVM);
            Assert.IsTrue(sentVM.Count == 1);
            Assert.AreEqual(sentVM[0].CloudId, testCloud.ID);
            Assert.AreEqual(sentVM[0].StampId, testCloud.StampId);
            Assert.AreEqual(sentVM[0].Name, vmToCreate.Name);
            Assert.AreEqual(sentVM[0].VMTemplateId, vmToCreate.VMTemplateId);
        }
        protected override void ExecuteCommand()
        {
            VirtualMachine newVirtualMachine = null;
            var virtualMachineOperations = new VirtualMachineOperations(this.WebClientFactory);
            Guid? jobId = Guid.Empty;
            
            var  virtualNetworkAdaptersWithVNet = this.CustomizeVnaInput();

            if (this.ParameterSetName == WAPackCmdletParameterSets.CreateWindowsVMFromTemplate)
            {
                newVirtualMachine = new VirtualMachine()
                {
                    Name = Name,
                    VMTemplateId = Template.ID,
                    UserName = VMCredential.UserName,
                    Password = ExtractSecureString(VMCredential.Password),
                    NewVirtualNetworkAdapterInput = virtualNetworkAdaptersWithVNet,
                    ProductKey = ProductKey,
                };
            }
            else if (this.ParameterSetName == WAPackCmdletParameterSets.CreateLinuxVMFromTemplate)
            {
                newVirtualMachine = new VirtualMachine()
                {
                    Name = Name,
                    VMTemplateId = Template.ID,
                    UserName = VMCredential.UserName,
                    Password = ExtractSecureString(VMCredential.Password),
                    NewVirtualNetworkAdapterInput = virtualNetworkAdaptersWithVNet,
                    LinuxAdministratorSSHKeyString = AdministratorSSHKey
                };
            }
            else if (this.ParameterSetName == WAPackCmdletParameterSets.CreateVMFromOSDisks)
            {
                newVirtualMachine = new VirtualMachine()
                {
                    Name = Name,
                    HardwareProfileId = VMSizeProfile.ID,
                    VirtualHardDiskId = OSDisk.ID,
                    NewVirtualNetworkAdapterInput = virtualNetworkAdaptersWithVNet
                };
            }

            var createdVirtualMachine = virtualMachineOperations.Create(newVirtualMachine, out jobId);

            if (!jobId.HasValue)
            {
                throw new WAPackOperationException(Resources.CreateFailedErrorMessage);
            }

            var jobInfo = new JobOperations(this.WebClientFactory).WaitOnJob(jobId.Value);
            if (jobInfo.jobStatus == JobStatusEnum.Failed)
            {
                this.WriteErrorDetails(new Exception(jobInfo.errorMessage));
            }

            createdVirtualMachine = virtualMachineOperations.Read(createdVirtualMachine.ID);
            WriteObject(createdVirtualMachine);
        }