templates/vm_instance_template.py (32 lines of code) (raw):

# Copyright 2015 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. """Creates an VM instance template with the same defaults as vm_instance.py.""" import copy import common import default import vm_instance # Properties for this component, also look at the vm_instance properties PROJECT = default.PROJECT # The optional and mandatory fields are the same as a vm_instance def GenerateComputeVMTemplate(context): """Generates one instanceTemplate resource.""" prop = context.properties project = prop.setdefault(PROJECT, context.env[PROJECT]) vm_tpl = vm_instance.GenerateComputeVM(context, create_disks_separately=False)[-1] # Copy properties since they will be modified to be used as subproperties vm_props = copy.deepcopy(vm_tpl['properties']) common.TakeZoneOut(vm_props) vm_name = vm_tpl['name'][:-3] # takes the -vm out # pyformat: disable resource = [ { 'name': vm_name, 'type': default.TEMPLATE, 'properties': { 'project': project, 'properties': vm_props, } } ] # pyformat: enable return resource def GenerateResourceList(context): """Returns list of resources generated by this module.""" resources = GenerateComputeVMTemplate(context) resources += common.AddDiskResourcesIfNeeded(context) resources += vm_instance.AddServiceEndpointIfNeeded(context) return resources @common.FormatErrorsDec def GenerateConfig(context): """Generates YAML resource configuration.""" return common.MakeResource(GenerateResourceList(context))