diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 940c7ae84e9..bda2c789d63 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -193,3 +193,5 @@
/src/webpubsub/ @zackliu
/src/connectedvmware/ @sanmishra18
+
+/src/diskpool/ @Juliehzl
diff --git a/scripts/ci/credscan/CredScanSuppressions.json b/scripts/ci/credscan/CredScanSuppressions.json
index 0c3916a440f..7ba3b3ab067 100644
--- a/scripts/ci/credscan/CredScanSuppressions.json
+++ b/scripts/ci/credscan/CredScanSuppressions.json
@@ -100,11 +100,17 @@
],
"_justification": "dummy passwords for one-off resources"
},
- {
+ {
"file": [
"src\\storage-blob-preview\\azext_storage_blob_preview\\tests\\latest\\recordings\\test_storage_blob_incremental_copy.yaml"
],
"_justification": "[Storage] response body contains random value recognized as secret in outdated recoding files of storage may remove in the future"
+ },
+ {
+ "file": [
+ "src\\diskpool\\README.md"
+ ],
+ "_justification": "Faked password"
}
]
}
diff --git a/src/diskpool/HISTORY.rst b/src/diskpool/HISTORY.rst
new file mode 100644
index 00000000000..1c139576ba0
--- /dev/null
+++ b/src/diskpool/HISTORY.rst
@@ -0,0 +1,8 @@
+.. :changelog:
+
+Release History
+===============
+
+0.1.0
+++++++
+* Initial release.
diff --git a/src/diskpool/README.md b/src/diskpool/README.md
new file mode 100644
index 00000000000..d895aaad5cc
--- /dev/null
+++ b/src/diskpool/README.md
@@ -0,0 +1,64 @@
+# Azure CLI Extension #
+This is the extension for diskpool
+
+### How to use ###
+Install this extension using the below CLI command
+```
+az extension add -s https://zuhdefault.blob.core.windows.net/cliext/diskpool-0.2.0-py3-none-any.whl
+```
+
+### Included Features ###
+#### disk-pool ####
+##### Create #####
+```
+az disk-pool create --name "myDiskPool" --location "westus" --availability-zones "1" \
+ --disks id="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_0" \
+ --disks id="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_1" \
+ --subnet-id "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/mysubnet" \
+ --sku name="Standard_ABC" --tags key="value" --resource-group "myResourceGroup"
+
+az disk-pool wait --created --name "myDiskPool" --resource-group "myResourceGroup"
+```
+##### Show #####
+```
+az disk-pool show --name "myDiskPool" --resource-group "myResourceGroup"
+```
+##### List #####
+```
+az disk-pool list --resource-group "myResourceGroup"
+```
+##### Update #####
+```
+az disk-pool update --name "myDiskPool" --location "westus" --availability-zones "1" \
+ --disks id="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_0" \
+ --disks id="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_1" \
+ --subnet-id "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/mysubnet" \
+ --tags key="value" --resource-group "myResourceGroup"
+```
+##### Delete #####
+```
+az disk-pool delete --name "myDiskPool" --resource-group "myResourceGroup"
+```
+#### disk-pool iscsi-target ####
+##### Create #####
+```
+az disk-pool iscsi-target create --disk-pool-name "myDiskPool" --name "myIscsiTarget" \
+ --target-iqn "iqn.2005-03.org.iscsi:server1" \
+ --tpgs "[{\\"acls\\":[{\\"credentials\\":{\\"password\\":\\"some_pa$$word\\",\\"username\\":\\"some_username\\"},\\"initiatorIqn\\":\\"iqn.2005-03.org.iscsi:client\\",\\"mappedLuns\\":[\\"lun0\\"]}],\\"attributes\\":{\\"authentication\\":true,\\"prodModeWriteProtect\\":false},\\"luns\\":[{\\"name\\":\\"lun0\\",\\"managedDiskAzureResourceId\\":\\"/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_1\\"}]}]" \
+ --resource-group "myResourceGroup"
+
+az disk-pool iscsi-target wait --created --name "myIscsiTarget" --resource-group "myResourceGroup"
+```
+##### Show #####
+```
+az disk-pool iscsi-target show --disk-pool-name "myDiskPool" --name "myIscsiTarget" --resource-group "myResourceGroup"
+```
+##### List #####
+```
+az disk-pool iscsi-target list --disk-pool-name "myDiskPool" --resource-group "myResourceGroup"
+```
+##### Delete #####
+```
+az disk-pool iscsi-target delete --disk-pool-name "myDiskPool" --name "myIscsiTarget" \
+ --resource-group "myResourceGroup"
+```
\ No newline at end of file
diff --git a/src/diskpool/azext_diskpool/__init__.py b/src/diskpool/azext_diskpool/__init__.py
new file mode 100644
index 00000000000..2b5cb0acbde
--- /dev/null
+++ b/src/diskpool/azext_diskpool/__init__.py
@@ -0,0 +1,53 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=unused-import
+
+import azext_diskpool._help
+from azure.cli.core import AzCommandsLoader
+
+
+class StoragePoolManagementCommandsLoader(AzCommandsLoader):
+
+ def __init__(self, cli_ctx=None):
+ from azure.cli.core.commands import CliCommandType
+ from azext_diskpool.generated._client_factory import cf_diskpool_cl
+ diskpool_custom = CliCommandType(
+ operations_tmpl='azext_diskpool.custom#{}',
+ client_factory=cf_diskpool_cl)
+ parent = super(StoragePoolManagementCommandsLoader, self)
+ parent.__init__(cli_ctx=cli_ctx, custom_command_type=diskpool_custom)
+
+ def load_command_table(self, args):
+ from azext_diskpool.generated.commands import load_command_table
+ load_command_table(self, args)
+ try:
+ from azext_diskpool.manual.commands import load_command_table as load_command_table_manual
+ load_command_table_manual(self, args)
+ except ImportError as e:
+ if e.name.endswith('manual.commands'):
+ pass
+ else:
+ raise e
+ return self.command_table
+
+ def load_arguments(self, command):
+ from azext_diskpool.generated._params import load_arguments
+ load_arguments(self, command)
+ try:
+ from azext_diskpool.manual._params import load_arguments as load_arguments_manual
+ load_arguments_manual(self, command)
+ except ImportError as e:
+ if e.name.endswith('manual._params'):
+ pass
+ else:
+ raise e
+
+
+COMMAND_LOADER_CLS = StoragePoolManagementCommandsLoader
diff --git a/src/diskpool/azext_diskpool/_help.py b/src/diskpool/azext_diskpool/_help.py
new file mode 100644
index 00000000000..9b93f87a6e9
--- /dev/null
+++ b/src/diskpool/azext_diskpool/_help.py
@@ -0,0 +1,20 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=wildcard-import
+# pylint: disable=unused-wildcard-import
+# pylint: disable=unused-import
+from .generated._help import helps # pylint: disable=reimported
+try:
+ from .manual._help import helps # pylint: disable=reimported
+except ImportError as e:
+ if e.name.endswith('manual._help'):
+ pass
+ else:
+ raise e
diff --git a/src/diskpool/azext_diskpool/action.py b/src/diskpool/azext_diskpool/action.py
new file mode 100644
index 00000000000..9b3d0a8a78c
--- /dev/null
+++ b/src/diskpool/azext_diskpool/action.py
@@ -0,0 +1,20 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=wildcard-import
+# pylint: disable=unused-wildcard-import
+
+from .generated.action import * # noqa: F403
+try:
+ from .manual.action import * # noqa: F403
+except ImportError as e:
+ if e.name.endswith('manual.action'):
+ pass
+ else:
+ raise e
diff --git a/src/diskpool/azext_diskpool/azext_metadata.json b/src/diskpool/azext_diskpool/azext_metadata.json
new file mode 100644
index 00000000000..cfc30c747c7
--- /dev/null
+++ b/src/diskpool/azext_diskpool/azext_metadata.json
@@ -0,0 +1,4 @@
+{
+ "azext.isExperimental": true,
+ "azext.minCliCoreVersion": "2.15.0"
+}
\ No newline at end of file
diff --git a/src/diskpool/azext_diskpool/custom.py b/src/diskpool/azext_diskpool/custom.py
new file mode 100644
index 00000000000..885447229d6
--- /dev/null
+++ b/src/diskpool/azext_diskpool/custom.py
@@ -0,0 +1,20 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=wildcard-import
+# pylint: disable=unused-wildcard-import
+
+from .generated.custom import * # noqa: F403
+try:
+ from .manual.custom import * # noqa: F403
+except ImportError as e:
+ if e.name.endswith('manual.custom'):
+ pass
+ else:
+ raise e
diff --git a/src/diskpool/azext_diskpool/generated/__init__.py b/src/diskpool/azext_diskpool/generated/__init__.py
new file mode 100644
index 00000000000..c9cfdc73e77
--- /dev/null
+++ b/src/diskpool/azext_diskpool/generated/__init__.py
@@ -0,0 +1,12 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+__path__ = __import__('pkgutil').extend_path(__path__, __name__)
diff --git a/src/diskpool/azext_diskpool/generated/_client_factory.py b/src/diskpool/azext_diskpool/generated/_client_factory.py
new file mode 100644
index 00000000000..cd3bcf51fee
--- /dev/null
+++ b/src/diskpool/azext_diskpool/generated/_client_factory.py
@@ -0,0 +1,28 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+
+def cf_diskpool_cl(cli_ctx, *_):
+ from azure.cli.core.commands.client_factory import get_mgmt_service_client
+ from azext_diskpool.vendored_sdks.storagepool import StoragePoolManagement
+ return get_mgmt_service_client(cli_ctx,
+ StoragePoolManagement)
+
+
+def cf_disk_pool(cli_ctx, *_):
+ return cf_diskpool_cl(cli_ctx).disk_pools
+
+
+def cf_disk_pool_zone(cli_ctx, *_):
+ return cf_diskpool_cl(cli_ctx).disk_pool_zones
+
+
+def cf_iscsi_target(cli_ctx, *_):
+ return cf_diskpool_cl(cli_ctx).iscsi_targets
diff --git a/src/diskpool/azext_diskpool/generated/_help.py b/src/diskpool/azext_diskpool/generated/_help.py
new file mode 100644
index 00000000000..3dc6812269f
--- /dev/null
+++ b/src/diskpool/azext_diskpool/generated/_help.py
@@ -0,0 +1,263 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=too-many-lines
+
+from knack.help_files import helps
+
+
+helps['disk-pool'] = '''
+ type: group
+ short-summary: Manage Storage Pool Management
+'''
+
+helps['disk-pool'] = """
+ type: group
+ short-summary: Manage disk pool with diskpool
+"""
+
+helps['disk-pool list'] = """
+ type: command
+ short-summary: "Gets a list of DiskPools in a resource group. And Gets a list of Disk Pools in a subscription."
+ examples:
+ - name: List Disk Pools
+ text: |-
+ az disk-pool list --resource-group "myResourceGroup"
+ - name: List Disk Pools by subscription
+ text: |-
+ az disk-pool list
+"""
+
+helps['disk-pool show'] = """
+ type: command
+ short-summary: "Get a Disk pool."
+ examples:
+ - name: Get Disk pool
+ text: |-
+ az disk-pool show --name "myDiskPool" --resource-group "myResourceGroup"
+"""
+
+helps['disk-pool create'] = """
+ type: command
+ short-summary: "Create Disk pool."
+ parameters:
+ - name: --sku
+ short-summary: "Determines the SKU of the Disk Pool"
+ long-summary: |
+ Usage: --sku name=XX tier=XX
+
+ name: Required. Sku name
+ tier: Sku tier
+ - name: --disks
+ short-summary: "List of Azure Managed Disks to attach to a Disk Pool."
+ long-summary: |
+ The order of this parameter is specific customized. Usage: --disks id-value
+
+ id: Required. Unique Azure Resource ID of the Managed Disk.
+
+ Multiple actions can be specified by using more than one --disks argument.
+ examples:
+ - name: Create or Update Disk pool
+ text: |-
+ az disk-pool create --location "westus" --availability-zones "1" --disks "/subscriptions/11111111-1111-1\
+111-1111-111111111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_0" --disks \
+"/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/v\
+m-name_DataDisk_1" --subnet-id "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/prov\
+iders/Microsoft.Network/virtualNetworks/myvnet/subnets/mysubnet" --sku name="Basic_V0" tier="Basic" --tags key="value" \
+--name "myDiskPool" --resource-group "myResourceGroup"
+"""
+
+helps['disk-pool update'] = """
+ type: command
+ short-summary: "Update a Disk pool."
+ parameters:
+ - name: --disks
+ short-summary: "List of Azure Managed Disks to attach to a Disk Pool."
+ long-summary: |
+ The order of this parameter is specific customized. Usage: --disks id-value
+
+ id: Required. Unique Azure Resource ID of the Managed Disk.
+
+ Multiple actions can be specified by using more than one --disks argument.
+ examples:
+ - name: Update Disk pool
+ text: |-
+ az disk-pool update --name "myDiskPool" --disks "/subscriptions/11111111-1111-1111-1111-111111111111/res\
+ourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_0" --disks \
+"/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/v\
+m-name_DataDisk_1" --tags key="value" --resource-group "myResourceGroup"
+"""
+
+helps['disk-pool delete'] = """
+ type: command
+ short-summary: "Delete a Disk pool."
+ examples:
+ - name: Delete Disk pool
+ text: |-
+ az disk-pool delete --name "myDiskPool" --resource-group "myResourceGroup"
+"""
+
+helps['disk-pool list-skus'] = """
+ type: command
+ short-summary: "Lists available Disk Pool Skus in an Azure location."
+ examples:
+ - name: List Disk Pool Skus
+ text: |-
+ az disk-pool list-skus --location "eastus"
+"""
+
+helps['disk-pool start'] = """
+ type: command
+ short-summary: "The operation to start a Disk Pool."
+ examples:
+ - name: Start Disk Pool
+ text: |-
+ az disk-pool start --name "myDiskPool" --resource-group "myResourceGroup"
+"""
+
+helps['disk-pool stop'] = """
+ type: command
+ short-summary: "Shuts down the Disk Pool and releases the compute resources. You are not billed for the compute \
+resources that this Disk Pool uses."
+ examples:
+ - name: Deallocate Disk Pool
+ text: |-
+ az disk-pool stop --name "myDiskPool" --resource-group "myResourceGroup"
+"""
+
+helps['disk-pool wait'] = """
+ type: command
+ short-summary: Place the CLI in a waiting state until a condition of the disk-pool is met.
+ examples:
+ - name: Pause executing next line of CLI script until the disk-pool is successfully created.
+ text: |-
+ az disk-pool wait --name "myDiskPool" --resource-group "myResourceGroup" --created
+ - name: Pause executing next line of CLI script until the disk-pool is successfully updated.
+ text: |-
+ az disk-pool wait --name "myDiskPool" --resource-group "myResourceGroup" --updated
+ - name: Pause executing next line of CLI script until the disk-pool is successfully deleted.
+ text: |-
+ az disk-pool wait --name "myDiskPool" --resource-group "myResourceGroup" --deleted
+"""
+
+helps['disk-pool iscsi-target'] = """
+ type: group
+ short-summary: Manage iscsi target with diskpool
+"""
+
+helps['disk-pool iscsi-target list'] = """
+ type: command
+ short-summary: "Get iSCSI Targets in a Disk pool."
+ examples:
+ - name: List Disk Pools by Resource Group
+ text: |-
+ az disk-pool iscsi-target list --disk-pool-name "myDiskPool" --resource-group "myResourceGroup"
+"""
+
+helps['disk-pool iscsi-target show'] = """
+ type: command
+ short-summary: "Get an iSCSI Target."
+ examples:
+ - name: Get iSCSI Target
+ text: |-
+ az disk-pool iscsi-target show --disk-pool-name "myDiskPool" --name "myIscsiTarget" --resource-group \
+"myResourceGroup"
+"""
+
+helps['disk-pool iscsi-target create'] = """
+ type: command
+ short-summary: "Create an iSCSI Target."
+ parameters:
+ - name: --static-acls
+ short-summary: "Access Control List (ACL) for an iSCSI Target; defines LUN masking policy"
+ long-summary: |
+ Usage: --static-acls initiator-iqn=XX mapped-luns=XX
+
+ initiator-iqn: Required. iSCSI initiator IQN (iSCSI Qualified Name); example: \
+"iqn.2005-03.org.iscsi:client".
+ mapped-luns: Required. List of LUN names mapped to the ACL.
+
+ Multiple actions can be specified by using more than one --static-acls argument.
+ - name: --luns
+ short-summary: "List of LUNs to be exposed through iSCSI Target."
+ long-summary: |
+ Usage: --luns name=XX managed-disk-azure-resource-id=XX
+
+ name: Required. User defined name for iSCSI LUN; example: "lun0"
+ managed-disk-azure-resource-id: Required. Azure Resource ID of the Managed Disk.
+
+ Multiple actions can be specified by using more than one --luns argument.
+ examples:
+ - name: Create or Update iSCSI Target
+ text: |-
+ az disk-pool iscsi-target create --disk-pool-name "myDiskPool" --acl-mode "Dynamic" --luns name="lun0" \
+managed-disk-azure-resource-id="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/prov\
+iders/Microsoft.Compute/disks/vm-name_DataDisk_1" --target-iqn "iqn.2005-03.org.iscsi:server1" --name "myIscsiTarget" \
+--resource-group "myResourceGroup"
+"""
+
+helps['disk-pool iscsi-target update'] = """
+ type: command
+ short-summary: "Update an iSCSI Target."
+ parameters:
+ - name: --static-acls
+ short-summary: "Access Control List (ACL) for an iSCSI Target; defines LUN masking policy"
+ long-summary: |
+ Usage: --static-acls initiator-iqn=XX mapped-luns=XX
+
+ initiator-iqn: Required. iSCSI initiator IQN (iSCSI Qualified Name); example: \
+"iqn.2005-03.org.iscsi:client".
+ mapped-luns: Required. List of LUN names mapped to the ACL.
+
+ Multiple actions can be specified by using more than one --static-acls argument.
+ - name: --luns
+ short-summary: "List of LUNs to be exposed through iSCSI Target."
+ long-summary: |
+ Usage: --luns name=XX managed-disk-azure-resource-id=XX
+
+ name: Required. User defined name for iSCSI LUN; example: "lun0"
+ managed-disk-azure-resource-id: Required. Azure Resource ID of the Managed Disk.
+
+ Multiple actions can be specified by using more than one --luns argument.
+ examples:
+ - name: Update iSCSI Target
+ text: |-
+ az disk-pool iscsi-target update --disk-pool-name "myDiskPool" --name "myIscsiTarget" --luns \
+name="lun0" managed-disk-azure-resource-id="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResour\
+ceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_1" --static-acls initiator-iqn="iqn.2005-03.org.iscsi:client\
+" mapped-luns="lun0" --resource-group "myResourceGroup"
+"""
+
+helps['disk-pool iscsi-target delete'] = """
+ type: command
+ short-summary: "Delete an iSCSI Target."
+ examples:
+ - name: Delete iSCSI Target
+ text: |-
+ az disk-pool iscsi-target delete --disk-pool-name "myDiskPool" --name "myIscsiTarget" --resource-group \
+"myResourceGroup"
+"""
+
+helps['disk-pool iscsi-target wait'] = """
+ type: command
+ short-summary: Place the CLI in a waiting state until a condition of the disk-pool iscsi-target is met.
+ examples:
+ - name: Pause executing next line of CLI script until the disk-pool iscsi-target is successfully created.
+ text: |-
+ az disk-pool iscsi-target wait --disk-pool-name "myDiskPool" --name "myIscsiTarget" --resource-group \
+"myResourceGroup" --created
+ - name: Pause executing next line of CLI script until the disk-pool iscsi-target is successfully updated.
+ text: |-
+ az disk-pool iscsi-target wait --disk-pool-name "myDiskPool" --name "myIscsiTarget" --resource-group \
+"myResourceGroup" --updated
+ - name: Pause executing next line of CLI script until the disk-pool iscsi-target is successfully deleted.
+ text: |-
+ az disk-pool iscsi-target wait --disk-pool-name "myDiskPool" --name "myIscsiTarget" --resource-group \
+"myResourceGroup" --deleted
+"""
diff --git a/src/diskpool/azext_diskpool/generated/_params.py b/src/diskpool/azext_diskpool/generated/_params.py
new file mode 100644
index 00000000000..8dd4b8bbe98
--- /dev/null
+++ b/src/diskpool/azext_diskpool/generated/_params.py
@@ -0,0 +1,130 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=too-many-lines
+# pylint: disable=too-many-statements
+
+from azure.cli.core.commands.parameters import (
+ tags_type,
+ get_enum_type,
+ resource_group_name_type,
+ get_location_type
+)
+from azure.cli.core.commands.validators import get_default_location_from_resource_group
+from azext_diskpool.action import (
+ AddSku,
+ AddDiskPoolCreateDisks,
+ AddDiskPoolUpdateDisks,
+ AddDiskPoolIscsiTargetCreateStaticAcls,
+ AddDiskPoolIscsiTargetCreateLuns,
+ AddDiskPoolIscsiTargetUpdateStaticAcls,
+ AddDiskPoolIscsiTargetUpdateLuns
+)
+
+
+def load_arguments(self, _):
+
+ with self.argument_context('disk-pool list') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+
+ with self.argument_context('disk-pool show') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', options_list=['--name', '-n', '--disk-pool-name'], type=str, help='The name of '
+ 'the Disk Pool.', id_part='name')
+
+ with self.argument_context('disk-pool create') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', options_list=['--name', '-n', '--disk-pool-name'], type=str, help='The name of '
+ 'the Disk Pool.')
+ c.argument('sku', action=AddSku, nargs='+', help='Determines the SKU of the Disk Pool')
+ c.argument('tags', tags_type)
+ c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False,
+ validator=get_default_location_from_resource_group)
+ c.argument('availability_zones', nargs='+', help='Logical zone for Disk Pool resource; example: ["1"].')
+ c.argument('disks', action=AddDiskPoolCreateDisks, nargs='+', help='List of Azure Managed Disks to attach to a '
+ 'Disk Pool.')
+ c.argument('subnet_id', type=str, help='Azure Resource ID of a Subnet for the Disk Pool.')
+ c.argument('additional_capabilities', options_list=['--additional-capabilities', '-a'], nargs='+', help='List '
+ 'of additional capabilities for a Disk Pool.')
+
+ with self.argument_context('disk-pool update') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', options_list=['--name', '-n', '--disk-pool-name'], type=str, help='The name of '
+ 'the Disk Pool.', id_part='name')
+ c.argument('tags', tags_type)
+ c.argument('disks', action=AddDiskPoolUpdateDisks, nargs='+', help='List of Azure Managed Disks to attach to a '
+ 'Disk Pool.')
+
+ with self.argument_context('disk-pool delete') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', options_list=['--name', '-n', '--disk-pool-name'], type=str, help='The name of '
+ 'the Disk Pool.', id_part='name')
+
+ with self.argument_context('disk-pool list-skus') as c:
+ c.argument('location', arg_type=get_location_type(self.cli_ctx))
+
+ with self.argument_context('disk-pool start') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', options_list=['--name', '-n', '--disk-pool-name'], type=str, help='The name of '
+ 'the Disk Pool.', id_part='name')
+
+ with self.argument_context('disk-pool stop') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', options_list=['--name', '-n', '--disk-pool-name'], type=str, help='The name of '
+ 'the Disk Pool.', id_part='name')
+
+ with self.argument_context('disk-pool wait') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', options_list=['--name', '-n', '--disk-pool-name'], type=str, help='The name of '
+ 'the Disk Pool.', id_part='name')
+
+ with self.argument_context('disk-pool iscsi-target list') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', type=str, help='The name of the Disk Pool.')
+
+ with self.argument_context('disk-pool iscsi-target show') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', type=str, help='The name of the Disk Pool.', id_part='name')
+ c.argument('iscsi_target_name', options_list=['--name', '-n', '--iscsi-target-name'], type=str, help='The name '
+ 'of the iSCSI Target.', id_part='child_name_1')
+
+ with self.argument_context('disk-pool iscsi-target create') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', type=str, help='The name of the Disk Pool.')
+ c.argument('iscsi_target_name', options_list=['--name', '-n', '--iscsi-target-name'], type=str, help='The name '
+ 'of the iSCSI Target.')
+ c.argument('acl_mode', arg_type=get_enum_type(['Dynamic', 'Static']), help='Mode for Target connectivity.')
+ c.argument('target_iqn', type=str, help='iSCSI Target IQN (iSCSI Qualified Name); example: '
+ '"iqn.2005-03.org.iscsi:server".')
+ c.argument('static_acls', action=AddDiskPoolIscsiTargetCreateStaticAcls, nargs='+', help='Access Control List '
+ '(ACL) for an iSCSI Target; defines LUN masking policy')
+ c.argument('luns', action=AddDiskPoolIscsiTargetCreateLuns, nargs='+', help='List of LUNs to be exposed '
+ 'through iSCSI Target.')
+
+ with self.argument_context('disk-pool iscsi-target update') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', type=str, help='The name of the Disk Pool.', id_part='name')
+ c.argument('iscsi_target_name', options_list=['--name', '-n', '--iscsi-target-name'], type=str, help='The name '
+ 'of the iSCSI Target.', id_part='child_name_1')
+ c.argument('static_acls', action=AddDiskPoolIscsiTargetUpdateStaticAcls, nargs='+', help='Access Control List '
+ '(ACL) for an iSCSI Target; defines LUN masking policy')
+ c.argument('luns', action=AddDiskPoolIscsiTargetUpdateLuns, nargs='+', help='List of LUNs to be exposed '
+ 'through iSCSI Target.')
+
+ with self.argument_context('disk-pool iscsi-target delete') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', type=str, help='The name of the Disk Pool.', id_part='name')
+ c.argument('iscsi_target_name', options_list=['--name', '-n', '--iscsi-target-name'], type=str, help='The name '
+ 'of the iSCSI Target.', id_part='child_name_1')
+
+ with self.argument_context('disk-pool iscsi-target wait') as c:
+ c.argument('resource_group_name', resource_group_name_type)
+ c.argument('disk_pool_name', type=str, help='The name of the Disk Pool.', id_part='name')
+ c.argument('iscsi_target_name', options_list=['--name', '-n', '--iscsi-target-name'], type=str, help='The name '
+ 'of the iSCSI Target.', id_part='child_name_1')
diff --git a/src/diskpool/azext_diskpool/generated/_validators.py b/src/diskpool/azext_diskpool/generated/_validators.py
new file mode 100644
index 00000000000..b33a44c1ebf
--- /dev/null
+++ b/src/diskpool/azext_diskpool/generated/_validators.py
@@ -0,0 +1,9 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
diff --git a/src/diskpool/azext_diskpool/generated/action.py b/src/diskpool/azext_diskpool/generated/action.py
new file mode 100644
index 00000000000..4e4d509a5c2
--- /dev/null
+++ b/src/diskpool/azext_diskpool/generated/action.py
@@ -0,0 +1,249 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+
+# pylint: disable=protected-access
+
+# pylint: disable=no-self-use
+
+
+import argparse
+from collections import defaultdict
+from knack.util import CLIError
+
+
+class AddDiskPoolUpdateDisks(argparse._AppendAction):
+ def __call__(self, parser, namespace, values, option_string=None):
+ action = self.get_action(values, option_string)
+
+ for item in action:
+ super(AddDiskPoolUpdateDisks, self).__call__(parser, namespace, item, option_string)
+
+ def get_action(self, values, option_string=None):
+ try:
+ value_chunk_list = [values[x: x + 1] for x in range(0, len(values), 1)]
+ value_list = []
+ for chunk in value_chunk_list:
+ id = chunk
+ value_list.append(
+ {
+ 'id': id,
+ }
+ )
+ return value_list
+ except ValueError:
+ raise CLIError('usage error: {} NAME METRIC OPERATION VALUE'.format(option_string))
+
+
+class AddSku(argparse.Action):
+ def __call__(self, parser, namespace, values, option_string=None):
+ action = self.get_action(values, option_string)
+ namespace.sku = action
+
+ def get_action(self, values, option_string):
+ try:
+ properties = defaultdict(list)
+ for (k, v) in (x.split('=', 1) for x in values):
+ properties[k].append(v)
+ properties = dict(properties)
+ except ValueError:
+ raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+ d = {}
+ for k in properties:
+
+ kl = k.lower()
+
+ v = properties[k]
+
+ if kl == 'name':
+
+ d['name'] = v[0]
+
+ elif kl == 'tier':
+
+ d['tier'] = v[0]
+
+ else:
+ raise CLIError(
+ 'Unsupported Key {} is provided for parameter sku. All possible keys are: name, tier'.format(k)
+ )
+
+ return d
+
+
+class AddDiskPoolCreateDisks(argparse._AppendAction):
+ def __call__(self, parser, namespace, values, option_string=None):
+ action = self.get_action(values, option_string)
+
+ for item in action:
+ super(AddDiskPoolCreateDisks, self).__call__(parser, namespace, item, option_string)
+
+ def get_action(self, values, option_string=None):
+ try:
+ value_chunk_list = [values[x: x + 1] for x in range(0, len(values), 1)]
+ value_list = []
+ for chunk in value_chunk_list:
+ id = chunk
+ value_list.append(
+ {
+ 'id': id,
+ }
+ )
+ return value_list
+ except ValueError:
+ raise CLIError('usage error: {} NAME METRIC OPERATION VALUE'.format(option_string))
+
+
+class AddDiskPoolIscsiTargetUpdateStaticAcls(argparse._AppendAction):
+ def __call__(self, parser, namespace, values, option_string=None):
+ action = self.get_action(values, option_string)
+ super(AddDiskPoolIscsiTargetUpdateStaticAcls, self).__call__(parser, namespace, action, option_string)
+
+ def get_action(self, values, option_string):
+ try:
+ properties = defaultdict(list)
+ for (k, v) in (x.split('=', 1) for x in values):
+ properties[k].append(v)
+ properties = dict(properties)
+ except ValueError:
+ raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+ d = {}
+ for k in properties:
+
+ kl = k.lower()
+
+ v = properties[k]
+
+ if kl == 'initiator-iqn':
+
+ d['initiator_iqn'] = v[0]
+
+ elif kl == 'mapped-luns':
+
+ d['mapped_luns'] = v
+
+ else:
+ raise CLIError(
+ 'Unsupported Key {} is provided for parameter static-acls. All possible keys are: initiator-iqn,'
+ ' mapped-luns'.format(k)
+ )
+
+ return d
+
+
+class AddDiskPoolIscsiTargetUpdateLuns(argparse._AppendAction):
+ def __call__(self, parser, namespace, values, option_string=None):
+ action = self.get_action(values, option_string)
+ super(AddDiskPoolIscsiTargetUpdateLuns, self).__call__(parser, namespace, action, option_string)
+
+ def get_action(self, values, option_string):
+ try:
+ properties = defaultdict(list)
+ for (k, v) in (x.split('=', 1) for x in values):
+ properties[k].append(v)
+ properties = dict(properties)
+ except ValueError:
+ raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+ d = {}
+ for k in properties:
+
+ kl = k.lower()
+
+ v = properties[k]
+
+ if kl == 'name':
+
+ d['name'] = v[0]
+
+ elif kl == 'managed-disk-azure-resource-id':
+
+ d['managed_disk_azure_resource_id'] = v[0]
+
+ else:
+ raise CLIError(
+ 'Unsupported Key {} is provided for parameter luns. All possible keys are: name,'
+ ' managed-disk-azure-resource-id'.format(k)
+ )
+
+ return d
+
+
+class AddDiskPoolIscsiTargetCreateStaticAcls(argparse._AppendAction):
+ def __call__(self, parser, namespace, values, option_string=None):
+ action = self.get_action(values, option_string)
+ super(AddDiskPoolIscsiTargetCreateStaticAcls, self).__call__(parser, namespace, action, option_string)
+
+ def get_action(self, values, option_string):
+ try:
+ properties = defaultdict(list)
+ for (k, v) in (x.split('=', 1) for x in values):
+ properties[k].append(v)
+ properties = dict(properties)
+ except ValueError:
+ raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+ d = {}
+ for k in properties:
+
+ kl = k.lower()
+
+ v = properties[k]
+
+ if kl == 'initiator-iqn':
+
+ d['initiator_iqn'] = v[0]
+
+ elif kl == 'mapped-luns':
+
+ d['mapped_luns'] = v
+
+ else:
+ raise CLIError(
+ 'Unsupported Key {} is provided for parameter static-acls. All possible keys are: initiator-iqn,'
+ ' mapped-luns'.format(k)
+ )
+
+ return d
+
+
+class AddDiskPoolIscsiTargetCreateLuns(argparse._AppendAction):
+ def __call__(self, parser, namespace, values, option_string=None):
+ action = self.get_action(values, option_string)
+ super(AddDiskPoolIscsiTargetCreateLuns, self).__call__(parser, namespace, action, option_string)
+
+ def get_action(self, values, option_string):
+ try:
+ properties = defaultdict(list)
+ for (k, v) in (x.split('=', 1) for x in values):
+ properties[k].append(v)
+ properties = dict(properties)
+ except ValueError:
+ raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string))
+ d = {}
+ for k in properties:
+
+ kl = k.lower()
+
+ v = properties[k]
+
+ if kl == 'name':
+
+ d['name'] = v[0]
+
+ elif kl == 'managed-disk-azure-resource-id':
+
+ d['managed_disk_azure_resource_id'] = v[0]
+
+ else:
+ raise CLIError(
+ 'Unsupported Key {} is provided for parameter luns. All possible keys are: name,'
+ ' managed-disk-azure-resource-id'.format(k)
+ )
+
+ return d
diff --git a/src/diskpool/azext_diskpool/generated/commands.py b/src/diskpool/azext_diskpool/generated/commands.py
new file mode 100644
index 00000000000..e66fd811338
--- /dev/null
+++ b/src/diskpool/azext_diskpool/generated/commands.py
@@ -0,0 +1,55 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=too-many-statements
+# pylint: disable=too-many-locals
+# pylint: disable=bad-continuation
+# pylint: disable=line-too-long
+
+from azure.cli.core.commands import CliCommandType
+from azext_diskpool.generated._client_factory import cf_disk_pool, cf_disk_pool_zone, cf_iscsi_target
+
+
+diskpool_disk_pool = CliCommandType(
+ operations_tmpl='azext_diskpool.vendored_sdks.storagepool.operations._disk_pools_operations#DiskPoolsOperations.{}',
+ client_factory=cf_disk_pool,
+)
+
+
+diskpool_iscsi_target = CliCommandType(
+ operations_tmpl=(
+ 'azext_diskpool.vendored_sdks.storagepool.operations._iscsi_targets_operations#IscsiTargetsOperations.{}'
+ ),
+ client_factory=cf_iscsi_target,
+)
+
+
+def load_command_table(self, _):
+
+ with self.command_group('disk-pool', diskpool_disk_pool, client_factory=cf_disk_pool) as g:
+ g.custom_command('list', 'disk_pool_list')
+ g.custom_show_command('show', 'disk_pool_show')
+ g.custom_command('create', 'disk_pool_create', supports_no_wait=True)
+ g.custom_command('update', 'disk_pool_update', supports_no_wait=True)
+ g.custom_command('delete', 'disk_pool_delete', supports_no_wait=True, confirmation=True)
+ g.custom_command('list-skus', 'disk_pool_list_skus', client_factory=cf_disk_pool_zone)
+ g.custom_command('start', 'disk_pool_start', supports_no_wait=True)
+ g.custom_command('stop', 'disk_pool_stop', supports_no_wait=True)
+ g.custom_wait_command('wait', 'disk_pool_show')
+
+ with self.command_group('disk-pool iscsi-target', diskpool_iscsi_target, client_factory=cf_iscsi_target) as g:
+ g.custom_command('list', 'disk_pool_iscsi_target_list')
+ g.custom_show_command('show', 'disk_pool_iscsi_target_show')
+ g.custom_command('create', 'disk_pool_iscsi_target_create', supports_no_wait=True)
+ g.custom_command('update', 'disk_pool_iscsi_target_update', supports_no_wait=True)
+ g.custom_command('delete', 'disk_pool_iscsi_target_delete', supports_no_wait=True, confirmation=True)
+ g.custom_wait_command('wait', 'disk_pool_iscsi_target_show')
+
+ with self.command_group('diskpool', is_experimental=True):
+ pass
diff --git a/src/diskpool/azext_diskpool/generated/custom.py b/src/diskpool/azext_diskpool/generated/custom.py
new file mode 100644
index 00000000000..811c1c55e08
--- /dev/null
+++ b/src/diskpool/azext_diskpool/generated/custom.py
@@ -0,0 +1,171 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=too-many-lines
+
+from azure.cli.core.util import sdk_no_wait
+
+
+def disk_pool_list(client,
+ resource_group_name=None):
+ if resource_group_name:
+ return client.list_by_resource_group(resource_group_name=resource_group_name)
+ return client.list_by_subscription()
+
+
+def disk_pool_show(client,
+ resource_group_name,
+ disk_pool_name):
+ return client.get(resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name)
+
+
+def disk_pool_create(client,
+ resource_group_name,
+ disk_pool_name,
+ sku,
+ location,
+ subnet_id,
+ tags=None,
+ availability_zones=None,
+ disks=None,
+ additional_capabilities=None,
+ no_wait=False):
+ disk_pool_create_payload = {}
+ disk_pool_create_payload['sku'] = sku
+ disk_pool_create_payload['tags'] = tags
+ disk_pool_create_payload['location'] = location
+ disk_pool_create_payload['availability_zones'] = availability_zones
+ disk_pool_create_payload['disks'] = disks
+ disk_pool_create_payload['subnet_id'] = subnet_id
+ disk_pool_create_payload['additional_capabilities'] = additional_capabilities
+ return sdk_no_wait(no_wait,
+ client.begin_create_or_update,
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ disk_pool_create_payload=disk_pool_create_payload)
+
+
+def disk_pool_update(client,
+ resource_group_name,
+ disk_pool_name,
+ tags=None,
+ disks=None,
+ no_wait=False):
+ disk_pool_update_payload = {}
+ disk_pool_update_payload['tags'] = tags
+ disk_pool_update_payload['disks'] = disks
+ return sdk_no_wait(no_wait,
+ client.begin_update,
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ disk_pool_update_payload=disk_pool_update_payload)
+
+
+def disk_pool_delete(client,
+ resource_group_name,
+ disk_pool_name,
+ no_wait=False):
+ return sdk_no_wait(no_wait,
+ client.begin_delete,
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name)
+
+
+def disk_pool_list_skus(client,
+ location):
+ return client.list(location=location)
+
+
+def disk_pool_start(client,
+ resource_group_name,
+ disk_pool_name,
+ no_wait=False):
+ return sdk_no_wait(no_wait,
+ client.begin_start,
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name)
+
+
+def disk_pool_stop(client,
+ resource_group_name,
+ disk_pool_name,
+ no_wait=False):
+ return sdk_no_wait(no_wait,
+ client.begin_deallocate,
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name)
+
+
+def disk_pool_iscsi_target_list(client,
+ resource_group_name,
+ disk_pool_name):
+ return client.list_by_disk_pool(resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name)
+
+
+def disk_pool_iscsi_target_show(client,
+ resource_group_name,
+ disk_pool_name,
+ iscsi_target_name):
+ return client.get(resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ iscsi_target_name=iscsi_target_name)
+
+
+def disk_pool_iscsi_target_create(client,
+ resource_group_name,
+ disk_pool_name,
+ iscsi_target_name,
+ acl_mode,
+ target_iqn=None,
+ static_acls=None,
+ luns=None,
+ no_wait=False):
+ iscsi_target_create_payload = {}
+ iscsi_target_create_payload['acl_mode'] = acl_mode
+ iscsi_target_create_payload['target_iqn'] = target_iqn
+ iscsi_target_create_payload['static_acls'] = static_acls
+ iscsi_target_create_payload['luns'] = luns
+ return sdk_no_wait(no_wait,
+ client.begin_create_or_update,
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ iscsi_target_name=iscsi_target_name,
+ iscsi_target_create_payload=iscsi_target_create_payload)
+
+
+def disk_pool_iscsi_target_update(client,
+ resource_group_name,
+ disk_pool_name,
+ iscsi_target_name,
+ static_acls=None,
+ luns=None,
+ no_wait=False):
+ iscsi_target_update_payload = {}
+ iscsi_target_update_payload['static_acls'] = static_acls
+ iscsi_target_update_payload['luns'] = luns
+ return sdk_no_wait(no_wait,
+ client.begin_update,
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ iscsi_target_name=iscsi_target_name,
+ iscsi_target_update_payload=iscsi_target_update_payload)
+
+
+def disk_pool_iscsi_target_delete(client,
+ resource_group_name,
+ disk_pool_name,
+ iscsi_target_name,
+ no_wait=False):
+ return sdk_no_wait(no_wait,
+ client.begin_delete,
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ iscsi_target_name=iscsi_target_name)
diff --git a/src/diskpool/azext_diskpool/manual/__init__.py b/src/diskpool/azext_diskpool/manual/__init__.py
new file mode 100644
index 00000000000..c9cfdc73e77
--- /dev/null
+++ b/src/diskpool/azext_diskpool/manual/__init__.py
@@ -0,0 +1,12 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+__path__ = __import__('pkgutil').extend_path(__path__, __name__)
diff --git a/src/diskpool/azext_diskpool/manual/_help.py b/src/diskpool/azext_diskpool/manual/_help.py
new file mode 100644
index 00000000000..38fdc57f4da
--- /dev/null
+++ b/src/diskpool/azext_diskpool/manual/_help.py
@@ -0,0 +1,23 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=too-many-lines
+
+from knack.help_files import helps
+
+
+helps['disk-pool'] = """
+ type: group
+ short-summary: Manage Azure disk pool.
+"""
+
+helps['disk-pool iscsi-target'] = """
+ type: group
+ short-summary: Manage iSCSI target with a Disk Pool.
+"""
diff --git a/src/diskpool/azext_diskpool/manual/_params.py b/src/diskpool/azext_diskpool/manual/_params.py
new file mode 100644
index 00000000000..1d01152d46d
--- /dev/null
+++ b/src/diskpool/azext_diskpool/manual/_params.py
@@ -0,0 +1,26 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=too-many-lines
+# pylint: disable=too-many-statements
+
+from azure.cli.core.commands.parameters import (
+ get_location_type
+)
+from azure.cli.core.commands.validators import (
+ get_default_location_from_resource_group
+)
+
+
+def load_arguments(self, _):
+
+ with self.argument_context('disk-pool') as c:
+ c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False,
+ validator=get_default_location_from_resource_group)
+ c.argument('availability_zones', nargs='+', help='Logical zone for Disk Pool resource.')
diff --git a/src/diskpool/azext_diskpool/manual/_transformers.py b/src/diskpool/azext_diskpool/manual/_transformers.py
new file mode 100644
index 00000000000..f6262db3cda
--- /dev/null
+++ b/src/diskpool/azext_diskpool/manual/_transformers.py
@@ -0,0 +1,42 @@
+# --------------------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# --------------------------------------------------------------------------------------------
+
+
+def build_table_output(result, projection):
+
+ if not isinstance(result, list):
+ result = [result]
+
+ final_list = []
+
+ from collections import OrderedDict
+ for item in result:
+ def _value_from_path(each_item, path):
+ obj = each_item
+ try:
+ for part in path.split('.'):
+ obj = obj.get(part, None)
+ except AttributeError:
+ obj = None
+ return obj or ' '
+
+ item_dict = OrderedDict()
+ for element in projection:
+ item_dict[element[0]] = _value_from_path(item, element[1])
+ final_list.append(item_dict)
+
+ return final_list
+
+
+def transform_disk_pool_list_output(result):
+ """ Transform to convert SDK output into a form that is more readily
+ usable by the CLI and tools such as jpterm. """
+ return build_table_output(result, [
+ ('Name', 'name'),
+ ('Availability Zones', 'availabilityZones'),
+ ('Status', 'status'),
+ ('Location', 'location'),
+ ('Last Modified', 'systemData.lastModifiedAt')
+ ])
diff --git a/src/diskpool/azext_diskpool/manual/commands.py b/src/diskpool/azext_diskpool/manual/commands.py
new file mode 100644
index 00000000000..d6d1f61f043
--- /dev/null
+++ b/src/diskpool/azext_diskpool/manual/commands.py
@@ -0,0 +1,24 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+
+from azure.cli.core.commands import CliCommandType
+
+
+def load_command_table(self, _):
+
+ from azext_diskpool.generated._client_factory import cf_disk_pool, cf_disk_pool_zone
+ diskpool_disk_pool = CliCommandType(
+ operations_tmpl='azext_diskpool.vendored_sdks.storagepool.operations._disk_pools_operations#DiskPoolsOperations'
+ '.{}',
+ client_factory=cf_disk_pool)
+ with self.command_group('disk-pool', diskpool_disk_pool, client_factory=cf_disk_pool, is_preview=True) as g:
+ from ._transformers import transform_disk_pool_list_output
+ g.custom_command('list', 'disk_pool_list', table_transformer=transform_disk_pool_list_output)
diff --git a/src/diskpool/azext_diskpool/tests/__init__.py b/src/diskpool/azext_diskpool/tests/__init__.py
new file mode 100644
index 00000000000..70488e93851
--- /dev/null
+++ b/src/diskpool/azext_diskpool/tests/__init__.py
@@ -0,0 +1,116 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+import inspect
+import logging
+import os
+import sys
+import traceback
+import datetime as dt
+
+from azure.core.exceptions import AzureError
+from azure.cli.testsdk.exceptions import CliTestError, CliExecutionError, JMESPathCheckAssertionError
+
+
+logger = logging.getLogger('azure.cli.testsdk')
+logger.addHandler(logging.StreamHandler())
+__path__ = __import__('pkgutil').extend_path(__path__, __name__)
+exceptions = []
+test_map = dict()
+SUCCESSED = "successed"
+FAILED = "failed"
+
+
+def try_manual(func):
+ def import_manual_function(origin_func):
+ from importlib import import_module
+ decorated_path = inspect.getfile(origin_func).lower()
+ module_path = __path__[0].lower()
+ if not decorated_path.startswith(module_path):
+ raise Exception("Decorator can only be used in submodules!")
+ manual_path = os.path.join(
+ decorated_path[module_path.rfind(os.path.sep) + 1:])
+ manual_file_path, manual_file_name = os.path.split(manual_path)
+ module_name, _ = os.path.splitext(manual_file_name)
+ manual_module = "..manual." + \
+ ".".join(manual_file_path.split(os.path.sep) + [module_name, ])
+ return getattr(import_module(manual_module, package=__name__), origin_func.__name__)
+
+ def get_func_to_call():
+ func_to_call = func
+ try:
+ func_to_call = import_manual_function(func)
+ logger.info("Found manual override for %s(...)", func.__name__)
+ except (ImportError, AttributeError):
+ pass
+ return func_to_call
+
+ def wrapper(*args, **kwargs):
+ func_to_call = get_func_to_call()
+ logger.info("running %s()...", func.__name__)
+ try:
+ test_map[func.__name__] = dict()
+ test_map[func.__name__]["result"] = SUCCESSED
+ test_map[func.__name__]["error_message"] = ""
+ test_map[func.__name__]["error_stack"] = ""
+ test_map[func.__name__]["error_normalized"] = ""
+ test_map[func.__name__]["start_dt"] = dt.datetime.utcnow()
+ ret = func_to_call(*args, **kwargs)
+ except (AssertionError, AzureError, CliTestError, CliExecutionError, SystemExit,
+ JMESPathCheckAssertionError) as e:
+ use_exception_cache = os.getenv("TEST_EXCEPTION_CACHE")
+ if use_exception_cache is None or use_exception_cache.lower() != "true":
+ raise
+ test_map[func.__name__]["end_dt"] = dt.datetime.utcnow()
+ test_map[func.__name__]["result"] = FAILED
+ test_map[func.__name__]["error_message"] = str(e).replace("\r\n", " ").replace("\n", " ")[:500]
+ test_map[func.__name__]["error_stack"] = traceback.format_exc().replace(
+ "\r\n", " ").replace("\n", " ")[:500]
+ logger.info("--------------------------------------")
+ logger.info("step exception: %s", e)
+ logger.error("--------------------------------------")
+ logger.error("step exception in %s: %s", func.__name__, e)
+ logger.info(traceback.format_exc())
+ exceptions.append((func.__name__, sys.exc_info()))
+ else:
+ test_map[func.__name__]["end_dt"] = dt.datetime.utcnow()
+ return ret
+
+ if inspect.isclass(func):
+ return get_func_to_call()
+ return wrapper
+
+
+def calc_coverage(filename):
+ filename = filename.split(".")[0]
+ coverage_name = filename + "_coverage.md"
+ with open(coverage_name, "w") as f:
+ f.write("|Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt|\n")
+ total = len(test_map)
+ covered = 0
+ for k, v in test_map.items():
+ if not k.startswith("step_"):
+ total -= 1
+ continue
+ if v["result"] == SUCCESSED:
+ covered += 1
+ f.write("|{step_name}|{result}|{error_message}|{error_stack}|{error_normalized}|{start_dt}|"
+ "{end_dt}|\n".format(step_name=k, **v))
+ f.write("Coverage: {}/{}\n".format(covered, total))
+ print("Create coverage\n", file=sys.stderr)
+
+
+def raise_if():
+ if exceptions:
+ if len(exceptions) <= 1:
+ raise exceptions[0][1][1]
+ message = "{}\nFollowed with exceptions in other steps:\n".format(str(exceptions[0][1][1]))
+ message += "\n".join(["{}: {}".format(h[0], h[1][1]) for h in exceptions[1:]])
+ raise exceptions[0][1][0](message).with_traceback(exceptions[0][1][2])
diff --git a/src/diskpool/azext_diskpool/tests/latest/__init__.py b/src/diskpool/azext_diskpool/tests/latest/__init__.py
new file mode 100644
index 00000000000..c9cfdc73e77
--- /dev/null
+++ b/src/diskpool/azext_diskpool/tests/latest/__init__.py
@@ -0,0 +1,12 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+__path__ = __import__('pkgutil').extend_path(__path__, __name__)
diff --git a/src/diskpool/azext_diskpool/tests/latest/recordings/test_diskpool_list_sku_scenario_manual.yaml b/src/diskpool/azext_diskpool/tests/latest/recordings/test_diskpool_list_sku_scenario_manual.yaml
new file mode 100644
index 00000000000..9056cadb6b2
--- /dev/null
+++ b/src/diskpool/azext_diskpool/tests/latest/recordings/test_diskpool_list_sku_scenario_manual.yaml
@@ -0,0 +1,48 @@
+interactions:
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool list-skus
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - -l
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/diskPoolZones?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"value":[{"availabilityZones":["3","1","2"],"sku":{"name":"Basic","tier":"Basic"}},{"availabilityZones":["3","1","2"],"sku":{"name":"Standard","tier":"Standard"}},{"availabilityZones":["3","1","2"],"sku":{"name":"Premium","tier":"Premium"}}]}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:06:59 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+version: 1
diff --git a/src/diskpool/azext_diskpool/tests/latest/recordings/test_diskpool_scenario_manual.yaml b/src/diskpool/azext_diskpool/tests/latest/recordings/test_diskpool_scenario_manual.yaml
new file mode 100644
index 00000000000..41c85df0a3c
--- /dev/null
+++ b/src/diskpool/azext_diskpool/tests/latest/recordings/test_diskpool_scenario_manual.yaml
@@ -0,0 +1,5185 @@
+interactions:
+- request:
+ body: '{"location": "eastus", "tags": {}, "sku": {"name": "Premium_LRS"}, "zones":
+ ["3"], "properties": {"hyperVGeneration": "V1", "creationData": {"createOption":
+ "Empty"}, "diskSizeGB": 256, "maxShares": 2}}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk create
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '202'
+ Content-Type:
+ - application/json
+ ParameterSetName:
+ - --name --resource-group --zone --location --sku --max-shares --size-gb
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-compute/20.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: PUT
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002?api-version=2020-12-01
+ response:
+ body:
+ string: "{\r\n \"name\": \"disk000002\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"zones\": [\r\n \"3\"\r\n ],\r\n \"sku\": {\r\n
+ \ \"name\": \"Premium_LRS\"\r\n },\r\n \"properties\": {\r\n \"hyperVGeneration\":
+ \"V1\",\r\n \"creationData\": {\r\n \"createOption\": \"Empty\"\r\n
+ \ },\r\n \"diskSizeGB\": 256,\r\n \"maxShares\": 2,\r\n \"provisioningState\":
+ \"Updating\",\r\n \"isArmResource\": true\r\n }\r\n}"
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus/DiskOperations/30a753f9-6e55-45b0-8857-263c811f29e2?api-version=2020-12-01
+ cache-control:
+ - no-cache
+ content-length:
+ - '370'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:08:26 GMT
+ expires:
+ - '-1'
+ location:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus/DiskOperations/30a753f9-6e55-45b0-8857-263c811f29e2?monitor=true&api-version=2020-12-01
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-ratelimit-remaining-resource:
+ - Microsoft.Compute/CreateUpdateDisks3Min;999,Microsoft.Compute/CreateUpdateDisks30Min;7997
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1197'
+ status:
+ code: 202
+ message: Accepted
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --zone --location --sku --max-shares --size-gb
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-compute/20.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus/DiskOperations/30a753f9-6e55-45b0-8857-263c811f29e2?api-version=2020-12-01
+ response:
+ body:
+ string: "{\r\n \"startTime\": \"2021-05-25T06:08:26.9006099+00:00\",\r\n \"endTime\":
+ \"2021-05-25T06:08:26.9943243+00:00\",\r\n \"status\": \"Succeeded\",\r\n
+ \ \"properties\": {\r\n \"output\": {\r\n \"name\": \"disk000002\",\r\n
+ \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002\",\r\n
+ \ \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"zones\": [\r\n \"3\"\r\n ],\r\n \"sku\": {\r\n
+ \ \"name\": \"Premium_LRS\",\r\n \"tier\": \"Premium\"\r\n },\r\n \"properties\":
+ {\r\n \"hyperVGeneration\": \"V1\",\r\n \"creationData\": {\r\n \"createOption\":
+ \"Empty\"\r\n },\r\n \"diskSizeGB\": 256,\r\n \"diskIOPSReadWrite\":
+ 1100,\r\n \"diskMBpsReadWrite\": 125,\r\n \"encryption\": {\r\n \"type\":
+ \"EncryptionAtRestWithPlatformKey\"\r\n },\r\n \"maxShares\": 2,\r\n
+ \ \"timeCreated\": \"2021-05-25T06:08:26.9006099+00:00\",\r\n \"provisioningState\":
+ \"Succeeded\",\r\n \"diskState\": \"Unattached\",\r\n \"diskSizeBytes\":
+ 274877906944,\r\n \"uniqueId\": \"ccfda08f-fe5c-469f-9cad-17bdeb35c041\",\r\n
+ \ \"networkAccessPolicy\": \"AllowAll\",\r\n \"tier\": \"P15\"\r\n }\r\n}\r\n
+ \ },\r\n \"name\": \"30a753f9-6e55-45b0-8857-263c811f29e2\"\r\n}"
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1154'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:08:28 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-ratelimit-remaining-resource:
+ - Microsoft.Compute/GetOperation3Min;49999,Microsoft.Compute/GetOperation30Min;399980
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --zone --location --sku --max-shares --size-gb
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-compute/20.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002?api-version=2020-12-01
+ response:
+ body:
+ string: "{\r\n \"name\": \"disk000002\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002\",\r\n
+ \ \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"zones\": [\r\n \"3\"\r\n ],\r\n \"sku\": {\r\n
+ \ \"name\": \"Premium_LRS\",\r\n \"tier\": \"Premium\"\r\n },\r\n \"properties\":
+ {\r\n \"hyperVGeneration\": \"V1\",\r\n \"creationData\": {\r\n \"createOption\":
+ \"Empty\"\r\n },\r\n \"diskSizeGB\": 256,\r\n \"diskIOPSReadWrite\":
+ 1100,\r\n \"diskMBpsReadWrite\": 125,\r\n \"encryption\": {\r\n \"type\":
+ \"EncryptionAtRestWithPlatformKey\"\r\n },\r\n \"maxShares\": 2,\r\n
+ \ \"timeCreated\": \"2021-05-25T06:08:26.9006099+00:00\",\r\n \"provisioningState\":
+ \"Succeeded\",\r\n \"diskState\": \"Unattached\",\r\n \"diskSizeBytes\":
+ 274877906944,\r\n \"uniqueId\": \"ccfda08f-fe5c-469f-9cad-17bdeb35c041\",\r\n
+ \ \"networkAccessPolicy\": \"AllowAll\",\r\n \"tier\": \"P15\"\r\n }\r\n}"
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '929'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:08:28 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-ratelimit-remaining-resource:
+ - Microsoft.Compute/LowCostGet3Min;14995,Microsoft.Compute/LowCostGet30Min;119940
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"location": "eastus", "tags": {}, "sku": {"name": "Premium_LRS"}, "zones":
+ ["3"], "properties": {"hyperVGeneration": "V1", "creationData": {"createOption":
+ "Empty"}, "diskSizeGB": 256, "maxShares": 2}}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk create
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '202'
+ Content-Type:
+ - application/json
+ ParameterSetName:
+ - --name --resource-group --zone --location --sku --max-shares --size-gb
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-compute/20.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: PUT
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003?api-version=2020-12-01
+ response:
+ body:
+ string: "{\r\n \"name\": \"disk000003\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"zones\": [\r\n \"3\"\r\n ],\r\n \"sku\": {\r\n
+ \ \"name\": \"Premium_LRS\"\r\n },\r\n \"properties\": {\r\n \"hyperVGeneration\":
+ \"V1\",\r\n \"creationData\": {\r\n \"createOption\": \"Empty\"\r\n
+ \ },\r\n \"diskSizeGB\": 256,\r\n \"maxShares\": 2,\r\n \"provisioningState\":
+ \"Updating\",\r\n \"isArmResource\": true\r\n }\r\n}"
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus/DiskOperations/2047f61a-e555-4201-9378-13109d688d4f?api-version=2020-12-01
+ cache-control:
+ - no-cache
+ content-length:
+ - '370'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:08:35 GMT
+ expires:
+ - '-1'
+ location:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus/DiskOperations/2047f61a-e555-4201-9378-13109d688d4f?monitor=true&api-version=2020-12-01
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-ratelimit-remaining-resource:
+ - Microsoft.Compute/CreateUpdateDisks3Min;998,Microsoft.Compute/CreateUpdateDisks30Min;7996
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1199'
+ status:
+ code: 202
+ message: Accepted
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --zone --location --sku --max-shares --size-gb
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-compute/20.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus/DiskOperations/2047f61a-e555-4201-9378-13109d688d4f?api-version=2020-12-01
+ response:
+ body:
+ string: "{\r\n \"startTime\": \"2021-05-25T06:08:35.1823818+00:00\",\r\n \"endTime\":
+ \"2021-05-25T06:08:35.3073615+00:00\",\r\n \"status\": \"Succeeded\",\r\n
+ \ \"properties\": {\r\n \"output\": {\r\n \"name\": \"disk000003\",\r\n
+ \ \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003\",\r\n
+ \ \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"zones\": [\r\n \"3\"\r\n ],\r\n \"sku\": {\r\n
+ \ \"name\": \"Premium_LRS\",\r\n \"tier\": \"Premium\"\r\n },\r\n \"properties\":
+ {\r\n \"hyperVGeneration\": \"V1\",\r\n \"creationData\": {\r\n \"createOption\":
+ \"Empty\"\r\n },\r\n \"diskSizeGB\": 256,\r\n \"diskIOPSReadWrite\":
+ 1100,\r\n \"diskMBpsReadWrite\": 125,\r\n \"encryption\": {\r\n \"type\":
+ \"EncryptionAtRestWithPlatformKey\"\r\n },\r\n \"maxShares\": 2,\r\n
+ \ \"timeCreated\": \"2021-05-25T06:08:35.1979594+00:00\",\r\n \"provisioningState\":
+ \"Succeeded\",\r\n \"diskState\": \"Unattached\",\r\n \"diskSizeBytes\":
+ 274877906944,\r\n \"uniqueId\": \"3a5b9e9f-b195-47ab-84b7-8e9028266a51\",\r\n
+ \ \"networkAccessPolicy\": \"AllowAll\",\r\n \"tier\": \"P15\"\r\n }\r\n}\r\n
+ \ },\r\n \"name\": \"2047f61a-e555-4201-9378-13109d688d4f\"\r\n}"
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1154'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:08:37 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-ratelimit-remaining-resource:
+ - Microsoft.Compute/GetOperation3Min;49997,Microsoft.Compute/GetOperation30Min;399978
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --zone --location --sku --max-shares --size-gb
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-compute/20.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003?api-version=2020-12-01
+ response:
+ body:
+ string: "{\r\n \"name\": \"disk000003\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003\",\r\n
+ \ \"type\": \"Microsoft.Compute/disks\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"zones\": [\r\n \"3\"\r\n ],\r\n \"sku\": {\r\n
+ \ \"name\": \"Premium_LRS\",\r\n \"tier\": \"Premium\"\r\n },\r\n \"properties\":
+ {\r\n \"hyperVGeneration\": \"V1\",\r\n \"creationData\": {\r\n \"createOption\":
+ \"Empty\"\r\n },\r\n \"diskSizeGB\": 256,\r\n \"diskIOPSReadWrite\":
+ 1100,\r\n \"diskMBpsReadWrite\": 125,\r\n \"encryption\": {\r\n \"type\":
+ \"EncryptionAtRestWithPlatformKey\"\r\n },\r\n \"maxShares\": 2,\r\n
+ \ \"timeCreated\": \"2021-05-25T06:08:35.1979594+00:00\",\r\n \"provisioningState\":
+ \"Succeeded\",\r\n \"diskState\": \"Unattached\",\r\n \"diskSizeBytes\":
+ 274877906944,\r\n \"uniqueId\": \"3a5b9e9f-b195-47ab-84b7-8e9028266a51\",\r\n
+ \ \"networkAccessPolicy\": \"AllowAll\",\r\n \"tier\": \"P15\"\r\n }\r\n}"
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '929'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:08:38 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-ratelimit-remaining-resource:
+ - Microsoft.Compute/LowCostGet3Min;14992,Microsoft.Compute/LowCostGet30Min;119936
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"objectIds": ["09f10f07-08cf-4ab7-be0f-e9ae3d72b9ad"], "includeDirectoryObjectReferences":
+ true}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - role assignment create
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '97'
+ Content-Type:
+ - application/json; charset=utf-8
+ ParameterSetName:
+ - --assignee-object-id --role --scope
+ User-Agent:
+ - python/3.8.3 (Windows-10-10.0.19041-SP0) msrest/0.6.21 msrest_azure/0.6.3
+ azure-graphrbac/0.60.0 Azure-SDK-For-Python AZURECLI/2.24.0
+ accept-language:
+ - en-US
+ method: POST
+ uri: https://graph.windows.net/00000000-0000-0000-0000-000000000000/getObjectsByObjectIds?api-version=1.6
+ response:
+ body:
+ string: '{"odata.metadata":"https://graph.windows.net/00000000-0000-0000-0000-000000000000/$metadata#directoryObjects","value":[{"odata.type":"Microsoft.DirectoryServices.ServicePrincipal","objectType":"ServicePrincipal","objectId":"09f10f07-08cf-4ab7-be0f-e9ae3d72b9ad","deletionTimestamp":null,"accountEnabled":true,"addIns":[],"alternativeNames":[],"appDisplayName":"StoragePool
+ Resource Provider","appId":"5741a1ff-751d-4ad7-bcd1-dfe3c998fd11","applicationTemplateId":null,"appOwnerTenantId":"f8cdef31-a31e-4b4a-93e4-5f571e91255a","appRoleAssignmentRequired":false,"appRoles":[],"displayName":"StoragePool
+ Resource Provider","errorUrl":null,"homepage":null,"informationalUrls":{"termsOfService":null,"support":null,"privacy":null,"marketing":null},"keyCredentials":[],"logoutUrl":null,"notificationEmailAddresses":[],"oauth2Permissions":[],"passwordCredentials":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyEndDateTime":null,"preferredTokenSigningKeyThumbprint":null,"publisherName":"Microsoft
+ Services","replyUrls":[],"samlMetadataUrl":null,"samlSingleSignOnSettings":null,"servicePrincipalNames":["5741a1ff-751d-4ad7-bcd1-dfe3c998fd11"],"servicePrincipalType":"Application","signInAudience":"AzureADMultipleOrgs","tags":[],"tokenEncryptionKeyId":null}]}'
+ headers:
+ access-control-allow-origin:
+ - '*'
+ cache-control:
+ - no-cache
+ content-length:
+ - '1266'
+ content-type:
+ - application/json; odata=minimalmetadata; streaming=true; charset=utf-8
+ dataserviceversion:
+ - 3.0;
+ date:
+ - Tue, 25 May 2021 06:08:40 GMT
+ duration:
+ - '2547997'
+ expires:
+ - '-1'
+ ocp-aad-diagnostics-server-name:
+ - vNweFmWUlAwBFr6kToXWyL5o1sOXckBy0R+YSfFsYjM=
+ ocp-aad-session-key:
+ - 8NhgzgemA_IMuCD7wzZgVKv683JsHJwCY9D4voYsVQkeOcKla8Ks5TGtURkJGtxtZAWN3trc4Qwjar7MICXXwm00FVc7yk6VEXNLG5jLQsAYqr-pa49PTCUSMTJBevcr.OS9O7c7wp5XVIrkZEjRIN_EFCfsZ89-TTXliolK-gA0
+ pragma:
+ - no-cache
+ request-id:
+ - cae29a19-db19-463b-94bb-1131767d9332
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-aspnet-version:
+ - 4.0.30319
+ x-ms-dirapi-data-contract-version:
+ - '1.6'
+ x-ms-resource-unit:
+ - '3'
+ x-powered-by:
+ - ASP.NET
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - role assignment create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --assignee-object-id --role --scope
+ User-Agent:
+ - python/3.8.3 (Windows-10-10.0.19041-SP0) msrest/0.6.21 msrest_azure/0.6.3
+ azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.24.0
+ accept-language:
+ - en-US
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Virtual%20Machine%20Contributor%27&api-version=2018-01-01-preview
+ response:
+ body:
+ string: '{"value":[{"properties":{"roleName":"Virtual Machine Contributor","type":"BuiltInRole","description":"Lets
+ you manage virtual machines, but not access to them, and not the virtual network
+ or storage account they''re connected to.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Compute/availabilitySets/*","Microsoft.Compute/locations/*","Microsoft.Compute/virtualMachines/*","Microsoft.Compute/virtualMachineScaleSets/*","Microsoft.Compute/disks/write","Microsoft.Compute/disks/read","Microsoft.Compute/disks/delete","Microsoft.DevTestLab/schedules/*","Microsoft.Insights/alertRules/*","Microsoft.Network/applicationGateways/backendAddressPools/join/action","Microsoft.Network/loadBalancers/backendAddressPools/join/action","Microsoft.Network/loadBalancers/inboundNatPools/join/action","Microsoft.Network/loadBalancers/inboundNatRules/join/action","Microsoft.Network/loadBalancers/probes/join/action","Microsoft.Network/loadBalancers/read","Microsoft.Network/locations/*","Microsoft.Network/networkInterfaces/*","Microsoft.Network/networkSecurityGroups/join/action","Microsoft.Network/networkSecurityGroups/read","Microsoft.Network/publicIPAddresses/join/action","Microsoft.Network/publicIPAddresses/read","Microsoft.Network/virtualNetworks/read","Microsoft.Network/virtualNetworks/subnets/join/action","Microsoft.RecoveryServices/locations/*","Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write","Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read","Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read","Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write","Microsoft.RecoveryServices/Vaults/backupPolicies/read","Microsoft.RecoveryServices/Vaults/backupPolicies/write","Microsoft.RecoveryServices/Vaults/read","Microsoft.RecoveryServices/Vaults/usages/read","Microsoft.RecoveryServices/Vaults/write","Microsoft.ResourceHealth/availabilityStatuses/read","Microsoft.Resources/deployments/*","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.SqlVirtualMachine/*","Microsoft.Storage/storageAccounts/listKeys/action","Microsoft.Storage/storageAccounts/read","Microsoft.Support/*"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2015-06-02T00:18:27.3542698Z","updatedOn":"2020-02-03T19:38:21.2170228Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c","type":"Microsoft.Authorization/roleDefinitions","name":"9980e02c-c2be-4d73-94e8-173b1dc7cf3c"}]}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '2704'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:08:40 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ set-cookie:
+ - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"properties": {"roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c",
+ "principalId": "09f10f07-08cf-4ab7-be0f-e9ae3d72b9ad", "principalType": "ServicePrincipal"}}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - role assignment create
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '270'
+ Content-Type:
+ - application/json; charset=utf-8
+ Cookie:
+ - x-ms-gateway-slice=Production
+ ParameterSetName:
+ - --assignee-object-id --role --scope
+ User-Agent:
+ - python/3.8.3 (Windows-10-10.0.19041-SP0) msrest/0.6.21 msrest_azure/0.6.3
+ azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.24.0
+ accept-language:
+ - en-US
+ method: PUT
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002/providers/Microsoft.Authorization/roleAssignments/88888888-0000-0000-0000-000000000001?api-version=2020-04-01-preview
+ response:
+ body:
+ string: '{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c","principalId":"09f10f07-08cf-4ab7-be0f-e9ae3d72b9ad","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002","condition":null,"conditionVersion":null,"createdOn":"2021-05-25T06:08:41.2822213Z","updatedOn":"2021-05-25T06:08:42.1594784Z","createdBy":null,"updatedBy":"21cd756e-e290-4a26-9547-93e8cc1a8923","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002/providers/Microsoft.Authorization/roleAssignments/88888888-0000-0000-0000-000000000001","type":"Microsoft.Authorization/roleAssignments","name":"88888888-0000-0000-0000-000000000001"}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '977'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:08:45 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ set-cookie:
+ - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1198'
+ status:
+ code: 201
+ message: Created
+- request:
+ body: '{"objectIds": ["09f10f07-08cf-4ab7-be0f-e9ae3d72b9ad"], "includeDirectoryObjectReferences":
+ true}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - role assignment create
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '97'
+ Content-Type:
+ - application/json; charset=utf-8
+ ParameterSetName:
+ - --assignee-object-id --role --scope
+ User-Agent:
+ - python/3.8.3 (Windows-10-10.0.19041-SP0) msrest/0.6.21 msrest_azure/0.6.3
+ azure-graphrbac/0.60.0 Azure-SDK-For-Python AZURECLI/2.24.0
+ accept-language:
+ - en-US
+ method: POST
+ uri: https://graph.windows.net/00000000-0000-0000-0000-000000000000/getObjectsByObjectIds?api-version=1.6
+ response:
+ body:
+ string: '{"odata.metadata":"https://graph.windows.net/00000000-0000-0000-0000-000000000000/$metadata#directoryObjects","value":[{"odata.type":"Microsoft.DirectoryServices.ServicePrincipal","objectType":"ServicePrincipal","objectId":"09f10f07-08cf-4ab7-be0f-e9ae3d72b9ad","deletionTimestamp":null,"accountEnabled":true,"addIns":[],"alternativeNames":[],"appDisplayName":"StoragePool
+ Resource Provider","appId":"5741a1ff-751d-4ad7-bcd1-dfe3c998fd11","applicationTemplateId":null,"appOwnerTenantId":"f8cdef31-a31e-4b4a-93e4-5f571e91255a","appRoleAssignmentRequired":false,"appRoles":[],"displayName":"StoragePool
+ Resource Provider","errorUrl":null,"homepage":null,"informationalUrls":{"termsOfService":null,"support":null,"privacy":null,"marketing":null},"keyCredentials":[],"logoutUrl":null,"notificationEmailAddresses":[],"oauth2Permissions":[],"passwordCredentials":[],"preferredSingleSignOnMode":null,"preferredTokenSigningKeyEndDateTime":null,"preferredTokenSigningKeyThumbprint":null,"publisherName":"Microsoft
+ Services","replyUrls":[],"samlMetadataUrl":null,"samlSingleSignOnSettings":null,"servicePrincipalNames":["5741a1ff-751d-4ad7-bcd1-dfe3c998fd11"],"servicePrincipalType":"Application","signInAudience":"AzureADMultipleOrgs","tags":[],"tokenEncryptionKeyId":null}]}'
+ headers:
+ access-control-allow-origin:
+ - '*'
+ cache-control:
+ - no-cache
+ content-length:
+ - '1266'
+ content-type:
+ - application/json; odata=minimalmetadata; streaming=true; charset=utf-8
+ dataserviceversion:
+ - 3.0;
+ date:
+ - Tue, 25 May 2021 06:08:46 GMT
+ duration:
+ - '2654950'
+ expires:
+ - '-1'
+ ocp-aad-diagnostics-server-name:
+ - TaL7kANKRnvvbZiSrMqFBAv0pfZbW/BsTOL2yLvuCnU=
+ ocp-aad-session-key:
+ - e4rbJc3FnVOoGCnSXOHcobE5ON5bYy3L44qR1uoXle_oH0P38ErF99fcfDGxx_uWv_6mEuBtUR61JzdOb7DixEgszJB-n2hEB4p4_yhV21iawx9ceXlj-MKNhPkDCd_G.eQt8s697mgfofdBQRg2MA91tgnmHELD67qvs57BBQO4
+ pragma:
+ - no-cache
+ request-id:
+ - 35361e6b-00ae-4922-9eb7-b446407c45d4
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-aspnet-version:
+ - 4.0.30319
+ x-ms-dirapi-data-contract-version:
+ - '1.6'
+ x-ms-resource-unit:
+ - '3'
+ x-powered-by:
+ - ASP.NET
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - role assignment create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --assignee-object-id --role --scope
+ User-Agent:
+ - python/3.8.3 (Windows-10-10.0.19041-SP0) msrest/0.6.21 msrest_azure/0.6.3
+ azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.24.0
+ accept-language:
+ - en-US
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Virtual%20Machine%20Contributor%27&api-version=2018-01-01-preview
+ response:
+ body:
+ string: '{"value":[{"properties":{"roleName":"Virtual Machine Contributor","type":"BuiltInRole","description":"Lets
+ you manage virtual machines, but not access to them, and not the virtual network
+ or storage account they''re connected to.","assignableScopes":["/"],"permissions":[{"actions":["Microsoft.Authorization/*/read","Microsoft.Compute/availabilitySets/*","Microsoft.Compute/locations/*","Microsoft.Compute/virtualMachines/*","Microsoft.Compute/virtualMachineScaleSets/*","Microsoft.Compute/disks/write","Microsoft.Compute/disks/read","Microsoft.Compute/disks/delete","Microsoft.DevTestLab/schedules/*","Microsoft.Insights/alertRules/*","Microsoft.Network/applicationGateways/backendAddressPools/join/action","Microsoft.Network/loadBalancers/backendAddressPools/join/action","Microsoft.Network/loadBalancers/inboundNatPools/join/action","Microsoft.Network/loadBalancers/inboundNatRules/join/action","Microsoft.Network/loadBalancers/probes/join/action","Microsoft.Network/loadBalancers/read","Microsoft.Network/locations/*","Microsoft.Network/networkInterfaces/*","Microsoft.Network/networkSecurityGroups/join/action","Microsoft.Network/networkSecurityGroups/read","Microsoft.Network/publicIPAddresses/join/action","Microsoft.Network/publicIPAddresses/read","Microsoft.Network/virtualNetworks/read","Microsoft.Network/virtualNetworks/subnets/join/action","Microsoft.RecoveryServices/locations/*","Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write","Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read","Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read","Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write","Microsoft.RecoveryServices/Vaults/backupPolicies/read","Microsoft.RecoveryServices/Vaults/backupPolicies/write","Microsoft.RecoveryServices/Vaults/read","Microsoft.RecoveryServices/Vaults/usages/read","Microsoft.RecoveryServices/Vaults/write","Microsoft.ResourceHealth/availabilityStatuses/read","Microsoft.Resources/deployments/*","Microsoft.Resources/subscriptions/resourceGroups/read","Microsoft.SqlVirtualMachine/*","Microsoft.Storage/storageAccounts/listKeys/action","Microsoft.Storage/storageAccounts/read","Microsoft.Support/*"],"notActions":[],"dataActions":[],"notDataActions":[]}],"createdOn":"2015-06-02T00:18:27.3542698Z","updatedOn":"2020-02-03T19:38:21.2170228Z","createdBy":null,"updatedBy":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c","type":"Microsoft.Authorization/roleDefinitions","name":"9980e02c-c2be-4d73-94e8-173b1dc7cf3c"}]}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '2704'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:08:47 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ set-cookie:
+ - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"properties": {"roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c",
+ "principalId": "09f10f07-08cf-4ab7-be0f-e9ae3d72b9ad", "principalType": "ServicePrincipal"}}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - role assignment create
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '270'
+ Content-Type:
+ - application/json; charset=utf-8
+ Cookie:
+ - x-ms-gateway-slice=Production
+ ParameterSetName:
+ - --assignee-object-id --role --scope
+ User-Agent:
+ - python/3.8.3 (Windows-10-10.0.19041-SP0) msrest/0.6.21 msrest_azure/0.6.3
+ azure-mgmt-authorization/0.61.0 Azure-SDK-For-Python AZURECLI/2.24.0
+ accept-language:
+ - en-US
+ method: PUT
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003/providers/Microsoft.Authorization/roleAssignments/88888888-0000-0000-0000-000000000002?api-version=2020-04-01-preview
+ response:
+ body:
+ string: '{"properties":{"roleDefinitionId":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c","principalId":"09f10f07-08cf-4ab7-be0f-e9ae3d72b9ad","principalType":"ServicePrincipal","scope":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003","condition":null,"conditionVersion":null,"createdOn":"2021-05-25T06:08:47.8367921Z","updatedOn":"2021-05-25T06:08:48.5818008Z","createdBy":null,"updatedBy":"21cd756e-e290-4a26-9547-93e8cc1a8923","delegatedManagedIdentityResourceId":null,"description":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003/providers/Microsoft.Authorization/roleAssignments/88888888-0000-0000-0000-000000000002","type":"Microsoft.Authorization/roleAssignments","name":"88888888-0000-0000-0000-000000000002"}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '977'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:08:52 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ set-cookie:
+ - x-ms-gateway-slice=Production; path=/; secure; samesite=none; httponly
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1198'
+ status:
+ code: 201
+ message: Created
+- request:
+ body: '{"location": "eastus", "tags": {}, "properties": {"addressSpace": {"addressPrefixes":
+ ["10.0.0.0/16"]}, "dhcpOptions": {}}}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - network vnet create
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '123'
+ Content-Type:
+ - application/json
+ ParameterSetName:
+ - --name --resource-group --location
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-network/19.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: PUT
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004?api-version=2021-02-01
+ response:
+ body:
+ string: "{\r\n \"name\": \"vnet000004\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004\",\r\n
+ \ \"etag\": \"W/\\\"4c5a22c4-7752-4c34-bc14-89603e70f26c\\\"\",\r\n \"type\":
+ \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n
+ \ \"resourceGuid\": \"3a8c3d9e-e518-4882-9967-726fcbade9b8\",\r\n \"addressSpace\":
+ {\r\n \"addressPrefixes\": [\r\n \"10.0.0.0/16\"\r\n ]\r\n
+ \ },\r\n \"dhcpOptions\": {\r\n \"dnsServers\": []\r\n },\r\n
+ \ \"subnets\": [],\r\n \"virtualNetworkPeerings\": [],\r\n \"enableDdosProtection\":
+ false\r\n }\r\n}"
+ headers:
+ azure-asyncnotification:
+ - Enabled
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/615b1d69-b473-4c65-8452-0d39b66ca10d?api-version=2021-02-01
+ cache-control:
+ - no-cache
+ content-length:
+ - '683'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:09:01 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-arm-service-request-id:
+ - 37fdcff9-616d-4a65-b43f-3349e904e0ef
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1199'
+ status:
+ code: 201
+ message: Created
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - network vnet create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-network/19.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/615b1d69-b473-4c65-8452-0d39b66ca10d?api-version=2021-02-01
+ response:
+ body:
+ string: "{\r\n \"status\": \"Succeeded\"\r\n}"
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '29'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:09:04 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-arm-service-request-id:
+ - 323412a6-573a-4468-a0ed-8630d5168af0
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - network vnet create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-network/19.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004?api-version=2021-02-01
+ response:
+ body:
+ string: "{\r\n \"name\": \"vnet000004\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004\",\r\n
+ \ \"etag\": \"W/\\\"6e90abc6-5ad9-438c-abbc-c5a029a28898\\\"\",\r\n \"type\":
+ \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n
+ \ \"resourceGuid\": \"3a8c3d9e-e518-4882-9967-726fcbade9b8\",\r\n \"addressSpace\":
+ {\r\n \"addressPrefixes\": [\r\n \"10.0.0.0/16\"\r\n ]\r\n
+ \ },\r\n \"dhcpOptions\": {\r\n \"dnsServers\": []\r\n },\r\n
+ \ \"subnets\": [],\r\n \"virtualNetworkPeerings\": [],\r\n \"enableDdosProtection\":
+ false\r\n }\r\n}"
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '684'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:09:06 GMT
+ etag:
+ - W/"6e90abc6-5ad9-438c-abbc-c5a029a28898"
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-arm-service-request-id:
+ - 92a40150-7377-4767-a24a-d3ba1909e98f
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - network vnet subnet create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --vnet-name --resource-group --address-prefixes --delegations
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-network/19.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004?api-version=2021-02-01
+ response:
+ body:
+ string: "{\r\n \"name\": \"vnet000004\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004\",\r\n
+ \ \"etag\": \"W/\\\"6e90abc6-5ad9-438c-abbc-c5a029a28898\\\"\",\r\n \"type\":
+ \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n
+ \ \"resourceGuid\": \"3a8c3d9e-e518-4882-9967-726fcbade9b8\",\r\n \"addressSpace\":
+ {\r\n \"addressPrefixes\": [\r\n \"10.0.0.0/16\"\r\n ]\r\n
+ \ },\r\n \"dhcpOptions\": {\r\n \"dnsServers\": []\r\n },\r\n
+ \ \"subnets\": [],\r\n \"virtualNetworkPeerings\": [],\r\n \"enableDdosProtection\":
+ false\r\n }\r\n}"
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '684'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:09:06 GMT
+ etag:
+ - W/"6e90abc6-5ad9-438c-abbc-c5a029a28898"
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-arm-service-request-id:
+ - 7b1c142a-0175-4741-9f24-7c91eb2533a3
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004",
+ "location": "eastus", "tags": {}, "properties": {"addressSpace": {"addressPrefixes":
+ ["10.0.0.0/16"]}, "dhcpOptions": {"dnsServers": []}, "subnets": [{"name": "subnet000005",
+ "properties": {"addressPrefix": "10.0.0.0/24", "delegations": [{"name": "0",
+ "properties": {"serviceName": "Microsoft.StoragePool/diskPools"}}], "privateEndpointNetworkPolicies":
+ "Enabled", "privateLinkServiceNetworkPolicies": "Enabled"}}], "virtualNetworkPeerings":
+ [], "enableDdosProtection": false}}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - network vnet subnet create
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '624'
+ Content-Type:
+ - application/json
+ ParameterSetName:
+ - --name --vnet-name --resource-group --address-prefixes --delegations
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-network/19.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: PUT
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004?api-version=2021-02-01
+ response:
+ body:
+ string: "{\r\n \"name\": \"vnet000004\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004\",\r\n
+ \ \"etag\": \"W/\\\"8d5ab029-0f8d-460a-bb22-4a2df40d7bdf\\\"\",\r\n \"type\":
+ \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n
+ \ \"resourceGuid\": \"3a8c3d9e-e518-4882-9967-726fcbade9b8\",\r\n \"addressSpace\":
+ {\r\n \"addressPrefixes\": [\r\n \"10.0.0.0/16\"\r\n ]\r\n
+ \ },\r\n \"dhcpOptions\": {\r\n \"dnsServers\": []\r\n },\r\n
+ \ \"subnets\": [\r\n {\r\n \"name\": \"subnet000005\",\r\n \"id\":
+ \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005\",\r\n
+ \ \"etag\": \"W/\\\"8d5ab029-0f8d-460a-bb22-4a2df40d7bdf\\\"\",\r\n
+ \ \"properties\": {\r\n \"provisioningState\": \"Updating\",\r\n
+ \ \"addressPrefix\": \"10.0.0.0/24\",\r\n \"delegations\":
+ [\r\n {\r\n \"name\": \"0\",\r\n \"id\":
+ \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005/delegations/0\",\r\n
+ \ \"etag\": \"W/\\\"8d5ab029-0f8d-460a-bb22-4a2df40d7bdf\\\"\",\r\n
+ \ \"properties\": {\r\n \"provisioningState\":
+ \"Succeeded\",\r\n \"serviceName\": \"Microsoft.StoragePool/diskPools\",\r\n
+ \ \"actions\": [\r\n \"Microsoft.Network/virtualNetworks/read\"\r\n
+ \ ]\r\n },\r\n \"type\": \"Microsoft.Network/virtualNetworks/subnets/delegations\"\r\n
+ \ }\r\n ],\r\n \"privateEndpointNetworkPolicies\":
+ \"Enabled\",\r\n \"privateLinkServiceNetworkPolicies\": \"Enabled\"\r\n
+ \ },\r\n \"type\": \"Microsoft.Network/virtualNetworks/subnets\"\r\n
+ \ }\r\n ],\r\n \"virtualNetworkPeerings\": [],\r\n \"enableDdosProtection\":
+ false\r\n }\r\n}"
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/e80d1fe9-5422-4182-bbc4-f5a9674851a9?api-version=2021-02-01
+ cache-control:
+ - no-cache
+ content-length:
+ - '1996'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:09:08 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-arm-service-request-id:
+ - 39229ab7-9220-439f-8e3b-2c9bd64b8824
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1199'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - network vnet subnet create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --vnet-name --resource-group --address-prefixes --delegations
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-network/19.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/operations/e80d1fe9-5422-4182-bbc4-f5a9674851a9?api-version=2021-02-01
+ response:
+ body:
+ string: "{\r\n \"status\": \"Succeeded\"\r\n}"
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '29'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:09:11 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-arm-service-request-id:
+ - 66b56d13-bd1f-41fb-992b-75f46cc49aef
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - network vnet subnet create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --vnet-name --resource-group --address-prefixes --delegations
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-azure-mgmt-network/19.0.0 Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004?api-version=2021-02-01
+ response:
+ body:
+ string: "{\r\n \"name\": \"vnet000004\",\r\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004\",\r\n
+ \ \"etag\": \"W/\\\"2d3f7bbf-826b-4c0e-8d7c-60b7c29d8bf2\\\"\",\r\n \"type\":
+ \"Microsoft.Network/virtualNetworks\",\r\n \"location\": \"eastus\",\r\n
+ \ \"tags\": {},\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n
+ \ \"resourceGuid\": \"3a8c3d9e-e518-4882-9967-726fcbade9b8\",\r\n \"addressSpace\":
+ {\r\n \"addressPrefixes\": [\r\n \"10.0.0.0/16\"\r\n ]\r\n
+ \ },\r\n \"dhcpOptions\": {\r\n \"dnsServers\": []\r\n },\r\n
+ \ \"subnets\": [\r\n {\r\n \"name\": \"subnet000005\",\r\n \"id\":
+ \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005\",\r\n
+ \ \"etag\": \"W/\\\"2d3f7bbf-826b-4c0e-8d7c-60b7c29d8bf2\\\"\",\r\n
+ \ \"properties\": {\r\n \"provisioningState\": \"Succeeded\",\r\n
+ \ \"addressPrefix\": \"10.0.0.0/24\",\r\n \"delegations\":
+ [\r\n {\r\n \"name\": \"0\",\r\n \"id\":
+ \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005/delegations/0\",\r\n
+ \ \"etag\": \"W/\\\"2d3f7bbf-826b-4c0e-8d7c-60b7c29d8bf2\\\"\",\r\n
+ \ \"properties\": {\r\n \"provisioningState\":
+ \"Succeeded\",\r\n \"serviceName\": \"Microsoft.StoragePool/diskPools\",\r\n
+ \ \"actions\": [\r\n \"Microsoft.Network/virtualNetworks/read\"\r\n
+ \ ]\r\n },\r\n \"type\": \"Microsoft.Network/virtualNetworks/subnets/delegations\"\r\n
+ \ }\r\n ],\r\n \"privateEndpointNetworkPolicies\":
+ \"Enabled\",\r\n \"privateLinkServiceNetworkPolicies\": \"Enabled\"\r\n
+ \ },\r\n \"type\": \"Microsoft.Network/virtualNetworks/subnets\"\r\n
+ \ }\r\n ],\r\n \"virtualNetworkPeerings\": [],\r\n \"enableDdosProtection\":
+ false\r\n }\r\n}"
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1998'
+ content-type:
+ - application/json; charset=utf-8
+ date:
+ - Tue, 25 May 2021 06:09:12 GMT
+ etag:
+ - W/"2d3f7bbf-826b-4c0e-8d7c-60b7c29d8bf2"
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ server:
+ - Microsoft-HTTPAPI/2.0
+ - Microsoft-HTTPAPI/2.0
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-arm-service-request-id:
+ - d32ece12-fab3-432f-8aeb-ac3214b19be8
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"sku": {"name": "Standard", "tier": "Standard"}, "location": "eastus",
+ "properties": {"availabilityZones": ["3"], "disks": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"}],
+ "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005"}}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '439'
+ Content-Type:
+ - application/json
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: PUT
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:09:17.0897576Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Pending","status":"Unknown"},"sku":{"name":"Standard","tier":"Standard"}}'
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ cache-control:
+ - no-cache
+ content-length:
+ - '927'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:09:20 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-async-operation-timeout:
+ - PT1H
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1198'
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 201
+ message: Created
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:09:31 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:10:01 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:10:31 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:11:02 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:11:32 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:12:02 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:12:33 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:13:04 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:13:34 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:14:05 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:14:38 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:15:08 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:15:38 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:16:09 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:16:39 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:17:10 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:17:41 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:18:11 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:18:41 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Running","startTime":"2021-05-25T06:09:19Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:19:11 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/87fb07a8-9e0f-4663-8120-21635d5fdc5a","name":"87fb07a8-9e0f-4663-8120-21635d5fdc5a","status":"Succeeded","startTime":"2021-05-25T06:09:19Z","endTime":"2021-05-25T06:19:34Z","properties":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:09:17.0897576Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Succeeded","status":"Running"},"sku":{"name":"Standard","tier":"Standard"}}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1208'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:19:43 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --location --availability-zones --subnet-id --sku
+ --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:09:17.0897576Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Succeeded","status":"Running"},"sku":{"name":"Standard","tier":"Standard"}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '929'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:19:44 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool show
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:09:17.0897576Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Succeeded","status":"Running"},"sku":{"name":"Standard","tier":"Standard"}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '929'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:19:45 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool list
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:09:17.0897576Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Succeeded","status":"Running"},"sku":{"name":"Standard","tier":"Standard"}}],"nextLink":null}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '957'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:19:46 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"properties": {"aclMode": "Dynamic", "luns": [{"name": "lun0", "managedDiskAzureResourceId":
+ "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"}]}}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target create
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '228'
+ Content-Type:
+ - application/json
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --acl-mode --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: PUT
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007","name":"iscsi000007","type":"Microsoft.StoragePool/diskPools/iscsiTargets","systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:19:48.0331286Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:19:48.0331286Z"},"properties":{"targetIqn":"iqn.2021-05.com.microsoft:iscsi000007","aclMode":"Dynamic","luns":[{"managedDiskAzureResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002","name":"lun0","lun":0}],"endpoints":["10.0.0.4:3260","10.0.0.5:3260"],"provisioningState":"Pending","status":"Unknown"}}'
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/37ec0a36-4121-4691-9344-1420673ea6be?api-version=2021-04-01-preview
+ cache-control:
+ - no-cache
+ content-length:
+ - '849'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:19:48 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-async-operation-timeout:
+ - PT1H
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1199'
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 201
+ message: Created
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --acl-mode --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/37ec0a36-4121-4691-9344-1420673ea6be?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/37ec0a36-4121-4691-9344-1420673ea6be","name":"37ec0a36-4121-4691-9344-1420673ea6be","status":"Running","startTime":"2021-05-25T06:19:49Z"}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '230'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:19:59 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --acl-mode --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/37ec0a36-4121-4691-9344-1420673ea6be?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/37ec0a36-4121-4691-9344-1420673ea6be","name":"37ec0a36-4121-4691-9344-1420673ea6be","status":"Running","startTime":"2021-05-25T06:19:49Z"}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '230'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:20:29 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --acl-mode --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/37ec0a36-4121-4691-9344-1420673ea6be?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/37ec0a36-4121-4691-9344-1420673ea6be","name":"37ec0a36-4121-4691-9344-1420673ea6be","status":"Running","startTime":"2021-05-25T06:19:49Z"}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '230'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:21:00 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --acl-mode --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/37ec0a36-4121-4691-9344-1420673ea6be?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/37ec0a36-4121-4691-9344-1420673ea6be","name":"37ec0a36-4121-4691-9344-1420673ea6be","status":"Succeeded","startTime":"2021-05-25T06:19:49Z","endTime":"2021-05-25T06:21:03Z","properties":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007","name":"iscsi000007","type":"Microsoft.StoragePool/diskPools/iscsiTargets","systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:19:48.0331286Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:19:48.0331286Z"},"properties":{"targetIqn":"iqn.2021-05.com.microsoft:iscsi000007","aclMode":"Dynamic","luns":[{"managedDiskAzureResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002","name":"lun0","lun":0}],"endpoints":["10.0.0.4:3260","10.0.0.5:3260"],"provisioningState":"Succeeded","status":"Healthy"}}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1130'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:21:31 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target create
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --acl-mode --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007","name":"iscsi000007","type":"Microsoft.StoragePool/diskPools/iscsiTargets","systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:19:48.0331286Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:19:48.0331286Z"},"properties":{"targetIqn":"iqn.2021-05.com.microsoft:iscsi000007","aclMode":"Dynamic","luns":[{"managedDiskAzureResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002","name":"lun0","lun":0}],"endpoints":["10.0.0.4:3260","10.0.0.5:3260"],"provisioningState":"Succeeded","status":"Healthy"}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '851'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:21:31 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target show
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007","name":"iscsi000007","type":"Microsoft.StoragePool/diskPools/iscsiTargets","systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:19:48.0331286Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:19:48.0331286Z"},"properties":{"targetIqn":"iqn.2021-05.com.microsoft:iscsi000007","aclMode":"Dynamic","luns":[{"managedDiskAzureResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002","name":"lun0","lun":0}],"endpoints":["10.0.0.4:3260","10.0.0.5:3260"],"provisioningState":"Succeeded","status":"Healthy"}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '851'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:21:32 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target list
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --disk-pool-name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007","name":"iscsi000007","type":"Microsoft.StoragePool/diskPools/iscsiTargets","systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:19:48.0331286Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:19:48.0331286Z"},"properties":{"targetIqn":"iqn.2021-05.com.microsoft:iscsi000007","aclMode":"Dynamic","luns":[{"managedDiskAzureResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002","name":"lun0","lun":0}],"endpoints":["10.0.0.4:3260","10.0.0.5:3260"],"provisioningState":"Succeeded","status":"Healthy"}}],"nextLink":null}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '879'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:21:34 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"properties": {"disks": [{"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"},
+ {"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003"}]}}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool update
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '307'
+ Content-Type:
+ - application/json
+ ParameterSetName:
+ - --name --resource-group --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: PATCH
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006?api-version=2021-04-01-preview
+ response:
+ body:
+ string: ''
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6?api-version=2021-04-01-preview
+ cache-control:
+ - no-cache
+ content-length:
+ - '0'
+ date:
+ - Tue, 25 May 2021 06:21:37 GMT
+ expires:
+ - '-1'
+ location:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationresults/5aeb37cc-a246-4503-a7dd-7a78433196c6?api-version=2021-04-01-preview
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-async-operation-timeout:
+ - PT1H
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1197'
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 202
+ message: Accepted
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6","name":"5aeb37cc-a246-4503-a7dd-7a78433196c6","status":"Running","startTime":"2021-05-25T06:21:37Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:21:47 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6","name":"5aeb37cc-a246-4503-a7dd-7a78433196c6","status":"Running","startTime":"2021-05-25T06:21:37Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:22:17 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6","name":"5aeb37cc-a246-4503-a7dd-7a78433196c6","status":"Running","startTime":"2021-05-25T06:21:37Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:22:47 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6","name":"5aeb37cc-a246-4503-a7dd-7a78433196c6","status":"Running","startTime":"2021-05-25T06:21:37Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:23:19 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6","name":"5aeb37cc-a246-4503-a7dd-7a78433196c6","status":"Running","startTime":"2021-05-25T06:21:37Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:23:49 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/5aeb37cc-a246-4503-a7dd-7a78433196c6","name":"5aeb37cc-a246-4503-a7dd-7a78433196c6","status":"Succeeded","startTime":"2021-05-25T06:21:37Z","endTime":"2021-05-25T06:23:57Z","properties":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:21:35.5269744Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Succeeded","status":"Running"},"sku":{"name":"Standard","tier":"Standard"}}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1346'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:24:19 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group --disks
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:21:35.5269744Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Succeeded","status":"Running"},"sku":{"name":"Standard","tier":"Standard"}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1067'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:24:19 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: '{"properties": {"luns": [{"name": "lun0", "managedDiskAzureResourceId":
+ "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"},
+ {"name": "lun1", "managedDiskAzureResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003"}]}}'
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target update
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '386'
+ Content-Type:
+ - application/json
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --luns --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: PATCH
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007?api-version=2021-04-01-preview
+ response:
+ body:
+ string: ''
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/f1c94a62-69eb-4515-870d-fbcefcf5e7ff?api-version=2021-04-01-preview
+ cache-control:
+ - no-cache
+ content-length:
+ - '0'
+ date:
+ - Tue, 25 May 2021 06:24:22 GMT
+ expires:
+ - '-1'
+ location:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationresults/f1c94a62-69eb-4515-870d-fbcefcf5e7ff?api-version=2021-04-01-preview
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-async-operation-timeout:
+ - PT1H
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1198'
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 202
+ message: Accepted
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --luns --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/f1c94a62-69eb-4515-870d-fbcefcf5e7ff?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/f1c94a62-69eb-4515-870d-fbcefcf5e7ff","name":"f1c94a62-69eb-4515-870d-fbcefcf5e7ff","status":"Running","startTime":"2021-05-25T06:24:22Z"}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '230'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:24:32 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --luns --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/f1c94a62-69eb-4515-870d-fbcefcf5e7ff?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/f1c94a62-69eb-4515-870d-fbcefcf5e7ff","name":"f1c94a62-69eb-4515-870d-fbcefcf5e7ff","status":"Running","startTime":"2021-05-25T06:24:22Z"}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '230'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:25:03 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --luns --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/f1c94a62-69eb-4515-870d-fbcefcf5e7ff?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/f1c94a62-69eb-4515-870d-fbcefcf5e7ff","name":"f1c94a62-69eb-4515-870d-fbcefcf5e7ff","status":"Running","startTime":"2021-05-25T06:24:22Z"}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '230'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:25:33 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --luns --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/f1c94a62-69eb-4515-870d-fbcefcf5e7ff?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/f1c94a62-69eb-4515-870d-fbcefcf5e7ff","name":"f1c94a62-69eb-4515-870d-fbcefcf5e7ff","status":"Succeeded","startTime":"2021-05-25T06:24:22Z","endTime":"2021-05-25T06:25:59Z","properties":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007","name":"iscsi000007","type":"Microsoft.StoragePool/diskPools/iscsiTargets","systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:19:48.0331286Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:24:21.2019994Z"},"properties":{"targetIqn":"iqn.2021-05.com.microsoft:iscsi000007","aclMode":"Dynamic","luns":[{"managedDiskAzureResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002","name":"lun0","lun":0},{"managedDiskAzureResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003","name":"lun1","lun":1}],"endpoints":["10.0.0.4:3260","10.0.0.5:3260"],"provisioningState":"Succeeded","status":"Healthy"}}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1314'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:26:04 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target update
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group --luns --luns
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007","name":"iscsi000007","type":"Microsoft.StoragePool/diskPools/iscsiTargets","systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:19:48.0331286Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:24:21.2019994Z"},"properties":{"targetIqn":"iqn.2021-05.com.microsoft:iscsi000007","aclMode":"Dynamic","luns":[{"managedDiskAzureResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002","name":"lun0","lun":0},{"managedDiskAzureResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003","name":"lun1","lun":1}],"endpoints":["10.0.0.4:3260","10.0.0.5:3260"],"provisioningState":"Succeeded","status":"Healthy"}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1035'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:26:04 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '0'
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: POST
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/deallocate?api-version=2021-04-01-preview
+ response:
+ body:
+ string: ''
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ cache-control:
+ - no-cache
+ content-length:
+ - '0'
+ date:
+ - Tue, 25 May 2021 06:26:06 GMT
+ expires:
+ - '-1'
+ location:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationresults/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1199'
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 202
+ message: Accepted
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Running","startTime":"2021-05-25T06:26:06Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:26:17 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Running","startTime":"2021-05-25T06:26:06Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:26:47 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Running","startTime":"2021-05-25T06:26:06Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:27:17 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Running","startTime":"2021-05-25T06:26:06Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:27:47 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Running","startTime":"2021-05-25T06:26:06Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:28:18 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Running","startTime":"2021-05-25T06:26:06Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:28:48 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Running","startTime":"2021-05-25T06:26:06Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:29:20 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Running","startTime":"2021-05-25T06:26:06Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:29:50 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Running","startTime":"2021-05-25T06:26:06Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:30:20 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Running","startTime":"2021-05-25T06:26:06Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:30:50 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool stop
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/ba31ec2f-7235-4783-82d7-c3940bccaa3a","name":"ba31ec2f-7235-4783-82d7-c3940bccaa3a","status":"Succeeded","startTime":"2021-05-25T06:26:06Z","endTime":"2021-05-25T06:31:14Z","properties":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:21:35.5269744Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Succeeded","status":"Stopped
+ (deallocated)"},"sku":{"name":"Standard","tier":"Standard"}}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1360'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:31:21 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool show
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:21:35.5269744Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Succeeded","status":"Stopped
+ (deallocated)"},"sku":{"name":"Standard","tier":"Standard"}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1081'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:31:24 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool start
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '0'
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: POST
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/start?api-version=2021-04-01-preview
+ response:
+ body:
+ string: ''
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/e208c283-fc07-4a03-a362-d4a05995fbdc?api-version=2021-04-01-preview
+ cache-control:
+ - no-cache
+ content-length:
+ - '0'
+ date:
+ - Tue, 25 May 2021 06:31:25 GMT
+ expires:
+ - '-1'
+ location:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationresults/e208c283-fc07-4a03-a362-d4a05995fbdc?api-version=2021-04-01-preview
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-ratelimit-remaining-subscription-writes:
+ - '1199'
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 202
+ message: Accepted
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool start
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/e208c283-fc07-4a03-a362-d4a05995fbdc?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/e208c283-fc07-4a03-a362-d4a05995fbdc","name":"e208c283-fc07-4a03-a362-d4a05995fbdc","status":"Running","startTime":"2021-05-25T06:31:25Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:31:36 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool start
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/e208c283-fc07-4a03-a362-d4a05995fbdc?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/e208c283-fc07-4a03-a362-d4a05995fbdc","name":"e208c283-fc07-4a03-a362-d4a05995fbdc","status":"Running","startTime":"2021-05-25T06:31:25Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:32:06 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool start
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/e208c283-fc07-4a03-a362-d4a05995fbdc?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/e208c283-fc07-4a03-a362-d4a05995fbdc","name":"e208c283-fc07-4a03-a362-d4a05995fbdc","status":"Running","startTime":"2021-05-25T06:31:25Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:32:37 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool start
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/e208c283-fc07-4a03-a362-d4a05995fbdc?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/e208c283-fc07-4a03-a362-d4a05995fbdc","name":"e208c283-fc07-4a03-a362-d4a05995fbdc","status":"Running","startTime":"2021-05-25T06:31:25Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '243'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:33:07 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool start
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/e208c283-fc07-4a03-a362-d4a05995fbdc?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/e208c283-fc07-4a03-a362-d4a05995fbdc","name":"e208c283-fc07-4a03-a362-d4a05995fbdc","status":"Succeeded","startTime":"2021-05-25T06:31:25Z","endTime":"2021-05-25T06:33:24Z","properties":{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:21:35.5269744Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Succeeded","status":"Running"},"sku":{"name":"Standard","tier":"Standard"}}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1346'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:33:38 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool show
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006","name":"diskpool000006","type":"Microsoft.StoragePool/diskPools","location":"eastus","tags":{},"systemData":{"createdBy":"zuh@microsoft.com","createdByType":"User","createdAt":"2021-05-25T06:09:17.0897576Z","lastModifiedBy":"zuh@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2021-05-25T06:21:35.5269744Z"},"properties":{"disks":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000002"},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Compute/disks/disk000003"}],"availabilityZones":["3"],"subnetId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.Network/virtualNetworks/vnet000004/subnets/subnet000005","provisioningState":"Succeeded","status":"Running"},"sku":{"name":"Standard","tier":"Standard"}}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '1067'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:33:40 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target delete
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '0'
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: DELETE
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets/iscsi000007?api-version=2021-04-01-preview
+ response:
+ body:
+ string: ''
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/d98fd278-4392-4e5d-93ce-9fbaa67cead1?api-version=2021-04-01-preview
+ cache-control:
+ - no-cache
+ content-length:
+ - '0'
+ date:
+ - Tue, 25 May 2021 06:33:42 GMT
+ expires:
+ - '-1'
+ location:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationresults/d98fd278-4392-4e5d-93ce-9fbaa67cead1?api-version=2021-04-01-preview
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-async-operation-timeout:
+ - PT1H
+ x-ms-ratelimit-remaining-subscription-deletes:
+ - '14993'
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 202
+ message: Accepted
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/d98fd278-4392-4e5d-93ce-9fbaa67cead1?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/d98fd278-4392-4e5d-93ce-9fbaa67cead1","name":"d98fd278-4392-4e5d-93ce-9fbaa67cead1","status":"Running","startTime":"2021-05-25T06:33:42Z"}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '224'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:33:52 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --disk-pool-name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/d98fd278-4392-4e5d-93ce-9fbaa67cead1?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/d98fd278-4392-4e5d-93ce-9fbaa67cead1","name":"d98fd278-4392-4e5d-93ce-9fbaa67cead1","status":"Succeeded","startTime":"2021-05-25T06:33:42Z"}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '232'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:34:22 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool iscsi-target list
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --disk-pool-name --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006/iscsiTargets?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"value":[],"nextLink":null}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '28'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:34:24 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '0'
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: DELETE
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools/diskpool000006?api-version=2021-04-01-preview
+ response:
+ body:
+ string: ''
+ headers:
+ azure-asyncoperation:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ cache-control:
+ - no-cache
+ content-length:
+ - '0'
+ date:
+ - Tue, 25 May 2021 06:34:27 GMT
+ expires:
+ - '-1'
+ location:
+ - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationresults/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ x-content-type-options:
+ - nosniff
+ x-ms-async-operation-timeout:
+ - PT1H
+ x-ms-ratelimit-remaining-subscription-deletes:
+ - '14999'
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 202
+ message: Accepted
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:34:37 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:35:07 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:35:38 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:36:09 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:36:39 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:37:09 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:37:40 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:38:10 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:38:40 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:39:11 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:39:43 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations//operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Running","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '237'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:40:13 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool delete
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --name --resource-group -y
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.StoragePool/locations/eastus/operationsStatus/3604f57a-e231-4563-81e7-c318a2e14878?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/locations/eastus/operationStatus/3604f57a-e231-4563-81e7-c318a2e14878","name":"3604f57a-e231-4563-81e7-c318a2e14878","status":"Succeeded","startTime":"2021-05-25T06:34:27Z","endTime":""}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '245'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:40:43 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+- request:
+ body: null
+ headers:
+ Accept:
+ - application/json
+ Accept-Encoding:
+ - gzip, deflate
+ CommandName:
+ - disk-pool list
+ Connection:
+ - keep-alive
+ ParameterSetName:
+ - --resource-group
+ User-Agent:
+ - AZURECLI/2.24.0 azsdk-python-storagepoolmanagement/unknown Python/3.8.3 (Windows-10-10.0.19041-SP0)
+ method: GET
+ uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest000001/providers/Microsoft.StoragePool/diskPools?api-version=2021-04-01-preview
+ response:
+ body:
+ string: '{"value":[],"nextLink":null}'
+ headers:
+ cache-control:
+ - no-cache
+ content-length:
+ - '28'
+ content-type:
+ - application/json
+ date:
+ - Tue, 25 May 2021 06:40:45 GMT
+ expires:
+ - '-1'
+ pragma:
+ - no-cache
+ strict-transport-security:
+ - max-age=31536000; includeSubDomains
+ transfer-encoding:
+ - chunked
+ vary:
+ - Accept-Encoding
+ x-content-type-options:
+ - nosniff
+ x-ms-return-client-request-id:
+ - 'true'
+ status:
+ code: 200
+ message: OK
+version: 1
diff --git a/src/diskpool/azext_diskpool/tests/latest/test_disk_scenario_manual.py b/src/diskpool/azext_diskpool/tests/latest/test_disk_scenario_manual.py
new file mode 100644
index 00000000000..8fb778a7df3
--- /dev/null
+++ b/src/diskpool/azext_diskpool/tests/latest/test_disk_scenario_manual.py
@@ -0,0 +1,116 @@
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+import mock
+from azure.cli.testsdk import ScenarioTest
+from azure.cli.testsdk import ResourceGroupPreparer
+
+
+class DiskpoolScenarioTest(ScenarioTest):
+ @ResourceGroupPreparer(name_prefix='clitest', location='eastus', random_name_length=16)
+ def test_diskpool_scenario_manual(self, resource_group):
+ self.kwargs.update({
+ 'rg': resource_group,
+ 'diskName': self.create_random_name(prefix='disk', length=10),
+ 'diskName2': self.create_random_name(prefix='disk', length=10),
+ 'vnet': self.create_random_name(prefix='vnet', length=10),
+ 'subnet': self.create_random_name(prefix='subnet', length=10),
+ 'subnetPrefix': '10.0.0.0/24',
+ 'zone': "3",
+ 'diskPoolName': self.create_random_name(prefix='diskpool', length=16),
+ 'location': 'eastus',
+ 'targetName': self.create_random_name(prefix='iscsi', length=10),
+ 'storagePoolObjectId': '09f10f07-08cf-4ab7-be0f-e9ae3d72b9ad'
+ })
+ result = self.cmd('disk create --name {diskName} --resource-group {rg} --zone {zone} --location {location} '
+ '--sku Premium_LRS --max-shares 2 --size-gb 256').get_output_in_json()
+ self.kwargs['diskId'] = result['id']
+ result = self.cmd('disk create --name {diskName2} --resource-group {rg} --zone {zone} --location {location} '
+ '--sku Premium_LRS --max-shares 2 --size-gb 256').get_output_in_json()
+ self.kwargs['diskId2'] = result['id']
+ with mock.patch('azure.cli.command_modules.role.custom._gen_guid', side_effect=self.create_guid):
+ self.cmd('role assignment create --assignee-object-id {storagePoolObjectId} --role "Virtual Machine Contributor" --scope {diskId}')
+ with mock.patch('azure.cli.command_modules.role.custom._gen_guid', side_effect=self.create_guid):
+ self.cmd('role assignment create --assignee-object-id {storagePoolObjectId} --role "Virtual Machine Contributor" --scope {diskId2}')
+
+ self.cmd('network vnet create --name {vnet} --resource-group {rg} --location {location}')
+ result = self.cmd('network vnet subnet create --name {subnet} --vnet-name {vnet} --resource-group {rg} '
+ '--address-prefixes {subnetPrefix} --delegations Microsoft.StoragePool/diskPools').get_output_in_json()
+ self.kwargs['subnetId'] = result['id']
+
+ # Create a Disk Pool
+ self.cmd('disk-pool create --name {diskPoolName} --resource-group {rg} --location {location} '
+ '--availability-zones {zone} --subnet-id {subnetId} --sku name="Standard" tier="Standard" '
+ '--disks {diskId}', checks=[self.check('name', '{diskPoolName}'),
+ self.check('availabilityZones[0]', '{zone}'),
+ self.check('disks[0].id', '{diskId}'),
+ self.check('subnetId', '{subnetId}'),
+ self.check('tier', 'Standard')])
+ self.cmd('disk-pool show --name {diskPoolName} --resource-group {rg}',
+ checks=[self.check('name', '{diskPoolName}'),
+ self.check('availabilityZones[0]', '{zone}'),
+ self.check('disks[0].id', '{diskId}'),
+ self.check('subnetId', '{subnetId}'),
+ self.check('tier', 'Standard')])
+ self.cmd('disk-pool list --resource-group {rg}',
+ checks=[self.check('length(@)', 1)])
+
+ # TODO: Add back when fixed in server
+ # self.cmd('disk-pool list-outbound-network-dependency-endpoint --name {diskPoolName} --resource-group {rg}',
+ # checks=[self.check('length(@)', 1)])
+
+ # Create an ISCSI target
+ self.cmd('disk-pool iscsi-target create --name {targetName} --disk-pool-name {diskPoolName} '
+ '--resource-group {rg} --acl-mode Dynamic --luns name="lun0" managed-disk-azure-resource-id={diskId}',
+ checks=[self.check('aclMode', 'Dynamic'),
+ self.check('luns[0].managedDiskAzureResourceId', '{diskId}'),
+ self.check('luns[0].name', 'lun0')])
+ self.cmd('disk-pool iscsi-target show --name {targetName} --disk-pool-name {diskPoolName} --resource-group {rg}',
+ checks=[self.check('aclMode', 'Dynamic'),
+ self.check('luns[0].managedDiskAzureResourceId', '{diskId}'),
+ self.check('luns[0].name', 'lun0')])
+ self.cmd('disk-pool iscsi-target list --disk-pool-name {diskPoolName} --resource-group {rg}',
+ checks=[self.check('length(@)', 1)])
+
+ # Update Disk Pool
+ self.cmd('disk-pool update --name {diskPoolName} --resource-group {rg} --disks {diskId} {diskId2}',
+ checks=[self.check('name', '{diskPoolName}'),
+ self.check('disks[0].id', '{diskId}'),
+ self.check('disks[1].id', '{diskId2}')])
+
+ # Update iSCSI target -- add a LUN
+ self.cmd('disk-pool iscsi-target update --name {targetName} --disk-pool-name {diskPoolName} '
+ '--resource-group {rg} --luns name="lun0" managed-disk-azure-resource-id={diskId} '
+ '--luns name="lun1" managed-disk-azure-resource-id={diskId2}',
+ checks=[self.check('aclMode', 'Dynamic'),
+ self.check('luns[0].managedDiskAzureResourceId', '{diskId}'),
+ self.check('luns[0].name', 'lun0'),
+ self.check('luns[1].managedDiskAzureResourceId', '{diskId2}'),
+ self.check('luns[1].name', 'lun1')])
+
+ self.cmd('disk-pool stop --name {diskPoolName} --resource-group {rg}')
+ self.cmd('disk-pool show --name {diskPoolName} --resource-group {rg}',
+ checks=[self.check('status', 'Stopped (deallocated)')])
+
+ self.cmd('disk-pool start --name {diskPoolName} --resource-group {rg}')
+ self.cmd('disk-pool show --name {diskPoolName} --resource-group {rg}',
+ checks=[self.check('status', 'Running')])
+
+ self.cmd('disk-pool iscsi-target delete --name {targetName} --disk-pool-name {diskPoolName} '
+ '--resource-group {rg} -y')
+ self.cmd('disk-pool iscsi-target list --disk-pool-name {diskPoolName} --resource-group {rg}',
+ checks=[self.check('length(@)', 0)])
+
+ self.cmd('disk-pool delete --name {diskPoolName} --resource-group {rg} -y')
+ self.cmd('disk-pool list --resource-group {rg}',
+ checks=[self.check('length(@)', 0)])
+
+ def test_diskpool_list_sku_scenario_manual(self):
+ result = self.cmd('disk-pool list-skus -l eastus ').get_output_in_json()
+ self.assertIsNotNone(result)
diff --git a/src/diskpool/azext_diskpool/tests/latest/test_diskpool_scenario_coverage.md b/src/diskpool/azext_diskpool/tests/latest/test_diskpool_scenario_coverage.md
new file mode 100644
index 00000000000..cb712843009
--- /dev/null
+++ b/src/diskpool/azext_diskpool/tests/latest/test_diskpool_scenario_coverage.md
@@ -0,0 +1,2 @@
+|Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt|
+Coverage: 0/0
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/__init__.py b/src/diskpool/azext_diskpool/vendored_sdks/__init__.py
new file mode 100644
index 00000000000..c9cfdc73e77
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/__init__.py
@@ -0,0 +1,12 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+__path__ = __import__('pkgutil').extend_path(__path__, __name__)
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/__init__.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/__init__.py
new file mode 100644
index 00000000000..40013efe44d
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/__init__.py
@@ -0,0 +1,16 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from ._storage_pool_management import StoragePoolManagement
+__all__ = ['StoragePoolManagement']
+
+try:
+ from ._patch import patch_sdk # type: ignore
+ patch_sdk()
+except ImportError:
+ pass
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/_configuration.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/_configuration.py
new file mode 100644
index 00000000000..24c1d0a6d8c
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/_configuration.py
@@ -0,0 +1,70 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from typing import TYPE_CHECKING
+
+from azure.core.configuration import Configuration
+from azure.core.pipeline import policies
+from azure.mgmt.core.policies import ARMHttpLoggingPolicy
+
+if TYPE_CHECKING:
+ # pylint: disable=unused-import,ungrouped-imports
+ from typing import Any
+
+ from azure.core.credentials import TokenCredential
+
+VERSION = "unknown"
+
+class StoragePoolManagementConfiguration(Configuration):
+ """Configuration for StoragePoolManagement.
+
+ Note that all parameters used to create this instance are saved as instance
+ attributes.
+
+ :param credential: Credential needed for the client to connect to Azure.
+ :type credential: ~azure.core.credentials.TokenCredential
+ :param subscription_id: The ID of the target subscription.
+ :type subscription_id: str
+ """
+
+ def __init__(
+ self,
+ credential, # type: "TokenCredential"
+ subscription_id, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> None
+ if credential is None:
+ raise ValueError("Parameter 'credential' must not be None.")
+ if subscription_id is None:
+ raise ValueError("Parameter 'subscription_id' must not be None.")
+ super(StoragePoolManagementConfiguration, self).__init__(**kwargs)
+
+ self.credential = credential
+ self.subscription_id = subscription_id
+ self.api_version = "2021-04-01-preview"
+ self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default'])
+ kwargs.setdefault('sdk_moniker', 'storagepoolmanagement/{}'.format(VERSION))
+ self._configure(**kwargs)
+
+ def _configure(
+ self,
+ **kwargs # type: Any
+ ):
+ # type: (...) -> None
+ self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs)
+ self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs)
+ self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs)
+ self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs)
+ self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs)
+ self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs)
+ self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs)
+ self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs)
+ self.authentication_policy = kwargs.get('authentication_policy')
+ if self.credential and not self.authentication_policy:
+ self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs)
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/_storage_pool_management.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/_storage_pool_management.py
new file mode 100644
index 00000000000..d59edd58b34
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/_storage_pool_management.py
@@ -0,0 +1,85 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from typing import TYPE_CHECKING
+
+from azure.mgmt.core import ARMPipelineClient
+from msrest import Deserializer, Serializer
+
+if TYPE_CHECKING:
+ # pylint: disable=unused-import,ungrouped-imports
+ from typing import Any, Optional
+
+ from azure.core.credentials import TokenCredential
+
+from ._configuration import StoragePoolManagementConfiguration
+from .operations import Operations
+from .operations import DiskPoolsOperations
+from .operations import DiskPoolZonesOperations
+from .operations import IscsiTargetsOperations
+from . import models
+
+
+class StoragePoolManagement(object):
+ """StoragePoolManagement.
+
+ :ivar operations: Operations operations
+ :vartype operations: storage_pool_management.operations.Operations
+ :ivar disk_pools: DiskPoolsOperations operations
+ :vartype disk_pools: storage_pool_management.operations.DiskPoolsOperations
+ :ivar disk_pool_zones: DiskPoolZonesOperations operations
+ :vartype disk_pool_zones: storage_pool_management.operations.DiskPoolZonesOperations
+ :ivar iscsi_targets: IscsiTargetsOperations operations
+ :vartype iscsi_targets: storage_pool_management.operations.IscsiTargetsOperations
+ :param credential: Credential needed for the client to connect to Azure.
+ :type credential: ~azure.core.credentials.TokenCredential
+ :param subscription_id: The ID of the target subscription.
+ :type subscription_id: str
+ :param str base_url: Service URL
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ """
+
+ def __init__(
+ self,
+ credential, # type: "TokenCredential"
+ subscription_id, # type: str
+ base_url=None, # type: Optional[str]
+ **kwargs # type: Any
+ ):
+ # type: (...) -> None
+ if not base_url:
+ base_url = 'https://management.azure.com'
+ self._config = StoragePoolManagementConfiguration(credential, subscription_id, **kwargs)
+ self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs)
+
+ client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
+ self._serialize = Serializer(client_models)
+ self._serialize.client_side_validation = False
+ self._deserialize = Deserializer(client_models)
+
+ self.operations = Operations(
+ self._client, self._config, self._serialize, self._deserialize)
+ self.disk_pools = DiskPoolsOperations(
+ self._client, self._config, self._serialize, self._deserialize)
+ self.disk_pool_zones = DiskPoolZonesOperations(
+ self._client, self._config, self._serialize, self._deserialize)
+ self.iscsi_targets = IscsiTargetsOperations(
+ self._client, self._config, self._serialize, self._deserialize)
+
+ def close(self):
+ # type: () -> None
+ self._client.close()
+
+ def __enter__(self):
+ # type: () -> StoragePoolManagement
+ self._client.__enter__()
+ return self
+
+ def __exit__(self, *exc_details):
+ # type: (Any) -> None
+ self._client.__exit__(*exc_details)
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/__init__.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/__init__.py
new file mode 100644
index 00000000000..9eb7de1efa2
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/__init__.py
@@ -0,0 +1,10 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from ._storage_pool_management import StoragePoolManagement
+__all__ = ['StoragePoolManagement']
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/_configuration.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/_configuration.py
new file mode 100644
index 00000000000..9ee88b6831b
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/_configuration.py
@@ -0,0 +1,66 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from typing import Any, TYPE_CHECKING
+
+from azure.core.configuration import Configuration
+from azure.core.pipeline import policies
+from azure.mgmt.core.policies import ARMHttpLoggingPolicy
+
+if TYPE_CHECKING:
+ # pylint: disable=unused-import,ungrouped-imports
+ from azure.core.credentials_async import AsyncTokenCredential
+
+VERSION = "unknown"
+
+class StoragePoolManagementConfiguration(Configuration):
+ """Configuration for StoragePoolManagement.
+
+ Note that all parameters used to create this instance are saved as instance
+ attributes.
+
+ :param credential: Credential needed for the client to connect to Azure.
+ :type credential: ~azure.core.credentials_async.AsyncTokenCredential
+ :param subscription_id: The ID of the target subscription.
+ :type subscription_id: str
+ """
+
+ def __init__(
+ self,
+ credential: "AsyncTokenCredential",
+ subscription_id: str,
+ **kwargs: Any
+ ) -> None:
+ if credential is None:
+ raise ValueError("Parameter 'credential' must not be None.")
+ if subscription_id is None:
+ raise ValueError("Parameter 'subscription_id' must not be None.")
+ super(StoragePoolManagementConfiguration, self).__init__(**kwargs)
+
+ self.credential = credential
+ self.subscription_id = subscription_id
+ self.api_version = "2021-04-01-preview"
+ self.credential_scopes = kwargs.pop('credential_scopes', ['https://management.azure.com/.default'])
+ kwargs.setdefault('sdk_moniker', 'storagepoolmanagement/{}'.format(VERSION))
+ self._configure(**kwargs)
+
+ def _configure(
+ self,
+ **kwargs: Any
+ ) -> None:
+ self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs)
+ self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs)
+ self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs)
+ self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs)
+ self.http_logging_policy = kwargs.get('http_logging_policy') or ARMHttpLoggingPolicy(**kwargs)
+ self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs)
+ self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs)
+ self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs)
+ self.authentication_policy = kwargs.get('authentication_policy')
+ if self.credential and not self.authentication_policy:
+ self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs)
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/_storage_pool_management.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/_storage_pool_management.py
new file mode 100644
index 00000000000..e4888cf676b
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/_storage_pool_management.py
@@ -0,0 +1,79 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from typing import Any, Optional, TYPE_CHECKING
+
+from azure.mgmt.core import AsyncARMPipelineClient
+from msrest import Deserializer, Serializer
+
+if TYPE_CHECKING:
+ # pylint: disable=unused-import,ungrouped-imports
+ from azure.core.credentials_async import AsyncTokenCredential
+
+from ._configuration import StoragePoolManagementConfiguration
+from .operations import Operations
+from .operations import DiskPoolsOperations
+from .operations import DiskPoolZonesOperations
+from .operations import IscsiTargetsOperations
+from .. import models
+
+
+class StoragePoolManagement(object):
+ """StoragePoolManagement.
+
+ :ivar operations: Operations operations
+ :vartype operations: storage_pool_management.aio.operations.Operations
+ :ivar disk_pools: DiskPoolsOperations operations
+ :vartype disk_pools: storage_pool_management.aio.operations.DiskPoolsOperations
+ :ivar disk_pool_zones: DiskPoolZonesOperations operations
+ :vartype disk_pool_zones: storage_pool_management.aio.operations.DiskPoolZonesOperations
+ :ivar iscsi_targets: IscsiTargetsOperations operations
+ :vartype iscsi_targets: storage_pool_management.aio.operations.IscsiTargetsOperations
+ :param credential: Credential needed for the client to connect to Azure.
+ :type credential: ~azure.core.credentials_async.AsyncTokenCredential
+ :param subscription_id: The ID of the target subscription.
+ :type subscription_id: str
+ :param str base_url: Service URL
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ """
+
+ def __init__(
+ self,
+ credential: "AsyncTokenCredential",
+ subscription_id: str,
+ base_url: Optional[str] = None,
+ **kwargs: Any
+ ) -> None:
+ if not base_url:
+ base_url = 'https://management.azure.com'
+ self._config = StoragePoolManagementConfiguration(credential, subscription_id, **kwargs)
+ self._client = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs)
+
+ client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
+ self._serialize = Serializer(client_models)
+ self._serialize.client_side_validation = False
+ self._deserialize = Deserializer(client_models)
+
+ self.operations = Operations(
+ self._client, self._config, self._serialize, self._deserialize)
+ self.disk_pools = DiskPoolsOperations(
+ self._client, self._config, self._serialize, self._deserialize)
+ self.disk_pool_zones = DiskPoolZonesOperations(
+ self._client, self._config, self._serialize, self._deserialize)
+ self.iscsi_targets = IscsiTargetsOperations(
+ self._client, self._config, self._serialize, self._deserialize)
+
+ async def close(self) -> None:
+ await self._client.close()
+
+ async def __aenter__(self) -> "StoragePoolManagement":
+ await self._client.__aenter__()
+ return self
+
+ async def __aexit__(self, *exc_details) -> None:
+ await self._client.__aexit__(*exc_details)
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/__init__.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/__init__.py
new file mode 100644
index 00000000000..1620075f15e
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/__init__.py
@@ -0,0 +1,19 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from ._operations import Operations
+from ._disk_pools_operations import DiskPoolsOperations
+from ._disk_pool_zones_operations import DiskPoolZonesOperations
+from ._iscsi_targets_operations import IscsiTargetsOperations
+
+__all__ = [
+ 'Operations',
+ 'DiskPoolsOperations',
+ 'DiskPoolZonesOperations',
+ 'IscsiTargetsOperations',
+]
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_disk_pool_zones_operations.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_disk_pool_zones_operations.py
new file mode 100644
index 00000000000..971aede2b68
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_disk_pool_zones_operations.py
@@ -0,0 +1,113 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar
+import warnings
+
+from azure.core.async_paging import AsyncItemPaged, AsyncList
+from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
+from azure.core.pipeline import PipelineResponse
+from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest
+from azure.mgmt.core.exceptions import ARMErrorFormat
+
+from ... import models
+
+T = TypeVar('T')
+ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
+
+class DiskPoolZonesOperations:
+ """DiskPoolZonesOperations async operations.
+
+ You should not instantiate this class directly. Instead, you should create a Client instance that
+ instantiates it for you and attaches it as an attribute.
+
+ :ivar models: Alias to model classes used in this operation group.
+ :type models: ~storage_pool_management.models
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer) -> None:
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self._config = config
+
+ def list(
+ self,
+ location: str,
+ **kwargs
+ ) -> AsyncIterable["models.DiskPoolZoneListResult"]:
+ """Lists available Disk Pool Skus in an Azure location.
+
+ :param location: The location of the resource.
+ :type location: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either DiskPoolZoneListResult or the result of cls(response)
+ :rtype: ~azure.core.async_paging.AsyncItemPaged[~storage_pool_management.models.DiskPoolZoneListResult]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPoolZoneListResult"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'location': self._serialize.url("location", location, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ async def extract_data(pipeline_response):
+ deserialized = self._deserialize('DiskPoolZoneListResult', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return deserialized.next_link or None, AsyncList(list_of_elem)
+
+ async def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return AsyncItemPaged(
+ get_next, extract_data
+ )
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.StoragePool/locations/{location}/diskPoolZones'} # type: ignore
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_disk_pools_operations.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_disk_pools_operations.py
new file mode 100644
index 00000000000..31704317e0b
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_disk_pools_operations.py
@@ -0,0 +1,900 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union
+import warnings
+
+from azure.core.async_paging import AsyncItemPaged, AsyncList
+from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
+from azure.core.pipeline import PipelineResponse
+from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest
+from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod
+from azure.mgmt.core.exceptions import ARMErrorFormat
+from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling
+
+from ... import models
+
+T = TypeVar('T')
+ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
+
+class DiskPoolsOperations:
+ """DiskPoolsOperations async operations.
+
+ You should not instantiate this class directly. Instead, you should create a Client instance that
+ instantiates it for you and attaches it as an attribute.
+
+ :ivar models: Alias to model classes used in this operation group.
+ :type models: ~storage_pool_management.models
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer) -> None:
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self._config = config
+
+ def list_by_subscription(
+ self,
+ **kwargs
+ ) -> AsyncIterable["models.DiskPoolListResult"]:
+ """Gets a list of Disk Pools in a subscription.
+
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either DiskPoolListResult or the result of cls(response)
+ :rtype: ~azure.core.async_paging.AsyncItemPaged[~storage_pool_management.models.DiskPoolListResult]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPoolListResult"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list_by_subscription.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ async def extract_data(pipeline_response):
+ deserialized = self._deserialize('DiskPoolListResult', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return deserialized.next_link or None, AsyncList(list_of_elem)
+
+ async def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return AsyncItemPaged(
+ get_next, extract_data
+ )
+ list_by_subscription.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.StoragePool/diskPools'} # type: ignore
+
+ def list_by_resource_group(
+ self,
+ resource_group_name: str,
+ **kwargs
+ ) -> AsyncIterable["models.DiskPoolListResult"]:
+ """Gets a list of DiskPools in a resource group.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either DiskPoolListResult or the result of cls(response)
+ :rtype: ~azure.core.async_paging.AsyncItemPaged[~storage_pool_management.models.DiskPoolListResult]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPoolListResult"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list_by_resource_group.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ async def extract_data(pipeline_response):
+ deserialized = self._deserialize('DiskPoolListResult', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return deserialized.next_link or None, AsyncList(list_of_elem)
+
+ async def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return AsyncItemPaged(
+ get_next, extract_data
+ )
+ list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools'} # type: ignore
+
+ async def _create_or_update_initial(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ disk_pool_create_payload: "models.DiskPoolCreate",
+ **kwargs
+ ) -> "models.DiskPool":
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPool"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ content_type = kwargs.pop("content_type", "application/json")
+ accept = "application/json"
+
+ # Construct URL
+ url = self._create_or_update_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ body_content_kwargs = {} # type: Dict[str, Any]
+ body_content = self._serialize.body(disk_pool_create_payload, 'DiskPoolCreate')
+ body_content_kwargs['content'] = body_content
+ request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 201]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if response.status_code == 200:
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if response.status_code == 201:
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ async def begin_create_or_update(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ disk_pool_create_payload: "models.DiskPoolCreate",
+ **kwargs
+ ) -> AsyncLROPoller["models.DiskPool"]:
+ """Create or Update Disk pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param disk_pool_create_payload: Request payload for Disk Pool create operation.
+ :type disk_pool_create_payload: ~storage_pool_management.models.DiskPoolCreate
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of AsyncLROPoller that returns either DiskPool or the result of cls(response)
+ :rtype: ~azure.core.polling.AsyncLROPoller[~storage_pool_management.models.DiskPool]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPool"]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = await self._create_or_update_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ disk_pool_create_payload=disk_pool_create_payload,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+ return deserialized
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+
+ if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = AsyncNoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return AsyncLROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ async def _update_initial(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ disk_pool_update_payload: "models.DiskPoolUpdate",
+ **kwargs
+ ) -> Optional["models.DiskPool"]:
+ cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.DiskPool"]]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ content_type = kwargs.pop("content_type", "application/json")
+ accept = "application/json"
+
+ # Construct URL
+ url = self._update_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ body_content_kwargs = {} # type: Dict[str, Any]
+ body_content = self._serialize.body(disk_pool_update_payload, 'DiskPoolUpdate')
+ body_content_kwargs['content'] = body_content
+ request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs)
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ async def begin_update(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ disk_pool_update_payload: "models.DiskPoolUpdate",
+ **kwargs
+ ) -> AsyncLROPoller["models.DiskPool"]:
+ """Update a Disk pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param disk_pool_update_payload: Request payload for Disk Pool update operation.
+ :type disk_pool_update_payload: ~storage_pool_management.models.DiskPoolUpdate
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of AsyncLROPoller that returns either DiskPool or the result of cls(response)
+ :rtype: ~azure.core.polling.AsyncLROPoller[~storage_pool_management.models.DiskPool]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPool"]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = await self._update_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ disk_pool_update_payload=disk_pool_update_payload,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+ return deserialized
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+
+ if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = AsyncNoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return AsyncLROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ async def _delete_initial(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ **kwargs
+ ) -> None:
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self._delete_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.delete(url, query_parameters, header_parameters)
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202, 204]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ async def begin_delete(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ **kwargs
+ ) -> AsyncLROPoller[None]:
+ """Delete a Disk pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+ :rtype: ~azure.core.polling.AsyncLROPoller[None]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = await self._delete_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+
+ if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = AsyncNoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return AsyncLROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ async def get(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ **kwargs
+ ) -> "models.DiskPool":
+ """Get a Disk pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: DiskPool, or the result of cls(response)
+ :rtype: ~storage_pool_management.models.DiskPool
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPool"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self.get.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ def list_outbound_network_dependencies_endpoints(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ **kwargs
+ ) -> AsyncIterable["models.OutboundEnvironmentEndpointList"]:
+ """Gets the network endpoints of all outbound dependencies of a Disk Pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either OutboundEnvironmentEndpointList or the result of cls(response)
+ :rtype: ~azure.core.async_paging.AsyncItemPaged[~storage_pool_management.models.OutboundEnvironmentEndpointList]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.OutboundEnvironmentEndpointList"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list_outbound_network_dependencies_endpoints.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ async def extract_data(pipeline_response):
+ deserialized = self._deserialize('OutboundEnvironmentEndpointList', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return deserialized.next_link or None, AsyncList(list_of_elem)
+
+ async def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return AsyncItemPaged(
+ get_next, extract_data
+ )
+ list_outbound_network_dependencies_endpoints.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/outboundNetworkDependenciesEndpoints'} # type: ignore
+
+ async def _start_initial(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ **kwargs
+ ) -> None:
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self._start_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.post(url, query_parameters, header_parameters)
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ _start_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/start'} # type: ignore
+
+ async def begin_start(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ **kwargs
+ ) -> AsyncLROPoller[None]:
+ """The operation to start a Disk Pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+ :rtype: ~azure.core.polling.AsyncLROPoller[None]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = await self._start_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+
+ if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = AsyncNoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return AsyncLROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_start.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/start'} # type: ignore
+
+ async def _deallocate_initial(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ **kwargs
+ ) -> None:
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self._deallocate_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.post(url, query_parameters, header_parameters)
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ _deallocate_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/deallocate'} # type: ignore
+
+ async def begin_deallocate(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ **kwargs
+ ) -> AsyncLROPoller[None]:
+ """Shuts down the Disk Pool and releases the compute resources. You are not billed for the compute
+ resources that this Disk Pool uses.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+ :rtype: ~azure.core.polling.AsyncLROPoller[None]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = await self._deallocate_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+
+ if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = AsyncNoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return AsyncLROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_deallocate.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/deallocate'} # type: ignore
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_iscsi_targets_operations.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_iscsi_targets_operations.py
new file mode 100644
index 00000000000..13d1e5d351d
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_iscsi_targets_operations.py
@@ -0,0 +1,568 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union
+import warnings
+
+from azure.core.async_paging import AsyncItemPaged, AsyncList
+from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
+from azure.core.pipeline import PipelineResponse
+from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest
+from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod
+from azure.mgmt.core.exceptions import ARMErrorFormat
+from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling
+
+from ... import models
+
+T = TypeVar('T')
+ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
+
+class IscsiTargetsOperations:
+ """IscsiTargetsOperations async operations.
+
+ You should not instantiate this class directly. Instead, you should create a Client instance that
+ instantiates it for you and attaches it as an attribute.
+
+ :ivar models: Alias to model classes used in this operation group.
+ :type models: ~storage_pool_management.models
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer) -> None:
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self._config = config
+
+ def list_by_disk_pool(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ **kwargs
+ ) -> AsyncIterable["models.IscsiTargetList"]:
+ """Get iSCSI Targets in a Disk pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either IscsiTargetList or the result of cls(response)
+ :rtype: ~azure.core.async_paging.AsyncItemPaged[~storage_pool_management.models.IscsiTargetList]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.IscsiTargetList"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list_by_disk_pool.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ async def extract_data(pipeline_response):
+ deserialized = self._deserialize('IscsiTargetList', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return deserialized.next_link or None, AsyncList(list_of_elem)
+
+ async def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return AsyncItemPaged(
+ get_next, extract_data
+ )
+ list_by_disk_pool.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets'} # type: ignore
+
+ async def _create_or_update_initial(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ iscsi_target_name: str,
+ iscsi_target_create_payload: "models.IscsiTargetCreate",
+ **kwargs
+ ) -> "models.IscsiTarget":
+ cls = kwargs.pop('cls', None) # type: ClsType["models.IscsiTarget"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ content_type = kwargs.pop("content_type", "application/json")
+ accept = "application/json"
+
+ # Construct URL
+ url = self._create_or_update_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ body_content_kwargs = {} # type: Dict[str, Any]
+ body_content = self._serialize.body(iscsi_target_create_payload, 'IscsiTargetCreate')
+ body_content_kwargs['content'] = body_content
+ request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 201]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if response.status_code == 200:
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if response.status_code == 201:
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ async def begin_create_or_update(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ iscsi_target_name: str,
+ iscsi_target_create_payload: "models.IscsiTargetCreate",
+ **kwargs
+ ) -> AsyncLROPoller["models.IscsiTarget"]:
+ """Create or Update an iSCSI Target.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param iscsi_target_name: The name of the iSCSI Target.
+ :type iscsi_target_name: str
+ :param iscsi_target_create_payload: Request payload for iSCSI Target create operation.
+ :type iscsi_target_create_payload: ~storage_pool_management.models.IscsiTargetCreate
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of AsyncLROPoller that returns either IscsiTarget or the result of cls(response)
+ :rtype: ~azure.core.polling.AsyncLROPoller[~storage_pool_management.models.IscsiTarget]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType["models.IscsiTarget"]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = await self._create_or_update_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ iscsi_target_name=iscsi_target_name,
+ iscsi_target_create_payload=iscsi_target_create_payload,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+ return deserialized
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+
+ if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = AsyncNoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return AsyncLROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ async def _update_initial(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ iscsi_target_name: str,
+ iscsi_target_update_payload: "models.IscsiTargetUpdate",
+ **kwargs
+ ) -> Optional["models.IscsiTarget"]:
+ cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.IscsiTarget"]]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ content_type = kwargs.pop("content_type", "application/json")
+ accept = "application/json"
+
+ # Construct URL
+ url = self._update_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ body_content_kwargs = {} # type: Dict[str, Any]
+ body_content = self._serialize.body(iscsi_target_update_payload, 'IscsiTargetUpdate')
+ body_content_kwargs['content'] = body_content
+ request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs)
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ async def begin_update(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ iscsi_target_name: str,
+ iscsi_target_update_payload: "models.IscsiTargetUpdate",
+ **kwargs
+ ) -> AsyncLROPoller["models.IscsiTarget"]:
+ """Update an iSCSI Target.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param iscsi_target_name: The name of the iSCSI Target.
+ :type iscsi_target_name: str
+ :param iscsi_target_update_payload: Request payload for iSCSI Target update operation.
+ :type iscsi_target_update_payload: ~storage_pool_management.models.IscsiTargetUpdate
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of AsyncLROPoller that returns either IscsiTarget or the result of cls(response)
+ :rtype: ~azure.core.polling.AsyncLROPoller[~storage_pool_management.models.IscsiTarget]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType["models.IscsiTarget"]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = await self._update_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ iscsi_target_name=iscsi_target_name,
+ iscsi_target_update_payload=iscsi_target_update_payload,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+ return deserialized
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+
+ if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = AsyncNoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return AsyncLROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ async def _delete_initial(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ iscsi_target_name: str,
+ **kwargs
+ ) -> None:
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self._delete_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.delete(url, query_parameters, header_parameters)
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202, 204]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ async def begin_delete(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ iscsi_target_name: str,
+ **kwargs
+ ) -> AsyncLROPoller[None]:
+ """Delete an iSCSI Target.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param iscsi_target_name: The name of the iSCSI Target.
+ :type iscsi_target_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of AsyncLROPoller that returns either None or the result of cls(response)
+ :rtype: ~azure.core.polling.AsyncLROPoller[None]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = await self._delete_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ iscsi_target_name=iscsi_target_name,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+
+ if polling is True: polling_method = AsyncARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = AsyncNoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return AsyncLROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ async def get(
+ self,
+ resource_group_name: str,
+ disk_pool_name: str,
+ iscsi_target_name: str,
+ **kwargs
+ ) -> "models.IscsiTarget":
+ """Get an iSCSI Target.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param iscsi_target_name: The name of the iSCSI Target.
+ :type iscsi_target_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: IscsiTarget, or the result of cls(response)
+ :rtype: ~storage_pool_management.models.IscsiTarget
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.IscsiTarget"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self.get.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_operations.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_operations.py
new file mode 100644
index 00000000000..bf3351fb5c4
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/aio/operations/_operations.py
@@ -0,0 +1,105 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar
+import warnings
+
+from azure.core.async_paging import AsyncItemPaged, AsyncList
+from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
+from azure.core.pipeline import PipelineResponse
+from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest
+from azure.mgmt.core.exceptions import ARMErrorFormat
+
+from ... import models
+
+T = TypeVar('T')
+ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]]
+
+class Operations:
+ """Operations async operations.
+
+ You should not instantiate this class directly. Instead, you should create a Client instance that
+ instantiates it for you and attaches it as an attribute.
+
+ :ivar models: Alias to model classes used in this operation group.
+ :type models: ~storage_pool_management.models
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer) -> None:
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self._config = config
+
+ def list(
+ self,
+ **kwargs
+ ) -> AsyncIterable["models.StoragePoolOperationListResult"]:
+ """Gets a list of StoragePool operations.
+
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either StoragePoolOperationListResult or the result of cls(response)
+ :rtype: ~azure.core.async_paging.AsyncItemPaged[~storage_pool_management.models.StoragePoolOperationListResult]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.StoragePoolOperationListResult"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list.metadata['url'] # type: ignore
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ async def extract_data(pipeline_response):
+ deserialized = self._deserialize('StoragePoolOperationListResult', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return None, AsyncList(list_of_elem)
+
+ async def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return AsyncItemPaged(
+ get_next, extract_data
+ )
+ list.metadata = {'url': '/providers/Microsoft.StoragePool/operations'} # type: ignore
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/__init__.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/__init__.py
new file mode 100644
index 00000000000..93abf141c3e
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/__init__.py
@@ -0,0 +1,110 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+try:
+ from ._models_py3 import Acl
+ from ._models_py3 import Disk
+ from ._models_py3 import DiskPool
+ from ._models_py3 import DiskPoolCreate
+ from ._models_py3 import DiskPoolListResult
+ from ._models_py3 import DiskPoolUpdate
+ from ._models_py3 import DiskPoolZoneInfo
+ from ._models_py3 import DiskPoolZoneListResult
+ from ._models_py3 import EndpointDependency
+ from ._models_py3 import EndpointDetail
+ from ._models_py3 import Error
+ from ._models_py3 import ErrorAdditionalInfo
+ from ._models_py3 import ErrorResponse
+ from ._models_py3 import IscsiLun
+ from ._models_py3 import IscsiTarget
+ from ._models_py3 import IscsiTargetCreate
+ from ._models_py3 import IscsiTargetList
+ from ._models_py3 import IscsiTargetUpdate
+ from ._models_py3 import OutboundEnvironmentEndpoint
+ from ._models_py3 import OutboundEnvironmentEndpointList
+ from ._models_py3 import ProxyResource
+ from ._models_py3 import Resource
+ from ._models_py3 import Sku
+ from ._models_py3 import StoragePoolOperationDisplay
+ from ._models_py3 import StoragePoolOperationListResult
+ from ._models_py3 import StoragePoolRpOperation
+ from ._models_py3 import SystemMetadata
+ from ._models_py3 import TrackedResource
+except (SyntaxError, ImportError):
+ from ._models import Acl # type: ignore
+ from ._models import Disk # type: ignore
+ from ._models import DiskPool # type: ignore
+ from ._models import DiskPoolCreate # type: ignore
+ from ._models import DiskPoolListResult # type: ignore
+ from ._models import DiskPoolUpdate # type: ignore
+ from ._models import DiskPoolZoneInfo # type: ignore
+ from ._models import DiskPoolZoneListResult # type: ignore
+ from ._models import EndpointDependency # type: ignore
+ from ._models import EndpointDetail # type: ignore
+ from ._models import Error # type: ignore
+ from ._models import ErrorAdditionalInfo # type: ignore
+ from ._models import ErrorResponse # type: ignore
+ from ._models import IscsiLun # type: ignore
+ from ._models import IscsiTarget # type: ignore
+ from ._models import IscsiTargetCreate # type: ignore
+ from ._models import IscsiTargetList # type: ignore
+ from ._models import IscsiTargetUpdate # type: ignore
+ from ._models import OutboundEnvironmentEndpoint # type: ignore
+ from ._models import OutboundEnvironmentEndpointList # type: ignore
+ from ._models import ProxyResource # type: ignore
+ from ._models import Resource # type: ignore
+ from ._models import Sku # type: ignore
+ from ._models import StoragePoolOperationDisplay # type: ignore
+ from ._models import StoragePoolOperationListResult # type: ignore
+ from ._models import StoragePoolRpOperation # type: ignore
+ from ._models import SystemMetadata # type: ignore
+ from ._models import TrackedResource # type: ignore
+
+from ._storage_pool_management_enums import (
+ CreatedByType,
+ DiskPoolTier,
+ IscsiTargetAclMode,
+ OperationalStatus,
+ ProvisioningStates,
+)
+
+__all__ = [
+ 'Acl',
+ 'Disk',
+ 'DiskPool',
+ 'DiskPoolCreate',
+ 'DiskPoolListResult',
+ 'DiskPoolUpdate',
+ 'DiskPoolZoneInfo',
+ 'DiskPoolZoneListResult',
+ 'EndpointDependency',
+ 'EndpointDetail',
+ 'Error',
+ 'ErrorAdditionalInfo',
+ 'ErrorResponse',
+ 'IscsiLun',
+ 'IscsiTarget',
+ 'IscsiTargetCreate',
+ 'IscsiTargetList',
+ 'IscsiTargetUpdate',
+ 'OutboundEnvironmentEndpoint',
+ 'OutboundEnvironmentEndpointList',
+ 'ProxyResource',
+ 'Resource',
+ 'Sku',
+ 'StoragePoolOperationDisplay',
+ 'StoragePoolOperationListResult',
+ 'StoragePoolRpOperation',
+ 'SystemMetadata',
+ 'TrackedResource',
+ 'CreatedByType',
+ 'DiskPoolTier',
+ 'IscsiTargetAclMode',
+ 'OperationalStatus',
+ 'ProvisioningStates',
+]
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/_models.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/_models.py
new file mode 100644
index 00000000000..85a85678a8b
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/_models.py
@@ -0,0 +1,1079 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from azure.core.exceptions import HttpResponseError
+import msrest.serialization
+
+
+class Acl(msrest.serialization.Model):
+ """Access Control List (ACL) for an iSCSI Target; defines LUN masking policy.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param initiator_iqn: Required. iSCSI initiator IQN (iSCSI Qualified Name); example:
+ "iqn.2005-03.org.iscsi:client".
+ :type initiator_iqn: str
+ :param mapped_luns: Required. List of LUN names mapped to the ACL.
+ :type mapped_luns: list[str]
+ """
+
+ _validation = {
+ 'initiator_iqn': {'required': True},
+ 'mapped_luns': {'required': True},
+ }
+
+ _attribute_map = {
+ 'initiator_iqn': {'key': 'initiatorIqn', 'type': 'str'},
+ 'mapped_luns': {'key': 'mappedLuns', 'type': '[str]'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(Acl, self).__init__(**kwargs)
+ self.initiator_iqn = kwargs['initiator_iqn']
+ self.mapped_luns = kwargs['mapped_luns']
+
+
+class Disk(msrest.serialization.Model):
+ """Azure Managed Disk to attach to the Disk Pool.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param id: Required. Unique Azure Resource ID of the Managed Disk.
+ :type id: str
+ """
+
+ _validation = {
+ 'id': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(Disk, self).__init__(**kwargs)
+ self.id = kwargs['id']
+
+
+class Resource(msrest.serialization.Model):
+ """ARM resource model definition.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(Resource, self).__init__(**kwargs)
+ self.id = None
+ self.name = None
+ self.type = None
+
+
+class TrackedResource(Resource):
+ """The resource model definition for a ARM tracked top level resource.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :param tags: A set of tags. Resource tags.
+ :type tags: dict[str, str]
+ :param location: Required. The geo-location where the resource lives.
+ :type location: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'location': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'tags': {'key': 'tags', 'type': '{str}'},
+ 'location': {'key': 'location', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(TrackedResource, self).__init__(**kwargs)
+ self.tags = kwargs.get('tags', None)
+ self.location = kwargs['location']
+
+
+class DiskPool(TrackedResource):
+ """Response for Disk Pool request.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :param tags: A set of tags. Resource tags.
+ :type tags: dict[str, str]
+ :param location: Required. The geo-location where the resource lives.
+ :type location: str
+ :ivar system_data: Resource metadata required by ARM RPC.
+ :vartype system_data: ~storage_pool_management.models.SystemMetadata
+ :ivar provisioning_state: Required. State of the operation on the resource. Possible values
+ include: "Invalid", "Succeeded", "Failed", "Canceled", "Pending", "Creating", "Updating",
+ "Deleting".
+ :vartype provisioning_state: str or ~storage_pool_management.models.ProvisioningStates
+ :param availability_zones: Required. Logical zone for Disk Pool resource; example: ["1"].
+ :type availability_zones: list[str]
+ :param status: Required. Operational status of the Disk Pool. Possible values include:
+ "Invalid", "Unknown", "Healthy", "Unhealthy", "Updating", "Running", "Stopped", "Stopped
+ (deallocated)".
+ :type status: str or ~storage_pool_management.models.OperationalStatus
+ :param disks: List of Azure Managed Disks to attach to a Disk Pool.
+ :type disks: list[~storage_pool_management.models.Disk]
+ :param subnet_id: Required. Azure Resource ID of a Subnet for the Disk Pool.
+ :type subnet_id: str
+ :param additional_capabilities: List of additional capabilities for Disk Pool.
+ :type additional_capabilities: list[str]
+ :param name_sku_name: Sku name.
+ :type name_sku_name: str
+ :param tier: Sku tier.
+ :type tier: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'location': {'required': True},
+ 'system_data': {'readonly': True},
+ 'provisioning_state': {'required': True, 'readonly': True},
+ 'availability_zones': {'required': True},
+ 'status': {'required': True},
+ 'subnet_id': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'tags': {'key': 'tags', 'type': '{str}'},
+ 'location': {'key': 'location', 'type': 'str'},
+ 'system_data': {'key': 'systemData', 'type': 'SystemMetadata'},
+ 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
+ 'availability_zones': {'key': 'properties.availabilityZones', 'type': '[str]'},
+ 'status': {'key': 'properties.status', 'type': 'str'},
+ 'disks': {'key': 'properties.disks', 'type': '[Disk]'},
+ 'subnet_id': {'key': 'properties.subnetId', 'type': 'str'},
+ 'additional_capabilities': {'key': 'properties.additionalCapabilities', 'type': '[str]'},
+ 'name_sku_name': {'key': 'sku.name', 'type': 'str'},
+ 'tier': {'key': 'sku.tier', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(DiskPool, self).__init__(**kwargs)
+ self.system_data = None
+ self.provisioning_state = None
+ self.availability_zones = kwargs['availability_zones']
+ self.status = kwargs['status']
+ self.disks = kwargs.get('disks', None)
+ self.subnet_id = kwargs['subnet_id']
+ self.additional_capabilities = kwargs.get('additional_capabilities', None)
+ self.name_sku_name = kwargs.get('name_sku_name', None)
+ self.tier = kwargs.get('tier', None)
+
+
+class DiskPoolCreate(msrest.serialization.Model):
+ """Request payload for create or update Disk Pool request.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param sku: Required. Determines the SKU of the Disk Pool.
+ :type sku: ~storage_pool_management.models.Sku
+ :param tags: A set of tags. Resource tags.
+ :type tags: dict[str, str]
+ :param location: Required. The geo-location where the resource lives.
+ :type location: str
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :param availability_zones: Logical zone for Disk Pool resource; example: ["1"].
+ :type availability_zones: list[str]
+ :param disks: List of Azure Managed Disks to attach to a Disk Pool.
+ :type disks: list[~storage_pool_management.models.Disk]
+ :param subnet_id: Required. Azure Resource ID of a Subnet for the Disk Pool.
+ :type subnet_id: str
+ :param additional_capabilities: List of additional capabilities for a Disk Pool.
+ :type additional_capabilities: list[str]
+ """
+
+ _validation = {
+ 'sku': {'required': True},
+ 'location': {'required': True},
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'subnet_id': {'required': True},
+ }
+
+ _attribute_map = {
+ 'sku': {'key': 'sku', 'type': 'Sku'},
+ 'tags': {'key': 'tags', 'type': '{str}'},
+ 'location': {'key': 'location', 'type': 'str'},
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'availability_zones': {'key': 'properties.availabilityZones', 'type': '[str]'},
+ 'disks': {'key': 'properties.disks', 'type': '[Disk]'},
+ 'subnet_id': {'key': 'properties.subnetId', 'type': 'str'},
+ 'additional_capabilities': {'key': 'properties.additionalCapabilities', 'type': '[str]'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(DiskPoolCreate, self).__init__(**kwargs)
+ self.sku = kwargs['sku']
+ self.tags = kwargs.get('tags', None)
+ self.location = kwargs['location']
+ self.id = None
+ self.name = None
+ self.type = None
+ self.availability_zones = kwargs.get('availability_zones', None)
+ self.disks = kwargs.get('disks', None)
+ self.subnet_id = kwargs['subnet_id']
+ self.additional_capabilities = kwargs.get('additional_capabilities', None)
+
+
+class DiskPoolListResult(msrest.serialization.Model):
+ """List of Disk Pools.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param value: Required. An array of Disk pool objects.
+ :type value: list[~storage_pool_management.models.DiskPool]
+ :ivar next_link: URI to fetch the next section of the paginated response.
+ :vartype next_link: str
+ """
+
+ _validation = {
+ 'value': {'required': True},
+ 'next_link': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[DiskPool]'},
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(DiskPoolListResult, self).__init__(**kwargs)
+ self.value = kwargs['value']
+ self.next_link = None
+
+
+class DiskPoolUpdate(msrest.serialization.Model):
+ """Request payload for Update Disk Pool request.
+
+ :param tags: A set of tags. Resource tags.
+ :type tags: dict[str, str]
+ :param disks: List of Azure Managed Disks to attach to a Disk Pool.
+ :type disks: list[~storage_pool_management.models.Disk]
+ """
+
+ _attribute_map = {
+ 'tags': {'key': 'tags', 'type': '{str}'},
+ 'disks': {'key': 'properties.disks', 'type': '[Disk]'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(DiskPoolUpdate, self).__init__(**kwargs)
+ self.tags = kwargs.get('tags', None)
+ self.disks = kwargs.get('disks', None)
+
+
+class DiskPoolZoneInfo(msrest.serialization.Model):
+ """Disk Pool Sku Details.
+
+ :param availability_zones: Logical zone for Disk Pool resource; example: ["1"].
+ :type availability_zones: list[str]
+ :param additional_capabilities: List of additional capabilities for Disk Pool.
+ :type additional_capabilities: list[str]
+ :param sku: Determines the SKU of VM deployed for Disk Pool.
+ :type sku: ~storage_pool_management.models.Sku
+ """
+
+ _attribute_map = {
+ 'availability_zones': {'key': 'availabilityZones', 'type': '[str]'},
+ 'additional_capabilities': {'key': 'additionalCapabilities', 'type': '[str]'},
+ 'sku': {'key': 'sku', 'type': 'Sku'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(DiskPoolZoneInfo, self).__init__(**kwargs)
+ self.availability_zones = kwargs.get('availability_zones', None)
+ self.additional_capabilities = kwargs.get('additional_capabilities', None)
+ self.sku = kwargs.get('sku', None)
+
+
+class DiskPoolZoneListResult(msrest.serialization.Model):
+ """List Disk Pool skus operation response.
+
+ :param value: The list of Disk Pool Skus.
+ :type value: list[~storage_pool_management.models.DiskPoolZoneInfo]
+ :param next_link: URI to fetch the next section of the paginated response.
+ :type next_link: str
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[DiskPoolZoneInfo]'},
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(DiskPoolZoneListResult, self).__init__(**kwargs)
+ self.value = kwargs.get('value', None)
+ self.next_link = kwargs.get('next_link', None)
+
+
+class EndpointDependency(msrest.serialization.Model):
+ """A domain name that a service is reached at, including details of the current connection status.
+
+ :param domain_name: The domain name of the dependency.
+ :type domain_name: str
+ :param endpoint_details: The IP Addresses and Ports used when connecting to DomainName.
+ :type endpoint_details: list[~storage_pool_management.models.EndpointDetail]
+ """
+
+ _attribute_map = {
+ 'domain_name': {'key': 'domainName', 'type': 'str'},
+ 'endpoint_details': {'key': 'endpointDetails', 'type': '[EndpointDetail]'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(EndpointDependency, self).__init__(**kwargs)
+ self.domain_name = kwargs.get('domain_name', None)
+ self.endpoint_details = kwargs.get('endpoint_details', None)
+
+
+class EndpointDetail(msrest.serialization.Model):
+ """Current TCP connectivity information from the App Service Environment to a single endpoint.
+
+ :param ip_address: An IP Address that Domain Name currently resolves to.
+ :type ip_address: str
+ :param port: The port an endpoint is connected to.
+ :type port: int
+ :param latency: The time in milliseconds it takes for a TCP connection to be created from the
+ App Service Environment to this IpAddress at this Port.
+ :type latency: float
+ :param is_accessible: Whether it is possible to create a TCP connection from the App Service
+ Environment to this IpAddress at this Port.
+ :type is_accessible: bool
+ """
+
+ _attribute_map = {
+ 'ip_address': {'key': 'ipAddress', 'type': 'str'},
+ 'port': {'key': 'port', 'type': 'int'},
+ 'latency': {'key': 'latency', 'type': 'float'},
+ 'is_accessible': {'key': 'isAccessible', 'type': 'bool'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(EndpointDetail, self).__init__(**kwargs)
+ self.ip_address = kwargs.get('ip_address', None)
+ self.port = kwargs.get('port', None)
+ self.latency = kwargs.get('latency', None)
+ self.is_accessible = kwargs.get('is_accessible', None)
+
+
+class Error(msrest.serialization.Model):
+ """The resource management error response.
+
+ :param error: RP error response.
+ :type error: ~storage_pool_management.models.ErrorResponse
+ """
+
+ _attribute_map = {
+ 'error': {'key': 'error', 'type': 'ErrorResponse'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(Error, self).__init__(**kwargs)
+ self.error = kwargs.get('error', None)
+
+
+class ErrorAdditionalInfo(msrest.serialization.Model):
+ """The resource management error additional info.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar type: The additional info type.
+ :vartype type: str
+ :ivar info: The additional info.
+ :vartype info: object
+ """
+
+ _validation = {
+ 'type': {'readonly': True},
+ 'info': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'type': {'key': 'type', 'type': 'str'},
+ 'info': {'key': 'info', 'type': 'object'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(ErrorAdditionalInfo, self).__init__(**kwargs)
+ self.type = None
+ self.info = None
+
+
+class ErrorResponse(msrest.serialization.Model):
+ """The resource management error response.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar code: The error code.
+ :vartype code: str
+ :ivar message: The error message.
+ :vartype message: str
+ :ivar target: The error target.
+ :vartype target: str
+ :ivar details: The error details.
+ :vartype details: list[~storage_pool_management.models.ErrorResponse]
+ :ivar additional_info: The error additional info.
+ :vartype additional_info: list[~storage_pool_management.models.ErrorAdditionalInfo]
+ """
+
+ _validation = {
+ 'code': {'readonly': True},
+ 'message': {'readonly': True},
+ 'target': {'readonly': True},
+ 'details': {'readonly': True},
+ 'additional_info': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'code': {'key': 'code', 'type': 'str'},
+ 'message': {'key': 'message', 'type': 'str'},
+ 'target': {'key': 'target', 'type': 'str'},
+ 'details': {'key': 'details', 'type': '[ErrorResponse]'},
+ 'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(ErrorResponse, self).__init__(**kwargs)
+ self.code = None
+ self.message = None
+ self.target = None
+ self.details = None
+ self.additional_info = None
+
+
+class IscsiLun(msrest.serialization.Model):
+ """LUN to expose the Azure Managed Disk.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param name: Required. User defined name for iSCSI LUN; example: "lun0".
+ :type name: str
+ :param managed_disk_azure_resource_id: Required. Azure Resource ID of the Managed Disk.
+ :type managed_disk_azure_resource_id: str
+ """
+
+ _validation = {
+ 'name': {'required': True},
+ 'managed_disk_azure_resource_id': {'required': True},
+ }
+
+ _attribute_map = {
+ 'name': {'key': 'name', 'type': 'str'},
+ 'managed_disk_azure_resource_id': {'key': 'managedDiskAzureResourceId', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(IscsiLun, self).__init__(**kwargs)
+ self.name = kwargs['name']
+ self.managed_disk_azure_resource_id = kwargs['managed_disk_azure_resource_id']
+
+
+class IscsiTarget(Resource):
+ """Response for iSCSI Target requests.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :ivar system_data: Resource metadata required by ARM RPC.
+ :vartype system_data: ~storage_pool_management.models.SystemMetadata
+ :param acl_mode: Required. Mode for Target connectivity. Possible values include: "Dynamic",
+ "Static".
+ :type acl_mode: str or ~storage_pool_management.models.IscsiTargetAclMode
+ :param static_acls: Access Control List (ACL) for an iSCSI Target; defines LUN masking policy.
+ :type static_acls: list[~storage_pool_management.models.Acl]
+ :param luns: List of LUNs to be exposed through iSCSI Target.
+ :type luns: list[~storage_pool_management.models.IscsiLun]
+ :param target_iqn: Required. iSCSI Target IQN (iSCSI Qualified Name); example:
+ "iqn.2005-03.org.iscsi:server".
+ :type target_iqn: str
+ :ivar provisioning_state: Required. State of the operation on the resource. Possible values
+ include: "Invalid", "Succeeded", "Failed", "Canceled", "Pending", "Creating", "Updating",
+ "Deleting".
+ :vartype provisioning_state: str or ~storage_pool_management.models.ProvisioningStates
+ :param status: Required. Operational status of the iSCSI Target. Possible values include:
+ "Invalid", "Unknown", "Healthy", "Unhealthy", "Updating", "Running", "Stopped", "Stopped
+ (deallocated)".
+ :type status: str or ~storage_pool_management.models.OperationalStatus
+ :param endpoints: List of private IPv4 addresses to connect to the iSCSI Target.
+ :type endpoints: list[str]
+ :param port: The port used by iSCSI Target portal group.
+ :type port: int
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'system_data': {'readonly': True},
+ 'acl_mode': {'required': True},
+ 'target_iqn': {'required': True},
+ 'provisioning_state': {'required': True, 'readonly': True},
+ 'status': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'system_data': {'key': 'systemData', 'type': 'SystemMetadata'},
+ 'acl_mode': {'key': 'properties.aclMode', 'type': 'str'},
+ 'static_acls': {'key': 'properties.staticAcls', 'type': '[Acl]'},
+ 'luns': {'key': 'properties.luns', 'type': '[IscsiLun]'},
+ 'target_iqn': {'key': 'properties.targetIqn', 'type': 'str'},
+ 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
+ 'status': {'key': 'properties.status', 'type': 'str'},
+ 'endpoints': {'key': 'properties.endpoints', 'type': '[str]'},
+ 'port': {'key': 'properties.port', 'type': 'int'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(IscsiTarget, self).__init__(**kwargs)
+ self.system_data = None
+ self.acl_mode = kwargs['acl_mode']
+ self.static_acls = kwargs.get('static_acls', None)
+ self.luns = kwargs.get('luns', None)
+ self.target_iqn = kwargs['target_iqn']
+ self.provisioning_state = None
+ self.status = kwargs['status']
+ self.endpoints = kwargs.get('endpoints', None)
+ self.port = kwargs.get('port', None)
+
+
+class IscsiTargetCreate(Resource):
+ """Payload for iSCSI Target create or update requests.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :param acl_mode: Required. Mode for Target connectivity. Possible values include: "Dynamic",
+ "Static".
+ :type acl_mode: str or ~storage_pool_management.models.IscsiTargetAclMode
+ :param target_iqn: iSCSI Target IQN (iSCSI Qualified Name); example:
+ "iqn.2005-03.org.iscsi:server".
+ :type target_iqn: str
+ :param static_acls: Access Control List (ACL) for an iSCSI Target; defines LUN masking policy.
+ :type static_acls: list[~storage_pool_management.models.Acl]
+ :param luns: List of LUNs to be exposed through iSCSI Target.
+ :type luns: list[~storage_pool_management.models.IscsiLun]
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'acl_mode': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'acl_mode': {'key': 'properties.aclMode', 'type': 'str'},
+ 'target_iqn': {'key': 'properties.targetIqn', 'type': 'str'},
+ 'static_acls': {'key': 'properties.staticAcls', 'type': '[Acl]'},
+ 'luns': {'key': 'properties.luns', 'type': '[IscsiLun]'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(IscsiTargetCreate, self).__init__(**kwargs)
+ self.acl_mode = kwargs['acl_mode']
+ self.target_iqn = kwargs.get('target_iqn', None)
+ self.static_acls = kwargs.get('static_acls', None)
+ self.luns = kwargs.get('luns', None)
+
+
+class IscsiTargetList(msrest.serialization.Model):
+ """List of iSCSI Targets.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param value: Required. An array of iSCSI Targets in a Disk Pool.
+ :type value: list[~storage_pool_management.models.IscsiTarget]
+ :ivar next_link: URI to fetch the next section of the paginated response.
+ :vartype next_link: str
+ """
+
+ _validation = {
+ 'value': {'required': True},
+ 'next_link': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[IscsiTarget]'},
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(IscsiTargetList, self).__init__(**kwargs)
+ self.value = kwargs['value']
+ self.next_link = None
+
+
+class IscsiTargetUpdate(Resource):
+ """Payload for iSCSI Target update requests.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :param static_acls: Access Control List (ACL) for an iSCSI Target; defines LUN masking policy.
+ :type static_acls: list[~storage_pool_management.models.Acl]
+ :param luns: List of LUNs to be exposed through iSCSI Target.
+ :type luns: list[~storage_pool_management.models.IscsiLun]
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'static_acls': {'key': 'properties.staticAcls', 'type': '[Acl]'},
+ 'luns': {'key': 'properties.luns', 'type': '[IscsiLun]'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(IscsiTargetUpdate, self).__init__(**kwargs)
+ self.static_acls = kwargs.get('static_acls', None)
+ self.luns = kwargs.get('luns', None)
+
+
+class OutboundEnvironmentEndpoint(msrest.serialization.Model):
+ """Endpoints accessed for a common purpose that the App Service Environment requires outbound network access to.
+
+ :param category: The type of service accessed by the App Service Environment, e.g., Azure
+ Storage, Azure SQL Database, and Azure Active Directory.
+ :type category: str
+ :param endpoints: The endpoints that the App Service Environment reaches the service at.
+ :type endpoints: list[~storage_pool_management.models.EndpointDependency]
+ """
+
+ _attribute_map = {
+ 'category': {'key': 'category', 'type': 'str'},
+ 'endpoints': {'key': 'endpoints', 'type': '[EndpointDependency]'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(OutboundEnvironmentEndpoint, self).__init__(**kwargs)
+ self.category = kwargs.get('category', None)
+ self.endpoints = kwargs.get('endpoints', None)
+
+
+class OutboundEnvironmentEndpointList(msrest.serialization.Model):
+ """Collection of Outbound Environment Endpoints.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param value: Required. Collection of resources.
+ :type value: list[~storage_pool_management.models.OutboundEnvironmentEndpoint]
+ :ivar next_link: Link to next page of resources.
+ :vartype next_link: str
+ """
+
+ _validation = {
+ 'value': {'required': True},
+ 'next_link': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[OutboundEnvironmentEndpoint]'},
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(OutboundEnvironmentEndpointList, self).__init__(**kwargs)
+ self.value = kwargs['value']
+ self.next_link = None
+
+
+class ProxyResource(Resource):
+ """The resource model definition for a ARM proxy resource. It will have everything other than required location and tags.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(ProxyResource, self).__init__(**kwargs)
+
+
+class Sku(msrest.serialization.Model):
+ """Sku for ARM resource.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param name: Required. Sku name.
+ :type name: str
+ :param tier: Sku tier.
+ :type tier: str
+ """
+
+ _validation = {
+ 'name': {'required': True},
+ }
+
+ _attribute_map = {
+ 'name': {'key': 'name', 'type': 'str'},
+ 'tier': {'key': 'tier', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(Sku, self).__init__(**kwargs)
+ self.name = kwargs['name']
+ self.tier = kwargs.get('tier', None)
+
+
+class StoragePoolOperationDisplay(msrest.serialization.Model):
+ """Metadata about an operation.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param provider: Required. Localized friendly form of the resource provider name.
+ :type provider: str
+ :param resource: Required. Localized friendly form of the resource type related to this
+ action/operation.
+ :type resource: str
+ :param operation: Required. Localized friendly name for the operation, as it should be shown to
+ the user.
+ :type operation: str
+ :param description: Required. Localized friendly description for the operation, as it should be
+ shown to the user.
+ :type description: str
+ """
+
+ _validation = {
+ 'provider': {'required': True},
+ 'resource': {'required': True},
+ 'operation': {'required': True},
+ 'description': {'required': True},
+ }
+
+ _attribute_map = {
+ 'provider': {'key': 'provider', 'type': 'str'},
+ 'resource': {'key': 'resource', 'type': 'str'},
+ 'operation': {'key': 'operation', 'type': 'str'},
+ 'description': {'key': 'description', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(StoragePoolOperationDisplay, self).__init__(**kwargs)
+ self.provider = kwargs['provider']
+ self.resource = kwargs['resource']
+ self.operation = kwargs['operation']
+ self.description = kwargs['description']
+
+
+class StoragePoolOperationListResult(msrest.serialization.Model):
+ """List of operations supported by the RP.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param value: Required. An array of operations supported by the StoragePool RP.
+ :type value: list[~storage_pool_management.models.StoragePoolRpOperation]
+ :param next_link: URI to fetch the next section of the paginated response.
+ :type next_link: str
+ """
+
+ _validation = {
+ 'value': {'required': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[StoragePoolRpOperation]'},
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(StoragePoolOperationListResult, self).__init__(**kwargs)
+ self.value = kwargs['value']
+ self.next_link = kwargs.get('next_link', None)
+
+
+class StoragePoolRpOperation(msrest.serialization.Model):
+ """Description of a StoragePool RP Operation.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param name: Required. The name of the operation being performed on this particular object.
+ :type name: str
+ :param is_data_action: Required. Indicates whether the operation applies to data-plane.
+ :type is_data_action: bool
+ :param action_type: Indicates the action type.
+ :type action_type: str
+ :param display: Required. Additional metadata about RP operation.
+ :type display: ~storage_pool_management.models.StoragePoolOperationDisplay
+ :param origin: The intended executor of the operation; governs the display of the operation in
+ the RBAC UX and the audit logs UX.
+ :type origin: str
+ """
+
+ _validation = {
+ 'name': {'required': True},
+ 'is_data_action': {'required': True},
+ 'display': {'required': True},
+ }
+
+ _attribute_map = {
+ 'name': {'key': 'name', 'type': 'str'},
+ 'is_data_action': {'key': 'isDataAction', 'type': 'bool'},
+ 'action_type': {'key': 'actionType', 'type': 'str'},
+ 'display': {'key': 'display', 'type': 'StoragePoolOperationDisplay'},
+ 'origin': {'key': 'origin', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(StoragePoolRpOperation, self).__init__(**kwargs)
+ self.name = kwargs['name']
+ self.is_data_action = kwargs['is_data_action']
+ self.action_type = kwargs.get('action_type', None)
+ self.display = kwargs['display']
+ self.origin = kwargs.get('origin', None)
+
+
+class SystemMetadata(msrest.serialization.Model):
+ """Metadata pertaining to creation and last modification of the resource.
+
+ :param created_by: The identity that created the resource.
+ :type created_by: str
+ :param created_by_type: The type of identity that created the resource. Possible values
+ include: "User", "Application", "ManagedIdentity", "Key".
+ :type created_by_type: str or ~storage_pool_management.models.CreatedByType
+ :param created_at: The timestamp of resource creation (UTC).
+ :type created_at: ~datetime.datetime
+ :param last_modified_by: The identity that last modified the resource.
+ :type last_modified_by: str
+ :param last_modified_by_type: The type of identity that last modified the resource. Possible
+ values include: "User", "Application", "ManagedIdentity", "Key".
+ :type last_modified_by_type: str or ~storage_pool_management.models.CreatedByType
+ :param last_modified_at: The type of identity that last modified the resource.
+ :type last_modified_at: ~datetime.datetime
+ """
+
+ _attribute_map = {
+ 'created_by': {'key': 'createdBy', 'type': 'str'},
+ 'created_by_type': {'key': 'createdByType', 'type': 'str'},
+ 'created_at': {'key': 'createdAt', 'type': 'iso-8601'},
+ 'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'},
+ 'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'},
+ 'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(SystemMetadata, self).__init__(**kwargs)
+ self.created_by = kwargs.get('created_by', None)
+ self.created_by_type = kwargs.get('created_by_type', None)
+ self.created_at = kwargs.get('created_at', None)
+ self.last_modified_by = kwargs.get('last_modified_by', None)
+ self.last_modified_by_type = kwargs.get('last_modified_by_type', None)
+ self.last_modified_at = kwargs.get('last_modified_at', None)
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/_models_py3.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/_models_py3.py
new file mode 100644
index 00000000000..31dd2d7795e
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/_models_py3.py
@@ -0,0 +1,1182 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+import datetime
+from typing import Dict, List, Optional, Union
+
+from azure.core.exceptions import HttpResponseError
+import msrest.serialization
+
+from ._storage_pool_management_enums import *
+
+
+class Acl(msrest.serialization.Model):
+ """Access Control List (ACL) for an iSCSI Target; defines LUN masking policy.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param initiator_iqn: Required. iSCSI initiator IQN (iSCSI Qualified Name); example:
+ "iqn.2005-03.org.iscsi:client".
+ :type initiator_iqn: str
+ :param mapped_luns: Required. List of LUN names mapped to the ACL.
+ :type mapped_luns: list[str]
+ """
+
+ _validation = {
+ 'initiator_iqn': {'required': True},
+ 'mapped_luns': {'required': True},
+ }
+
+ _attribute_map = {
+ 'initiator_iqn': {'key': 'initiatorIqn', 'type': 'str'},
+ 'mapped_luns': {'key': 'mappedLuns', 'type': '[str]'},
+ }
+
+ def __init__(
+ self,
+ *,
+ initiator_iqn: str,
+ mapped_luns: List[str],
+ **kwargs
+ ):
+ super(Acl, self).__init__(**kwargs)
+ self.initiator_iqn = initiator_iqn
+ self.mapped_luns = mapped_luns
+
+
+class Disk(msrest.serialization.Model):
+ """Azure Managed Disk to attach to the Disk Pool.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param id: Required. Unique Azure Resource ID of the Managed Disk.
+ :type id: str
+ """
+
+ _validation = {
+ 'id': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ id: str,
+ **kwargs
+ ):
+ super(Disk, self).__init__(**kwargs)
+ self.id = id
+
+
+class Resource(msrest.serialization.Model):
+ """ARM resource model definition.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(Resource, self).__init__(**kwargs)
+ self.id = None
+ self.name = None
+ self.type = None
+
+
+class TrackedResource(Resource):
+ """The resource model definition for a ARM tracked top level resource.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :param tags: A set of tags. Resource tags.
+ :type tags: dict[str, str]
+ :param location: Required. The geo-location where the resource lives.
+ :type location: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'location': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'tags': {'key': 'tags', 'type': '{str}'},
+ 'location': {'key': 'location', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ location: str,
+ tags: Optional[Dict[str, str]] = None,
+ **kwargs
+ ):
+ super(TrackedResource, self).__init__(**kwargs)
+ self.tags = tags
+ self.location = location
+
+
+class DiskPool(TrackedResource):
+ """Response for Disk Pool request.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :param tags: A set of tags. Resource tags.
+ :type tags: dict[str, str]
+ :param location: Required. The geo-location where the resource lives.
+ :type location: str
+ :ivar system_data: Resource metadata required by ARM RPC.
+ :vartype system_data: ~storage_pool_management.models.SystemMetadata
+ :ivar provisioning_state: Required. State of the operation on the resource. Possible values
+ include: "Invalid", "Succeeded", "Failed", "Canceled", "Pending", "Creating", "Updating",
+ "Deleting".
+ :vartype provisioning_state: str or ~storage_pool_management.models.ProvisioningStates
+ :param availability_zones: Required. Logical zone for Disk Pool resource; example: ["1"].
+ :type availability_zones: list[str]
+ :param status: Required. Operational status of the Disk Pool. Possible values include:
+ "Invalid", "Unknown", "Healthy", "Unhealthy", "Updating", "Running", "Stopped", "Stopped
+ (deallocated)".
+ :type status: str or ~storage_pool_management.models.OperationalStatus
+ :param disks: List of Azure Managed Disks to attach to a Disk Pool.
+ :type disks: list[~storage_pool_management.models.Disk]
+ :param subnet_id: Required. Azure Resource ID of a Subnet for the Disk Pool.
+ :type subnet_id: str
+ :param additional_capabilities: List of additional capabilities for Disk Pool.
+ :type additional_capabilities: list[str]
+ :param name_sku_name: Sku name.
+ :type name_sku_name: str
+ :param tier: Sku tier.
+ :type tier: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'location': {'required': True},
+ 'system_data': {'readonly': True},
+ 'provisioning_state': {'required': True, 'readonly': True},
+ 'availability_zones': {'required': True},
+ 'status': {'required': True},
+ 'subnet_id': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'tags': {'key': 'tags', 'type': '{str}'},
+ 'location': {'key': 'location', 'type': 'str'},
+ 'system_data': {'key': 'systemData', 'type': 'SystemMetadata'},
+ 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
+ 'availability_zones': {'key': 'properties.availabilityZones', 'type': '[str]'},
+ 'status': {'key': 'properties.status', 'type': 'str'},
+ 'disks': {'key': 'properties.disks', 'type': '[Disk]'},
+ 'subnet_id': {'key': 'properties.subnetId', 'type': 'str'},
+ 'additional_capabilities': {'key': 'properties.additionalCapabilities', 'type': '[str]'},
+ 'name_sku_name': {'key': 'sku.name', 'type': 'str'},
+ 'tier': {'key': 'sku.tier', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ location: str,
+ availability_zones: List[str],
+ status: Union[str, "OperationalStatus"],
+ subnet_id: str,
+ tags: Optional[Dict[str, str]] = None,
+ disks: Optional[List["Disk"]] = None,
+ additional_capabilities: Optional[List[str]] = None,
+ name_sku_name: Optional[str] = None,
+ tier: Optional[str] = None,
+ **kwargs
+ ):
+ super(DiskPool, self).__init__(tags=tags, location=location, **kwargs)
+ self.system_data = None
+ self.provisioning_state = None
+ self.availability_zones = availability_zones
+ self.status = status
+ self.disks = disks
+ self.subnet_id = subnet_id
+ self.additional_capabilities = additional_capabilities
+ self.name_sku_name = name_sku_name
+ self.tier = tier
+
+
+class DiskPoolCreate(msrest.serialization.Model):
+ """Request payload for create or update Disk Pool request.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param sku: Required. Determines the SKU of the Disk Pool.
+ :type sku: ~storage_pool_management.models.Sku
+ :param tags: A set of tags. Resource tags.
+ :type tags: dict[str, str]
+ :param location: Required. The geo-location where the resource lives.
+ :type location: str
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :param availability_zones: Logical zone for Disk Pool resource; example: ["1"].
+ :type availability_zones: list[str]
+ :param disks: List of Azure Managed Disks to attach to a Disk Pool.
+ :type disks: list[~storage_pool_management.models.Disk]
+ :param subnet_id: Required. Azure Resource ID of a Subnet for the Disk Pool.
+ :type subnet_id: str
+ :param additional_capabilities: List of additional capabilities for a Disk Pool.
+ :type additional_capabilities: list[str]
+ """
+
+ _validation = {
+ 'sku': {'required': True},
+ 'location': {'required': True},
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'subnet_id': {'required': True},
+ }
+
+ _attribute_map = {
+ 'sku': {'key': 'sku', 'type': 'Sku'},
+ 'tags': {'key': 'tags', 'type': '{str}'},
+ 'location': {'key': 'location', 'type': 'str'},
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'availability_zones': {'key': 'properties.availabilityZones', 'type': '[str]'},
+ 'disks': {'key': 'properties.disks', 'type': '[Disk]'},
+ 'subnet_id': {'key': 'properties.subnetId', 'type': 'str'},
+ 'additional_capabilities': {'key': 'properties.additionalCapabilities', 'type': '[str]'},
+ }
+
+ def __init__(
+ self,
+ *,
+ sku: "Sku",
+ location: str,
+ subnet_id: str,
+ tags: Optional[Dict[str, str]] = None,
+ availability_zones: Optional[List[str]] = None,
+ disks: Optional[List["Disk"]] = None,
+ additional_capabilities: Optional[List[str]] = None,
+ **kwargs
+ ):
+ super(DiskPoolCreate, self).__init__(**kwargs)
+ self.sku = sku
+ self.tags = tags
+ self.location = location
+ self.id = None
+ self.name = None
+ self.type = None
+ self.availability_zones = availability_zones
+ self.disks = disks
+ self.subnet_id = subnet_id
+ self.additional_capabilities = additional_capabilities
+
+
+class DiskPoolListResult(msrest.serialization.Model):
+ """List of Disk Pools.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param value: Required. An array of Disk pool objects.
+ :type value: list[~storage_pool_management.models.DiskPool]
+ :ivar next_link: URI to fetch the next section of the paginated response.
+ :vartype next_link: str
+ """
+
+ _validation = {
+ 'value': {'required': True},
+ 'next_link': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[DiskPool]'},
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ value: List["DiskPool"],
+ **kwargs
+ ):
+ super(DiskPoolListResult, self).__init__(**kwargs)
+ self.value = value
+ self.next_link = None
+
+
+class DiskPoolUpdate(msrest.serialization.Model):
+ """Request payload for Update Disk Pool request.
+
+ :param tags: A set of tags. Resource tags.
+ :type tags: dict[str, str]
+ :param disks: List of Azure Managed Disks to attach to a Disk Pool.
+ :type disks: list[~storage_pool_management.models.Disk]
+ """
+
+ _attribute_map = {
+ 'tags': {'key': 'tags', 'type': '{str}'},
+ 'disks': {'key': 'properties.disks', 'type': '[Disk]'},
+ }
+
+ def __init__(
+ self,
+ *,
+ tags: Optional[Dict[str, str]] = None,
+ disks: Optional[List["Disk"]] = None,
+ **kwargs
+ ):
+ super(DiskPoolUpdate, self).__init__(**kwargs)
+ self.tags = tags
+ self.disks = disks
+
+
+class DiskPoolZoneInfo(msrest.serialization.Model):
+ """Disk Pool Sku Details.
+
+ :param availability_zones: Logical zone for Disk Pool resource; example: ["1"].
+ :type availability_zones: list[str]
+ :param additional_capabilities: List of additional capabilities for Disk Pool.
+ :type additional_capabilities: list[str]
+ :param sku: Determines the SKU of VM deployed for Disk Pool.
+ :type sku: ~storage_pool_management.models.Sku
+ """
+
+ _attribute_map = {
+ 'availability_zones': {'key': 'availabilityZones', 'type': '[str]'},
+ 'additional_capabilities': {'key': 'additionalCapabilities', 'type': '[str]'},
+ 'sku': {'key': 'sku', 'type': 'Sku'},
+ }
+
+ def __init__(
+ self,
+ *,
+ availability_zones: Optional[List[str]] = None,
+ additional_capabilities: Optional[List[str]] = None,
+ sku: Optional["Sku"] = None,
+ **kwargs
+ ):
+ super(DiskPoolZoneInfo, self).__init__(**kwargs)
+ self.availability_zones = availability_zones
+ self.additional_capabilities = additional_capabilities
+ self.sku = sku
+
+
+class DiskPoolZoneListResult(msrest.serialization.Model):
+ """List Disk Pool skus operation response.
+
+ :param value: The list of Disk Pool Skus.
+ :type value: list[~storage_pool_management.models.DiskPoolZoneInfo]
+ :param next_link: URI to fetch the next section of the paginated response.
+ :type next_link: str
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[DiskPoolZoneInfo]'},
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ value: Optional[List["DiskPoolZoneInfo"]] = None,
+ next_link: Optional[str] = None,
+ **kwargs
+ ):
+ super(DiskPoolZoneListResult, self).__init__(**kwargs)
+ self.value = value
+ self.next_link = next_link
+
+
+class EndpointDependency(msrest.serialization.Model):
+ """A domain name that a service is reached at, including details of the current connection status.
+
+ :param domain_name: The domain name of the dependency.
+ :type domain_name: str
+ :param endpoint_details: The IP Addresses and Ports used when connecting to DomainName.
+ :type endpoint_details: list[~storage_pool_management.models.EndpointDetail]
+ """
+
+ _attribute_map = {
+ 'domain_name': {'key': 'domainName', 'type': 'str'},
+ 'endpoint_details': {'key': 'endpointDetails', 'type': '[EndpointDetail]'},
+ }
+
+ def __init__(
+ self,
+ *,
+ domain_name: Optional[str] = None,
+ endpoint_details: Optional[List["EndpointDetail"]] = None,
+ **kwargs
+ ):
+ super(EndpointDependency, self).__init__(**kwargs)
+ self.domain_name = domain_name
+ self.endpoint_details = endpoint_details
+
+
+class EndpointDetail(msrest.serialization.Model):
+ """Current TCP connectivity information from the App Service Environment to a single endpoint.
+
+ :param ip_address: An IP Address that Domain Name currently resolves to.
+ :type ip_address: str
+ :param port: The port an endpoint is connected to.
+ :type port: int
+ :param latency: The time in milliseconds it takes for a TCP connection to be created from the
+ App Service Environment to this IpAddress at this Port.
+ :type latency: float
+ :param is_accessible: Whether it is possible to create a TCP connection from the App Service
+ Environment to this IpAddress at this Port.
+ :type is_accessible: bool
+ """
+
+ _attribute_map = {
+ 'ip_address': {'key': 'ipAddress', 'type': 'str'},
+ 'port': {'key': 'port', 'type': 'int'},
+ 'latency': {'key': 'latency', 'type': 'float'},
+ 'is_accessible': {'key': 'isAccessible', 'type': 'bool'},
+ }
+
+ def __init__(
+ self,
+ *,
+ ip_address: Optional[str] = None,
+ port: Optional[int] = None,
+ latency: Optional[float] = None,
+ is_accessible: Optional[bool] = None,
+ **kwargs
+ ):
+ super(EndpointDetail, self).__init__(**kwargs)
+ self.ip_address = ip_address
+ self.port = port
+ self.latency = latency
+ self.is_accessible = is_accessible
+
+
+class Error(msrest.serialization.Model):
+ """The resource management error response.
+
+ :param error: RP error response.
+ :type error: ~storage_pool_management.models.ErrorResponse
+ """
+
+ _attribute_map = {
+ 'error': {'key': 'error', 'type': 'ErrorResponse'},
+ }
+
+ def __init__(
+ self,
+ *,
+ error: Optional["ErrorResponse"] = None,
+ **kwargs
+ ):
+ super(Error, self).__init__(**kwargs)
+ self.error = error
+
+
+class ErrorAdditionalInfo(msrest.serialization.Model):
+ """The resource management error additional info.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar type: The additional info type.
+ :vartype type: str
+ :ivar info: The additional info.
+ :vartype info: object
+ """
+
+ _validation = {
+ 'type': {'readonly': True},
+ 'info': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'type': {'key': 'type', 'type': 'str'},
+ 'info': {'key': 'info', 'type': 'object'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(ErrorAdditionalInfo, self).__init__(**kwargs)
+ self.type = None
+ self.info = None
+
+
+class ErrorResponse(msrest.serialization.Model):
+ """The resource management error response.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar code: The error code.
+ :vartype code: str
+ :ivar message: The error message.
+ :vartype message: str
+ :ivar target: The error target.
+ :vartype target: str
+ :ivar details: The error details.
+ :vartype details: list[~storage_pool_management.models.ErrorResponse]
+ :ivar additional_info: The error additional info.
+ :vartype additional_info: list[~storage_pool_management.models.ErrorAdditionalInfo]
+ """
+
+ _validation = {
+ 'code': {'readonly': True},
+ 'message': {'readonly': True},
+ 'target': {'readonly': True},
+ 'details': {'readonly': True},
+ 'additional_info': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'code': {'key': 'code', 'type': 'str'},
+ 'message': {'key': 'message', 'type': 'str'},
+ 'target': {'key': 'target', 'type': 'str'},
+ 'details': {'key': 'details', 'type': '[ErrorResponse]'},
+ 'additional_info': {'key': 'additionalInfo', 'type': '[ErrorAdditionalInfo]'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(ErrorResponse, self).__init__(**kwargs)
+ self.code = None
+ self.message = None
+ self.target = None
+ self.details = None
+ self.additional_info = None
+
+
+class IscsiLun(msrest.serialization.Model):
+ """LUN to expose the Azure Managed Disk.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param name: Required. User defined name for iSCSI LUN; example: "lun0".
+ :type name: str
+ :param managed_disk_azure_resource_id: Required. Azure Resource ID of the Managed Disk.
+ :type managed_disk_azure_resource_id: str
+ """
+
+ _validation = {
+ 'name': {'required': True},
+ 'managed_disk_azure_resource_id': {'required': True},
+ }
+
+ _attribute_map = {
+ 'name': {'key': 'name', 'type': 'str'},
+ 'managed_disk_azure_resource_id': {'key': 'managedDiskAzureResourceId', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ name: str,
+ managed_disk_azure_resource_id: str,
+ **kwargs
+ ):
+ super(IscsiLun, self).__init__(**kwargs)
+ self.name = name
+ self.managed_disk_azure_resource_id = managed_disk_azure_resource_id
+
+
+class IscsiTarget(Resource):
+ """Response for iSCSI Target requests.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :ivar system_data: Resource metadata required by ARM RPC.
+ :vartype system_data: ~storage_pool_management.models.SystemMetadata
+ :param acl_mode: Required. Mode for Target connectivity. Possible values include: "Dynamic",
+ "Static".
+ :type acl_mode: str or ~storage_pool_management.models.IscsiTargetAclMode
+ :param static_acls: Access Control List (ACL) for an iSCSI Target; defines LUN masking policy.
+ :type static_acls: list[~storage_pool_management.models.Acl]
+ :param luns: List of LUNs to be exposed through iSCSI Target.
+ :type luns: list[~storage_pool_management.models.IscsiLun]
+ :param target_iqn: Required. iSCSI Target IQN (iSCSI Qualified Name); example:
+ "iqn.2005-03.org.iscsi:server".
+ :type target_iqn: str
+ :ivar provisioning_state: Required. State of the operation on the resource. Possible values
+ include: "Invalid", "Succeeded", "Failed", "Canceled", "Pending", "Creating", "Updating",
+ "Deleting".
+ :vartype provisioning_state: str or ~storage_pool_management.models.ProvisioningStates
+ :param status: Required. Operational status of the iSCSI Target. Possible values include:
+ "Invalid", "Unknown", "Healthy", "Unhealthy", "Updating", "Running", "Stopped", "Stopped
+ (deallocated)".
+ :type status: str or ~storage_pool_management.models.OperationalStatus
+ :param endpoints: List of private IPv4 addresses to connect to the iSCSI Target.
+ :type endpoints: list[str]
+ :param port: The port used by iSCSI Target portal group.
+ :type port: int
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'system_data': {'readonly': True},
+ 'acl_mode': {'required': True},
+ 'target_iqn': {'required': True},
+ 'provisioning_state': {'required': True, 'readonly': True},
+ 'status': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'system_data': {'key': 'systemData', 'type': 'SystemMetadata'},
+ 'acl_mode': {'key': 'properties.aclMode', 'type': 'str'},
+ 'static_acls': {'key': 'properties.staticAcls', 'type': '[Acl]'},
+ 'luns': {'key': 'properties.luns', 'type': '[IscsiLun]'},
+ 'target_iqn': {'key': 'properties.targetIqn', 'type': 'str'},
+ 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
+ 'status': {'key': 'properties.status', 'type': 'str'},
+ 'endpoints': {'key': 'properties.endpoints', 'type': '[str]'},
+ 'port': {'key': 'properties.port', 'type': 'int'},
+ }
+
+ def __init__(
+ self,
+ *,
+ acl_mode: Union[str, "IscsiTargetAclMode"],
+ target_iqn: str,
+ status: Union[str, "OperationalStatus"],
+ static_acls: Optional[List["Acl"]] = None,
+ luns: Optional[List["IscsiLun"]] = None,
+ endpoints: Optional[List[str]] = None,
+ port: Optional[int] = None,
+ **kwargs
+ ):
+ super(IscsiTarget, self).__init__(**kwargs)
+ self.system_data = None
+ self.acl_mode = acl_mode
+ self.static_acls = static_acls
+ self.luns = luns
+ self.target_iqn = target_iqn
+ self.provisioning_state = None
+ self.status = status
+ self.endpoints = endpoints
+ self.port = port
+
+
+class IscsiTargetCreate(Resource):
+ """Payload for iSCSI Target create or update requests.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :param acl_mode: Required. Mode for Target connectivity. Possible values include: "Dynamic",
+ "Static".
+ :type acl_mode: str or ~storage_pool_management.models.IscsiTargetAclMode
+ :param target_iqn: iSCSI Target IQN (iSCSI Qualified Name); example:
+ "iqn.2005-03.org.iscsi:server".
+ :type target_iqn: str
+ :param static_acls: Access Control List (ACL) for an iSCSI Target; defines LUN masking policy.
+ :type static_acls: list[~storage_pool_management.models.Acl]
+ :param luns: List of LUNs to be exposed through iSCSI Target.
+ :type luns: list[~storage_pool_management.models.IscsiLun]
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'acl_mode': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'acl_mode': {'key': 'properties.aclMode', 'type': 'str'},
+ 'target_iqn': {'key': 'properties.targetIqn', 'type': 'str'},
+ 'static_acls': {'key': 'properties.staticAcls', 'type': '[Acl]'},
+ 'luns': {'key': 'properties.luns', 'type': '[IscsiLun]'},
+ }
+
+ def __init__(
+ self,
+ *,
+ acl_mode: Union[str, "IscsiTargetAclMode"],
+ target_iqn: Optional[str] = None,
+ static_acls: Optional[List["Acl"]] = None,
+ luns: Optional[List["IscsiLun"]] = None,
+ **kwargs
+ ):
+ super(IscsiTargetCreate, self).__init__(**kwargs)
+ self.acl_mode = acl_mode
+ self.target_iqn = target_iqn
+ self.static_acls = static_acls
+ self.luns = luns
+
+
+class IscsiTargetList(msrest.serialization.Model):
+ """List of iSCSI Targets.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param value: Required. An array of iSCSI Targets in a Disk Pool.
+ :type value: list[~storage_pool_management.models.IscsiTarget]
+ :ivar next_link: URI to fetch the next section of the paginated response.
+ :vartype next_link: str
+ """
+
+ _validation = {
+ 'value': {'required': True},
+ 'next_link': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[IscsiTarget]'},
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ value: List["IscsiTarget"],
+ **kwargs
+ ):
+ super(IscsiTargetList, self).__init__(**kwargs)
+ self.value = value
+ self.next_link = None
+
+
+class IscsiTargetUpdate(Resource):
+ """Payload for iSCSI Target update requests.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ :param static_acls: Access Control List (ACL) for an iSCSI Target; defines LUN masking policy.
+ :type static_acls: list[~storage_pool_management.models.Acl]
+ :param luns: List of LUNs to be exposed through iSCSI Target.
+ :type luns: list[~storage_pool_management.models.IscsiLun]
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'static_acls': {'key': 'properties.staticAcls', 'type': '[Acl]'},
+ 'luns': {'key': 'properties.luns', 'type': '[IscsiLun]'},
+ }
+
+ def __init__(
+ self,
+ *,
+ static_acls: Optional[List["Acl"]] = None,
+ luns: Optional[List["IscsiLun"]] = None,
+ **kwargs
+ ):
+ super(IscsiTargetUpdate, self).__init__(**kwargs)
+ self.static_acls = static_acls
+ self.luns = luns
+
+
+class OutboundEnvironmentEndpoint(msrest.serialization.Model):
+ """Endpoints accessed for a common purpose that the App Service Environment requires outbound network access to.
+
+ :param category: The type of service accessed by the App Service Environment, e.g., Azure
+ Storage, Azure SQL Database, and Azure Active Directory.
+ :type category: str
+ :param endpoints: The endpoints that the App Service Environment reaches the service at.
+ :type endpoints: list[~storage_pool_management.models.EndpointDependency]
+ """
+
+ _attribute_map = {
+ 'category': {'key': 'category', 'type': 'str'},
+ 'endpoints': {'key': 'endpoints', 'type': '[EndpointDependency]'},
+ }
+
+ def __init__(
+ self,
+ *,
+ category: Optional[str] = None,
+ endpoints: Optional[List["EndpointDependency"]] = None,
+ **kwargs
+ ):
+ super(OutboundEnvironmentEndpoint, self).__init__(**kwargs)
+ self.category = category
+ self.endpoints = endpoints
+
+
+class OutboundEnvironmentEndpointList(msrest.serialization.Model):
+ """Collection of Outbound Environment Endpoints.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param value: Required. Collection of resources.
+ :type value: list[~storage_pool_management.models.OutboundEnvironmentEndpoint]
+ :ivar next_link: Link to next page of resources.
+ :vartype next_link: str
+ """
+
+ _validation = {
+ 'value': {'required': True},
+ 'next_link': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[OutboundEnvironmentEndpoint]'},
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ value: List["OutboundEnvironmentEndpoint"],
+ **kwargs
+ ):
+ super(OutboundEnvironmentEndpointList, self).__init__(**kwargs)
+ self.value = value
+ self.next_link = None
+
+
+class ProxyResource(Resource):
+ """The resource model definition for a ARM proxy resource. It will have everything other than required location and tags.
+
+ Variables are only populated by the server, and will be ignored when sending a request.
+
+ :ivar id: Fully qualified resource Id for the resource. Ex -
+ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.
+ :vartype id: str
+ :ivar name: The name of the resource.
+ :vartype name: str
+ :ivar type: The type of the resource. Ex- Microsoft.Compute/virtualMachines or
+ Microsoft.Storage/storageAccounts.
+ :vartype type: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ **kwargs
+ ):
+ super(ProxyResource, self).__init__(**kwargs)
+
+
+class Sku(msrest.serialization.Model):
+ """Sku for ARM resource.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param name: Required. Sku name.
+ :type name: str
+ :param tier: Sku tier.
+ :type tier: str
+ """
+
+ _validation = {
+ 'name': {'required': True},
+ }
+
+ _attribute_map = {
+ 'name': {'key': 'name', 'type': 'str'},
+ 'tier': {'key': 'tier', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ name: str,
+ tier: Optional[str] = None,
+ **kwargs
+ ):
+ super(Sku, self).__init__(**kwargs)
+ self.name = name
+ self.tier = tier
+
+
+class StoragePoolOperationDisplay(msrest.serialization.Model):
+ """Metadata about an operation.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param provider: Required. Localized friendly form of the resource provider name.
+ :type provider: str
+ :param resource: Required. Localized friendly form of the resource type related to this
+ action/operation.
+ :type resource: str
+ :param operation: Required. Localized friendly name for the operation, as it should be shown to
+ the user.
+ :type operation: str
+ :param description: Required. Localized friendly description for the operation, as it should be
+ shown to the user.
+ :type description: str
+ """
+
+ _validation = {
+ 'provider': {'required': True},
+ 'resource': {'required': True},
+ 'operation': {'required': True},
+ 'description': {'required': True},
+ }
+
+ _attribute_map = {
+ 'provider': {'key': 'provider', 'type': 'str'},
+ 'resource': {'key': 'resource', 'type': 'str'},
+ 'operation': {'key': 'operation', 'type': 'str'},
+ 'description': {'key': 'description', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ provider: str,
+ resource: str,
+ operation: str,
+ description: str,
+ **kwargs
+ ):
+ super(StoragePoolOperationDisplay, self).__init__(**kwargs)
+ self.provider = provider
+ self.resource = resource
+ self.operation = operation
+ self.description = description
+
+
+class StoragePoolOperationListResult(msrest.serialization.Model):
+ """List of operations supported by the RP.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param value: Required. An array of operations supported by the StoragePool RP.
+ :type value: list[~storage_pool_management.models.StoragePoolRpOperation]
+ :param next_link: URI to fetch the next section of the paginated response.
+ :type next_link: str
+ """
+
+ _validation = {
+ 'value': {'required': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[StoragePoolRpOperation]'},
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ value: List["StoragePoolRpOperation"],
+ next_link: Optional[str] = None,
+ **kwargs
+ ):
+ super(StoragePoolOperationListResult, self).__init__(**kwargs)
+ self.value = value
+ self.next_link = next_link
+
+
+class StoragePoolRpOperation(msrest.serialization.Model):
+ """Description of a StoragePool RP Operation.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param name: Required. The name of the operation being performed on this particular object.
+ :type name: str
+ :param is_data_action: Required. Indicates whether the operation applies to data-plane.
+ :type is_data_action: bool
+ :param action_type: Indicates the action type.
+ :type action_type: str
+ :param display: Required. Additional metadata about RP operation.
+ :type display: ~storage_pool_management.models.StoragePoolOperationDisplay
+ :param origin: The intended executor of the operation; governs the display of the operation in
+ the RBAC UX and the audit logs UX.
+ :type origin: str
+ """
+
+ _validation = {
+ 'name': {'required': True},
+ 'is_data_action': {'required': True},
+ 'display': {'required': True},
+ }
+
+ _attribute_map = {
+ 'name': {'key': 'name', 'type': 'str'},
+ 'is_data_action': {'key': 'isDataAction', 'type': 'bool'},
+ 'action_type': {'key': 'actionType', 'type': 'str'},
+ 'display': {'key': 'display', 'type': 'StoragePoolOperationDisplay'},
+ 'origin': {'key': 'origin', 'type': 'str'},
+ }
+
+ def __init__(
+ self,
+ *,
+ name: str,
+ is_data_action: bool,
+ display: "StoragePoolOperationDisplay",
+ action_type: Optional[str] = None,
+ origin: Optional[str] = None,
+ **kwargs
+ ):
+ super(StoragePoolRpOperation, self).__init__(**kwargs)
+ self.name = name
+ self.is_data_action = is_data_action
+ self.action_type = action_type
+ self.display = display
+ self.origin = origin
+
+
+class SystemMetadata(msrest.serialization.Model):
+ """Metadata pertaining to creation and last modification of the resource.
+
+ :param created_by: The identity that created the resource.
+ :type created_by: str
+ :param created_by_type: The type of identity that created the resource. Possible values
+ include: "User", "Application", "ManagedIdentity", "Key".
+ :type created_by_type: str or ~storage_pool_management.models.CreatedByType
+ :param created_at: The timestamp of resource creation (UTC).
+ :type created_at: ~datetime.datetime
+ :param last_modified_by: The identity that last modified the resource.
+ :type last_modified_by: str
+ :param last_modified_by_type: The type of identity that last modified the resource. Possible
+ values include: "User", "Application", "ManagedIdentity", "Key".
+ :type last_modified_by_type: str or ~storage_pool_management.models.CreatedByType
+ :param last_modified_at: The type of identity that last modified the resource.
+ :type last_modified_at: ~datetime.datetime
+ """
+
+ _attribute_map = {
+ 'created_by': {'key': 'createdBy', 'type': 'str'},
+ 'created_by_type': {'key': 'createdByType', 'type': 'str'},
+ 'created_at': {'key': 'createdAt', 'type': 'iso-8601'},
+ 'last_modified_by': {'key': 'lastModifiedBy', 'type': 'str'},
+ 'last_modified_by_type': {'key': 'lastModifiedByType', 'type': 'str'},
+ 'last_modified_at': {'key': 'lastModifiedAt', 'type': 'iso-8601'},
+ }
+
+ def __init__(
+ self,
+ *,
+ created_by: Optional[str] = None,
+ created_by_type: Optional[Union[str, "CreatedByType"]] = None,
+ created_at: Optional[datetime.datetime] = None,
+ last_modified_by: Optional[str] = None,
+ last_modified_by_type: Optional[Union[str, "CreatedByType"]] = None,
+ last_modified_at: Optional[datetime.datetime] = None,
+ **kwargs
+ ):
+ super(SystemMetadata, self).__init__(**kwargs)
+ self.created_by = created_by
+ self.created_by_type = created_by_type
+ self.created_at = created_at
+ self.last_modified_by = last_modified_by
+ self.last_modified_by_type = last_modified_by_type
+ self.last_modified_at = last_modified_at
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/_storage_pool_management_enums.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/_storage_pool_management_enums.py
new file mode 100644
index 00000000000..061cbd1e41d
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/models/_storage_pool_management_enums.py
@@ -0,0 +1,77 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from enum import Enum, EnumMeta
+from six import with_metaclass
+
+class _CaseInsensitiveEnumMeta(EnumMeta):
+ def __getitem__(self, name):
+ return super().__getitem__(name.upper())
+
+ def __getattr__(cls, name):
+ """Return the enum member matching `name`
+ We use __getattr__ instead of descriptors or inserting into the enum
+ class' __dict__ in order to support `name` and `value` being both
+ properties for enum members (which live in the class' __dict__) and
+ enum members themselves.
+ """
+ try:
+ return cls._member_map_[name.upper()]
+ except KeyError:
+ raise AttributeError(name)
+
+
+class CreatedByType(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
+ """The type of identity that created the resource.
+ """
+
+ USER = "User"
+ APPLICATION = "Application"
+ MANAGED_IDENTITY = "ManagedIdentity"
+ KEY = "Key"
+
+class DiskPoolTier(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
+ """SKU of the VM host part of the Disk Pool deployment
+ """
+
+ BASIC = "Basic"
+ STANDARD = "Standard"
+ PREMIUM = "Premium"
+
+class IscsiTargetAclMode(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
+ """ACL mode for iSCSI Target.
+ """
+
+ DYNAMIC = "Dynamic"
+ STATIC = "Static"
+
+class OperationalStatus(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
+ """Operational status of the resource.
+ """
+
+ INVALID = "Invalid"
+ UNKNOWN = "Unknown"
+ HEALTHY = "Healthy"
+ UNHEALTHY = "Unhealthy"
+ UPDATING = "Updating"
+ RUNNING = "Running"
+ STOPPED = "Stopped"
+ STOPPED_DEALLOCATED__ = "Stopped (deallocated)"
+
+class ProvisioningStates(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)):
+ """Provisioning state of the iSCSI Target.
+ """
+
+ INVALID = "Invalid"
+ SUCCEEDED = "Succeeded"
+ FAILED = "Failed"
+ CANCELED = "Canceled"
+ PENDING = "Pending"
+ CREATING = "Creating"
+ UPDATING = "Updating"
+ DELETING = "Deleting"
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/__init__.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/__init__.py
new file mode 100644
index 00000000000..1620075f15e
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/__init__.py
@@ -0,0 +1,19 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from ._operations import Operations
+from ._disk_pools_operations import DiskPoolsOperations
+from ._disk_pool_zones_operations import DiskPoolZonesOperations
+from ._iscsi_targets_operations import IscsiTargetsOperations
+
+__all__ = [
+ 'Operations',
+ 'DiskPoolsOperations',
+ 'DiskPoolZonesOperations',
+ 'IscsiTargetsOperations',
+]
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_disk_pool_zones_operations.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_disk_pool_zones_operations.py
new file mode 100644
index 00000000000..f3ca01df3c1
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_disk_pool_zones_operations.py
@@ -0,0 +1,118 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+from typing import TYPE_CHECKING
+import warnings
+
+from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
+from azure.core.paging import ItemPaged
+from azure.core.pipeline import PipelineResponse
+from azure.core.pipeline.transport import HttpRequest, HttpResponse
+from azure.mgmt.core.exceptions import ARMErrorFormat
+
+from .. import models
+
+if TYPE_CHECKING:
+ # pylint: disable=unused-import,ungrouped-imports
+ from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar
+
+ T = TypeVar('T')
+ ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]]
+
+class DiskPoolZonesOperations(object):
+ """DiskPoolZonesOperations operations.
+
+ You should not instantiate this class directly. Instead, you should create a Client instance that
+ instantiates it for you and attaches it as an attribute.
+
+ :ivar models: Alias to model classes used in this operation group.
+ :type models: ~storage_pool_management.models
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self._config = config
+
+ def list(
+ self,
+ location, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> Iterable["models.DiskPoolZoneListResult"]
+ """Lists available Disk Pool Skus in an Azure location.
+
+ :param location: The location of the resource.
+ :type location: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either DiskPoolZoneListResult or the result of cls(response)
+ :rtype: ~azure.core.paging.ItemPaged[~storage_pool_management.models.DiskPoolZoneListResult]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPoolZoneListResult"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'location': self._serialize.url("location", location, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def extract_data(pipeline_response):
+ deserialized = self._deserialize('DiskPoolZoneListResult', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return deserialized.next_link or None, iter(list_of_elem)
+
+ def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return ItemPaged(
+ get_next, extract_data
+ )
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.StoragePool/locations/{location}/diskPoolZones'} # type: ignore
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_disk_pools_operations.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_disk_pools_operations.py
new file mode 100644
index 00000000000..04bc8ff1a46
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_disk_pools_operations.py
@@ -0,0 +1,918 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+from typing import TYPE_CHECKING
+import warnings
+
+from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
+from azure.core.paging import ItemPaged
+from azure.core.pipeline import PipelineResponse
+from azure.core.pipeline.transport import HttpRequest, HttpResponse
+from azure.core.polling import LROPoller, NoPolling, PollingMethod
+from azure.mgmt.core.exceptions import ARMErrorFormat
+from azure.mgmt.core.polling.arm_polling import ARMPolling
+
+from .. import models
+
+if TYPE_CHECKING:
+ # pylint: disable=unused-import,ungrouped-imports
+ from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union
+
+ T = TypeVar('T')
+ ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]]
+
+class DiskPoolsOperations(object):
+ """DiskPoolsOperations operations.
+
+ You should not instantiate this class directly. Instead, you should create a Client instance that
+ instantiates it for you and attaches it as an attribute.
+
+ :ivar models: Alias to model classes used in this operation group.
+ :type models: ~storage_pool_management.models
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self._config = config
+
+ def list_by_subscription(
+ self,
+ **kwargs # type: Any
+ ):
+ # type: (...) -> Iterable["models.DiskPoolListResult"]
+ """Gets a list of Disk Pools in a subscription.
+
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either DiskPoolListResult or the result of cls(response)
+ :rtype: ~azure.core.paging.ItemPaged[~storage_pool_management.models.DiskPoolListResult]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPoolListResult"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list_by_subscription.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def extract_data(pipeline_response):
+ deserialized = self._deserialize('DiskPoolListResult', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return deserialized.next_link or None, iter(list_of_elem)
+
+ def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return ItemPaged(
+ get_next, extract_data
+ )
+ list_by_subscription.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.StoragePool/diskPools'} # type: ignore
+
+ def list_by_resource_group(
+ self,
+ resource_group_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> Iterable["models.DiskPoolListResult"]
+ """Gets a list of DiskPools in a resource group.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either DiskPoolListResult or the result of cls(response)
+ :rtype: ~azure.core.paging.ItemPaged[~storage_pool_management.models.DiskPoolListResult]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPoolListResult"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list_by_resource_group.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def extract_data(pipeline_response):
+ deserialized = self._deserialize('DiskPoolListResult', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return deserialized.next_link or None, iter(list_of_elem)
+
+ def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return ItemPaged(
+ get_next, extract_data
+ )
+ list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools'} # type: ignore
+
+ def _create_or_update_initial(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ disk_pool_create_payload, # type: "models.DiskPoolCreate"
+ **kwargs # type: Any
+ ):
+ # type: (...) -> "models.DiskPool"
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPool"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ content_type = kwargs.pop("content_type", "application/json")
+ accept = "application/json"
+
+ # Construct URL
+ url = self._create_or_update_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ body_content_kwargs = {} # type: Dict[str, Any]
+ body_content = self._serialize.body(disk_pool_create_payload, 'DiskPoolCreate')
+ body_content_kwargs['content'] = body_content
+ request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 201]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if response.status_code == 200:
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if response.status_code == 201:
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ def begin_create_or_update(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ disk_pool_create_payload, # type: "models.DiskPoolCreate"
+ **kwargs # type: Any
+ ):
+ # type: (...) -> LROPoller["models.DiskPool"]
+ """Create or Update Disk pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param disk_pool_create_payload: Request payload for Disk Pool create operation.
+ :type disk_pool_create_payload: ~storage_pool_management.models.DiskPoolCreate
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.PollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of LROPoller that returns either DiskPool or the result of cls(response)
+ :rtype: ~azure.core.polling.LROPoller[~storage_pool_management.models.DiskPool]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPool"]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = self._create_or_update_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ disk_pool_create_payload=disk_pool_create_payload,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+ return deserialized
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+
+ if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = NoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return LROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ def _update_initial(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ disk_pool_update_payload, # type: "models.DiskPoolUpdate"
+ **kwargs # type: Any
+ ):
+ # type: (...) -> Optional["models.DiskPool"]
+ cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.DiskPool"]]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ content_type = kwargs.pop("content_type", "application/json")
+ accept = "application/json"
+
+ # Construct URL
+ url = self._update_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ body_content_kwargs = {} # type: Dict[str, Any]
+ body_content = self._serialize.body(disk_pool_update_payload, 'DiskPoolUpdate')
+ body_content_kwargs['content'] = body_content
+ request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs)
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ def begin_update(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ disk_pool_update_payload, # type: "models.DiskPoolUpdate"
+ **kwargs # type: Any
+ ):
+ # type: (...) -> LROPoller["models.DiskPool"]
+ """Update a Disk pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param disk_pool_update_payload: Request payload for Disk Pool update operation.
+ :type disk_pool_update_payload: ~storage_pool_management.models.DiskPoolUpdate
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.PollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of LROPoller that returns either DiskPool or the result of cls(response)
+ :rtype: ~azure.core.polling.LROPoller[~storage_pool_management.models.DiskPool]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPool"]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = self._update_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ disk_pool_update_payload=disk_pool_update_payload,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+ return deserialized
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+
+ if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = NoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return LROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ def _delete_initial(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> None
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self._delete_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.delete(url, query_parameters, header_parameters)
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202, 204]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ def begin_delete(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> LROPoller[None]
+ """Delete a Disk pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.PollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of LROPoller that returns either None or the result of cls(response)
+ :rtype: ~azure.core.polling.LROPoller[None]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = self._delete_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+
+ if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = NoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return LROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ def get(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> "models.DiskPool"
+ """Get a Disk pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: DiskPool, or the result of cls(response)
+ :rtype: ~storage_pool_management.models.DiskPool
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.DiskPool"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self.get.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = self._deserialize('DiskPool', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}'} # type: ignore
+
+ def list_outbound_network_dependencies_endpoints(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> Iterable["models.OutboundEnvironmentEndpointList"]
+ """Gets the network endpoints of all outbound dependencies of a Disk Pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either OutboundEnvironmentEndpointList or the result of cls(response)
+ :rtype: ~azure.core.paging.ItemPaged[~storage_pool_management.models.OutboundEnvironmentEndpointList]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.OutboundEnvironmentEndpointList"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list_outbound_network_dependencies_endpoints.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def extract_data(pipeline_response):
+ deserialized = self._deserialize('OutboundEnvironmentEndpointList', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return deserialized.next_link or None, iter(list_of_elem)
+
+ def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return ItemPaged(
+ get_next, extract_data
+ )
+ list_outbound_network_dependencies_endpoints.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/outboundNetworkDependenciesEndpoints'} # type: ignore
+
+ def _start_initial(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> None
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self._start_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.post(url, query_parameters, header_parameters)
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ _start_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/start'} # type: ignore
+
+ def begin_start(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> LROPoller[None]
+ """The operation to start a Disk Pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.PollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of LROPoller that returns either None or the result of cls(response)
+ :rtype: ~azure.core.polling.LROPoller[None]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = self._start_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+
+ if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = NoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return LROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_start.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/start'} # type: ignore
+
+ def _deallocate_initial(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> None
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self._deallocate_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.post(url, query_parameters, header_parameters)
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ _deallocate_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/deallocate'} # type: ignore
+
+ def begin_deallocate(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> LROPoller[None]
+ """Shuts down the Disk Pool and releases the compute resources. You are not billed for the compute
+ resources that this Disk Pool uses.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.PollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of LROPoller that returns either None or the result of cls(response)
+ :rtype: ~azure.core.polling.LROPoller[None]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = self._deallocate_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+
+ if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = NoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return LROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_deallocate.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/deallocate'} # type: ignore
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_iscsi_targets_operations.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_iscsi_targets_operations.py
new file mode 100644
index 00000000000..82cd68141b2
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_iscsi_targets_operations.py
@@ -0,0 +1,580 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+from typing import TYPE_CHECKING
+import warnings
+
+from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
+from azure.core.paging import ItemPaged
+from azure.core.pipeline import PipelineResponse
+from azure.core.pipeline.transport import HttpRequest, HttpResponse
+from azure.core.polling import LROPoller, NoPolling, PollingMethod
+from azure.mgmt.core.exceptions import ARMErrorFormat
+from azure.mgmt.core.polling.arm_polling import ARMPolling
+
+from .. import models
+
+if TYPE_CHECKING:
+ # pylint: disable=unused-import,ungrouped-imports
+ from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union
+
+ T = TypeVar('T')
+ ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]]
+
+class IscsiTargetsOperations(object):
+ """IscsiTargetsOperations operations.
+
+ You should not instantiate this class directly. Instead, you should create a Client instance that
+ instantiates it for you and attaches it as an attribute.
+
+ :ivar models: Alias to model classes used in this operation group.
+ :type models: ~storage_pool_management.models
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self._config = config
+
+ def list_by_disk_pool(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> Iterable["models.IscsiTargetList"]
+ """Get iSCSI Targets in a Disk pool.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either IscsiTargetList or the result of cls(response)
+ :rtype: ~azure.core.paging.ItemPaged[~storage_pool_management.models.IscsiTargetList]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.IscsiTargetList"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list_by_disk_pool.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def extract_data(pipeline_response):
+ deserialized = self._deserialize('IscsiTargetList', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return deserialized.next_link or None, iter(list_of_elem)
+
+ def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return ItemPaged(
+ get_next, extract_data
+ )
+ list_by_disk_pool.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets'} # type: ignore
+
+ def _create_or_update_initial(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ iscsi_target_name, # type: str
+ iscsi_target_create_payload, # type: "models.IscsiTargetCreate"
+ **kwargs # type: Any
+ ):
+ # type: (...) -> "models.IscsiTarget"
+ cls = kwargs.pop('cls', None) # type: ClsType["models.IscsiTarget"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ content_type = kwargs.pop("content_type", "application/json")
+ accept = "application/json"
+
+ # Construct URL
+ url = self._create_or_update_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ body_content_kwargs = {} # type: Dict[str, Any]
+ body_content = self._serialize.body(iscsi_target_create_payload, 'IscsiTargetCreate')
+ body_content_kwargs['content'] = body_content
+ request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs)
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 201]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if response.status_code == 200:
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if response.status_code == 201:
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ _create_or_update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ def begin_create_or_update(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ iscsi_target_name, # type: str
+ iscsi_target_create_payload, # type: "models.IscsiTargetCreate"
+ **kwargs # type: Any
+ ):
+ # type: (...) -> LROPoller["models.IscsiTarget"]
+ """Create or Update an iSCSI Target.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param iscsi_target_name: The name of the iSCSI Target.
+ :type iscsi_target_name: str
+ :param iscsi_target_create_payload: Request payload for iSCSI Target create operation.
+ :type iscsi_target_create_payload: ~storage_pool_management.models.IscsiTargetCreate
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.PollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of LROPoller that returns either IscsiTarget or the result of cls(response)
+ :rtype: ~azure.core.polling.LROPoller[~storage_pool_management.models.IscsiTarget]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType["models.IscsiTarget"]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = self._create_or_update_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ iscsi_target_name=iscsi_target_name,
+ iscsi_target_create_payload=iscsi_target_create_payload,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+ return deserialized
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+
+ if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = NoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return LROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ def _update_initial(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ iscsi_target_name, # type: str
+ iscsi_target_update_payload, # type: "models.IscsiTargetUpdate"
+ **kwargs # type: Any
+ ):
+ # type: (...) -> Optional["models.IscsiTarget"]
+ cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.IscsiTarget"]]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ content_type = kwargs.pop("content_type", "application/json")
+ accept = "application/json"
+
+ # Construct URL
+ url = self._update_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str')
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ body_content_kwargs = {} # type: Dict[str, Any]
+ body_content = self._serialize.body(iscsi_target_update_payload, 'IscsiTargetUpdate')
+ body_content_kwargs['content'] = body_content
+ request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs)
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ _update_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ def begin_update(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ iscsi_target_name, # type: str
+ iscsi_target_update_payload, # type: "models.IscsiTargetUpdate"
+ **kwargs # type: Any
+ ):
+ # type: (...) -> LROPoller["models.IscsiTarget"]
+ """Update an iSCSI Target.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param iscsi_target_name: The name of the iSCSI Target.
+ :type iscsi_target_name: str
+ :param iscsi_target_update_payload: Request payload for iSCSI Target update operation.
+ :type iscsi_target_update_payload: ~storage_pool_management.models.IscsiTargetUpdate
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.PollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of LROPoller that returns either IscsiTarget or the result of cls(response)
+ :rtype: ~azure.core.polling.LROPoller[~storage_pool_management.models.IscsiTarget]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType["models.IscsiTarget"]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = self._update_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ iscsi_target_name=iscsi_target_name,
+ iscsi_target_update_payload=iscsi_target_update_payload,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+ return deserialized
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+
+ if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = NoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return LROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_update.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ def _delete_initial(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ iscsi_target_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> None
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self._delete_initial.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.delete(url, query_parameters, header_parameters)
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200, 202, 204]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ _delete_initial.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ def begin_delete(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ iscsi_target_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> LROPoller[None]
+ """Delete an iSCSI Target.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param iscsi_target_name: The name of the iSCSI Target.
+ :type iscsi_target_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :keyword str continuation_token: A continuation token to restart a poller from a saved state.
+ :keyword polling: True for ARMPolling, False for no polling, or a
+ polling object for personal polling strategy
+ :paramtype polling: bool or ~azure.core.polling.PollingMethod
+ :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
+ :return: An instance of LROPoller that returns either None or the result of cls(response)
+ :rtype: ~azure.core.polling.LROPoller[None]
+ :raises ~azure.core.exceptions.HttpResponseError:
+ """
+ polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod]
+ cls = kwargs.pop('cls', None) # type: ClsType[None]
+ lro_delay = kwargs.pop(
+ 'polling_interval',
+ self._config.polling_interval
+ )
+ cont_token = kwargs.pop('continuation_token', None) # type: Optional[str]
+ if cont_token is None:
+ raw_result = self._delete_initial(
+ resource_group_name=resource_group_name,
+ disk_pool_name=disk_pool_name,
+ iscsi_target_name=iscsi_target_name,
+ cls=lambda x,y,z: x,
+ **kwargs
+ )
+
+ kwargs.pop('error_map', None)
+ kwargs.pop('content_type', None)
+
+ def get_long_running_output(pipeline_response):
+ if cls:
+ return cls(pipeline_response, None, {})
+
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+
+ if polling is True: polling_method = ARMPolling(lro_delay, lro_options={'final-state-via': 'azure-async-operation'}, path_format_arguments=path_format_arguments, **kwargs)
+ elif polling is False: polling_method = NoPolling()
+ else: polling_method = polling
+ if cont_token:
+ return LROPoller.from_continuation_token(
+ polling_method=polling_method,
+ continuation_token=cont_token,
+ client=self._client,
+ deserialization_callback=get_long_running_output
+ )
+ else:
+ return LROPoller(self._client, raw_result, get_long_running_output, polling_method)
+ begin_delete.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
+
+ def get(
+ self,
+ resource_group_name, # type: str
+ disk_pool_name, # type: str
+ iscsi_target_name, # type: str
+ **kwargs # type: Any
+ ):
+ # type: (...) -> "models.IscsiTarget"
+ """Get an iSCSI Target.
+
+ :param resource_group_name: The name of the resource group. The name is case insensitive.
+ :type resource_group_name: str
+ :param disk_pool_name: The name of the Disk Pool.
+ :type disk_pool_name: str
+ :param iscsi_target_name: The name of the iSCSI Target.
+ :type iscsi_target_name: str
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: IscsiTarget, or the result of cls(response)
+ :rtype: ~storage_pool_management.models.IscsiTarget
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.IscsiTarget"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ # Construct URL
+ url = self.get.metadata['url'] # type: ignore
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self._config.subscription_id", self._config.subscription_id, 'str', min_length=1),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._]*[0-9A-Za-z]$'),
+ 'diskPoolName': self._serialize.url("disk_pool_name", disk_pool_name, 'str'),
+ 'iscsiTargetName': self._serialize.url("iscsi_target_name", iscsi_target_name, 'str'),
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ error = self._deserialize(models.Error, response)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ deserialized = self._deserialize('IscsiTarget', pipeline_response)
+
+ if cls:
+ return cls(pipeline_response, deserialized, {})
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.StoragePool/diskPools/{diskPoolName}/iscsiTargets/{iscsiTargetName}'} # type: ignore
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_operations.py b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_operations.py
new file mode 100644
index 00000000000..71f13daded2
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/operations/_operations.py
@@ -0,0 +1,110 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+from typing import TYPE_CHECKING
+import warnings
+
+from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error
+from azure.core.paging import ItemPaged
+from azure.core.pipeline import PipelineResponse
+from azure.core.pipeline.transport import HttpRequest, HttpResponse
+from azure.mgmt.core.exceptions import ARMErrorFormat
+
+from .. import models
+
+if TYPE_CHECKING:
+ # pylint: disable=unused-import,ungrouped-imports
+ from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar
+
+ T = TypeVar('T')
+ ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]]
+
+class Operations(object):
+ """Operations operations.
+
+ You should not instantiate this class directly. Instead, you should create a Client instance that
+ instantiates it for you and attaches it as an attribute.
+
+ :ivar models: Alias to model classes used in this operation group.
+ :type models: ~storage_pool_management.models
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self._config = config
+
+ def list(
+ self,
+ **kwargs # type: Any
+ ):
+ # type: (...) -> Iterable["models.StoragePoolOperationListResult"]
+ """Gets a list of StoragePool operations.
+
+ :keyword callable cls: A custom type or function that will be passed the direct response
+ :return: An iterator like instance of either StoragePoolOperationListResult or the result of cls(response)
+ :rtype: ~azure.core.paging.ItemPaged[~storage_pool_management.models.StoragePoolOperationListResult]
+ :raises: ~azure.core.exceptions.HttpResponseError
+ """
+ cls = kwargs.pop('cls', None) # type: ClsType["models.StoragePoolOperationListResult"]
+ error_map = {
+ 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError
+ }
+ error_map.update(kwargs.pop('error_map', {}))
+ api_version = "2021-04-01-preview"
+ accept = "application/json"
+
+ def prepare_request(next_link=None):
+ # Construct headers
+ header_parameters = {} # type: Dict[str, Any]
+ header_parameters['Accept'] = self._serialize.header("accept", accept, 'str')
+
+ if not next_link:
+ # Construct URL
+ url = self.list.metadata['url'] # type: ignore
+ # Construct parameters
+ query_parameters = {} # type: Dict[str, Any]
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ request = self._client.get(url, query_parameters, header_parameters)
+ else:
+ url = next_link
+ query_parameters = {} # type: Dict[str, Any]
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def extract_data(pipeline_response):
+ deserialized = self._deserialize('StoragePoolOperationListResult', pipeline_response)
+ list_of_elem = deserialized.value
+ if cls:
+ list_of_elem = cls(list_of_elem)
+ return None, iter(list_of_elem)
+
+ def get_next(next_link=None):
+ request = prepare_request(next_link)
+
+ pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs)
+ response = pipeline_response.http_response
+
+ if response.status_code not in [200]:
+ error = self._deserialize(models.Error, response)
+ map_error(status_code=response.status_code, response=response, error_map=error_map)
+ raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
+
+ return pipeline_response
+
+ return ItemPaged(
+ get_next, extract_data
+ )
+ list.metadata = {'url': '/providers/Microsoft.StoragePool/operations'} # type: ignore
diff --git a/src/diskpool/azext_diskpool/vendored_sdks/storagepool/py.typed b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/py.typed
new file mode 100644
index 00000000000..e5aff4f83af
--- /dev/null
+++ b/src/diskpool/azext_diskpool/vendored_sdks/storagepool/py.typed
@@ -0,0 +1 @@
+# Marker file for PEP 561.
\ No newline at end of file
diff --git a/src/diskpool/gen.zip b/src/diskpool/gen.zip
new file mode 100644
index 00000000000..523bb334ba9
Binary files /dev/null and b/src/diskpool/gen.zip differ
diff --git a/src/diskpool/report.md b/src/diskpool/report.md
new file mode 100644
index 00000000000..c4ba00c9126
--- /dev/null
+++ b/src/diskpool/report.md
@@ -0,0 +1,238 @@
+# Azure CLI Module Creation Report
+
+## EXTENSION
+|CLI Extension|Command Groups|
+|---------|------------|
+|az diskpool|[groups](#CommandGroups)
+
+## GROUPS
+### Command groups in `az diskpool` extension
+|CLI Command Group|Group Swagger name|Commands|
+|---------|------------|--------|
+|az disk-pool|DiskPools|[commands](#CommandsInDiskPools)|
+|az disk-pool iscsi-target|IscsiTargets|[commands](#CommandsInIscsiTargets)|
+
+## COMMANDS
+### Commands in `az disk-pool` group
+|CLI Command|Operation Swagger name|Parameters|Examples|
+|---------|------------|--------|-----------|
+|[az disk-pool list](#DiskPoolsListByResourceGroup)|ListByResourceGroup|[Parameters](#ParametersDiskPoolsListByResourceGroup)|[Example](#ExamplesDiskPoolsListByResourceGroup)|
+|[az disk-pool list](#DiskPoolsListBySubscription)|ListBySubscription|[Parameters](#ParametersDiskPoolsListBySubscription)|[Example](#ExamplesDiskPoolsListBySubscription)|
+|[az disk-pool show](#DiskPoolsGet)|Get|[Parameters](#ParametersDiskPoolsGet)|[Example](#ExamplesDiskPoolsGet)|
+|[az disk-pool create](#DiskPoolsCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersDiskPoolsCreateOrUpdate#Create)|[Example](#ExamplesDiskPoolsCreateOrUpdate#Create)|
+|[az disk-pool update](#DiskPoolsUpdate)|Update|[Parameters](#ParametersDiskPoolsUpdate)|[Example](#ExamplesDiskPoolsUpdate)|
+|[az disk-pool delete](#DiskPoolsDelete)|Delete|[Parameters](#ParametersDiskPoolsDelete)|[Example](#ExamplesDiskPoolsDelete)|
+|[az disk-pool list-skus](#DiskPoolsList)|List|[Parameters](#ParametersDiskPoolsList)|[Example](#ExamplesDiskPoolsList)|
+|[az disk-pool start](#DiskPoolsStart)|Start|[Parameters](#ParametersDiskPoolsStart)|[Example](#ExamplesDiskPoolsStart)|
+|[az disk-pool stop](#DiskPoolsDeallocate)|Deallocate|[Parameters](#ParametersDiskPoolsDeallocate)|[Example](#ExamplesDiskPoolsDeallocate)|
+
+### Commands in `az disk-pool iscsi-target` group
+|CLI Command|Operation Swagger name|Parameters|Examples|
+|---------|------------|--------|-----------|
+|[az disk-pool iscsi-target list](#IscsiTargetsListByDiskPool)|ListByDiskPool|[Parameters](#ParametersIscsiTargetsListByDiskPool)|[Example](#ExamplesIscsiTargetsListByDiskPool)|
+|[az disk-pool iscsi-target show](#IscsiTargetsGet)|Get|[Parameters](#ParametersIscsiTargetsGet)|[Example](#ExamplesIscsiTargetsGet)|
+|[az disk-pool iscsi-target create](#IscsiTargetsCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersIscsiTargetsCreateOrUpdate#Create)|[Example](#ExamplesIscsiTargetsCreateOrUpdate#Create)|
+|[az disk-pool iscsi-target update](#IscsiTargetsUpdate)|Update|[Parameters](#ParametersIscsiTargetsUpdate)|[Example](#ExamplesIscsiTargetsUpdate)|
+|[az disk-pool iscsi-target delete](#IscsiTargetsDelete)|Delete|[Parameters](#ParametersIscsiTargetsDelete)|[Example](#ExamplesIscsiTargetsDelete)|
+
+
+## COMMAND DETAILS
+### group `az disk-pool`
+#### Command `az disk-pool list`
+
+##### Example
+```
+az disk-pool list --resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+
+#### Command `az disk-pool list`
+
+##### Example
+```
+az disk-pool list
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+
+#### Command `az disk-pool show`
+
+##### Example
+```
+az disk-pool show --name "myDiskPool" --resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+
+#### Command `az disk-pool create`
+
+##### Example
+```
+az disk-pool create --location "westus" --availability-zones "1" --disks "/subscriptions/11111111-1111-1111-1111-111111\
+111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_0" --disks \
+"/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/v\
+m-name_DataDisk_1" --subnet-id "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/prov\
+iders/Microsoft.Network/virtualNetworks/myvnet/subnets/mysubnet" --sku name="Basic_V0" tier="Basic" --tags key="value" \
+--name "myDiskPool" --resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+|**--sku**|object|Determines the SKU of the Disk Pool|sku|sku|
+|**--location**|string|The geo-location where the resource lives.|location|location|
+|**--subnet-id**|string|Azure Resource ID of a Subnet for the Disk Pool.|subnet_id|subnetId|
+|**--tags**|dictionary|Resource tags.|tags|tags|
+|**--availability-zones**|array|Logical zone for Disk Pool resource; example: ["1"].|availability_zones|availabilityZones|
+|**--disks**|array|List of Azure Managed Disks to attach to a Disk Pool.|disks|disks|
+|**--additional-capabilities**|array|List of additional capabilities for a Disk Pool.|additional_capabilities|additionalCapabilities|
+
+#### Command `az disk-pool update`
+
+##### Example
+```
+az disk-pool update --name "myDiskPool" --disks "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myR\
+esourceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_0" --disks "/subscriptions/11111111-1111-1111-1111-1111\
+11111111/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/vm-name_DataDisk_1" --tags key="value" \
+--resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+|**--tags**|dictionary|Resource tags.|tags|tags|
+|**--disks**|array|List of Azure Managed Disks to attach to a Disk Pool.|disks|disks|
+
+#### Command `az disk-pool delete`
+
+##### Example
+```
+az disk-pool delete --name "myDiskPool" --resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+
+#### Command `az disk-pool list-skus`
+
+##### Example
+```
+az disk-pool list-skus --location "eastus"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--location**|string|The location of the resource.|location|location|
+
+#### Command `az disk-pool start`
+
+##### Example
+```
+az disk-pool start --name "myDiskPool" --resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+
+#### Command `az disk-pool stop`
+
+##### Example
+```
+az disk-pool stop --name "myDiskPool" --resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+
+### group `az disk-pool iscsi-target`
+#### Command `az disk-pool iscsi-target list`
+
+##### Example
+```
+az disk-pool iscsi-target list --disk-pool-name "myDiskPool" --resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+
+#### Command `az disk-pool iscsi-target show`
+
+##### Example
+```
+az disk-pool iscsi-target show --disk-pool-name "myDiskPool" --name "myIscsiTarget" --resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+|**--iscsi-target-name**|string|The name of the iSCSI Target.|iscsi_target_name|iscsiTargetName|
+
+#### Command `az disk-pool iscsi-target create`
+
+##### Example
+```
+az disk-pool iscsi-target create --disk-pool-name "myDiskPool" --acl-mode "Dynamic" --luns name="lun0" \
+managed-disk-azure-resource-id="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/prov\
+iders/Microsoft.Compute/disks/vm-name_DataDisk_1" --target-iqn "iqn.2005-03.org.iscsi:server1" --name "myIscsiTarget" \
+--resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+|**--iscsi-target-name**|string|The name of the iSCSI Target.|iscsi_target_name|iscsiTargetName|
+|**--acl-mode**|choice|Mode for Target connectivity.|acl_mode|aclMode|
+|**--target-iqn**|string|iSCSI Target IQN (iSCSI Qualified Name); example: "iqn.2005-03.org.iscsi:server".|target_iqn|targetIqn|
+|**--static-acls**|array|Access Control List (ACL) for an iSCSI Target; defines LUN masking policy|static_acls|staticAcls|
+|**--luns**|array|List of LUNs to be exposed through iSCSI Target.|luns|luns|
+
+#### Command `az disk-pool iscsi-target update`
+
+##### Example
+```
+az disk-pool iscsi-target update --disk-pool-name "myDiskPool" --name "myIscsiTarget" --luns name="lun0" \
+managed-disk-azure-resource-id="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/prov\
+iders/Microsoft.Compute/disks/vm-name_DataDisk_1" --static-acls initiator-iqn="iqn.2005-03.org.iscsi:client" \
+mapped-luns="lun0" --resource-group "myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+|**--iscsi-target-name**|string|The name of the iSCSI Target.|iscsi_target_name|iscsiTargetName|
+|**--static-acls**|array|Access Control List (ACL) for an iSCSI Target; defines LUN masking policy|static_acls|staticAcls|
+|**--luns**|array|List of LUNs to be exposed through iSCSI Target.|luns|luns|
+
+#### Command `az disk-pool iscsi-target delete`
+
+##### Example
+```
+az disk-pool iscsi-target delete --disk-pool-name "myDiskPool" --name "myIscsiTarget" --resource-group \
+"myResourceGroup"
+```
+##### Parameters
+|Option|Type|Description|Path (SDK)|Swagger name|
+|------|----|-----------|----------|------------|
+|**--resource-group-name**|string|The name of the resource group. The name is case insensitive.|resource_group_name|resourceGroupName|
+|**--disk-pool-name**|string|The name of the Disk Pool.|disk_pool_name|diskPoolName|
+|**--iscsi-target-name**|string|The name of the iSCSI Target.|iscsi_target_name|iscsiTargetName|
diff --git a/src/diskpool/setup.cfg b/src/diskpool/setup.cfg
new file mode 100644
index 00000000000..2fdd96e5d39
--- /dev/null
+++ b/src/diskpool/setup.cfg
@@ -0,0 +1 @@
+#setup.cfg
\ No newline at end of file
diff --git a/src/diskpool/setup.py b/src/diskpool/setup.py
new file mode 100644
index 00000000000..d63937f7c2e
--- /dev/null
+++ b/src/diskpool/setup.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+
+# --------------------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# --------------------------------------------------------------------------------------------
+
+
+from codecs import open
+from setuptools import setup, find_packages
+
+# HISTORY.rst entry.
+VERSION = '0.1.0'
+try:
+ from azext_diskpool.manual.version import VERSION
+except ImportError:
+ pass
+
+# The full list of classifiers is available at
+# https://pypi.python.org/pypi?%3Aaction=list_classifiers
+CLASSIFIERS = [
+ 'Development Status :: 4 - Beta',
+ 'Intended Audience :: Developers',
+ 'Intended Audience :: System Administrators',
+ 'Programming Language :: Python',
+ 'Programming Language :: Python :: 3',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: 3.8',
+ 'License :: OSI Approved :: MIT License',
+]
+
+DEPENDENCIES = []
+
+try:
+ from azext_diskpool.manual.dependency import DEPENDENCIES
+except ImportError:
+ pass
+
+with open('README.md', 'r', encoding='utf-8') as f:
+ README = f.read()
+with open('HISTORY.rst', 'r', encoding='utf-8') as f:
+ HISTORY = f.read()
+
+setup(
+ name='diskpool',
+ version=VERSION,
+ description='Microsoft Azure Command-Line Tools StoragePoolManagement Extension',
+ author='Microsoft Corporation',
+ author_email='azpycli@microsoft.com',
+ url='https://github.com/Azure/azure-cli-extensions/tree/master/src/diskpool',
+ long_description=README + '\n\n' + HISTORY,
+ license='MIT',
+ classifiers=CLASSIFIERS,
+ packages=find_packages(),
+ install_requires=DEPENDENCIES,
+ package_data={'azext_diskpool': ['azext_metadata.json']},
+)
diff --git a/src/service_name.json b/src/service_name.json
index 1aca3d20c18..5c646e1b589 100644
--- a/src/service_name.json
+++ b/src/service_name.json
@@ -114,6 +114,11 @@
"AzureServiceName": "Azure Data Share",
"URL": "https://docs.microsoft.com/azure/data-share/"
},
+ {
+ "Command": "az disk-pool",
+ "AzureServiceName": "Azure Disk Pool Service",
+ "URL": "https://docs.microsoft.com/azure/disk-pool/"
+ },
{
"Command": "az dedicated-hsm",
"AzureServiceName": "Azure Dedicated HSM",