deb-heat/heat/tests/test_cloud_config.py
Steve Baker 093fd9af7c A cloud-config resource based on SoftwareConfig
This simple resource allows cloud-config to be specified
as a map property, and stores the resulting YAML as a SoftwareConfig
resource.

Because cloud-init is boot only, this resource won't be used with
a SoftwareDeployment resource, also it will not have inputs or outputs.

Instead, a server's user_data can contain this resource via get_resource
when user_data_format is SOFTWARE_CONFIG.

Implements: blueprint cloud-init-resource

Change-Id: I15c8d6a03b8da274531b76cca658e37def4eb460
2014-02-05 08:30:51 +08:00

63 lines
2.2 KiB
Python

#
# 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 mock
from heat.engine import parser
from heat.engine import template
import heat.engine.resources.software_config.cloud_config as cc
from heat.tests.common import HeatTestCase
from heat.tests import utils
class CloudConfigTest(HeatTestCase):
def setUp(self):
super(CloudConfigTest, self).setUp()
utils.setup_dummy_db()
self.ctx = utils.dummy_context()
self.properties = {
'cloud_config': {'foo': 'bar'}
}
self.stack = parser.Stack(
self.ctx, 'software_config_test_stack',
template.Template({
'Resources': {
'config_mysql': {
'Type': 'OS::Heat::CloudConfig',
'Properties': self.properties
}}}))
self.config = self.stack['config_mysql']
heat = mock.MagicMock()
self.config.heat = heat
self.software_configs = heat.return_value.software_configs
def test_resource_mapping(self):
mapping = cc.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(cc.CloudConfig,
mapping['OS::Heat::CloudConfig'])
self.assertIsInstance(self.config, cc.CloudConfig)
def test_handle_create(self):
sc = mock.MagicMock()
config_id = 'c8a19429-7fde-47ea-a42f-40045488226c'
sc.id = config_id
self.software_configs.create.return_value = sc
self.config.handle_create()
self.assertEqual(config_id, self.config.resource_id)
kwargs = self.software_configs.create.call_args[1]
self.assertEqual('#cloud-config\n{foo: bar}\n', kwargs['config'])