Add uploading context as a file

* Added uploading context as a file using
   command execution-create

Implements blueprint mistral-cli-exec-context-from-file

Change-Id: Ifac51fd27a3e4144da12e40fce0e1d43fd63ea27
This commit is contained in:
Nikolay Mahotkin 2014-04-23 18:35:19 +04:00
parent e6d5aee483
commit 5c787e7ae3
4 changed files with 45 additions and 3 deletions

View File

@ -103,16 +103,20 @@ class Create(ShowCommand):
help='Execution task')
parser.add_argument(
'context',
type=json.loads,
help='Execution context')
return parser
def take_action(self, parsed_args):
try:
ctx = json.loads(parsed_args.context)
except:
ctx = open(parsed_args.context).read()
execution = ExecutionManager(self.app.client)\
.create(parsed_args.workbook,
parsed_args.task,
parsed_args.context)
ctx)
return format(execution)

View File

@ -0,0 +1,5 @@
{"context": {
"server": {
"name": "name"
}
}}

View File

@ -14,11 +14,14 @@
# under the License.
#
import pkg_resources as pkg
import mock
from mistralclient.tests import base
from mistralclient.commands import executions
from mistralclient.api.executions import Execution
from mistralclient import version
EXECUTION = Execution(mock, {
'id': '123',
@ -30,7 +33,7 @@ EXECUTION = Execution(mock, {
class TestCLIExecutions(base.BaseCommandTest):
@mock.patch('mistralclient.api.executions.ExecutionManager.create')
def test_create(self, mock):
def test_create_ctx_string(self, mock):
mock.return_value = EXECUTION
result = self.call(executions.Create,
@ -38,6 +41,16 @@ class TestCLIExecutions(base.BaseCommandTest):
self.assertEqual(('123', 'some', 'else', 'RUNNING'), result[1])
@mock.patch('mistralclient.api.executions.ExecutionManager.create')
def test_create_ctx_file(self, mock):
mock.return_value = EXECUTION
path = pkg.resource_filename(version.version_info.package,
'tests/resources/ctx.json')
result = self.call(executions.Create,
app_args=['name', 'id', path])
self.assertEqual(('123', 'some', 'else', 'RUNNING'), result[1])
@mock.patch('mistralclient.api.executions.ExecutionManager.update')
def test_update(self, mock):
mock.return_value = EXECUTION

20
mistralclient/version.py Normal file
View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
#
# Copyright 2013 - Mirantis, Inc.
#
# 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 pbr import version
version_info = version.VersionInfo('mistralclient')
version_string = version_info.version_string