def test_create_function_image(self, from_env, unzip_folder, load_tmp_config_file, download_supervisor_asset, boto_session): session, lam, client = self._init_mocks([ 'create_function', 'create_repository', 'describe_registry', 'get_authorization_token' ]) boto_session.return_value = session load_tmp_config_file.return_value = {} tests_path = os.path.dirname(os.path.abspath(__file__)) download_supervisor_asset.return_value = os.path.join( tests_path, "../../files/supervisor.zip") docker = MagicMock(['login', 'images']) docker.images = MagicMock(['build', 'push']) from_env.return_value = docker client.create_repository.return_value = { "repository": { "repositoryUri": "repouri" } } client.describe_registry.return_value = {'registryId': 'regid'} client.get_authorization_token.return_value = { 'authorizationData': [{ 'authorizationToken': 'QVdTOnRva2Vu' }] } lam.resources_info['lambda']['runtime'] = 'image' lam.resources_info['lambda']['supervisor'][ 'version'] = lam.supervisor_version = '1.5.0' lam.resources_info['lambda']['vpc'] = { 'SubnetIds': ['subnet'], 'SecurityGroupIds': ['sg'] } lam.resources_info['lambda']['file_system'] = [{ 'Arn': 'efsaparn', '': '/mnt' }] lam.create_function() fdl = { "storage_providers": {}, "name": "fname", "runtime": "image", "timeout": 300, "memory": 512, "layers": [], "log_type": "Tail", "tags": { "createdby": "scar" }, "handler": "some.handler", "description": "desc", "deployment": { "bucket": "someb", "max_s3_payload_size": 262144000 }, "environment": { "Variables": { "IMAGE_ID": "repouri:latest" } }, "container": { "image": "repouri:latest", "image_file": "some.tgz", "environment": { "Variables": {} } }, "supervisor": { "version": "1.5.0", "layer_name": "layername" }, "vpc": { "SubnetIds": ["subnet"], "SecurityGroupIds": ["sg"] }, "file_system": [{ 'Arn': 'efsaparn', '': '/mnt' }], "ecr": { "delete_image": True } } res = { 'FunctionName': 'fname', 'Role': 'iamrole', 'Environment': { 'Variables': { 'IMAGE_ID': 'repouri:latest', 'FDL': StrUtils.dict_to_base64_string(fdl) } }, 'Description': 'desc', 'Timeout': 300, 'MemorySize': 512, 'PackageType': 'Image', 'Tags': { 'createdby': 'scar' }, 'Architectures': ['x86_64'], 'VpcConfig': { 'SubnetIds': ['subnet'], 'SecurityGroupIds': ['sg'] }, 'FileSystemConfigs': [{ 'Arn': 'efsaparn', '': '/mnt' }], 'Code': { 'ImageUri': 'repouri:latest' } } self.assertEqual( lam.client.client.create_function.call_args_list[0][1], res) self.assertEqual(docker.images.push.call_args_list[0][0][0], "repouri") self.assertEqual(docker.images.build.call_args_list[0][1]['tag'], "repouri")
def _set_fdl(self): fdl = StrUtils.dict_to_base64_string(create_function_config(self.resources_info)) self.function['environment']['Variables']['FDL'] = fdl
def test_create_function(self, load_tmp_config_file, prepare_udocker_image, download_supervisor, boto_session): session, lam, _ = self._init_mocks([ 'list_layers', 'publish_layer_version', 'get_bucket_location', 'put_object', 'create_function', 'list_layer_versions' ]) boto_session.return_value = session load_tmp_config_file.return_value = {} tests_path = os.path.dirname(os.path.abspath(__file__)) download_supervisor.return_value = os.path.join( tests_path, "../../files/supervisor.zip") lam.client.client.list_layers.return_value = { 'Layers': [{ 'LayerName': 'layername' }] } lam.client.client.publish_layer_version.return_value = { 'LayerVersionArn': '1' } lam.client.client.create_function.return_value = { 'FunctionArn': 'farn' } lam.client.client.list_layer_versions.return_value = { 'LayerVersions': [] } lam.create_function() fdl = { "storage_providers": {}, "name": "fname", "runtime": "python3.7", "timeout": 300, "memory": 512, "layers": ["1"], "log_type": "Tail", "tags": { "createdby": "scar" }, "handler": "some.handler", "description": "desc", "deployment": { "bucket": "someb", "max_s3_payload_size": 262144000 }, "environment": { "Variables": { "IMAGE_ID": "some/image:tag" } }, "container": { "image": "some/image:tag", "image_file": "some.tgz", "environment": { "Variables": {} } }, "supervisor": { "version": "1.4.2", "layer_name": "layername" } } res = { 'FunctionName': 'fname', 'Role': 'iamrole', 'Environment': { 'Variables': { 'IMAGE_ID': 'some/image:tag', 'FDL': StrUtils.dict_to_base64_string(fdl) } }, 'Description': 'desc', 'Timeout': 300, 'MemorySize': 512, 'Tags': { 'createdby': 'scar' }, 'Code': { 'S3Bucket': 'someb', 'S3Key': 'lambda/fname.zip' }, 'Runtime': 'python3.7', 'Handler': 'some.handler', 'Architectures': ['x86_64'], 'Layers': ['1'] } self.assertEqual( lam.client.client.create_function.call_args_list[0][1], res) self.assertEqual( lam.client.client.publish_layer_version.call_args_list[0][1] ['LayerName'], "layername") self.assertEqual( lam.client.client.publish_layer_version.call_args_list[0][1] ['Description'], "1.4.2") self.assertEqual( len(lam.client.client.publish_layer_version.call_args_list[0][1] ['Content']['ZipFile']), 99662)