def validate_capabilities(ns): """ Extracts multiple space-separated capabilities """ from azure.mgmt.cosmosdb.models import Capability if ns.capabilities is not None: capabilties_list = [] for item in ns.capabilities: capabilties_list.append(Capability(name=item)) ns.capabilities = capabilties_list
def create_resource(self, name, **kwargs): if self.is_live: capabilities = Capability(name='EnableTable') db_params = DatabaseAccountCreateUpdateParameters( capabilities=[capabilities], locations=[{'location_name': self.location}], location=self.location, ) self.client = self.create_mgmt_client(CosmosDBManagementClient) group = self._get_resource_group(**kwargs) cosmos_async_operation = self.client.database_accounts.begin_create_or_update( group.name, name, db_params ) self.resource = cosmos_async_operation.result() cosmos_keys = self.client.database_accounts.list_keys( group.name, name ) self.cosmos_key = cosmos_keys.primary_master_key self.cosmos_account_name = name self.test_class_instance.scrubber.register_name_pair( name, self.resource_moniker ) self.primary_endpoint = 'https://{}.table.cosmos.azure.com:443/'.format(name) else: self.resource = StorageAccount( location=self.location ) self.resource.name = name self.resource.id = name self.primary_endpoint = 'https://{}.table.cosmos.azure.com:443/'.format(name) self.cosmos_key = 'ZmFrZV9hY29jdW50X2tleQ==' self.cosmos_account_name = name return { self.parameter_name: self.resource, '{}_key'.format(self.parameter_name): self.cosmos_key, '{}_cs'.format(self.parameter_name): ";".join([ "DefaultEndpointsProtocol=https", "AccountName={}".format(self.cosmos_account_name), "AccountKey={}".format(self.cosmos_key), "TableEndpoint={}".format(self.primary_endpoint) ]) }
def __get_cosmosdb_steps(self, cmd, name, location): from azure.mgmt.cosmosdb import CosmosDBManagementClient from azure.mgmt.cosmosdb.models import Capability from azure.cli.core.commands.client_factory import get_mgmt_service_client steps = [] cosmosdb_client = get_mgmt_service_client(cmd.cli_ctx, CosmosDBManagementClient) from azure.mgmt.cosmosdb.models import ( DatabaseAccountCreateUpdateParameters, DatabaseAccountKind, Location, MongoDBDatabaseCreateUpdateParameters) server_params = { 'resource_group_name': name, 'account_name': name, 'create_update_parameters': DatabaseAccountCreateUpdateParameters( location=location, locations=[ Location(location_name=location, failover_priority=0, is_zone_redundant=False) ], kind=DatabaseAccountKind.mongo_db.value, capabilities=[ Capability(name='EnableMongo'), Capability(name='EnableServerless'), Capability(name='DisableRateLimitingResponses') ], tags={'CosmosAccountType': 'Non-Production'}) } steps.append( DatabaseCreationStep( 'server', cosmosdb_client.database_accounts.create_or_update, server_params)) database_params = { 'resource_group_name': name, 'account_name': name, 'database_name': name, 'create_update_mongo_db_database_parameters': MongoDBDatabaseCreateUpdateParameters(resource={'id': name}, options={}) } steps.append( DatabaseCreationStep( 'database', cosmosdb_client.mongo_db_resources. create_update_mongo_db_database, database_params)) def retrieve_password(): result = cosmosdb_client.database_accounts.list_keys( resource_group_name=name, account_name=name) self.password = result.primary_master_key steps.append( DatabaseCreationStep('retrieve password', retrieve_password, None)) return steps