public void ValidateAvailableExtesnion(VirtualMachineExtensionImageContext extension)
        {
            Utilities.PrintContext(extension);
            Assert.IsFalse(string.IsNullOrEmpty(extension.ExtensionName));
            Assert.IsFalse(string.IsNullOrEmpty(extension.Publisher));
            Assert.IsFalse(string.IsNullOrEmpty(extension.Version));

            if (!extension.IsJsonExtension)
            {
                switch (extension.ExtensionName)
                {
                case "DiagnosticsAgent":
                {
                    Assert.IsFalse(string.IsNullOrEmpty(extension.PublicConfigurationSchema));
                    break;
                }

                case "VMAccessAgent":
                {
                    Assert.IsFalse(string.IsNullOrEmpty(extension.PublicConfigurationSchema));
                    Assert.IsFalse(string.IsNullOrEmpty(extension.PrivateConfigurationSchema));
                    break;
                }
                }
            }
        }
        public void UpdateVMWithExtensionTest()
        {
            try
            {
                var availableExtensions = vmPowershellCmdlets.GetAzureVMAvailableExtension();
                if (availableExtensions.Count > 0)
                {
                    vmAccessExtension = availableExtensions.First(extension => extension.ExtensionName.Equals(VmAccessAgentExtensionName));

                    //Deploy a new IaaS VM with Extension using Add-AzureVMExtension
                    var vm = CreateIaaSVMObject(vmName);
                    vmPowershellCmdlets.NewAzureVM(serviceName, new[] { vm }, locationName);

                    vm = GetAzureVM(vmName, serviceName);
                    //Set extension without version
                    vm = vmPowershellCmdlets.SetAzureVMExtension(vm, vmAccessExtension.ExtensionName, vmAccessExtension.Publisher, null, referenceName, publicConfiguration, privateConfiguration);
                    vmPowershellCmdlets.UpdateAzureVM(vmName, serviceName, vm);

                    ValidateVMAccessExtension(vmName, serviceName, true);

                    vmPowershellCmdlets.RemoveAzureVMExtension(GetAzureVM(vmName, serviceName), vmAccessExtension.ExtensionName, vmAccessExtension.Publisher);
                    pass = true;
                }
                else
                {
                    Console.WriteLine("There are no Azure VM extension available");
                }
                pass = true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                throw;
            }
        }
        public void AddRoleWithExtensionTest()
        {
            try
            {
                var availableExtensions = vmPowershellCmdlets.GetAzureVMAvailableExtension();
                vmAccessExtension = availableExtensions.First(extension => extension.ExtensionName.Equals(VmAccessAgentExtensionName));

                //Create an deployment
                var vm1 = CreateIaaSVMObject(vmName);
                vmPowershellCmdlets.NewAzureVM(serviceName, new[] { vm1 }, locationName);

                //Add a role with extension enabled.
                string referenceName = Utilities.GetUniqueShortName(referenceNamePrefix);
                string vmName2       = Utilities.GetUniqueShortName(vmNamePrefix);
                var    vm2           = CreateIaaSVMObject(vmName2);
                vm2 = vmPowershellCmdlets.SetAzureVMExtension(vm2,
                                                              vmAccessExtension.ExtensionName,
                                                              vmAccessExtension.Publisher,
                                                              version, referenceName,
                                                              publicConfiguration,
                                                              privateConfiguration,
                                                              disable: false,
                                                              forceUpdate: true);
                vmPowershellCmdlets.NewAzureVM(serviceName, new[] { vm2 });

                ValidateVMAccessExtension(vmName2, serviceName, true);
                pass = true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                throw;
            }
        }
