Example #1
0
        protected async Task DiskEncryptionSet_CRUD_Execute(string methodName, string location = null)
        {
            EnsureClientsInitialized(DefaultLocation);
            DiskRPLocation = location ?? DiskRPLocation;

            // Data
            var rgName            = Recording.GenerateAssetName(TestPrefix);
            var desName           = Recording.GenerateAssetName(DiskNamePrefix);
            DiskEncryptionSet des = GenerateDefaultDiskEncryptionSet(DiskRPLocation);
            await ResourceGroupsOperations.CreateOrUpdateAsync(rgName, new ResourceGroup(DiskRPLocation));

            // Put DiskEncryptionSet
            DiskEncryptionSet desOut = await WaitForCompletionAsync(await DiskEncryptionSetsOperations.StartCreateOrUpdateAsync(rgName, desName, des));

            Validate(des, desOut, desName);

            // Get DiskEncryptionSet
            desOut = await DiskEncryptionSetsOperations.GetAsync(rgName, desName);

            Validate(des, desOut, desName);

            // Patch DiskEncryptionSet
            const string tagKey    = "tageKey";
            var          updateDes = new DiskEncryptionSetUpdate()
            {
                Tags = { { tagKey, "tagvalue" } }
            };

            desOut = await WaitForCompletionAsync(await DiskEncryptionSetsOperations.StartUpdateAsync(rgName, desName, updateDes));

            Validate(des, desOut, desName);
            Assert.AreEqual(1, desOut.Tags.Count);

            // Delete DiskEncryptionSet
            await WaitForCompletionAsync(await DiskEncryptionSetsOperations.StartDeleteAsync(rgName, desName));

            try
            {
                // Ensure it was really deleted
                await DiskEncryptionSetsOperations.GetAsync(rgName, desName);

                Assert.False(true);
            }
            catch (Exception ex)
            {
                Assert.NotNull(ex);
                //Assert.AreEqual(HttpStatusCode.NotFound, ex.Response.StatusCode);
            }
        }
Example #2
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();
            ExecuteClientAction(() =>
            {
                if (ShouldProcess(this.Name, VerbsData.Update))
                {
                    string resourceGroupName;
                    string diskEncryptionSetName;
                    switch (this.ParameterSetName)
                    {
                    case "ResourceIdParameter":
                        resourceGroupName     = GetResourceGroupName(this.ResourceId);
                        diskEncryptionSetName = GetResourceName(this.ResourceId, "Microsoft.Compute/diskEncryptionSets");
                        break;

                    case "ObjectParameter":
                        resourceGroupName     = GetResourceGroupName(this.InputObject.Id);
                        diskEncryptionSetName = GetResourceName(this.InputObject.Id, "Microsoft.Compute/diskEncryptionSets");
                        break;

                    default:
                        resourceGroupName     = this.ResourceGroupName;
                        diskEncryptionSetName = this.Name;
                        break;
                    }

                    if (this.InputObject == null)
                    {
                        BuildPatchObject();
                    }
                    else
                    {
                        BuildPutObject();
                    }
                    DiskEncryptionSetUpdate diskEncryptionSetupdate = this.DiskEncryptionSetUpdate;
                    DiskEncryptionSet parameter = new DiskEncryptionSet();
                    ComputeAutomationAutoMapperProfile.Mapper.Map <PSDiskEncryptionSet, DiskEncryptionSet>(this.InputObject, parameter);

                    var result = (this.DiskEncryptionSetUpdate == null)
                                 ? DiskEncryptionSetsClient.CreateOrUpdate(resourceGroupName, diskEncryptionSetName, parameter)
                                 : DiskEncryptionSetsClient.Update(resourceGroupName, diskEncryptionSetName, diskEncryptionSetupdate);
                    var psObject = new PSDiskEncryptionSet();
                    ComputeAutomationAutoMapperProfile.Mapper.Map <DiskEncryptionSet, PSDiskEncryptionSet>(result, psObject);
                    WriteObject(psObject);
                }
            });
        }
