Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
205 changes: 205 additions & 0 deletions src/command_modules/azure-cli-acr/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
Microsoft Azure CLI 'acr' Command Module
==================================

This package has [not] been tested [much] with Python 2.7, 3.4 and 3.5.

Commands to manage Azure container registries
-------------
::

Group
az acr: Commands to manage Azure container registries.

Commands:
catalog: The catalog of repositories in the specified registry.
create : Create a container registry.
delete : Delete a container registry.
list : List container registries.
show : Get a container registry.
tags : The list of tags for a given repository in the specified registry.
update : Update a container registry.

List container registries
-------------
::

Command
az acr list: List container registries.

Arguments
--resource-group -g: Name of resource group.

Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--output -o : Output format. Allowed values: json, jsonc, list, table, tsv. Default:
json.
--query : JMESPath query string. See http://jmespath.org/ for more information and
examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.

Examples
List container registries and show result in a table
az acr list -o table
List container registries in a resource group and show result in a table
az acr list -g <resource-group> -o table

Create a container registry
-------------
::

Command
az acr create: Create a container registry.

Arguments
--location -l [Required]: Location.
--name -n [Required]: The primary resource name.
--resource-group -g [Required]: Name of resource group.
--storage-account-key -k : Key of storage account.
--storage-account-name -s : Name of storage account.

Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--output -o : Output format. Allowed values: json, jsonc, list, table, tsv.
Default: json.
--query : JMESPath query string. See http://jmespath.org/ for more
information and examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.

Examples
Create a container registry with managed storage account
az acr create -n <registry-name> -g <resource-group> -l <location>
Create a container registry with new/existing storage account in the current subscription
az acr create -n <registry-name> -g <resource-group> -l <location> -s <storage-account-name>
Create a container registry with your own storage account
az acr create -n <registry-name> -g <resource-group> -l <location> -s <storage-account-name>
-k <storage-account-key>

Delete a container registry
-------------
::

Command
az acr delete: Delete a container registry.

Arguments
--name -n [Required]: The primary resource name.

Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--output -o : Output format. Allowed values: json, jsonc, list, table, tsv. Default:
json.
--query : JMESPath query string. See http://jmespath.org/ for more information and
examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.

Examples
Delete a container registry
az acr delete -n <registry-name>

Get a container registry
-------------
::

Command
az acr show: Get a container registry.

Arguments
--name -n [Required]: The primary resource name.

Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--output -o : Output format. Allowed values: json, jsonc, list, table, tsv. Default:
json.
--query : JMESPath query string. See http://jmespath.org/ for more information and
examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.

Examples
Get a container registry and show result in a table
az acr show -n <registry-name> -o table

Update a container registry
-------------
::

Command
az acr update: Update a container registry.

Arguments
--name -n [Required]: The primary resource name.
--tags : Multiple semicolon separated tags in 'key[=value]' format. Use "" to
clear existing tags.

Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--output -o : Output format. Allowed values: json, jsonc, list, table, tsv. Default:
json.
--query : JMESPath query string. See http://jmespath.org/ for more information and
examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.

Examples
Update tags of a container registry and show result in a table
az acr update -n <registry-name> --tags key1=value1;key2=value2 -o table

The catalog of repositories in the specified registry
-------------
::

Command
az acr catalog: The catalog of repositories in the specified registry.

Arguments
--name -n [Required]: The primary resource name.
--password : The password used to log into the container registry.
--username : The username used to log into the container registry.

Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--output -o : Output format. Allowed values: json, jsonc, list, table, tsv. Default:
json.
--query : JMESPath query string. See http://jmespath.org/ for more information and
examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.

Examples
The catalog of repositories in a registry under the current subscription
az acr catalog -n <registry-name>
The catalog of repositories in any registry with credentials
az acr catalog -n <registry-name> --username <username> --password <password>

The list of tags for a given repository in the specified registry
-------------
::

Command
az acr tags: The list of tags for a given repository in the specified registry.

Arguments
--name -n [Required]: The primary resource name.
--repository [Required]: The repository to obtain tags from.
--password : The password used to log into the container registry.
--username : The username used to log into the container registry.

Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--output -o : Output format. Allowed values: json, jsonc, list, table, tsv.
Default: json.
--query : JMESPath query string. See http://jmespath.org/ for more information
and examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.

Examples
The list of tags for a given repository in a registry under the current subscription
az acr tags -n <registry-name> --repository <repository>
The list of tags for a given repository in any registry with credentials
az acr tags -n <registry-name> --repository <repository> --username <username> --password
<password>

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

# pylint: disable=unused-import

import azure.cli.command_modules.registry._help
import azure.cli.command_modules.registry._params
import azure.cli.command_modules.registry.custom
import azure.cli.command_modules.registry.repository
import azure.cli.command_modules.acr._help
import azure.cli.command_modules.acr._params
import azure.cli.command_modules.acr.custom
import azure.cli.command_modules.acr.repository
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,13 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
#---------------------------------------------------------------------------------------------

from azure.cli.command_modules.registry.mgmt_cr.models import RegistryParameters
from azure.cli.command_modules.acr.containerregistry.models import RegistryParameters

from ._factory import (
get_arm_service_client,
get_storage_end_point_url
)
from ._factory import get_arm_service_client

from azure.cli.command_modules.registry.mgmt_cr import VERSION
from azure.cli.command_modules.acr.containerregistry import VERSION

resource_type = 'Microsoft.Krater/registries'
resource_type = 'Microsoft.ContainerRegistry/registries'

