heat/heat_integrationtests/functional/test_admin_actions.py

102 lines
3.4 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.
from heat_integrationtests.functional import functional_base
# Simple stack
test_template = {
'heat_template_version': '2013-05-23',
'resources': {
'test1': {
'type': 'OS::Heat::TestResource',
'properties': {
'value': 'Test1'
}
}
}
}
# Nested stack
rsg_template = {
'heat_template_version': '2013-05-23',
'resources': {
'random_group': {
'type': 'OS::Heat::ResourceGroup',
'properties': {
'count': 2,
'resource_def': {
'type': 'OS::Heat::RandomString',
'properties': {
'length': 30,
'salt': 'initial'
}
}
}
}
}
}
class AdminActionsTest(functional_base.FunctionalTestsBase):
def setUp(self):
super(AdminActionsTest, self).setUp()
if not self.conf.admin_username or not self.conf.admin_password:
self.skipTest('No admin creds found, skipping')
def create_stack_setup_admin_client(self, template=test_template):
# Create the stack with the default user
self.stack_identifier = self.stack_create(template=template)
# Setup admin clients
self.setup_clients_for_admin()
def test_admin_simple_stack_actions(self):
self.create_stack_setup_admin_client()
updated_template = test_template.copy()
props = updated_template['resources']['test1']['properties']
props['value'] = 'new_value'
# Update, suspend and resume stack
self.update_stack(self.stack_identifier,
template=updated_template)
self.stack_suspend(self.stack_identifier)
self.stack_resume(self.stack_identifier)
# List stack resources
initial_resources = {'test1': 'OS::Heat::TestResource'}
self.assertEqual(initial_resources,
self.list_resources(self.stack_identifier))
# Delete stack
self._stack_delete(self.stack_identifier)
def test_admin_complex_stack_actions(self):
self.create_stack_setup_admin_client(template=rsg_template)
updated_template = rsg_template.copy()
props = updated_template['resources']['random_group']['properties']
props['count'] = 3
# Update, suspend and resume stack
self.update_stack(self.stack_identifier,
template=updated_template)
self.stack_suspend(self.stack_identifier)
self.stack_resume(self.stack_identifier)
# List stack resources
resources = {'random_group': 'OS::Heat::ResourceGroup'}
self.assertEqual(resources,
self.list_resources(self.stack_identifier))
# Delete stack
self._stack_delete(self.stack_identifier)