def test_publish_functions_package_dedicated( self, mock_function_package_publish): 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': 'Basic' }, function_app_resource_group_name=CONST_GROUP_NAME, function_app_name=self.dedicated_function_name) FunctionAppUtilities.publish_functions_package( parameters, FunctionPackage("TestPolicy")) mock_function_package_publish.assert_called_once()
def test_publish_functions_package_consumption(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': 'dynamic' }, function_app_resource_group_name=CONST_GROUP_NAME, function_app_name='cloud-custodian-test') package = FunctionPackage("TestPolicy") package.close() FunctionAppUtilities.publish_functions_package( parameters, package) # verify app setting updated wc = self.session.client('azure.mgmt.web.WebSiteManagementClient') app_settings = wc.web_apps.list_application_settings( CONST_GROUP_NAME, 'cloud-custodian-test') self.assertIsNotNone(app_settings.properties['WEBSITE_RUN_FROM_PACKAGE'])
def test_publish_functions_package_consumption(self, _1): function_app_name = 'cloud-custodian-test-consumption%s' % self.subscription_id[ -12:] 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': 'dynamic' }, function_app_resource_group_name=CONST_GROUP_NAME, function_app_name=function_app_name) package = FunctionPackage("TestPolicy") package.pkg = AzurePythonPackageArchive() package.close() FunctionAppUtilities.publish_functions_package(parameters, package) # verify app setting updated wc = self.session.client('azure.mgmt.web.WebSiteManagementClient') app_settings = wc.web_apps.list_application_settings( CONST_GROUP_NAME, function_app_name) self.assertIsNotNone( app_settings.properties['WEBSITE_RUN_FROM_PACKAGE'])
def test_publish_functions_package_dedicated(self, _1): 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': 'Basic' }, function_app={ 'resource_group_name': CONST_GROUP_NAME, 'name': self.dedicated_function_name}) package = FunctionPackage("TestPolicy") package.pkg = AzurePythonPackageArchive() package.close() FunctionAppUtilities.publish_functions_package(parameters, 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, sub_id) log.info("Function package built, size is %dMB" % (package.pkg.size / (1024 * 1024))) FunctionAppUtilities.publish_functions_package(params, package)
def provision(self): super(AzureEventGridMode, self).provision() session = local_session(self.policy.session_factory) # queue name is restricted to lowercase letters, numbers, and single hyphens queue_name = re.sub(r'(-{2,})+', '-', self.function_params.function_app_name.lower()) storage_account = self._create_storage_queue(queue_name, session) self._create_event_subscription(storage_account, queue_name, session) package = self.build_functions_package(queue_name=queue_name) FunctionAppUtilities.publish_functions_package(self.function_params, package)
def provision(self): super(AzureEventGridMode, self).provision() session = local_session(self.policy.session_factory) # queue name is restricted to lowercase letters, numbers, and single hyphens queue_name = re.sub(r'(-{2,})+', '-', self.function_params.function_app_name.lower()) storage_account = self._create_storage_queue(queue_name, session) self._create_event_subscription(storage_account, queue_name, session) package = self.build_functions_package(queue_name) FunctionAppUtilities.publish_functions_package(self.function_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_publish_functions_package_dedicated(self, mock_function_package_publish): 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': 'Basic' }, function_app_resource_group_name=CONST_GROUP_NAME, function_app_name='cloud-custodian-test') FunctionAppUtilities.publish_functions_package(parameters, FunctionPackage("TestPolicy")) mock_function_package_publish.assert_called_once()
def provision(self): super(AzurePeriodicMode, self).provision() package = self.build_functions_package( target_subscription_ids=self.target_subscription_ids) FunctionAppUtilities.publish_functions_package(self.function_params, package)
def provision(self): super(AzurePeriodicMode, self).provision() package = self.build_functions_package() FunctionAppUtilities.publish_functions_package(self.function_params, package)