Example #3
0
        protected void DiskEncryptionSet_UpdateDisk_Execute(string methodName, string location = null)
        {
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                EnsureClientsInitialized(context);
                var  rgName   = TestUtilities.GenerateName(TestPrefix);
                var  diskName = TestUtilities.GenerateName(DiskNamePrefix);
                var  desName  = "longlivedSwaggerDES";
                Disk disk     = GenerateDefaultDisk(DiskCreateOption.Empty, rgName, 10);
                disk.Location = location;

                try
                {
                    m_ResourcesClient.ResourceGroups.CreateOrUpdate(rgName, new ResourceGroup {
                        Location = location
                    });
                    // Put Disk with PlatformManagedKey
                    m_CrpClient.Disks.CreateOrUpdate(rgName, diskName, disk);
                    Disk diskOut = m_CrpClient.Disks.Get(rgName, diskName);

                    Validate(disk, diskOut, disk.Location);
                    Assert.Null(diskOut.Encryption.DiskEncryptionSetId);
                    Assert.Equal(EncryptionType.EncryptionAtRestWithPlatformKey, diskOut.Encryption.Type);

                    // Update Disk with CustomerManagedKey
                    DiskEncryptionSet desOut = m_CrpClient.DiskEncryptionSets.Get("longrunningrg-centraluseuap", desName);
                    Assert.NotNull(desOut);
                    disk.Encryption = new Encryption
                    {
                        Type = EncryptionType.EncryptionAtRestWithCustomerKey.ToString(),
                        DiskEncryptionSetId = desOut.Id
                    };
                    m_CrpClient.Disks.CreateOrUpdate(rgName, diskName, disk);
                    diskOut = m_CrpClient.Disks.Get(rgName, diskName);

                    Assert.Equal(desOut.Id.ToLower(), diskOut.Encryption.DiskEncryptionSetId.ToLower());
                    Assert.Equal(EncryptionType.EncryptionAtRestWithCustomerKey, diskOut.Encryption.Type);
                    m_CrpClient.Disks.Delete(rgName, diskName);
                }
                finally
                {
                    m_ResourcesClient.ResourceGroups.Delete(rgName);
                }
            }
        }
Example #4
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();
            ExecuteClientAction(() =>
            {
                if (ShouldProcess(this.Name, VerbsCommon.New))
                {
                    string resourceGroupName            = this.ResourceGroupName;
                    string diskEncryptionSetName        = this.Name;
                    DiskEncryptionSet diskEncryptionSet = new DiskEncryptionSet();
                    ComputeAutomationAutoMapperProfile.Mapper.Map <PSDiskEncryptionSet, DiskEncryptionSet>(this.InputObject, diskEncryptionSet);

                    var result   = DiskEncryptionSetsClient.CreateOrUpdate(resourceGroupName, diskEncryptionSetName, diskEncryptionSet);
                    var psObject = new PSDiskEncryptionSet();
                    ComputeAutomationAutoMapperProfile.Mapper.Map <DiskEncryptionSet, PSDiskEncryptionSet>(result, psObject);
                    WriteObject(psObject);
                }
            });
        }
