Exemple #1
0
        public void IscsiTargetCrud()
        {
            using var context = MockContext.Start(this.GetType());
            string resourceGroupName = TestUtilities.GenerateName("sdk-itcrud-rg");
            string diskPoolName      = TestUtilities.GenerateName("sdk-diskpool");
            string iscsiTargetName   = TestUtilities.GenerateName("target01");
            string diskName          = TestUtilities.GenerateName("sdk-test-disk");
            string location          = "eastus2euap";

            Console.WriteLine(diskPoolName);
            Console.WriteLine(iscsiTargetName);
            Console.WriteLine(resourceGroupName);
            Console.WriteLine(location);

            CreateResourceGroup(context, location, resourceGroupName);

            try
            {
                using var testBase = new StoragePoolTestBase(context);
                var client = testBase.StoragePoolClient;

                var vnetName         = "sdk-vnet";
                var subnetName       = "sdk-subnet";
                var diskName1        = "sdk-disk";
                var diskName2        = "sdk-disk-2";
                var availabilityZone = "2";

                // create vnet and subnet
                var networkClient = context.GetServiceClient <NetworkManagementClient>();
                var vnet          = new VirtualNetwork()
                {
                    Location     = location,
                    AddressSpace = new AddressSpace()
                    {
                        AddressPrefixes = new[] { "10.0.0.0/16" }
                    },
                    Subnets = new[]
                    {
                        new Subnet()
                        {
                            Name          = subnetName,
                            AddressPrefix = "10.0.0.0/24",
                            Delegations   = new Delegation[1]
                            {
                                new Delegation()
                                {
                                    Name        = "diskpool-delegation",
                                    ServiceName = "Microsoft.StoragePool/diskPools",
                                },
                            },
                        },
                    },
                };
                networkClient.VirtualNetworks.CreateOrUpdate(resourceGroupName, vnetName, vnet);
                var subnet = networkClient.Subnets.Get(resourceGroupName, vnetName, subnetName);

                var computeClient = context.GetServiceClient <ComputeManagementClient>();

                // create disk 1
                var sku = new DiskSku();
                sku.Name = DiskStorageAccountTypes.PremiumLRS;
                var disk1 = new ManagedDisk()
                {
                    Location     = location,
                    Sku          = sku,
                    Zones        = new[] { availabilityZone },
                    DiskSizeGB   = 256,
                    CreationData = new CreationData(DiskCreateOption.Empty),
                    MaxShares    = 2,
                };
                computeClient.Disks.CreateOrUpdate(resourceGroupName, diskName1, disk1);
                disk1 = computeClient.Disks.Get(resourceGroupName, diskName1);

                var disk2 = new ManagedDisk()
                {
                    Location     = location,
                    Sku          = sku,
                    Zones        = new[] { availabilityZone },
                    DiskSizeGB   = 256,
                    CreationData = new CreationData(DiskCreateOption.Empty),
                    MaxShares    = 2,
                };
                computeClient.Disks.CreateOrUpdate(resourceGroupName, diskName2, disk2);
                disk2 = computeClient.Disks.Get(resourceGroupName, diskName2);

                // create disk pool
                var disks       = new Disk[] { new Disk(disk1.Id), new Disk(disk2.Id) };
                var diskPoolSku = new DiskPoolSku("Standard", "Standard");
                var diskPool    = new DiskPoolCreate(diskPoolSku, subnet.Id, location, new[] { availabilityZone }, disks);
                client.DiskPools.CreateOrUpdate(resourceGroupName, diskPoolName, diskPool);

                // assert that create succeeded
                var createdDiskPool = client.DiskPools.Get(resourceGroupName, diskPoolName);
                Assert.NotNull(createdDiskPool);
                Assert.Equal("Succeeded", createdDiskPool.ProvisioningState);

                // create iscsi target
                var luns        = new IscsiLun[] { new IscsiLun("lun1", disk1.Id) };
                var iscsiTarget = new IscsiTargetCreate(IscsiTargetAclMode.Dynamic, iscsiTargetName);
                iscsiTarget.Luns = luns;
                client.IscsiTargets.CreateOrUpdate(resourceGroupName, diskPoolName, iscsiTargetName, iscsiTarget);

                var createdIscsiTarget = client.IscsiTargets.Get(resourceGroupName, diskPoolName, iscsiTargetName);
                Assert.NotNull(createdIscsiTarget);
                Assert.Equal("Succeeded", createdIscsiTarget.ProvisioningState);

                luns = new IscsiLun[] { new IscsiLun("lun1", disk1.Id), new IscsiLun("lun2", disk2.Id) };
                var iscsiTargetUpdate = new IscsiTargetCreate();
                iscsiTargetUpdate.Luns = luns;

                client.IscsiTargets.CreateOrUpdate(resourceGroupName, diskPoolName, iscsiTargetName, iscsiTargetUpdate);
                var updatedIscsiTarget = client.IscsiTargets.Get(resourceGroupName, diskPoolName, iscsiTargetName);
                Assert.NotNull(updatedIscsiTarget);
                Assert.Equal("Succeeded", updatedIscsiTarget.ProvisioningState);

                // delete iscsi target
                client.IscsiTargets.Delete(resourceGroupName, diskPoolName, iscsiTargetName);

                // delete disk pool
                client.DiskPools.Delete(resourceGroupName, diskPoolName);
            }
            finally
            {
                DeleteResourceGroup(context, resourceGroupName);
            }
        }