def arm_get_registries_in_subscription():
'''Returns the list of container registries in the current subscription.
Expand Down Expand Up @@ -47,52 +44,29 @@ def arm_get_registry_by_name(registry_name):
else:
raise ValueError('More than one container registries are found with name: ' + registry_name)

def arm_deploy_template_dedicated(resource_group, registry_name, location,
storage_account_name, deployment_name):
def arm_deploy_template(resource_group, registry_name, location, storage_account_name, deployment_name, mode='incremental'):
'''Deploys ARM template to create a container registry using the storage account in the current subscription.
:param str resource_group: The name of resource group
:param str registry_name: The name of container registry
:param str location: The name of location
:param str storage_account_name: The name of storage account
:param str deployment_name: The name of deployment
'''
parameters = _parameters_dedicated(registry_name, location, storage_account_name)
return _arm_deploy_template(resource_group, deployment_name, 'template.dedicated.json', parameters)

def arm_deploy_template_byos(resource_group, registry_name, location,
storage_account_name, storage_account_key, deployment_name):
'''Deploys ARM template to create a container registry using the user's own storage account.
:param str resource_group: The name of resource group
:param str registry_name: The name of container registry
:param str location: The name of location
:param str storage_account_name: The name of storage account
:param str storage_account_key: The key of storage account
:param str deployment_name: The name of deployment
'''
parameters = _parameters_byos(registry_name, location, storage_account_name, storage_account_key)
return _arm_deploy_template(resource_group, deployment_name, 'template.byos.json', parameters)

def _arm_deploy_template(resource_group, deployment_name, template_path, parameters, mode='incremental'):
'''Deploys ARM template to create a container registry.
:param str resource_group: The name of resource group
:param str deployment_name: The name of deployment
:param str template_path: The template file path
:param dict parameters: The parameters for this deployment
:param str mode: The mode of deployment
'''
from azure.mgmt.resource.resources.models import DeploymentProperties
from azure.cli._util import get_file_json
from azure.cli.core._util import get_file_json
import os

file_path = os.path.join(os.path.dirname(__file__), template_path)
file_path = os.path.join(os.path.dirname(__file__), 'template.json')
template = get_file_json(file_path)
parameters = _parameters(registry_name, location, storage_account_name)
properties = DeploymentProperties(template=template, parameters=parameters, mode=mode)

client = get_arm_service_client()

return client.deployments.create_or_update(resource_group, deployment_name, properties)

def _parameters_dedicated(registry_name, location, storage_account_name):
def _parameters(registry_name, location, storage_account_name):
'''Returns a dict of deployment parameters
:param str registry_name: The name of container registry
:param str location: The name of location
Expand All @@ -107,20 +81,3 @@ def _parameters_dedicated(registry_name, location, storage_account_name):
'storageAccountApiVersion': {'value': '2015-05-01-preview'}
}
return parameters

def _parameters_byos(registry_name, location, storage_account_name, storage_account_key):
'''Returns a dict of deployment parameters
:param str registry_name: The name of container registry
:param str location: The name of location
:param str storage_account_name: The name of storage account
:param str storage_account_key: The key of storage account
'''
parameters = {
'registryName': {'value': registry_name},
'registryLocation': {'value': location},
'registryApiVersion': {'value': VERSION},
'storageAccountName': {'value': storage_account_name},
'storageAccountKey': {'value': storage_account_key},
'storageEndPointUrl': {'value': get_storage_end_point_url(storage_account_name)}
}
return parameters
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,20 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
#---------------------------------------------------------------------------------------------

from azure.cli._profile import Profile
from azure.cli.commands.client_factory import (
from azure.cli.core._profile import Profile
from azure.cli.core.commands.client_factory import (
configure_common_settings,
get_mgmt_service_client
)

from azure.cli._azure_env import (
get_env,
ENDPOINT_URLS
)

from azure.cli.command_modules.registry.mgmt_cr import (
from azure.cli.command_modules.acr.containerregistry import (
ContainerRegistry,
ContainerRegistryConfiguration,
VERSION
)

from azure.mgmt.resource.resources import ResourceManagementClient
from azure.storage._constants import SERVICE_HOST_BASE

def get_arm_service_client():
'''Returns the client for managing ARM resources.
Expand All @@ -31,17 +27,16 @@ def get_registry_service_client():
'''Returns the client for managing container registries.
'''
profile = Profile()
cred, subscription_id, _ = profile.get_login_credentials()
credentials, subscription_id, _ = profile.get_login_credentials()

config = ContainerRegistryConfiguration(subscription_id, VERSION, cred, base_url=get_env()[ENDPOINT_URLS.RESOURCE_MANAGER])
config = ContainerRegistryConfiguration(subscription_id, VERSION, credentials)
client = ContainerRegistry(config)

configure_common_settings(client)

return client.registries

def get_storage_end_point_url(storage_account_name):
'''Returns the end point url for the storage account name
:param str storage_account_name: The name of storage account
def get_storage_end_point_suffix():
'''Returns storage account end point suffix
'''
return 'https://' + storage_account_name + '.' + get_env()[ENDPOINT_URLS.STORAGE_END_POINT_SUFFIX]
return SERVICE_HOST_BASE
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def _format(item):
'''
if isinstance(item, dict) and 'id' in item and '/providers/Microsoft.Resources/deployments/' in item['id']:
return _format_deployment(item)
elif isinstance(item, dict) and 'id' in item and '/providers/Microsoft.Krater/registries/' in item['id']:
elif isinstance(item, dict) and 'id' in item and '/providers/Microsoft.ContainerRegistry/registries/' in item['id']:
return _format_registry(item)
else:
raise ValueError('Unknown item: ' + str(item))
Expand Down
Loading