4753a47bbf
This fixes failures for PyYAML new version and lower constraints. Change-Id: Iba863242365c4be63495600b741513c2ca0ea9b0
136 lines
5.0 KiB
Python
136 lines
5.0 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 yaml
|
|
|
|
from tempest.lib import exceptions
|
|
|
|
from heatclient.tests.functional.osc.v1 import base
|
|
|
|
|
|
class SimpleReadOnlyOpenStackClientTest(base.OpenStackClientTestBase):
|
|
"""Basic, read-only tests for Openstack CLI client heat plugin.
|
|
|
|
Basic smoke test for the openstack CLI commands which do not require
|
|
creating or modifying stacks.
|
|
"""
|
|
|
|
def test_openstack_fake_action(self):
|
|
self.assertRaises(exceptions.CommandFailed,
|
|
self.openstack,
|
|
'this-does-not-exist')
|
|
|
|
# Empty list commands
|
|
def test_openstack_empty_lists(self):
|
|
cmds = [
|
|
'software config',
|
|
'software deployment',
|
|
'stack',
|
|
]
|
|
for cmd in cmds:
|
|
self.openstack(cmd + ' list')
|
|
|
|
# Stack not found commands
|
|
def test_openstack_stack_not_found(self):
|
|
cmds = [
|
|
'stack abandon',
|
|
'stack check',
|
|
'stack output list',
|
|
'stack resume',
|
|
'stack show',
|
|
'stack snapshot list',
|
|
'stack suspend',
|
|
'stack template show',
|
|
'stack cancel'
|
|
]
|
|
for cmd in cmds:
|
|
err = self.assertRaises(exceptions.CommandFailed,
|
|
self.openstack,
|
|
cmd + ' I-AM-NOT-FOUND')
|
|
self.assertIn('Stack not found: I-AM-NOT-FOUND', str(err))
|
|
|
|
def test_openstack_stack_list_debug(self):
|
|
self.openstack('stack list', flags='--debug')
|
|
|
|
def test_openstack_stack_list_property(self):
|
|
self.openstack('stack list --property id=123')
|
|
|
|
def test_openstack_help_cmd(self):
|
|
help_text = self.openstack('help stack list')
|
|
lines = help_text.split('\n')
|
|
self.assertFirstLineStartsWith(lines, 'usage: openstack stack list')
|
|
|
|
def test_openstack_version(self):
|
|
self.openstack('', flags='--version')
|
|
|
|
def test_openstack_template_version_list(self):
|
|
ret = self.openstack('orchestration template version list')
|
|
tmpl_types = self.parser.listing(ret)
|
|
self.assertTableStruct(tmpl_types, ['Version', 'Type'])
|
|
|
|
def test_openstack_template_function_list(self):
|
|
ret = self.openstack('orchestration template function list '
|
|
'heat_template_version.2015-10-15')
|
|
tmpl_functions = self.parser.listing(ret)
|
|
self.assertTableStruct(tmpl_functions, ['Functions', 'Description'])
|
|
|
|
def test_openstack_resource_type_list(self):
|
|
ret = self.openstack('orchestration resource type list')
|
|
rsrc_types = self.parser.listing(ret)
|
|
self.assertTableStruct(rsrc_types, ['Resource Type'])
|
|
|
|
def test_openstack_resource_type_show(self):
|
|
rsrc_schema = self.openstack('orchestration resource type show '
|
|
'OS::Heat::RandomString')
|
|
self.assertIsInstance(yaml.safe_load(rsrc_schema), dict)
|
|
|
|
def _template_validate(self, templ_name, parms):
|
|
heat_template_path = self.get_template_path(templ_name)
|
|
cmd = 'stack create test-stack --dry-run --template %s'\
|
|
% heat_template_path
|
|
for parm in parms:
|
|
cmd += ' --parameter ' + parm
|
|
ret = self.openstack(cmd)
|
|
self.assertRegex(ret, r'stack_name.*|.*test_stack')
|
|
|
|
def test_heat_template_validate_yaml(self):
|
|
self._template_validate(
|
|
'heat_minimal.yaml',
|
|
['ClientName=ClientName', 'WaitSecs=123']
|
|
)
|
|
|
|
def test_heat_template_validate_hot(self):
|
|
self._template_validate(
|
|
'heat_minimal_hot.yaml',
|
|
['test_client_name=test_client_name', 'test_wait_secs=123']
|
|
)
|
|
|
|
def _orchestration_template_validate(self, templ_name, parms):
|
|
template_path = self.get_template_path(templ_name)
|
|
cmd = 'orchestration template validate --template %s' % template_path
|
|
for parm in parms:
|
|
cmd += ' --parameter ' + parm
|
|
ret = self.openstack(cmd)
|
|
self.assertRegex(ret, r'Value:.*123')
|
|
|
|
def test_orchestration_template_validate_yaml(self):
|
|
self._orchestration_template_validate(
|
|
'heat_minimal.yaml',
|
|
['ClientName=ClientName', 'WaitSecs=123']
|
|
)
|
|
|
|
def test_orchestration_template_validate_hot(self):
|
|
self._orchestration_template_validate(
|
|
'heat_minimal_hot.yaml',
|
|
['test_client_name=test_client_name', 'test_wait_secs=123']
|
|
)
|