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') help='Execution task')
parser.add_argument( parser.add_argument(
'context', 'context',
type=json.loads,
help='Execution context') help='Execution context')
return parser return parser
def take_action(self, parsed_args): 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)\ execution = ExecutionManager(self.app.client)\
.create(parsed_args.workbook, .create(parsed_args.workbook,
parsed_args.task, parsed_args.task,
parsed_args.context) ctx)
return format(execution) return format(execution)

View File

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

View File

@ -14,11 +14,14 @@
# under the License. # under the License.
# #
import pkg_resources as pkg
import mock import mock
from mistralclient.tests import base from mistralclient.tests import base
from mistralclient.commands import executions from mistralclient.commands import executions
from mistralclient.api.executions import Execution from mistralclient.api.executions import Execution
from mistralclient import version
EXECUTION = Execution(mock, { EXECUTION = Execution(mock, {
'id': '123', 'id': '123',
@ -30,7 +33,7 @@ EXECUTION = Execution(mock, {
class TestCLIExecutions(base.BaseCommandTest): class TestCLIExecutions(base.BaseCommandTest):
@mock.patch('mistralclient.api.executions.ExecutionManager.create') @mock.patch('mistralclient.api.executions.ExecutionManager.create')
def test_create(self, mock): def test_create_ctx_string(self, mock):
mock.return_value = EXECUTION mock.return_value = EXECUTION
result = self.call(executions.Create, result = self.call(executions.Create,
@ -38,6 +41,16 @@ class TestCLIExecutions(base.BaseCommandTest):
self.assertEqual(('123', 'some', 'else', 'RUNNING'), result[1]) 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') @mock.patch('mistralclient.api.executions.ExecutionManager.update')
def test_update(self, mock): def test_update(self, mock):
mock.return_value = EXECUTION 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