Exemplo n.º 1
0
        public async Task UpdateVmIdentityFromSystemUserToNone()
        {
            var collection = await GetVirtualMachineCollectionAsync();

            var vmName = Recording.GenerateAssetName("testVM-");
            var nic    = await CreateBasicDependenciesOfVirtualMachineAsync();

            var input = ResourceDataHelper.GetBasicLinuxVirtualMachineData(DefaultLocation, vmName, nic.Id);

            input.Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.SystemAssignedUserAssigned);
            var userAssignedIdentity = await CreateUserAssignedIdentityAsync();

            input.Identity.UserAssignedIdentities.Add(userAssignedIdentity.Id, new UserAssignedIdentity());
            var lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, vmName, input);

            VirtualMachineResource virtualMachine = lro.Value;

            Assert.AreEqual(vmName, virtualMachine.Data.Name);
            Assert.AreEqual(ManagedServiceIdentityType.SystemAssignedUserAssigned, virtualMachine.Data.Identity.ManagedServiceIdentityType);
            Assert.AreEqual(virtualMachine.Data.Identity.UserAssignedIdentities.Count, 1);
            Assert.NotNull(virtualMachine.Data.Identity.PrincipalId);
            Assert.NotNull(virtualMachine.Data.Identity.UserAssignedIdentities[userAssignedIdentity.Id].PrincipalId);

            var identity      = new ManagedServiceIdentity(ManagedServiceIdentityType.None);
            var updateOptions = new VirtualMachinePatch()
            {
                Identity = identity
            };

            lro = await virtualMachine.UpdateAsync(WaitUntil.Completed, updateOptions);

            VirtualMachineResource updatedVM = lro.Value;

            Assert.Null(updatedVM.Data.Identity);
        }
        public async Task Update()
        {
            var vmName = Recording.GenerateAssetName("testVM-");
            var vm     = await CreateVirtualMachineAsync(vmName);

            //// Create a PPG here and add this PPG to this virtual machine using Update
            //var ppgName = Recording.GenerateAssetName("testPPG-");
            //var ppgData = new ProximityPlacementGroupData(DefaultLocation) { };
            //var ppgLRO = await _resourceGroup.GetProximityPlacementGroups().CreateOrUpdateAsync(ppgName, ppgData);
            //var ppg = ppgLRO.Value;
            // update PPG requires the VM to be deallocated
            await vm.DeallocateAsync(WaitUntil.Completed);

            var update = new VirtualMachinePatch()
            {
                HardwareProfile = new HardwareProfile
                {
                    VmSize = VirtualMachineSizeTypes.StandardF1
                }
            };
            var lro = await vm.UpdateAsync(WaitUntil.Completed, update);

            VirtualMachineResource updatedVM = lro.Value;

            Assert.AreEqual(VirtualMachineSizeTypes.StandardF1, updatedVM.Data.HardwareProfile.VmSize);
        }
        public async Task BootDiagnostic()
        {
            string vmName = Recording.GenerateAssetName("testVM-");
            VirtualMachineResource virtualMachine = await CreateVirtualMachineAsync(vmName);

            Assert.IsNull(virtualMachine.Data.BootDiagnostics);

            VirtualMachinePatch updateOptions = new VirtualMachinePatch();

            updateOptions.BootDiagnostics         = new BootDiagnostics();
            updateOptions.BootDiagnostics.Enabled = true;
            virtualMachine = (await virtualMachine.UpdateAsync(WaitUntil.Completed, updateOptions)).Value;
            Assert.AreEqual(true, virtualMachine.Data.BootDiagnostics.Enabled);

            updateOptions.BootDiagnostics = null;
            virtualMachine = (await virtualMachine.UpdateAsync(WaitUntil.Completed, updateOptions)).Value;
            var originalBootDiag = virtualMachine.Data.BootDiagnostics;
            var originalEnabled  = virtualMachine.Data.BootDiagnostics?.Enabled;

            string vmName2 = Recording.GenerateAssetName("testVM-");
            VirtualMachineResource virtualMachine2 = await CreateVirtualMachineAsync(vmName2);

            Assert.IsNull(virtualMachine2.Data.DiagnosticsProfile?.BootDiagnostics);

            VirtualMachinePatch updateOptions2 = new VirtualMachinePatch();

            updateOptions2.DiagnosticsProfile = new DiagnosticsProfile();
            updateOptions2.DiagnosticsProfile.BootDiagnostics         = new BootDiagnostics();
            updateOptions2.DiagnosticsProfile.BootDiagnostics.Enabled = true;
            virtualMachine2 = (await virtualMachine2.UpdateAsync(WaitUntil.Completed, updateOptions2)).Value;
            Assert.AreEqual(true, virtualMachine2.Data.DiagnosticsProfile.BootDiagnostics.Enabled);

            updateOptions2.DiagnosticsProfile.BootDiagnostics = null;
            virtualMachine2 = (await virtualMachine2.UpdateAsync(WaitUntil.Completed, updateOptions2)).Value;
            var newBootDiag = virtualMachine2.Data.DiagnosticsProfile?.BootDiagnostics;
            var newEnabled  = virtualMachine2.Data.DiagnosticsProfile?.BootDiagnostics?.Enabled;

            Assert.AreEqual(originalBootDiag is null, newBootDiag is null);
            Assert.AreEqual(originalEnabled, newEnabled);

            updateOptions2.DiagnosticsProfile = null;
            virtualMachine2 = (await virtualMachine2.UpdateAsync(WaitUntil.Completed, updateOptions2)).Value;
            newBootDiag     = virtualMachine2.Data.DiagnosticsProfile?.BootDiagnostics;
            newEnabled      = virtualMachine2.Data.DiagnosticsProfile?.BootDiagnostics?.Enabled;
            Assert.AreEqual(originalBootDiag is null, newBootDiag is null);
            Assert.AreEqual(originalEnabled, newEnabled);
        }
