def test_deploy_function_app_pre_existing_app_fetch_actual_sku_tier(self): parameters = FunctionAppUtilities.FunctionAppInfrastructureParameters( app_insights={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': 'cloud-custodian-test' }, storage_account={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': self.storage_name }, service_plan={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': 'cloud-custodian-test', 'sku_tier': 'something wrong' }, function_app={ 'name': self.dedicated_function_name, 'resource_group_name': CONST_GROUP_NAME }) FunctionAppUtilities.deploy_function_app(parameters) self.assertEqual(parameters.service_plan['sku_tier'], 'Basic')
def provision(config): log = logging.getLogger('c7n_mailer.azure.deploy') function_name = config.get('function_name', 'mailer') function_properties = config.get('function_properties', {}) # service plan is parse first, because its location might be shared with storage & insights service_plan = AzureFunctionMode.extract_properties( function_properties, 'servicePlan', { 'name': 'cloud-custodian', 'location': 'eastus', 'resource_group_name': 'cloud-custodian', 'sku_tier': 'Dynamic', # consumption plan 'sku_name': 'Y1' }) location = service_plan.get('location', 'eastus') rg_name = service_plan['resource_group_name'] sub_id = local_session(Session).get_subscription_id() suffix = StringUtils.naming_hash(rg_name + sub_id) storage_account = AzureFunctionMode.extract_properties( function_properties, 'storageAccount', { 'name': 'mailerstorage' + suffix, 'location': location, 'resource_group_name': rg_name }) app_insights = AzureFunctionMode.extract_properties( function_properties, 'appInsights', { 'name': service_plan['name'], 'location': location, 'resource_group_name': rg_name }) function_app_name = FunctionAppUtilities.get_function_name( '-'.join([service_plan['name'], function_name]), suffix) FunctionAppUtilities.validate_function_name(function_app_name) params = FunctionAppUtilities.FunctionAppInfrastructureParameters( app_insights=app_insights, service_plan=service_plan, storage_account=storage_account, function_app_resource_group_name=service_plan['resource_group_name'], function_app_name=function_app_name) FunctionAppUtilities.deploy_function_app(params) log.info("Building function package for %s" % function_app_name) package = build_function_package(config, function_name, sub_id) log.info("Function package built, size is %dMB" % (package.pkg.size / (1024 * 1024))) FunctionAppUtilities.publish_functions_package(params, package)
def provision(config): log = logging.getLogger('c7n_mailer.azure.deploy') function_name = config.get('function_name', 'mailer') function_properties = config.get('function_properties', {}) # service plan is parse first, because its location might be shared with storage & insights service_plan = AzureFunctionMode.extract_properties(function_properties, 'servicePlan', { 'name': 'cloud-custodian', 'location': 'eastus', 'resource_group_name': 'cloud-custodian', 'sku_tier': 'Dynamic', # consumption plan 'sku_name': 'Y1' }) location = service_plan.get('location', 'eastus') rg_name = service_plan['resource_group_name'] sub_id = local_session(Session).get_subscription_id() suffix = StringUtils.naming_hash(rg_name + sub_id) storage_account = AzureFunctionMode.extract_properties(function_properties, 'storageAccount', {'name': 'mailerstorage' + suffix, 'location': location, 'resource_group_name': rg_name}) app_insights = AzureFunctionMode.extract_properties(function_properties, 'appInsights', {'name': service_plan['name'], 'location': location, 'resource_group_name': rg_name}) function_app_name = FunctionAppUtilities.get_function_name( '-'.join([service_plan['name'], function_name]), suffix) FunctionAppUtilities.validate_function_name(function_app_name) params = FunctionAppUtilities.FunctionAppInfrastructureParameters( app_insights=app_insights, service_plan=service_plan, storage_account=storage_account, function_app_resource_group_name=service_plan['resource_group_name'], function_app_name=function_app_name) FunctionAppUtilities.deploy_function_app(params) log.info("Building function package for %s" % function_app_name) package = build_function_package(config, function_name) log.info("Function package built, size is %dMB" % (package.pkg.size / (1024 * 1024))) FunctionAppUtilities.publish_functions_package(params, package)
def test_deploy_function_app(self): parameters = FunctionAppUtilities.FunctionAppInfrastructureParameters( app_insights={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': 'cloud-custodian-test' }, storage_account={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': self.storage_name }, service_plan={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': 'cloud-custodian-test', 'location': 'westus2' }, function_app={ 'resource_group_name': CONST_GROUP_NAME, 'name': 'custodian-test-app' }) app = FunctionAppUtilities.deploy_function_app(parameters) self.assertIsNotNone(app)
def provision(self): if sys.version_info[0] < 3: self.log.error( "Python 2.7 is not supported for deploying Azure Functions.") sys.exit(1) self.function_params = self.get_function_app_params() self.function_app = FunctionAppUtilities.deploy_function_app( self.function_params)
def provision(self): # Make sure we have auth data for function provisioning session = local_session(self.policy.session_factory) session.get_functions_auth_string() if sys.version_info[0] < 3: self.log.error("Python 2.7 is not supported for deploying Azure Functions.") sys.exit(1) self.function_params = self.get_function_app_params() self.function_app = FunctionAppUtilities.deploy_function_app(self.function_params)
def provision(self): # Make sure we have auth data for function provisioning session = local_session(self.policy.session_factory) session.get_functions_auth_string("") self.target_subscription_ids = session.get_function_target_subscription_ids( ) self.function_params = self.get_function_app_params() self.function_app = FunctionAppUtilities.deploy_function_app( self.function_params)
def provision(self): # Make sure we have auth data for function provisioning session = local_session(self.policy.session_factory) if jmespath.search('mode."provision-options".identity.type', self.policy.data) in (AUTH_TYPE_EMBED, None): session.get_functions_auth_string("") self.target_subscription_ids = session.get_function_target_subscription_ids( ) self.function_params = self.get_function_app_params() self.function_app = FunctionAppUtilities.deploy_function_app( self.function_params)
def test_deploy_function_app_pre_existing_app_fetch_actual_sku_tier(self): parameters = FunctionAppUtilities.FunctionAppInfrastructureParameters( app_insights={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': 'cloud-custodian-test' }, storage_account={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': 'cloudcustodiantest' }, service_plan={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': 'cloud-custodian-test', 'sku_tier': 'something wrong' }, function_app_resource_group_name=CONST_GROUP_NAME, function_app_name='cloud-custodian-test') FunctionAppUtilities.deploy_function_app(parameters) self.assertEqual(parameters.service_plan['sku_tier'], 'Basic')
def test_deploy_function_app(self): parameters = FunctionAppUtilities.FunctionAppInfrastructureParameters( app_insights={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': 'cloud-custodian-test' }, storage_account={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': 'cloudcustodiantest' }, service_plan={ 'id': '', 'resource_group_name': CONST_GROUP_NAME, 'name': 'cloud-custodian-test' }, function_app_resource_group_name=CONST_GROUP_NAME, function_app_name='custodian-test-app') app = FunctionAppUtilities.deploy_function_app(parameters) self.assertIsNotNone(app)