Fixing environment creation from template

Environment creation for env-template operation does not work
in python-muranoclient in multi-region testbed. This patch
allows for including region information in the request.

Change-Id: Ib274ae6d0489687e085fcae0ba897c0d7af2d547
Closes-Bug: #1597715
This commit is contained in:
visitor 2016-09-30 10:52:04 +02:00 committed by Kirill Zaitsev
parent df35a2e3a1
commit f8d340a778
4 changed files with 28 additions and 5 deletions

View File

@ -716,7 +716,20 @@ class ShellCommandTest(ShellTest):
self.register_keystone_token_fixture(m_requests)
self.shell('env-template-create-env env-id env-name')
self.client.env_templates.create_env.\
assert_called_once_with('env-id', 'env-name')
assert_called_once_with('env-id', {"name": 'env-name'})
@mock.patch('muranoclient.v1.templates.EnvTemplateManager')
@requests_mock.mock()
def test_env_template_create_env_with_region(self, mock_manager,
m_requests):
self.client.env_templates = mock_manager()
self.make_env()
self.register_keystone_discovery_fixture(m_requests)
self.register_keystone_token_fixture(m_requests)
self.shell('env-template-create-env env-id env-name --region Region')
self.client.env_templates.create_env.\
assert_called_once_with('env-id', {"name": 'env-name',
"region": 'Region'})
@mock.patch('muranoclient.v1.templates.EnvTemplateManager')
@requests_mock.mock()

View File

@ -351,10 +351,16 @@ def do_env_template_create(mc, args):
help="Environment template ID.")
@utils.arg("name", metavar="<ENV_NAME>",
help="New environment name.")
@utils.arg("--region", metavar="<REGION_NAME>",
help="Name of the target OpenStack region.",)
def do_env_template_create_env(mc, args):
"""Create a new environment from template."""
try:
template = mc.env_templates.create_env(args.id, args.name)
data = {}
data["name"] = args.name
if args.region:
data["region"] = args.region
template = mc.env_templates.create_env(args.id, data)
except common_exceptions.HTTPNotFound:
raise exceptions.CommandError("Environment template %s not found"
% args.id)

View File

@ -81,14 +81,14 @@ class EnvTemplateManager(base.Manager):
return self._delete('/v1/templates/{id}/services/{app_id}'.
format(id=env_template_id, app_id=app_id))
def create_env(self, env_template_id, name):
def create_env(self, env_template_id, data):
"""Creates new environment from template.
:param env_template_id: The environment template ID.
:param name: The name for the environment.
:param data: The environment information.
"""
return self._create('/v1/templates/{id}/create-environment'.
format(id=env_template_id), data={'name': name})
format(id=env_template_id), data=data)
def clone(self, env_template_id, name):
"""Clones a public template from one tenant to another.

View File

@ -0,0 +1,4 @@
---
features:
- CLI command :command:``env-templat-create-env`` now supports ``--region`` flag