community/global_properties/py/vm.py (35 lines of code) (raw):
# Copyright 2018 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import yaml
"""Reads and uses properties from global_properties.yaml."""
def GenerateConfig(context):
global_properties = yaml.load(context.imports['global_properties.yaml'])
network_interface = {
'network': 'global/networks/default',
}
if global_properties['experiments']['EnableExternalIp']:
network_interface['accessConfigs'] = [{'type': 'ONE_TO_ONE_NAT'}]
return {
'resources': [{
'name':
'%s-%s' % (context.env['name'], 'prod'
if global_properties['env'] == 'PROD' else 'nonprod'),
'type':
'gcp-types/compute-v1:instances'
if global_properties['experiments']['EnableGcpTypes'] else
'compute.v1.instance',
'properties': {
'zone':
context.properties['zone'],
'machineType':
'zones/%s/machineTypes/f1-micro' %
(context.properties['zone']),
'networkInterfaces': [network_interface],
'disks': [{
'boot': True,
'autoDelete': True,
'initializeParams': {
'sourceImage':
'projects/debian-cloud/global/images/family/debian-9'
}
}]
}
}]
}