Update senlinclient for new sdk version
This patch fixes problem found after sdk version 0.9.1 which includes a new implementation of senlin cluster resources. Change-Id: I67b265731f34080df85233dac09c1256f43aecdb
This commit is contained in:
parent
f8fb80693d
commit
dd21b7aa0b
releasenotes/source
senlinclient
common
shell.pytests/unit/v1
test_action.pytest_build_info.pytest_cluster.pytest_cluster_policy.pytest_event.pytest_node.pytest_policy.pytest_policy_type.pytest_profile.pytest_profile_type.pytest_receiver.pytest_shell.py
v1
@ -12,6 +12,8 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import pbr.version
|
||||
|
||||
# Senlin Release Notes documentation build configuration file, created by
|
||||
# sphinx-quickstart on Tue Nov 3 17:40:50 2015.
|
||||
#
|
||||
@ -63,7 +65,7 @@ copyright = u'2015, Senlin Developers'
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
import pbr.version
|
||||
|
||||
senlin_version = pbr.version.VersionInfo('python-muranoclient')
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = senlin_version.version_string_with_vcs()
|
||||
|
@ -240,7 +240,7 @@ def process_stack_spec(spec):
|
||||
new_spec = {
|
||||
# TODO(Qiming): add context support
|
||||
'disable_rollback': spec.get('disable_rollback', True),
|
||||
'context': spec.get('context', {}),
|
||||
'context': spec.get('context', {}),
|
||||
'parameters': spec.get('parameters', {}),
|
||||
'timeout': spec.get('timeout', 60),
|
||||
'template': template,
|
||||
|
@ -181,8 +181,8 @@ class SenlinShell(object):
|
||||
raise exc.CommandError(msg)
|
||||
|
||||
# project name or ID is needed, or else sdk may find the wrong project
|
||||
if (not (args.project_id or args.project_name or args.tenant_id
|
||||
or args.tenant_name)):
|
||||
if (not (args.project_id or args.project_name or args.tenant_id or
|
||||
args.tenant_name)):
|
||||
if not (args.user_id):
|
||||
msg = _('Either project/tenant ID or project/tenant name '
|
||||
'must be specified, or else Senlin cannot know '
|
||||
|
@ -159,7 +159,7 @@ class TestActionList(TestAction):
|
||||
|
||||
|
||||
class TestActionShow(TestAction):
|
||||
get_response = {
|
||||
response = {
|
||||
"action": "CLUSTER_DELETE",
|
||||
"cause": "RPC Request",
|
||||
"context": {},
|
||||
@ -184,7 +184,7 @@ class TestActionShow(TestAction):
|
||||
super(TestActionShow, self).setUp()
|
||||
self.cmd = osc_action.ShowAction(self.app, None)
|
||||
self.mock_client.get_action = mock.Mock(
|
||||
return_value=sdk_action.Action(attrs=self.get_response))
|
||||
return_value=sdk_action.Action(**self.response))
|
||||
|
||||
def test_action_show(self):
|
||||
arglist = ['my_action']
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
import mock
|
||||
|
||||
from openstack.cluster.v1 import build_info as sdk_build_info
|
||||
from openstack.cluster.v1 import build_info as sbi
|
||||
|
||||
from senlinclient.tests.unit.v1 import fakes
|
||||
from senlinclient.v1 import build_info as osc_build_info
|
||||
@ -33,7 +33,7 @@ class TestBuildInfo(fakes.TestClusteringv1):
|
||||
self.cmd = osc_build_info.BuildInfo(self.app, None)
|
||||
self.mock_client = self.app.client_manager.clustering
|
||||
self.mock_client.get_build_info = mock.Mock(
|
||||
return_value=sdk_build_info.BuildInfo(None, self.response))
|
||||
return_value=sbi.BuildInfo(**self.response['build_info']))
|
||||
|
||||
def test_build_info(self):
|
||||
arglist = []
|
||||
|
@ -147,7 +147,7 @@ class TestClusterList(TestCluster):
|
||||
|
||||
|
||||
class TestClusterShow(TestCluster):
|
||||
get_response = {"cluster": {
|
||||
response = {"cluster": {
|
||||
"created_at": "2015-02-11T15:13:20",
|
||||
"data": {},
|
||||
"desired_capacity": 0,
|
||||
@ -174,8 +174,7 @@ class TestClusterShow(TestCluster):
|
||||
super(TestClusterShow, self).setUp()
|
||||
self.cmd = osc_cluster.ShowCluster(self.app, None)
|
||||
self.mock_client.get_cluster = mock.Mock(
|
||||
return_value=sdk_cluster.Cluster(
|
||||
attrs=self.get_response['cluster']))
|
||||
return_value=sdk_cluster.Cluster(**self.response['cluster']))
|
||||
|
||||
def test_cluster_show(self):
|
||||
arglist = ['my_cluster']
|
||||
@ -231,9 +230,9 @@ class TestClusterCreate(TestCluster):
|
||||
super(TestClusterCreate, self).setUp()
|
||||
self.cmd = osc_cluster.CreateCluster(self.app, None)
|
||||
self.mock_client.create_cluster = mock.Mock(
|
||||
return_value=sdk_cluster.Cluster(attrs=self.response['cluster']))
|
||||
return_value=sdk_cluster.Cluster(**self.response['cluster']))
|
||||
self.mock_client.get_cluster = mock.Mock(
|
||||
return_value=sdk_cluster.Cluster(attrs=self.response['cluster']))
|
||||
return_value=sdk_cluster.Cluster(**self.response['cluster']))
|
||||
|
||||
def test_cluster_create_defaults(self):
|
||||
arglist = ['test_cluster', '--profile', 'mystack']
|
||||
@ -301,11 +300,11 @@ class TestClusterUpdate(TestCluster):
|
||||
super(TestClusterUpdate, self).setUp()
|
||||
self.cmd = osc_cluster.UpdateCluster(self.app, None)
|
||||
self.mock_client.update_cluster = mock.Mock(
|
||||
return_value=sdk_cluster.Cluster(attrs=self.response['cluster']))
|
||||
return_value=sdk_cluster.Cluster(**self.response['cluster']))
|
||||
self.mock_client.get_cluster = mock.Mock(
|
||||
return_value=sdk_cluster.Cluster(attrs=self.response['cluster']))
|
||||
return_value=sdk_cluster.Cluster(**self.response['cluster']))
|
||||
self.mock_client.find_cluster = mock.Mock(
|
||||
return_value=sdk_cluster.Cluster(attrs=self.response['cluster']))
|
||||
return_value=sdk_cluster.Cluster(**self.response['cluster']))
|
||||
|
||||
def test_cluster_update_defaults(self):
|
||||
arglist = ['--name', 'new_cluster', '--metadata', 'nk1=nv1;nk2=nv2',
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
import mock
|
||||
|
||||
from openstack.cluster.v1 import cluster_policy as sdk_cluster_policy
|
||||
from openstack.cluster.v1 import cluster_policy as scp
|
||||
|
||||
from senlinclient.tests.unit.v1 import fakes
|
||||
from senlinclient.v1 import cluster_policy as osc_cluster_policy
|
||||
@ -76,7 +76,7 @@ class TestClusterPolicyList(TestClusterPolicy):
|
||||
|
||||
|
||||
class TestClusterPolicyShow(TestClusterPolicy):
|
||||
get_response = {"cluster_policy": {
|
||||
response = {"cluster_policy": {
|
||||
"cluster_id": "7d85f602-a948-4a30-afd4-e84f47471c15",
|
||||
"cluster_name": "my_cluster",
|
||||
"enabled": True,
|
||||
@ -90,8 +90,7 @@ class TestClusterPolicyShow(TestClusterPolicy):
|
||||
super(TestClusterPolicyShow, self).setUp()
|
||||
self.cmd = osc_cluster_policy.ClusterPolicyShow(self.app, None)
|
||||
self.mock_client.get_cluster_policy = mock.Mock(
|
||||
return_value=sdk_cluster_policy.ClusterPolicy(None,
|
||||
self.get_response))
|
||||
return_value=scp.ClusterPolicy(**self.response['cluster_policy']))
|
||||
|
||||
def test_cluster_policy_show(self):
|
||||
arglist = ['--policy', 'my_policy', 'my_cluster']
|
||||
|
@ -60,7 +60,7 @@ class TestEventList(TestEvent):
|
||||
super(TestEventList, self).setUp()
|
||||
self.cmd = osc_event.ListEvent(self.app, None)
|
||||
self.mock_client.events = mock.Mock(
|
||||
return_value=sdk_event.Event(None, {}))
|
||||
return_value=[sdk_event.Event(**self.response['events'][0])])
|
||||
|
||||
def test_event_list_defaults(self):
|
||||
arglist = []
|
||||
@ -95,8 +95,7 @@ class TestEventList(TestEvent):
|
||||
self.assertEqual(self.columns, columns)
|
||||
|
||||
def test_event_list_sort_invalid_key(self):
|
||||
self.mock_client.events = mock.Mock(
|
||||
return_value=self.response)
|
||||
self.mock_client.events = mock.Mock(return_value=self.response)
|
||||
kwargs = copy.deepcopy(self.defaults)
|
||||
kwargs['sort'] = 'bad_key'
|
||||
arglist = ['--sort', 'bad_key']
|
||||
@ -106,8 +105,7 @@ class TestEventList(TestEvent):
|
||||
self.cmd.take_action, parsed_args)
|
||||
|
||||
def test_event_list_sort_invalid_direction(self):
|
||||
self.mock_client.events = mock.Mock(
|
||||
return_value=self.response)
|
||||
self.mock_client.events = mock.Mock(return_value=self.response)
|
||||
kwargs = copy.deepcopy(self.defaults)
|
||||
kwargs['sort'] = 'name:bad_direction'
|
||||
arglist = ['--sort', 'name:bad_direction']
|
||||
@ -136,7 +134,7 @@ class TestEventList(TestEvent):
|
||||
|
||||
|
||||
class TestEventShow(TestEvent):
|
||||
get_response = {"event": {
|
||||
response = {"event": {
|
||||
"action": "create",
|
||||
"cluster_id": 'null',
|
||||
"id": "2d255b9c-8f36-41a2-a137-c0175ccc29c3",
|
||||
@ -155,7 +153,7 @@ class TestEventShow(TestEvent):
|
||||
super(TestEventShow, self).setUp()
|
||||
self.cmd = osc_event.ShowEvent(self.app, None)
|
||||
self.mock_client.get_event = mock.Mock(
|
||||
return_value=sdk_event.Event(None, self.get_response))
|
||||
return_value=sdk_event.Event(**self.response['event']))
|
||||
|
||||
def test_event_show(self):
|
||||
arglist = ['my_event']
|
||||
|
@ -144,7 +144,7 @@ class TestNodeList(TestNode):
|
||||
|
||||
|
||||
class TestNodeShow(TestNode):
|
||||
get_response = {"node": {
|
||||
response = {"node": {
|
||||
"cluster_id": None,
|
||||
"created_at": "2015-02-10T12:03:16",
|
||||
"data": {},
|
||||
@ -171,7 +171,7 @@ class TestNodeShow(TestNode):
|
||||
super(TestNodeShow, self).setUp()
|
||||
self.cmd = osc_node.ShowNode(self.app, None)
|
||||
self.mock_client.get_node = mock.Mock(
|
||||
return_value=sdk_node.Node(attrs=self.get_response['node']))
|
||||
return_value=sdk_node.Node(**self.response['node']))
|
||||
|
||||
def test_node_show(self):
|
||||
arglist = ['my_node']
|
||||
@ -230,9 +230,9 @@ class TestNodeCreate(TestNode):
|
||||
super(TestNodeCreate, self).setUp()
|
||||
self.cmd = osc_node.CreateNode(self.app, None)
|
||||
self.mock_client.create_node = mock.Mock(
|
||||
return_value=sdk_node.Node(attrs=self.response['node']))
|
||||
return_value=sdk_node.Node(**self.response['node']))
|
||||
self.mock_client.get_node = mock.Mock(
|
||||
return_value=sdk_node.Node(attrs=self.response['node']))
|
||||
return_value=sdk_node.Node(**self.response['node']))
|
||||
|
||||
def test_node_create_defaults(self):
|
||||
arglist = ['my_node', '--profile', 'mystack']
|
||||
@ -305,11 +305,11 @@ class TestNodeUpdate(TestNode):
|
||||
super(TestNodeUpdate, self).setUp()
|
||||
self.cmd = osc_node.UpdateNode(self.app, None)
|
||||
self.mock_client.update_node = mock.Mock(
|
||||
return_value=sdk_node.Node(attrs=self.response['node']))
|
||||
return_value=sdk_node.Node(**self.response['node']))
|
||||
self.mock_client.get_node = mock.Mock(
|
||||
return_value=sdk_node.Node(attrs=self.response['node']))
|
||||
return_value=sdk_node.Node(**self.response['node']))
|
||||
self.mock_client.find_node = mock.Mock(
|
||||
return_value=sdk_node.Node(attrs=self.response['node']))
|
||||
return_value=sdk_node.Node(**self.response['node']))
|
||||
|
||||
def test_node_update_defaults(self):
|
||||
arglist = ['--name', 'new_node', '--metadata', 'nk1=nv1;nk2=nv2',
|
||||
|
@ -141,7 +141,7 @@ class TestPolicyList(TestPolicy):
|
||||
|
||||
|
||||
class TestPolicyShow(TestPolicy):
|
||||
get_response = {"policy": {
|
||||
response = {"policy": {
|
||||
"created_at": "2015-03-02T07:40:31",
|
||||
"data": {},
|
||||
"domain": 'null',
|
||||
@ -170,7 +170,7 @@ class TestPolicyShow(TestPolicy):
|
||||
super(TestPolicyShow, self).setUp()
|
||||
self.cmd = osc_policy.ShowPolicy(self.app, None)
|
||||
self.mock_client.get_policy = mock.Mock(
|
||||
return_value=sdk_policy.Policy(attrs=self.get_response['policy']))
|
||||
return_value=sdk_policy.Policy(**self.response['policy']))
|
||||
|
||||
def test_policy_show(self):
|
||||
arglist = ['sp001']
|
||||
@ -230,9 +230,9 @@ class TestPolicyCreate(TestPolicy):
|
||||
super(TestPolicyCreate, self).setUp()
|
||||
self.cmd = osc_policy.CreatePolicy(self.app, None)
|
||||
self.mock_client.create_policy = mock.Mock(
|
||||
return_value=sdk_policy.Policy(attrs=self.response['policy']))
|
||||
return_value=sdk_policy.Policy(**self.response['policy']))
|
||||
self.mock_client.get_policy = mock.Mock(
|
||||
return_value=sdk_policy.Policy(attrs=self.response['policy']))
|
||||
return_value=sdk_policy.Policy(**self.response['policy']))
|
||||
|
||||
def test_policy_create_defaults(self):
|
||||
arglist = ['my_policy', '--spec-file', self.spec_path]
|
||||
@ -274,11 +274,11 @@ class TestPolicyUpdate(TestPolicy):
|
||||
super(TestPolicyUpdate, self).setUp()
|
||||
self.cmd = osc_policy.UpdatePolicy(self.app, None)
|
||||
self.mock_client.update_policy = mock.Mock(
|
||||
return_value=sdk_policy.Policy(attrs=self.response['policy']))
|
||||
return_value=sdk_policy.Policy(**self.response['policy']))
|
||||
self.mock_client.get_policy = mock.Mock(
|
||||
return_value=sdk_policy.Policy(attrs=self.response['policy']))
|
||||
return_value=sdk_policy.Policy(**self.response['policy']))
|
||||
self.mock_client.find_policy = mock.Mock(
|
||||
return_value=sdk_policy.Policy(attrs=self.response['policy']))
|
||||
return_value=sdk_policy.Policy(**self.response['policy']))
|
||||
|
||||
def test_policy_update_defaults(self):
|
||||
arglist = ['--name', 'new_policy', '9f779ddf']
|
||||
|
@ -29,15 +29,9 @@ class TestPolicyType(fakes.TestClusteringv1):
|
||||
class TestPolicyTypeList(TestPolicyType):
|
||||
expected_columns = ['name']
|
||||
list_response = [
|
||||
sdk_policy_type.PolicyType({'name': 'BBB',
|
||||
'schema': {
|
||||
'foo': 'bar'}}),
|
||||
sdk_policy_type.PolicyType({'name': 'AAA',
|
||||
'schema': {
|
||||
'foo': 'bar'}}),
|
||||
sdk_policy_type.PolicyType({'name': 'CCC',
|
||||
'schema': {
|
||||
'foo': 'bar'}}),
|
||||
sdk_policy_type.PolicyType(name='BBB', schema={'foo': 'bar'}),
|
||||
sdk_policy_type.PolicyType(name='AAA', schema={'foo': 'bar'}),
|
||||
sdk_policy_type.PolicyType(name='CCC', schema={'foo': 'bar'}),
|
||||
]
|
||||
expected_rows = [
|
||||
['AAA'],
|
||||
@ -71,7 +65,7 @@ class TestPolicyTypeShow(TestPolicyType):
|
||||
super(TestPolicyTypeShow, self).setUp()
|
||||
self.cmd = osc_policy_type.PolicyTypeShow(self.app, None)
|
||||
self.mock_client.get_policy_type = mock.Mock(
|
||||
return_value=sdk_policy_type.PolicyType(self.response)
|
||||
return_value=sdk_policy_type.PolicyType(**self.response)
|
||||
)
|
||||
|
||||
def test_policy_type_show(self):
|
||||
|
@ -30,7 +30,7 @@ class TestProfile(fakes.TestClusteringv1):
|
||||
|
||||
|
||||
class TestProfileShow(TestProfile):
|
||||
get_response = {"profile": {
|
||||
response = {"profile": {
|
||||
"created_at": "2015-03-01T14:28:25",
|
||||
"domain": 'false',
|
||||
"id": "7fa885cd-fa39-4531-a42d-780af95c84a4",
|
||||
@ -92,8 +92,7 @@ class TestProfileShow(TestProfile):
|
||||
super(TestProfileShow, self).setUp()
|
||||
self.cmd = osc_profile.ShowProfile(self.app, None)
|
||||
self.mock_client.get_profile = mock.Mock(
|
||||
return_value=sdk_profile.Profile(
|
||||
attrs=self.get_response['profile']))
|
||||
return_value=sdk_profile.Profile(**self.response['profile']))
|
||||
utils.get_dict_properties = mock.Mock(return_value='')
|
||||
|
||||
def test_profile_show(self):
|
||||
@ -305,13 +304,15 @@ class TestProfileCreate(TestProfile):
|
||||
"updated_at": None,
|
||||
"user": "2d7aca950f3e465d8ef0c81720faf6ff"}}
|
||||
|
||||
defaults = {"spec": {
|
||||
"version": 1.0,
|
||||
"type": "os.nova.server",
|
||||
"properties": {
|
||||
"flavor": 1,
|
||||
"name": "cirros_server",
|
||||
"image": "cirros-0.3.4-x86_64-uec"}
|
||||
defaults = {
|
||||
"spec": {
|
||||
"version": 1.0,
|
||||
"type": "os.nova.server",
|
||||
"properties": {
|
||||
"flavor": 1,
|
||||
"name": "cirros_server",
|
||||
"image": "cirros-0.3.4-x86_64-uec"
|
||||
},
|
||||
},
|
||||
"name": "my_profile",
|
||||
"metadata": {}
|
||||
@ -321,9 +322,9 @@ class TestProfileCreate(TestProfile):
|
||||
super(TestProfileCreate, self).setUp()
|
||||
self.cmd = osc_profile.CreateProfile(self.app, None)
|
||||
self.mock_client.create_profile = mock.Mock(
|
||||
return_value=sdk_profile.Profile(attrs=self.response['profile']))
|
||||
return_value=sdk_profile.Profile(**self.response['profile']))
|
||||
self.mock_client.get_profile = mock.Mock(
|
||||
return_value=sdk_profile.Profile(attrs=self.response['profile']))
|
||||
return_value=sdk_profile.Profile(**self.response['profile']))
|
||||
utils.get_dict_properties = mock.Mock(return_value='')
|
||||
|
||||
def test_profile_create_defaults(self):
|
||||
@ -376,11 +377,11 @@ class TestProfileUpdate(TestProfile):
|
||||
super(TestProfileUpdate, self).setUp()
|
||||
self.cmd = osc_profile.UpdateProfile(self.app, None)
|
||||
self.mock_client.update_profile = mock.Mock(
|
||||
return_value=sdk_profile.Profile(attrs=self.response['profile']))
|
||||
return_value=sdk_profile.Profile(**self.response['profile']))
|
||||
self.mock_client.get_profile = mock.Mock(
|
||||
return_value=sdk_profile.Profile(attrs=self.response['profile']))
|
||||
return_value=sdk_profile.Profile(**self.response['profile']))
|
||||
self.mock_client.find_profile = mock.Mock(
|
||||
return_value=sdk_profile.Profile(attrs=self.response['profile']))
|
||||
return_value=sdk_profile.Profile(**self.response['profile']))
|
||||
utils.get_dict_properties = mock.Mock(return_value='')
|
||||
|
||||
def test_profile_update_defaults(self):
|
||||
|
@ -29,18 +29,9 @@ class TestProfileType(fakes.TestClusteringv1):
|
||||
class TestProfileTypeList(TestProfileType):
|
||||
expected_columns = ['name']
|
||||
list_response = [
|
||||
sdk_profile_type.ProfileType({'name': 'BBB',
|
||||
'schema': {
|
||||
'foo': 'bar'}}
|
||||
),
|
||||
sdk_profile_type.ProfileType({'name': 'AAA',
|
||||
'schema': {
|
||||
'foo': 'bar'}}
|
||||
),
|
||||
sdk_profile_type.ProfileType({'name': 'CCC',
|
||||
'schema': {
|
||||
'foo': 'bar'}}
|
||||
),
|
||||
sdk_profile_type.ProfileType(name='BBB', schema={'foo': 'bar'}),
|
||||
sdk_profile_type.ProfileType(name='AAA', schema={'foo': 'bar'}),
|
||||
sdk_profile_type.ProfileType(name='CCC', schema={'foo': 'bar'}),
|
||||
]
|
||||
expected_rows = [
|
||||
['AAA'],
|
||||
@ -74,7 +65,7 @@ class TestProfileTypeShow(TestProfileType):
|
||||
super(TestProfileTypeShow, self).setUp()
|
||||
self.cmd = osc_profile_type.ProfileTypeShow(self.app, None)
|
||||
self.mock_client.get_profile_type = mock.Mock(
|
||||
return_value=sdk_profile_type.ProfileType(self.response)
|
||||
return_value=sdk_profile_type.ProfileType(**self.response)
|
||||
)
|
||||
|
||||
def test_profile_type_show(self):
|
||||
|
@ -67,8 +67,7 @@ class TestReceiverList(TestReceiver):
|
||||
def setUp(self):
|
||||
super(TestReceiverList, self).setUp()
|
||||
self.cmd = osc_receiver.ListReceiver(self.app, None)
|
||||
self.mock_client.receivers = mock.Mock(
|
||||
return_value=self.response)
|
||||
self.mock_client.receivers = mock.Mock(return_value=self.response)
|
||||
|
||||
def test_receiver_list_defaults(self):
|
||||
arglist = []
|
||||
@ -172,9 +171,8 @@ class TestReceiverShow(TestReceiver):
|
||||
def setUp(self):
|
||||
super(TestReceiverShow, self).setUp()
|
||||
self.cmd = osc_receiver.ShowReceiver(self.app, None)
|
||||
self.mock_client.get_receiver = mock.Mock(
|
||||
return_value=sdk_receiver.Receiver(
|
||||
attrs=self.get_response['receiver']))
|
||||
x_receiver = sdk_receiver.Receiver(**self.get_response['receiver'])
|
||||
self.mock_client.get_receiver = mock.Mock(return_value=x_receiver)
|
||||
|
||||
def test_receiver_show(self):
|
||||
arglist = ['my_receiver']
|
||||
@ -231,11 +229,9 @@ class TestReceiverCreate(TestReceiver):
|
||||
super(TestReceiverCreate, self).setUp()
|
||||
self.cmd = osc_receiver.CreateReceiver(self.app, None)
|
||||
self.mock_client.create_receiver = mock.Mock(
|
||||
return_value=sdk_receiver.Receiver(
|
||||
attrs=self.response['receiver']))
|
||||
return_value=sdk_receiver.Receiver(**self.response['receiver']))
|
||||
self.mock_client.get_receiver = mock.Mock(
|
||||
return_value=sdk_receiver.Receiver(
|
||||
attrs=self.response['receiver']))
|
||||
return_value=sdk_receiver.Receiver(**self.response['receiver']))
|
||||
|
||||
def test_receiver_create(self):
|
||||
arglist = ['my_receiver', '--action', 'CLUSTER_SCALE_OUT',
|
||||
|
@ -66,8 +66,9 @@ class ShellTest(testtools.TestCase):
|
||||
'api': utils.json_formatter,
|
||||
'engine': utils.json_formatter,
|
||||
}
|
||||
mock_print.assert_called_once_with(result, formatters=formatters)
|
||||
self.assertTrue(service.get_build_info.called)
|
||||
mock_print.assert_called_once_with(result.to_dict(),
|
||||
formatters=formatters)
|
||||
service.get_build_info.assert_called_once_with()
|
||||
|
||||
@mock.patch.object(utils, 'print_list')
|
||||
def test_do_profile_type_list(self, mock_print):
|
||||
@ -1104,7 +1105,7 @@ class ShellTest(testtools.TestCase):
|
||||
|
||||
sh._show_node(service, node_id, show_details=False)
|
||||
|
||||
service.get_node.assert_called_once_with(node_id, args=None)
|
||||
service.get_node.assert_called_once_with(node_id, details=False)
|
||||
mock_print.assert_called_once_with(data, formatters=formatters)
|
||||
|
||||
@mock.patch.object(sh, '_show_node')
|
||||
@ -1232,7 +1233,7 @@ class ShellTest(testtools.TestCase):
|
||||
def test_do_event_list(self, mock_print):
|
||||
service = mock.Mock()
|
||||
fields = ['id', 'timestamp', 'obj_type', 'obj_id', 'obj_name',
|
||||
'action', 'status', 'status_reason', 'level']
|
||||
'action', 'status', 'level', 'cluster_id']
|
||||
args = {
|
||||
'sort': 'timestamp:asc',
|
||||
'limit': 20,
|
||||
|
@ -104,7 +104,8 @@ class ListAction(lister.Lister):
|
||||
|
||||
return (
|
||||
columns,
|
||||
(utils.get_item_properties(a, columns, formatters=formatters)
|
||||
(utils.get_item_properties(a.to_dict(), columns,
|
||||
formatters=formatters)
|
||||
for a in actions)
|
||||
)
|
||||
|
||||
@ -141,6 +142,7 @@ class ShowAction(show.ShowOne):
|
||||
'depends_on': senlin_utils.list_formatter,
|
||||
'depended_by': senlin_utils.list_formatter,
|
||||
}
|
||||
columns = sorted(list(six.iterkeys(action)))
|
||||
return columns, utils.get_dict_properties(action.to_dict(), columns,
|
||||
data = action.to_dict()
|
||||
columns = sorted(list(six.iterkeys(data)))
|
||||
return columns, utils.get_dict_properties(data, columns,
|
||||
formatters=formatters)
|
||||
|
@ -13,7 +13,6 @@
|
||||
"""Clustering v1 build_info action implementations"""
|
||||
|
||||
import logging
|
||||
import six
|
||||
|
||||
from cliff import show
|
||||
from openstackclient.common import utils
|
||||
@ -40,6 +39,10 @@ class BuildInfo(show.ShowOne):
|
||||
'api': senlin_utils.json_formatter,
|
||||
'engine': senlin_utils.json_formatter,
|
||||
}
|
||||
columns = sorted(list(six.iterkeys(result)))
|
||||
return columns, utils.get_dict_properties(result.to_dict(), columns,
|
||||
data = {
|
||||
'api': result.api,
|
||||
'engine': result.engine,
|
||||
}
|
||||
columns = ['api', 'engine']
|
||||
return columns, utils.get_dict_properties(data, columns,
|
||||
formatters=formatters)
|
||||
|
@ -263,6 +263,14 @@ class Client(object):
|
||||
"""
|
||||
return self.service.cluster_update_policy(cluster, policy, **attrs)
|
||||
|
||||
def cluster_collect(self, cluster, path):
|
||||
"""Resize cluster
|
||||
|
||||
Doc link:
|
||||
http://developer.openstack.org/api-ref-clustering-v1.html#clusterAction
|
||||
"""
|
||||
return self.service.cluster_collect(cluster, path)
|
||||
|
||||
def check_cluster(self, cluster, **params):
|
||||
"""Check cluster's health status
|
||||
|
||||
|
@ -137,8 +137,9 @@ def _show_cluster(senlin_client, cluster_id):
|
||||
'metadata': senlin_utils.json_formatter,
|
||||
'nodes': senlin_utils.list_formatter
|
||||
}
|
||||
columns = sorted(list(six.iterkeys(cluster)))
|
||||
return columns, utils.get_dict_properties(cluster.to_dict(), columns,
|
||||
data = cluster.to_dict()
|
||||
columns = sorted(list(six.iterkeys(data)))
|
||||
return columns, utils.get_dict_properties(data, columns,
|
||||
formatters=formatters)
|
||||
|
||||
|
||||
|
@ -83,7 +83,8 @@ class ClusterPolicyList(lister.Lister):
|
||||
}
|
||||
return (
|
||||
columns,
|
||||
(utils.get_item_properties(p, columns, formatters=formatters)
|
||||
(utils.get_item_properties(p.to_dict(), columns,
|
||||
formatters=formatters)
|
||||
for p in policies)
|
||||
)
|
||||
|
||||
@ -113,8 +114,9 @@ class ClusterPolicyShow(show.ShowOne):
|
||||
senlin_client = self.app.client_manager.clustering
|
||||
policy = senlin_client.get_cluster_policy(parsed_args.policy,
|
||||
parsed_args.cluster)
|
||||
columns = sorted(list(six.iterkeys(policy)))
|
||||
return columns, utils.get_dict_properties(policy.to_dict(), columns)
|
||||
data = policy.to_dict()
|
||||
columns = sorted(list(six.iterkeys(data)))
|
||||
return columns, utils.get_dict_properties(data, columns)
|
||||
|
||||
|
||||
class ClusterPolicyUpdate(command.Command):
|
||||
|
@ -99,11 +99,10 @@ class ListEvent(lister.Lister):
|
||||
formatters['obj_id'] = lambda x: x[:8] if x else ''
|
||||
|
||||
events = senlin_client.events(**queries)
|
||||
return (
|
||||
columns,
|
||||
(utils.get_item_properties(e, columns, formatters=formatters)
|
||||
for e in events)
|
||||
)
|
||||
return (columns,
|
||||
(utils.get_item_properties(e.to_dict(), columns,
|
||||
formatters=formatters)
|
||||
for e in events))
|
||||
|
||||
|
||||
class ShowEvent(show.ShowOne):
|
||||
@ -129,5 +128,6 @@ class ShowEvent(show.ShowOne):
|
||||
except sdk_exc.ResourceNotFound:
|
||||
raise exc.CommandError(_("Event not found: %s")
|
||||
% parsed_args.event)
|
||||
columns = sorted(list(six.iterkeys(event)))
|
||||
return columns, utils.get_dict_properties(event.to_dict(), columns)
|
||||
data = event.to_dict()
|
||||
columns = sorted(list(six.iterkeys(data)))
|
||||
return columns, utils.get_dict_properties(data, columns)
|
||||
|
@ -158,12 +158,12 @@ def _show_node(senlin_client, node_id, show_details=False):
|
||||
'metadata': senlin_utils.json_formatter,
|
||||
'data': senlin_utils.json_formatter,
|
||||
}
|
||||
if show_details and node:
|
||||
data = node.to_dict()
|
||||
if show_details:
|
||||
formatters['details'] = senlin_utils.nested_dict_formatter(
|
||||
list(node['details'].keys()), ['property', 'value'])
|
||||
|
||||
columns = sorted(list(six.iterkeys(node)))
|
||||
return columns, utils.get_dict_properties(node.to_dict(), columns,
|
||||
list(data['details'].keys()), ['property', 'value'])
|
||||
columns = sorted(list(six.iterkeys(data)))
|
||||
return columns, utils.get_dict_properties(data, columns,
|
||||
formatters=formatters)
|
||||
|
||||
|
||||
|
@ -63,6 +63,7 @@ class PolicyTypeShow(format_utils.YamlFormat):
|
||||
except sdk_exc.ResourceNotFound:
|
||||
raise exc.CommandError(_('Policy Type not found: %s')
|
||||
% parsed_args.type_name)
|
||||
rows = list(six.itervalues(res))
|
||||
columns = list(six.iterkeys(res))
|
||||
data = res.to_dict()
|
||||
rows = list(six.itervalues(data))
|
||||
columns = list(six.iterkeys(data))
|
||||
return columns, rows
|
||||
|
@ -63,6 +63,7 @@ class ProfileTypeShow(format_utils.YamlFormat):
|
||||
except sdk_exc.ResourceNotFound:
|
||||
raise exc.CommandError(_('Profile Type not found: %s')
|
||||
% parsed_args.type_name)
|
||||
rows = list(six.itervalues(res))
|
||||
columns = list(six.iterkeys(res))
|
||||
data = res.to_dict()
|
||||
rows = list(six.itervalues(data))
|
||||
columns = list(six.iterkeys(data))
|
||||
return columns, rows
|
||||
|
@ -142,8 +142,9 @@ def _show_receiver(senlin_client, receiver_id):
|
||||
'params': senlin_utils.json_formatter,
|
||||
'channel': senlin_utils.json_formatter,
|
||||
}
|
||||
columns = sorted(list(six.iterkeys(receiver)))
|
||||
return columns, utils.get_dict_properties(receiver.to_dict(), columns,
|
||||
data = receiver.to_dict()
|
||||
columns = sorted(list(six.iterkeys(data)))
|
||||
return columns, utils.get_dict_properties(data, columns,
|
||||
formatters=formatters)
|
||||
|
||||
|
||||
|
@ -36,7 +36,7 @@ def do_build_info(service, args=None):
|
||||
:param args: Additional command line arguments, if any.
|
||||
"""
|
||||
show_deprecated('senlin build-info', 'openstack cluster build info')
|
||||
result = service.get_build_info()
|
||||
result = service.get_build_info().to_dict()
|
||||
|
||||
formatters = {
|
||||
'api': utils.json_formatter,
|
||||
@ -491,6 +491,33 @@ def do_cluster_create(service, args):
|
||||
_show_cluster(service, cluster.id)
|
||||
|
||||
|
||||
@utils.arg('-p', '--path', metavar='<PATH>',
|
||||
help=_('A Json path string specifying the attribute to collect.'))
|
||||
@utils.arg('-L', '--list', default=False, action="store_true",
|
||||
help=_('Print a full list that contains both node ids and '
|
||||
'attribute values instead of values only. Default is True.'))
|
||||
@utils.arg('-F', '--full-id', default=False, action="store_true",
|
||||
help=_('Print full IDs in list.'))
|
||||
@utils.arg('id', metavar='<CLUSTER>',
|
||||
help=_('Name or ID of cluster(s) to operate on.'))
|
||||
def do_cluster_collect(service, args):
|
||||
"""Collect attributes across a cluster."""
|
||||
show_deprecated('senlin cluster-collect', 'openstack cluster collect')
|
||||
|
||||
attrs = service.cluster_collect(args.id, args.path)
|
||||
if args.list:
|
||||
fields = ['node_id', 'value']
|
||||
formatters = {
|
||||
'value': utils.json_formatter
|
||||
}
|
||||
if not args.full_id:
|
||||
formatters['node_id'] = lambda x: x.node_id[:8]
|
||||
utils.print_list(attrs, fields, formatters=formatters)
|
||||
else:
|
||||
for attr in attrs:
|
||||
print(attr.value)
|
||||
|
||||
|
||||
@utils.arg('id', metavar='<CLUSTER>', nargs='+',
|
||||
help=_('Name or ID of cluster(s) to delete.'))
|
||||
def do_cluster_delete(service, args):
|
||||
@ -624,7 +651,7 @@ def do_cluster_node_del(service, args):
|
||||
@utils.arg('-t', '--min-step', metavar='<MIN_STEP>', type=int,
|
||||
help=_('An integer specifying the number of nodes for adjustment '
|
||||
'when <PERCENTAGE> is specified.'))
|
||||
@utils.arg('-s', '--strict', action='store_true', default=False,
|
||||
@utils.arg('-s', '--strict', action='store_true', default=False,
|
||||
help=_('A boolean specifying whether the resize should be '
|
||||
'performed on a best-effort basis when the new capacity '
|
||||
'may go beyond size constraints.'))
|
||||
@ -910,9 +937,8 @@ def do_node_list(service, args):
|
||||
|
||||
def _show_node(service, node_id, show_details=False):
|
||||
"""Show detailed info about the specified node."""
|
||||
args = {'show_details': True} if show_details else None
|
||||
try:
|
||||
node = service.get_node(node_id, args=args)
|
||||
node = service.get_node(node_id, details=show_details)
|
||||
except sdk_exc.ResourceNotFound:
|
||||
raise exc.CommandError(_('Node not found: %s') % node_id)
|
||||
|
||||
@ -923,7 +949,7 @@ def _show_node(service, node_id, show_details=False):
|
||||
data = node.to_dict()
|
||||
if show_details:
|
||||
formatters['details'] = utils.nested_dict_formatter(
|
||||
list(node['details'].keys()), ['property', 'value'])
|
||||
list(data['details'].keys()), ['property', 'value'])
|
||||
|
||||
utils.print_dict(data, formatters=formatters)
|
||||
|
||||
@ -1203,7 +1229,7 @@ def do_event_list(service, args):
|
||||
"""List events."""
|
||||
show_deprecated('senlin event-list', 'openstack cluster event list')
|
||||
fields = ['id', 'timestamp', 'obj_type', 'obj_id', 'obj_name', 'action',
|
||||
'status', 'status_reason', 'level']
|
||||
'status', 'level', 'cluster_id']
|
||||
queries = {
|
||||
'sort': args.sort,
|
||||
'limit': args.limit,
|
||||
@ -1218,6 +1244,8 @@ def do_event_list(service, args):
|
||||
if not args.full_id:
|
||||
formatters['id'] = lambda x: x.id[:8]
|
||||
formatters['obj_id'] = lambda x: x.obj_id[:8] if x.obj_id else ''
|
||||
formatters['cluster_id'] = (lambda x: x.cluster_id[:8]
|
||||
if x.cluster_id else '')
|
||||
|
||||
events = service.events(**queries)
|
||||
utils.print_list(events, fields, formatters=formatters)
|
||||
@ -1282,7 +1310,7 @@ def do_action_list(service, args):
|
||||
formatters['depended_by'] = f_depby
|
||||
else:
|
||||
formatters['id'] = lambda x: x.id[:8]
|
||||
formatters['target'] = lambda x: x.target[:8]
|
||||
formatters['target'] = lambda x: x.target_id[:8]
|
||||
f_depon = lambda x: '\n'.join(a[:8] for a in x.depends_on)
|
||||
f_depby = lambda x: '\n'.join(a[:8] for a in x.depended_by)
|
||||
formatters['depends_on'] = f_depon
|
||||
|
1
tox.ini
1
tox.ini
@ -35,6 +35,7 @@ commands=
|
||||
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
||||
|
||||
[flake8]
|
||||
ignore = D100,D101,D102,D103,D104,D105,D200,D201,D202,D204,D205,D300,D301,D400,D401
|
||||
show-source = True
|
||||
exclude=.venv,.git,.tox,dist,*openstack/common*,*lib/python*,*egg,build
|
||||
max-complexity=20
|
||||
|
Loading…
x
Reference in New Issue
Block a user