Exemplo n.º 1
0
def GenerateConfig(context):
    """Generates configuration."""

    image = ''.join([
        'https://www.googleapis.com/compute/v1/',
        'projects/cos-cloud/global/images/',
        context.properties['containerImage']
    ])
    default_network = ''.join([
        'https://www.googleapis.com/compute/v1/projects/',
        context.env['project'], '/global/networks/default'
    ])

    instance_template = {
        'name': context.env['name'] + '-it',
        'type': 'compute.v1.instanceTemplate',
        'properties': {
            'properties': {
                'metadata': {
                    'items': [{
                        'key': 'gce-container-declaration',
                        'value': GenerateManifest(context)
                    }]
                },
                'machineType':
                'f1-micro',
                'disks': [{
                    'deviceName': 'boot',
                    'boot': True,
                    'autoDelete': True,
                    'mode': 'READ_WRITE',
                    'type': 'PERSISTENT',
                    'initializeParams': {
                        'sourceImage': image
                    }
                }],
                'networkInterfaces': [{
                    'accessConfigs': [{
                        'name': 'external-nat',
                        'type': 'ONE_TO_ONE_NAT'
                    }],
                    'network':
                    default_network
                }],
                'serviceAccounts': [{
                    'email':
                    'default',
                    'scopes':
                    ['https://www.googleapis.com/auth/logging.write']
                }]
            }
        }
    }

    outputs = [{
        'name': 'instanceTemplateSelfLink',
        'value': '$(ref.' + instance_template['name'] + '.selfLink)'
    }]

    return {'resources': [instance_template], 'outputs': outputs}
Exemplo n.º 2
0
def GenerateConfig(context):
  """Generate configuration."""

  base_name = context.env['name']

  # Properties for the container-based instance.
  instance = {
      'zone': context.properties['zone'],
      'machineType': ZonalComputeUrl(context.env['project'],
                                     context.properties['zone'],
                                     'machineTypes',
                                     'f1-micro'),
      'metadata': {
          'items': [{
              'key': 'gce-container-declaration',
              'value': GenerateManifest(context)
              }]
          },
      'disks': [{
          'deviceName': 'boot',
          'type': 'PERSISTENT',
          'autoDelete': True,
          'boot': True,
          'initializeParams': {
              'diskName': base_name + '-disk',
              'sourceImage': GlobalComputeUrl('cos-cloud',
                                              'images',
                                              context.properties[
                                                  'containerImage'])
              },
          }],
      'networkInterfaces': [{
          'accessConfigs': [{
              'name': 'external-nat',
              'type': 'ONE_TO_ONE_NAT'
              }],
          'network': GlobalComputeUrl(context.env['project'],
                                      'networks',
                                      'default')
          }],
        'serviceAccounts': [{
            'email': 'default',
            'scopes': ['https://www.googleapis.com/auth/logging.write']
            }]
      }

  # Resources to return.
  resources = {
      'resources': [{
          'name': base_name,
          'type': 'compute.v1.instance',
          'properties': instance
          }]
      }

  return resources
Exemplo n.º 3
0
def GenerateConfig(context):
    """Generates configuration."""

    image = ''.join([
        'https://www.googleapis.com/compute/v1/',
        'projects/google-containers/global/images/',
        context.properties['containerImage']
    ])
    default_network = ''.join([
        'https://www.googleapis.com/compute/v1/projects/',
        context.env['project'], '/global/networks/default'
    ])

    instance_template = {
        'name': context.env['name'] + '-it',
        'type': 'compute.v1.instanceTemplate',
        'properties': {
            'properties': {
                'metadata': {
                    'items': [{
                        'key': 'google-container-manifest',
                        'value': GenerateManifest(context)
                    }]
                },
                'machineType':
                'f1-micro',
                'disks': [{
                    'deviceName': 'boot',
                    'boot': True,
                    'autoDelete': True,
                    'mode': 'READ_WRITE',
                    'type': 'PERSISTENT',
                    'initializeParams': {
                        'sourceImage': image
                    }
                }],
                'networkInterfaces': [{
                    'accessConfigs': [{
                        'name': 'external-nat',
                        'type': 'ONE_TO_ONE_NAT'
                    }],
                    'network':
                    default_network
                }]
            }
        }
    }

    return {'resources': [instance_template]}
Exemplo n.º 4
0
def GenerateConfig(context):
    """Generate configuration."""

    base_name = context.env['name']
    properties = context.properties
    project_id = properties.get('projectId', context.env['project'])

    # Properties for the container-based instance.
    instance = {
        'zone':
        context.properties['zone'],
        'machineType':
        ZonalComputeUrl(context.env['project'], properties['zone'],
                        'machineTypes', properties['machineType']),
        'metadata': {
            'items': [{
                'key': 'gce-container-declaration',
                'value': GenerateManifest(context)
            }]
        },
        'disks': [{
            'deviceName': 'boot',
            'type': 'PERSISTENT',
            'autoDelete': True,
            'boot': True,
            'initializeParams': {
                'diskName':
                base_name + '-disk',
                'sourceImage':
                GlobalComputeUrl('cos-cloud', 'images', 'family/cos-stable')
            }
        }],
        'networkInterfaces': [{
            'accessConfigs': [{
                'name': 'external-nat',
                'type': 'ONE_TO_ONE_NAT',
            }],
            'subnetwork':
            properties['subnet'],
            'networkIP':
            properties['internalIP']
        }],
        'serviceAccounts': [{
            'email':
            'default',
            'scopes': [
                'https://www.googleapis.com/auth/logging.write',
                'https://www.googleapis.com/auth/cloud-platform',
                'https://www.googleapis.com/auth/compute'
            ]
        }]
    }

    if 'tags' in properties:
        items = []
        for tag in properties['tags']:
            items.append(str(tag))
        instance['tags'] = {'items': items}

    if 'externalIP' in properties:
        instance['networkInterfaces'][0]['accessConfigs'][0]['natIP'] = \
           properties['externalIP']

    if 'startup-script' in properties:
        instance['metadata']['items'].append({
            'key':
            'startup-script',
            'value':
            properties['startup-script']
        })

    if 'disks' in properties:
        instance['disks'].append({
            'deviceName':
            properties['disks'][0]['deviceName'],
            'type':
            'PERSISTENT',
            'autoDelete':
            False,
            'boot':
            False,
            'source':
            properties['disks'][0]['diskResource']
        })

    # Resources to return.
    resources = {
        'resources': [{
            'name': base_name,
            'type': 'compute.v1.instance',
            'properties': instance
        }]
    }

    return resources