예제 #4
0
        private void GetCustomScriptExtensionVersion()
        {
            Utilities.PrintHeader("Listing the available VM extensions");
            var extensionsInfo = vmPowershellCmdlets.GetAzureVMAvailableExtension(ConstCustomScriptExtensionName, ConstCustomScriptExtensionPublisher, true);

            customScriptExtension = extensionsInfo.OrderBy(c => c.Version).LastOrDefault();
            Console.WriteLine("Using CustomScript Extension Version: {0}", customScriptExtension.Version);
            Utilities.PrintFooter("Listing the available VM extensions");
        }
        public void UpdateVMWithExtensionTest()
        {
            try
            {
                var availableExtensions = vmPowershellCmdlets.GetAzureVMAvailableExtension();

                if (availableExtensions.Count > 0)
                {
                    vmAccessExtension = availableExtensions.First(extension => extension.ExtensionName.Equals(VmAccessAgentExtensionName));

                    // Deploy a new IaaS VM with Extension using Add-AzureVMExtension
                    var vm = CreateIaaSVMObject(vmName);
                    vmPowershellCmdlets.NewAzureVM(serviceName, new[] { vm }, locationName);

                    vm = GetAzureVM(vmName, serviceName);

                    vm = vmPowershellCmdlets.SetAzureVMExtension(vm,
                        vmAccessExtension.ExtensionName,
                        vmAccessExtension.Publisher,
                        version,
                        referenceName,
                        publicConfiguration,
                        privateConfiguration,
                        "pubkey1",
                        "prikey1",
                        forceUpdate: true);
                    vmPowershellCmdlets.UpdateAzureVM(vmName, serviceName, vm);

                    var updatedVM = vmPowershellCmdlets.GetAzureVM(vmName, serviceName);
                    var updatedExt = updatedVM.VM.ResourceExtensionReferences.First(
                        e => e.Name == vmAccessExtension.ExtensionName &&
                             e.Publisher == vmAccessExtension.Publisher &&
                             e.Version == version);
                    Assert.IsTrue(updatedExt.ResourceExtensionParameterValues.Any(r => r.Type == "Public" && r.Key == "pubkey1"));

                    ValidateVMAccessExtension(vmName, serviceName, true);

                    vmPowershellCmdlets.RemoveAzureVMExtension(GetAzureVM(vmName, serviceName), vmAccessExtension.ExtensionName, vmAccessExtension.Publisher);
                    pass = true;
                }
                else
                {
                    Console.WriteLine("There are no Azure VM extension available");
                }
                pass = true;

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                throw;
            }
        }
        public void AzureVMExtensionTest()
        {
            try
            {
                // Get the available VM Extension
                var availableExtensions =  vmPowershellCmdlets.GetAzureVMAvailableExtension();
                vmAccessExtension = availableExtensions.First(extension => extension.ExtensionName.Equals(VmAccessAgentExtensionName));
                if (availableExtensions.Count > 0)
                {
                    // Deploy a new IaaS VM with Extension using Add-AzureVMExtension
                    Console.WriteLine("Create a new VM with VM access extension.");
                    var vm = CreateIaaSVMObject(vmName);
                    vm = vmPowershellCmdlets.SetAzureVMExtension(vm,
                        vmAccessExtension.ExtensionName,
                        vmAccessExtension.Publisher,
                        version,
                        referenceName,
                        publicConfigPath: publicConfigPath,
                        privateConfigPath:privateConfigPath,
                        disable: false,
                        forceUpdate: true);
                    
                    vmPowershellCmdlets.NewAzureVM(serviceName, new[] {vm}, locationName);
                    Console.WriteLine("Created a new VM {0} with VM access extension. Service Name : {1}",vmName,serviceName);

                    ValidateVMAccessExtension(vmName, serviceName, true);
                    // Verify that the extension actually work
                    VerifyRDPExtension(vmName, serviceName);

                    // Disbale extesnion
                    DisableExtension(vmName, serviceName);

                    ValidateVMAccessExtension(vmName, serviceName, false);
                    pass = true;
                }
                else
                {
                    Console.WriteLine("There are no Azure VM extension available");
                }
                
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                throw;
            }
        }
예제 #7
0
        private void GetCustomScriptExtensionVersion()
        {
            Utilities.PrintHeader("Listing the available VM extensions");
            var extensionsInfo = vmPowershellCmdlets.GetAzureVMAvailableExtension(ConstCustomScriptExtensionName, ConstCustomScriptExtensionPublisher, true);

            customScriptExtension = extensionsInfo.Where(c => c.Version.Equals("1.1")).FirstOrDefault();

            Match m = Regex.Match(customScriptExtension.Version, @"((\.).*?){2}");

            if (m.Success)
            {
                customScriptExtension.Version = customScriptExtension.Version.Substring(0, m.Groups[2].Captures[1].Index);
            }

            Console.WriteLine("Using CustomScript Extension Version: {0}", customScriptExtension.Version);
            Utilities.PrintFooter("Listing the available VM extensions");
        }
        public void ValidateAvailableExtesnion(VirtualMachineExtensionImageContext extension)
        {
            Utilities.PrintContext(extension);
            Assert.IsFalse(string.IsNullOrEmpty(extension.ExtensionName));
            Assert.IsFalse(string.IsNullOrEmpty(extension.Publisher));
            Assert.IsFalse(string.IsNullOrEmpty(extension.Version));

            // Intentionally commented as the cmdlet prod cmdlet doesnt have these properties and dogfood returns errors
            // now
            //Assert.IsTrue(extension.ReplicationCompleted);
            //Assert.IsTrue(Utilities.validateHttpUri(extension.PrivacyUri.ToString()));
            //Assert.IsTrue(Utilities.validateHttpUri(extension.PrivacyUri.ToString()));
            //Assert.IsTrue(Utilities.validateHttpUri(extension.Eula.ToString()));

            switch (extension.ExtensionName)
            {
            //case "BGInfo":
            //    {
            //        Assert.IsTrue(extension.ReplicationCompleted);
            //        break;
            //    }
            case "DiagnosticsAgent":
            {
                Assert.IsFalse(string.IsNullOrEmpty(extension.PublicConfigurationSchema));
                break;
            }

            case "VMAccessAgent":
            {
                Assert.IsFalse(string.IsNullOrEmpty(extension.PublicConfigurationSchema));
                Assert.IsFalse(string.IsNullOrEmpty(extension.PrivateConfigurationSchema));
                //Assert.IsFalse(string.IsNullOrEmpty(extension.SampleConfig));
                break;
            }
            }
        }