Example #5
0
        protected async Task DiskEncryptionSet_UpdateDisk_Execute(string methodName, string location = null)
        {
            EnsureClientsInitialized(DefaultLocation);
            var  rgName   = Recording.GenerateAssetName(TestPrefix);
            var  diskName = Recording.GenerateAssetName(DiskNamePrefix);
            var  desName  = "longlivedSwaggerDES";
            Disk disk     = await GenerateDefaultDisk(DiskCreateOption.Empty.ToString(), rgName, 10);

            disk.Location = location;
            await ResourceGroupsOperations.CreateOrUpdateAsync(rgName, new ResourceGroup(location));

            // Put Disk with PlatformManagedKey
            await WaitForCompletionAsync(await DisksOperations.StartCreateOrUpdateAsync(rgName, diskName, disk));

            Disk diskOut = await DisksOperations.GetAsync(rgName, diskName);

            Validate(disk, diskOut, disk.Location);
            Assert.Null(diskOut.Encryption.DiskEncryptionSetId);
            Assert.AreEqual(EncryptionType.EncryptionAtRestWithPlatformKey, diskOut.Encryption.Type);

            // Update Disk with CustomerManagedKey
            DiskEncryptionSet desOut = await DiskEncryptionSetsOperations.GetAsync("longrunningrg-southeastasia", desName);

            Assert.NotNull(desOut);
            disk.Encryption = new Encryption
            {
                Type = EncryptionType.EncryptionAtRestWithCustomerKey.ToString(),
                DiskEncryptionSetId = desOut.Id
            };
            await WaitForCompletionAsync(await DisksOperations.StartCreateOrUpdateAsync(rgName, diskName, disk));

            diskOut = await DisksOperations.GetAsync(rgName, diskName);

            Assert.AreEqual(desOut.Id.ToLower(), diskOut.Encryption.DiskEncryptionSetId.ToLower());
            Assert.AreEqual(EncryptionType.EncryptionAtRestWithCustomerKey, diskOut.Encryption.Type);
            await WaitForCompletionAsync(await DisksOperations.StartDeleteAsync(rgName, diskName));
        }
Example #6
0
        public async Task <Response <DiskEncryptionSet> > GetAsync(string resourceGroupName, string diskEncryptionSetName, CancellationToken cancellationToken = default)
        {
            if (resourceGroupName == null)
            {
                throw new ArgumentNullException(nameof(resourceGroupName));
            }
            if (diskEncryptionSetName == null)
            {
                throw new ArgumentNullException(nameof(diskEncryptionSetName));
            }

            using var message = CreateGetRequest(resourceGroupName, diskEncryptionSetName);
            await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false);

            switch (message.Response.Status)
            {
            case 200:
            {
                DiskEncryptionSet value = default;
                using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false);

                value = DiskEncryptionSet.DeserializeDiskEncryptionSet(document.RootElement);
                return(Response.FromValue(value, message.Response));
            }
Example #7
0
        protected DiskEncryptionSet GenerateDefaultDiskEncryptionSet(string location)
        {
            string testVaultId      = @"/subscriptions/0296790d-427c-48ca-b204-8b729bbd8670/resourcegroups/swagger/providers/Microsoft.KeyVault/vaults/swaggervault";
            string encryptionKeyUri = @"https://swaggervault.vault.azure.net/keys/diskRPSSEKey/4780bcaf12384596b75cf63731f2046c";

            var des = new DiskEncryptionSet
            {
                Identity = new EncryptionSetIdentity
                {
                    Type = ResourceIdentityType.SystemAssigned.ToString()
                },
                Location  = location,
                ActiveKey = new KeyVaultAndKeyReference
                {
                    SourceVault = new SourceVault
                    {
                        Id = testVaultId
                    },
                    KeyUrl = encryptionKeyUri
                }
            };

            return(des);
        }
Example #8
0
        public async Task <Response> CreateOrUpdateAsync(string resourceGroupName, string diskEncryptionSetName, DiskEncryptionSet diskEncryptionSet, CancellationToken cancellationToken = default)
        {
            if (resourceGroupName == null)
            {
                throw new ArgumentNullException(nameof(resourceGroupName));
            }
            if (diskEncryptionSetName == null)
            {
                throw new ArgumentNullException(nameof(diskEncryptionSetName));
            }
            if (diskEncryptionSet == null)
            {
                throw new ArgumentNullException(nameof(diskEncryptionSet));
            }

            using var message = CreateCreateOrUpdateRequest(resourceGroupName, diskEncryptionSetName, diskEncryptionSet);
            await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false);

            switch (message.Response.Status)
            {
            case 200:
            case 201:
                return(message.Response);

            default:
                throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false);
            }
        }
