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}
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
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]}
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