templates/container_instance.py (30 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 a Container VM with the provided Container manifest."""
import common
import container_helper
import default
import vm_instance
# Check vm_instance for additional properties used
# Specific properties for this component, also see container_helper
C_IMAGE = default.C_IMAGE
DCKRIMAGE = default.DCKRIMAGE
SRCIMAGE = default.SRCIMAGE
METADATA = default.METADATA
def GenerateContainerInstance(context):
"""Generates an instance of container instance with the passed manifest."""
prop = context.properties
metadata = prop.setdefault(METADATA, dict())
items = metadata.setdefault('items', list())
if common.IsComputeLink(prop[C_IMAGE]):
prop[default.SRCIMAGE] = prop[C_IMAGE]
else:
prop[SRCIMAGE] = common.GlobalComputeLink(
'cos-cloud', 'images', prop[C_IMAGE])
items.append(
{
'key': 'google-container-manifest',
'value': '%s' % container_helper.GenerateManifest(context)
})
return vm_instance.GenerateComputeVM(context)
def GenerateResourceList(context):
"""Returns list of resources generated by this module."""
resources = GenerateContainerInstance(context)
resources += common.AddDiskResourcesIfNeeded(context)
return resources
@common.FormatErrorsDec
def GenerateConfig(context):
"""Generates YAML resource configuration."""
return common.MakeResource(GenerateResourceList(context))