Exemple #2
0
        internal static IscsiTargetData DeserializeIscsiTargetData(JsonElement element)
        {
            Optional <string> managedBy = default;
            Optional <IReadOnlyList <string> > managedByExtended = default;
            ResourceIdentifier                 id                = default;
            string                             name              = default;
            ResourceType                       type              = default;
            SystemData                         systemData        = default;
            IscsiTargetAclMode                 aclMode           = default;
            Optional <IList <Acl> >            staticAcls        = default;
            Optional <IList <IscsiLun> >       luns              = default;
            string                             targetIqn         = default;
            ProvisioningStates                 provisioningState = default;
            OperationalStatus                  status            = default;
            Optional <IList <string> >         endpoints         = default;
            Optional <int>                     port              = default;
            Optional <IReadOnlyList <string> > sessions          = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("managedBy"))
                {
                    managedBy = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("managedByExtended"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    List <string> array = new List <string>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        array.Add(item.GetString());
                    }
                    managedByExtended = array;
                    continue;
                }
                if (property.NameEquals("id"))
                {
                    id = new ResourceIdentifier(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("name"))
                {
                    name = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("type"))
                {
                    type = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("systemData"))
                {
                    systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString());
                    continue;
                }
                if (property.NameEquals("properties"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        if (property0.NameEquals("aclMode"))
                        {
                            aclMode = new IscsiTargetAclMode(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("staticAcls"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <Acl> array = new List <Acl>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(Acl.DeserializeAcl(item));
                            }
                            staticAcls = array;
                            continue;
                        }
                        if (property0.NameEquals("luns"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <IscsiLun> array = new List <IscsiLun>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(IscsiLun.DeserializeIscsiLun(item));
                            }
                            luns = array;
                            continue;
                        }
                        if (property0.NameEquals("targetIqn"))
                        {
                            targetIqn = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("provisioningState"))
                        {
                            provisioningState = new ProvisioningStates(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("status"))
                        {
                            status = new OperationalStatus(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("endpoints"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <string> array = new List <string>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(item.GetString());
                            }
                            endpoints = array;
                            continue;
                        }
                        if (property0.NameEquals("port"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            port = property0.Value.GetInt32();
                            continue;
                        }
                        if (property0.NameEquals("sessions"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <string> array = new List <string>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(item.GetString());
                            }
                            sessions = array;
                            continue;
                        }
                    }
                    continue;
                }
            }
            return(new IscsiTargetData(id, name, type, systemData, managedBy.Value, Optional.ToList(managedByExtended), aclMode, Optional.ToList(staticAcls), Optional.ToList(luns), targetIqn, provisioningState, status, Optional.ToList(endpoints), Optional.ToNullable(port), Optional.ToList(sessions)));
        }