Exemple #1
0
    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")
Exemple #2
0
 def _set_fdl(self):
     fdl = StrUtils.dict_to_base64_string(create_function_config(self.resources_info))
     self.function['environment']['Variables']['FDL'] = fdl
Exemple #3
0
    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)