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
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
/src/azure-cli/azure/cli/command_modules/iot/ @digimaun @zhoxing-ms @yanzhudd
/src/azure-cli/azure/cli/command_modules/keyvault/ @evelyn-ys @jiasli @calvinhzy
/src/azure-cli/azure/cli/command_modules/monitor/ @jsntcy @kairu-ms @necusjz
/src/azure-cli/azure/cli/command_modules/mysql/ @honghr @evelyn-ys
/src/azure-cli/azure/cli/command_modules/natgateway/ @khannarheams @jsntcy @kairu-ms @necusjz
/src/azure-cli/azure/cli/command_modules/network/ @jsntcy @kairu-ms @wangzelin007 @necusjz
/src/azure-cli/azure/cli/command_modules/policyinsights/ @cheggert
Expand Down
3 changes: 2 additions & 1 deletion doc/sphinx/azhelpgen/doc_source_map.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"managedservices": "src/azure-cli/azure/cli/command_modules/managedservices/_help.py",
"maps": "src/azure-cli/azure/cli/command_modules/maps/_help.py",
"monitor": "src/azure-cli/azure/cli/command_modules/monitor/_help.py",
"mysql": "src/azure-cli/azure/cli/command_modules/mysql/_help.py",
"netappfiles": "src/azure-cli/azure/cli/command_modules/netappfiles/_help.py",
"network": "src/azure-cli/azure/cli/command_modules/network/_help.py",
"policy": "src/azure-cli/azure/cli/command_modules/resource/_help.py",
Expand All @@ -76,4 +77,4 @@
"util": "src/azure-cli/azure/cli/command_modules/util/_help.py",
"vm": "src/azure-cli/azure/cli/command_modules/vm/_help.py",
"vmss": "src/azure-cli/azure/cli/command_modules/vm/_help.py"
}
}
51 changes: 51 additions & 0 deletions src/azure-cli/azure/cli/command_modules/mysql/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------

from azure.cli.core import AzCommandsLoader, ModExtensionSuppress
from azure.cli.core.commands import CliCommandType
from azure.cli.core.profiles import ResourceType
from azure.cli.command_modules.mysql.commands import load_command_table
from azure.cli.command_modules.mysql._params import load_arguments
from azure.cli.command_modules.mysql._util import MysqlArgumentContext
import azure.cli.command_modules.mysql._help # pylint: disable=unused-import


class MysqlCommandsLoader(AzCommandsLoader):

def __init__(self, cli_ctx=None):
mysql_custom = CliCommandType(operations_tmpl='azure.cli.command_modules.mysql.custom#{}')
super().__init__(
cli_ctx=cli_ctx,
resource_type=ResourceType.MGMT_RDBMS,
custom_command_type=mysql_custom,
argument_context_cls=MysqlArgumentContext,
suppress_extension=ModExtensionSuppress(
__name__,
'rdbms-vnet',
'10.0.1',
reason='These commands are now in the CLI.',
recommend_remove=True))

def load_command_table(self, args):
from azure.cli.core.aaz import load_aaz_command_table
try:
from . import aaz
except ImportError:
aaz = None
if aaz:
load_aaz_command_table(
loader=self,
aaz_pkg_name=aaz.__name__,
args=args
)

load_command_table(self, args)
return self.command_table

def load_arguments(self, command):
load_arguments(self, command)


COMMAND_LOADER_CLS = MysqlCommandsLoader
101 changes: 101 additions & 0 deletions src/azure-cli/azure/cli/command_modules/mysql/_client_factory.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------

from azure.cli.core.commands.client_factory import get_mgmt_service_client
from azure.cli.core.profiles import ResourceType
from azure.cli.core.auth.identity import get_environment_credential, AZURE_CLIENT_ID

# pylint: disable=import-outside-toplevel

RM_URI_OVERRIDE = 'AZURE_CLI_RDBMS_RM_URI'
SUB_ID_OVERRIDE = 'AZURE_CLI_RDBMS_SUB_ID'


def get_mysql_flexible_management_client(cli_ctx, **_):
from os import getenv
from azure.mgmt.rdbms.mysql_flexibleservers import MySQLManagementClient

# Allow overriding resource manager URI using environment variable
# for testing purposes. Subscription id is also determined by environment
# variable.
rm_uri_override = getenv(RM_URI_OVERRIDE)
if rm_uri_override:
client_id = getenv(AZURE_CLIENT_ID)
if client_id:
credentials = get_environment_credential()
else:
from msrest.authentication import Authentication # pylint: disable=import-error
credentials = Authentication()

return MySQLManagementClient(
subscription_id=getenv(SUB_ID_OVERRIDE),
base_url=rm_uri_override,
credential=credentials)
# Normal production scenario.
return get_mgmt_service_client(cli_ctx, MySQLManagementClient)


# Meru operations for flexible servers
def cf_mysql_flexible_servers(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).servers


def cf_mysql_flexible_firewall_rules(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).firewall_rules


def cf_mysql_flexible_config(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).configurations


def cf_mysql_flexible_db(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).databases


def cf_mysql_flexible_replica(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).replicas


def cf_mysql_flexible_location_capabilities(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).location_based_capabilities


def cf_mysql_flexible_log(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).log_files


def cf_mysql_flexible_backups(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).backups


def cf_mysql_flexible_adadmin(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).azure_ad_administrators


def cf_mysql_check_resource_availability(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).check_name_availability


def cf_mysql_check_resource_availability_without_location(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).check_name_availability_without_location


def cf_mysql_flexible_private_dns_zone_suffix_operations(cli_ctx, _):
return get_mysql_flexible_management_client(cli_ctx).get_private_dns_zone_suffix


def resource_client_factory(cli_ctx, subscription_id=None):
return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_RESOURCE_RESOURCES, subscription_id=subscription_id)


def private_dns_client_factory(cli_ctx, subscription_id=None):
from azure.mgmt.privatedns import PrivateDnsManagementClient
return get_mgmt_service_client(cli_ctx, PrivateDnsManagementClient, subscription_id=subscription_id).private_zones


def private_dns_link_client_factory(cli_ctx, subscription_id=None):
from azure.mgmt.privatedns import PrivateDnsManagementClient
return get_mgmt_service_client(cli_ctx, PrivateDnsManagementClient,
subscription_id=subscription_id).virtual_network_links
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# --------------------------------------------------------------------------------------------

from knack.help_files import helps # pylint: disable=unused-import
# pylint: disable=line-too-long, too-many-lines


helps['mysql flexible-server'] = """
type: group
Expand Down
Loading