def get_dockerrun_v2()

in ebcli/labs/convertdockerrun.py [0:0]


def get_dockerrun_v2(v1_json):
    v2_json = {
        'AWSEBDockerrunVersion': 2,
        'containerDefinitions': [
            {
                'name': 'myapp',
                'essential': True,
                'memory': 512,
                'portMappings': [
                    {
                        'hostPort': 80,
                    }
                ]
            }
        ]
    }
    try:
        v2_json['containerDefinitions'][0]['image'] = v1_json['Image']['Name']
    except KeyError:
        raise NotFoundError('The "image" field is required for v2 conversion.')
    try:
        v2_json['containerDefinitions'][0]['containerPort'] = \
            int(v1_json['Ports'][0]['ContainerPort'])
    except (KeyError, IndexError):
        raise NotFoundError('The "port" field is required for v2 conversion.')

    if 'Authentication' in v1_json:
        v2_json['authentication'] = {
            'bucket': v1_json['Authentication']['Bucket'],
            'key': v1_json['Authentication']['Key']
        }

    for i, volume in enumerate(v1_json.get('Volumes', [])):
        if 'volumes' not in v2_json:
            v2_json['volumes'] = []

        v2_json['volumes'].append(
            {
                'name': "volume#{i}".format(i=i),
                'host': {
                    'sourcePath': volume['HostDirectory']
                }
            }
        )

        if 'mountPoints' not in v2_json['containerDefinitions'][0]:
            v2_json['containerDefinitions'][0]['mountPoints'] = []

        v2_json['containerDefinitions'][0]['mountPoints'].append(
            {
                'sourceVolume': "volume#{i}".format(i=i),
                'containerPath': volume['ContainerDirectory']
            })

    if v1_json['Logging']:
        if 'mountPoints' not in v2_json['containerDefinitions'][0]:
            v2_json['containerDefinitions'][0]['mountPoints'] = []
        v2_json['containerDefinitions'][0]['mountPoints'].append(
            {
                'sourceVolume': 'awseb-logs-myapp',
                'containerPath': v1_json['Logging']
            })

    return v2_json