Example #9
0
        internal HttpMessage CreateCreateOrUpdateRequest(string resourceGroupName, string diskEncryptionSetName, DiskEncryptionSet diskEncryptionSet)
        {
            var message = _pipeline.CreateMessage();
            var request = message.Request;

            request.Method = RequestMethod.Put;
            var uri = new RawRequestUriBuilder();

            uri.Reset(endpoint);
            uri.AppendPath("/subscriptions/", false);
            uri.AppendPath(subscriptionId, true);
            uri.AppendPath("/resourceGroups/", false);
            uri.AppendPath(resourceGroupName, true);
            uri.AppendPath("/providers/Microsoft.Compute/diskEncryptionSets/", false);
            uri.AppendPath(diskEncryptionSetName, true);
            uri.AppendQuery("api-version", "2019-11-01", true);
            request.Uri = uri;
            request.Headers.Add("Content-Type", "application/json");
            var content = new Utf8JsonRequestContent();

            content.JsonWriter.WriteObjectValue(diskEncryptionSet);
            request.Content = content;
            return(message);
        }
Example #10
0
        public virtual DiskEncryptionSetsCreateOrUpdateOperation StartCreateOrUpdate(string resourceGroupName, string diskEncryptionSetName, DiskEncryptionSet diskEncryptionSet, CancellationToken cancellationToken = default)
        {
            if (resourceGroupName == null)
            {
                throw new ArgumentNullException(nameof(resourceGroupName));
            }
            if (diskEncryptionSetName == null)
            {
                throw new ArgumentNullException(nameof(diskEncryptionSetName));
            }
            if (diskEncryptionSet == null)
            {
                throw new ArgumentNullException(nameof(diskEncryptionSet));
            }

            using var scope = _clientDiagnostics.CreateScope("DiskEncryptionSetsOperations.StartCreateOrUpdate");
            scope.Start();
            try
            {
                var originalResponse = RestClient.CreateOrUpdate(resourceGroupName, diskEncryptionSetName, diskEncryptionSet, cancellationToken);
                return(new DiskEncryptionSetsCreateOrUpdateOperation(_clientDiagnostics, _pipeline, RestClient.CreateCreateOrUpdateRequest(resourceGroupName, diskEncryptionSetName, diskEncryptionSet).Request, originalResponse));
            }
            catch (Exception e)
            {
                scope.Failed(e);
                throw;
            }
        }
Example #11
0
 /// <summary>
 /// Creates or updates a disk encryption set
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group.
 /// </param>
 /// <param name='diskEncryptionSetName'>
 /// The name of the disk encryption set that is being created. The name can't
 /// be changed after the disk encryption set is created. Supported characters
 /// for the name are a-z, A-Z, 0-9 and _. The maximum name length is 80
 /// characters.
 /// </param>
 /// <param name='diskEncryptionSet'>
 /// disk encryption set object supplied in the body of the Put disk encryption
 /// set operation.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <DiskEncryptionSet> CreateOrUpdateAsync(this IDiskEncryptionSetsOperations operations, string resourceGroupName, string diskEncryptionSetName, DiskEncryptionSet diskEncryptionSet, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, diskEncryptionSetName, diskEncryptionSet, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Example #12
0
 /// <summary>
 /// Creates or updates a disk encryption set
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group.
 /// </param>
 /// <param name='diskEncryptionSetName'>
 /// The name of the disk encryption set that is being created. The name can't
 /// be changed after the disk encryption set is created. Supported characters
 /// for the name are a-z, A-Z, 0-9 and _. The maximum name length is 80
 /// characters.
 /// </param>
 /// <param name='diskEncryptionSet'>
 /// disk encryption set object supplied in the body of the Put disk encryption
 /// set operation.
 /// </param>
 public static DiskEncryptionSet CreateOrUpdate(this IDiskEncryptionSetsOperations operations, string resourceGroupName, string diskEncryptionSetName, DiskEncryptionSet diskEncryptionSet)
 {
     return(operations.CreateOrUpdateAsync(resourceGroupName, diskEncryptionSetName, diskEncryptionSet).GetAwaiter().GetResult());
 }