Exemplo n.º 4
0
        public async Task UpdateVmIdentityFromTwoUsersToOneUser()
        {
            var collection = await GetVirtualMachineCollectionAsync();

            var vmName = Recording.GenerateAssetName("testVM-");
            var nic    = await CreateBasicDependenciesOfVirtualMachineAsync();

            var input = ResourceDataHelper.GetBasicLinuxVirtualMachineData(DefaultLocation, vmName, nic.Id);

            input.Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.UserAssigned);
            var userAssignedIdentity1 = await CreateUserAssignedIdentityAsync();

            input.Identity.UserAssignedIdentities.Add(userAssignedIdentity1.Id, new UserAssignedIdentity());
            var userAssignedIdentity2 = await CreateUserAssignedIdentityAsync();

            input.Identity.UserAssignedIdentities.Add(userAssignedIdentity2.Id, new UserAssignedIdentity());
            var lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, vmName, input);

            VirtualMachineResource virtualMachine = lro.Value;

            Assert.AreEqual(vmName, virtualMachine.Data.Name);
            Assert.AreEqual(ManagedServiceIdentityType.UserAssigned, virtualMachine.Data.Identity.ManagedServiceIdentityType);
            Assert.AreEqual(virtualMachine.Data.Identity.UserAssignedIdentities.Count, 2);
            Assert.Null(virtualMachine.Data.Identity.PrincipalId);
            Assert.NotNull(virtualMachine.Data.Identity.UserAssignedIdentities[userAssignedIdentity1.Id].PrincipalId);
            Assert.NotNull(virtualMachine.Data.Identity.UserAssignedIdentities[userAssignedIdentity2.Id].PrincipalId);

            // With JSON Merge Patch, we can use null to delete an identity from the dictionary.
            var identity = new ManagedServiceIdentity(ManagedServiceIdentityType.UserAssigned);

            identity.UserAssignedIdentities.Add(userAssignedIdentity1.Id, null);
            var updateOptions = new VirtualMachinePatch()
            {
                Identity = identity
            };

            lro = await virtualMachine.UpdateAsync(WaitUntil.Completed, updateOptions);

            VirtualMachineResource updatedVM = lro.Value;

            Assert.AreEqual(ManagedServiceIdentityType.UserAssigned, updatedVM.Data.Identity.ManagedServiceIdentityType);
            Assert.AreEqual(updatedVM.Data.Identity.UserAssignedIdentities.Count, 1);
            Assert.Null(updatedVM.Data.Identity.PrincipalId);
            Assert.IsFalse(updatedVM.Data.Identity.UserAssignedIdentities.ContainsKey(userAssignedIdentity1.Id));
            Assert.NotNull(updatedVM.Data.Identity.UserAssignedIdentities[userAssignedIdentity2.Id].PrincipalId);
        }
        public virtual ArmOperation <VirtualMachineResource> Update(WaitUntil waitUntil, VirtualMachinePatch patch, CancellationToken cancellationToken = default)
        {
            Argument.AssertNotNull(patch, nameof(patch));

            using var scope = _virtualMachineClientDiagnostics.CreateScope("VirtualMachineResource.Update");
            scope.Start();
            try
            {
                var response  = _virtualMachineRestClient.Update(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, patch, cancellationToken);
                var operation = new ConnectedVMwarevSphereArmOperation <VirtualMachineResource>(new VirtualMachineOperationSource(Client), _virtualMachineClientDiagnostics, Pipeline, _virtualMachineRestClient.CreateUpdateRequest(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, patch).Request, response, OperationFinalStateVia.Location);
                if (waitUntil == WaitUntil.Completed)
                {
                    operation.WaitForCompletion(cancellationToken);
                }
                return(operation);
            }
            catch (Exception e)
            {
                scope.Failed(e);
                throw;
            }
        }