Example #13
0
        protected void DiskEncryptionSet_List_Execute(string methodName, string location = null)
        {
            using (MockContext context = MockContext.Start(this.GetType(), methodName))
            {
                EnsureClientsInitialized(context);
                DiskRPLocation = location ?? DiskRPLocation;

                // Data
                var rgName1            = TestUtilities.GenerateName(TestPrefix);
                var rgName2            = TestUtilities.GenerateName(TestPrefix);
                var desName1           = TestUtilities.GenerateName(DiskNamePrefix);
                var desName2           = TestUtilities.GenerateName(DiskNamePrefix);
                DiskEncryptionSet des1 = GenerateDefaultDiskEncryptionSet(DiskRPLocation);
                DiskEncryptionSet des2 = GenerateDefaultDiskEncryptionSet(DiskRPLocation);

                try
                {
                    // **********
                    // SETUP
                    // **********
                    // Create resource groups
                    m_ResourcesClient.ResourceGroups.CreateOrUpdate(rgName1, new ResourceGroup {
                        Location = DiskRPLocation
                    });
                    m_ResourcesClient.ResourceGroups.CreateOrUpdate(rgName2, new ResourceGroup {
                        Location = DiskRPLocation
                    });

                    // Put 4 diskEncryptionSets, 2 in each resource group
                    m_CrpClient.DiskEncryptionSets.CreateOrUpdate(rgName1, desName1, des1);
                    m_CrpClient.DiskEncryptionSets.CreateOrUpdate(rgName1, desName2, des2);
                    m_CrpClient.DiskEncryptionSets.CreateOrUpdate(rgName2, desName1, des1);
                    m_CrpClient.DiskEncryptionSets.CreateOrUpdate(rgName2, desName2, des2);

                    // **********
                    // TEST
                    // **********
                    // List diskEncryptionSets under resource group
                    IPage <DiskEncryptionSet> dessOut = m_CrpClient.DiskEncryptionSets.ListByResourceGroup(rgName1);
                    Assert.Equal(2, dessOut.Count());
                    Assert.Null(dessOut.NextPageLink);

                    dessOut = m_CrpClient.DiskEncryptionSets.ListByResourceGroup(rgName2);
                    Assert.Equal(2, dessOut.Count());
                    Assert.Null(dessOut.NextPageLink);

                    // List diskEncryptionSets under subscription
                    dessOut = m_CrpClient.DiskEncryptionSets.List();
                    Assert.True(dessOut.Count() >= 4);
                    if (dessOut.NextPageLink != null)
                    {
                        dessOut = m_CrpClient.DiskEncryptionSets.ListNext(dessOut.NextPageLink);
                        Assert.True(dessOut.Any());
                    }

                    // Delete diskEncryptionSets
                    m_CrpClient.DiskEncryptionSets.Delete(rgName1, desName1);
                    m_CrpClient.DiskEncryptionSets.Delete(rgName1, desName2);
                    m_CrpClient.DiskEncryptionSets.Delete(rgName2, desName1);
                    m_CrpClient.DiskEncryptionSets.Delete(rgName2, desName2);
                }
                finally
                {
                    // Delete resource group
                    m_ResourcesClient.ResourceGroups.Delete(rgName1);
                    m_ResourcesClient.ResourceGroups.Delete(rgName2);
                }
            }
        }
        public Response CreateOrUpdate(string resourceGroupName, string diskEncryptionSetName, DiskEncryptionSet diskEncryptionSet, CancellationToken cancellationToken = default)
        {
            if (resourceGroupName == null)
            {
                throw new ArgumentNullException(nameof(resourceGroupName));
            }
            if (diskEncryptionSetName == null)
            {
                throw new ArgumentNullException(nameof(diskEncryptionSetName));
            }
            if (diskEncryptionSet == null)
            {
                throw new ArgumentNullException(nameof(diskEncryptionSet));
            }

            using var message = CreateCreateOrUpdateRequest(resourceGroupName, diskEncryptionSetName, diskEncryptionSet);
            _pipeline.Send(message, cancellationToken);
            switch (message.Response.Status)
            {
            case 201:
            case 200:
                return(message.Response);

            default:
                throw _clientDiagnostics.CreateRequestFailedException(message.Response);
            }
        }