Merge "Add more verbosity to fuel2 vms commands"
This commit is contained in:
commit
496968758f
|
@ -18,3 +18,7 @@ from fuelclient.objects.base import BaseObject
|
||||||
class FuelVersion(BaseObject):
|
class FuelVersion(BaseObject):
|
||||||
|
|
||||||
class_api_path = "version/"
|
class_api_path = "version/"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_feature_groups(cls):
|
||||||
|
return cls.get_all_data()['feature_groups']
|
||||||
|
|
|
@ -20,6 +20,7 @@ import fuelclient
|
||||||
from fuelclient.cli import error
|
from fuelclient.cli import error
|
||||||
from fuelclient.objects import base as base_object
|
from fuelclient.objects import base as base_object
|
||||||
from fuelclient.objects import environment as env_object
|
from fuelclient.objects import environment as env_object
|
||||||
|
from fuelclient.objects import fuelversion as fuelversion_object
|
||||||
from fuelclient.objects import task as task_object
|
from fuelclient.objects import task as task_object
|
||||||
from fuelclient.tests.unit.v2.lib import test_api
|
from fuelclient.tests.unit.v2.lib import test_api
|
||||||
from fuelclient.tests import utils
|
from fuelclient.tests import utils
|
||||||
|
@ -252,9 +253,12 @@ class TestEnvFacade(test_api.BaseLibTest):
|
||||||
# Check whether all assignments are expected
|
# Check whether all assignments are expected
|
||||||
self.assertIn(assignment, expected_body)
|
self.assertIn(assignment, expected_body)
|
||||||
|
|
||||||
def test_env_spawn_vms(self):
|
@mock.patch.object(fuelversion_object.FuelVersion, 'get_feature_groups')
|
||||||
|
def test_env_spawn_vms(self, m_feature_groups):
|
||||||
env_id = 10
|
env_id = 10
|
||||||
expected_uri = '/api/v1/clusters/{0}/spawn_vms/'.format(env_id)
|
expected_uri = '/api/v1/clusters/{0}/spawn_vms/'.format(env_id)
|
||||||
|
m_feature_groups.return_value = \
|
||||||
|
utils.get_fake_fuel_version()['feature_groups']
|
||||||
|
|
||||||
matcher = self.m_request.put(expected_uri, json={})
|
matcher = self.m_request.put(expected_uri, json={})
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ import fuelclient
|
||||||
from fuelclient.cli import error
|
from fuelclient.cli import error
|
||||||
from fuelclient.cli import serializers
|
from fuelclient.cli import serializers
|
||||||
from fuelclient.objects import base as base_object
|
from fuelclient.objects import base as base_object
|
||||||
|
from fuelclient.objects import fuelversion as fuelversion_object
|
||||||
from fuelclient.tests.unit.v2.lib import test_api
|
from fuelclient.tests.unit.v2.lib import test_api
|
||||||
from fuelclient.tests import utils
|
from fuelclient.tests import utils
|
||||||
|
|
||||||
|
@ -75,9 +76,12 @@ class TestNodeFacade(test_api.BaseLibTest):
|
||||||
|
|
||||||
self.assertTrue(matcher.called)
|
self.assertTrue(matcher.called)
|
||||||
|
|
||||||
def test_node_vms_list(self):
|
@mock.patch.object(fuelversion_object.FuelVersion, 'get_feature_groups')
|
||||||
|
def test_node_vms_list(self, m_feature_groups):
|
||||||
node_id = 42
|
node_id = 42
|
||||||
expected_uri = "/api/v1/nodes/{0}/vms_conf/".format(node_id)
|
expected_uri = "/api/v1/nodes/{0}/vms_conf/".format(node_id)
|
||||||
|
m_feature_groups.return_value = \
|
||||||
|
utils.get_fake_fuel_version()['feature_groups']
|
||||||
|
|
||||||
fake_vms = [{'id': 1, 'opt2': 'val2'},
|
fake_vms = [{'id': 1, 'opt2': 'val2'},
|
||||||
{'id': 2, 'opt4': 'val4'}]
|
{'id': 2, 'opt4': 'val4'}]
|
||||||
|
@ -87,10 +91,13 @@ class TestNodeFacade(test_api.BaseLibTest):
|
||||||
|
|
||||||
self.assertTrue(matcher.called)
|
self.assertTrue(matcher.called)
|
||||||
|
|
||||||
def test_node_vms_create(self):
|
@mock.patch.object(fuelversion_object.FuelVersion, 'get_feature_groups')
|
||||||
|
def test_node_vms_create(self, m_feature_groups):
|
||||||
config = [{'id': 1, 'opt2': 'val2'},
|
config = [{'id': 1, 'opt2': 'val2'},
|
||||||
{'id': 2, 'opt4': 'val4'}]
|
{'id': 2, 'opt4': 'val4'}]
|
||||||
node_id = 42
|
node_id = 42
|
||||||
|
m_feature_groups.return_value = \
|
||||||
|
utils.get_fake_fuel_version()['feature_groups']
|
||||||
|
|
||||||
expected_uri = "/api/v1/nodes/{0}/vms_conf/".format(node_id)
|
expected_uri = "/api/v1/nodes/{0}/vms_conf/".format(node_id)
|
||||||
expected_body = {'vms_conf': config}
|
expected_body = {'vms_conf': config}
|
||||||
|
|
|
@ -24,6 +24,6 @@ def get_fake_fuel_version():
|
||||||
"""
|
"""
|
||||||
return {"api": "1",
|
return {"api": "1",
|
||||||
"auth_required": True,
|
"auth_required": True,
|
||||||
"feature_groups": [],
|
"feature_groups": ['advanced'],
|
||||||
"openstack_version": "newton-10.0",
|
"openstack_version": "newton-10.0",
|
||||||
"release": "10.0"}
|
"release": "10.0"}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
from fuelclient.cli import error
|
from fuelclient.cli import error
|
||||||
from fuelclient import objects
|
from fuelclient import objects
|
||||||
from fuelclient.v1 import base_v1
|
from fuelclient.v1 import base_v1
|
||||||
|
from fuelclient.v1 import fuelversion
|
||||||
|
|
||||||
|
|
||||||
class EnvironmentClient(base_v1.BaseV1Client):
|
class EnvironmentClient(base_v1.BaseV1Client):
|
||||||
|
@ -116,6 +117,7 @@ class EnvironmentClient(base_v1.BaseV1Client):
|
||||||
|
|
||||||
def spawn_vms(self, environment_id):
|
def spawn_vms(self, environment_id):
|
||||||
env = self._entity_wrapper(obj_id=environment_id)
|
env = self._entity_wrapper(obj_id=environment_id)
|
||||||
|
fuelversion.FuelVersionClient.check_advanced_feature()
|
||||||
return env.spawn_vms()
|
return env.spawn_vms()
|
||||||
|
|
||||||
def upload_network_template(self, environment_id,
|
def upload_network_template(self, environment_id,
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
from fuelclient.cli import error
|
||||||
from fuelclient import objects
|
from fuelclient import objects
|
||||||
from fuelclient.v1 import base_v1
|
from fuelclient.v1 import base_v1
|
||||||
|
|
||||||
|
@ -20,6 +21,12 @@ class FuelVersionClient(base_v1.BaseV1Client):
|
||||||
|
|
||||||
_entity_wrapper = objects.FuelVersion
|
_entity_wrapper = objects.FuelVersion
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def check_advanced_feature(cls):
|
||||||
|
if 'advanced' not in cls._entity_wrapper.get_feature_groups():
|
||||||
|
msg = "Advanced feature should be enabled in feature groups"
|
||||||
|
raise error.ActionException(msg)
|
||||||
|
|
||||||
|
|
||||||
def get_client(connection):
|
def get_client(connection):
|
||||||
return FuelVersionClient(connection)
|
return FuelVersionClient(connection)
|
||||||
|
|
|
@ -18,6 +18,7 @@ import copy
|
||||||
from fuelclient.cli import error
|
from fuelclient.cli import error
|
||||||
from fuelclient import objects
|
from fuelclient import objects
|
||||||
from fuelclient.v1 import base_v1
|
from fuelclient.v1 import base_v1
|
||||||
|
from fuelclient.v1 import fuelversion
|
||||||
|
|
||||||
|
|
||||||
SplittedLabel = namedtuple('SplittedLabel', ['key', 'value', 'has_separator'])
|
SplittedLabel = namedtuple('SplittedLabel', ['key', 'value', 'has_separator'])
|
||||||
|
@ -90,10 +91,12 @@ class NodeClient(base_v1.BaseV1Client):
|
||||||
|
|
||||||
def get_node_vms_conf(self, node_id):
|
def get_node_vms_conf(self, node_id):
|
||||||
node = self._entity_wrapper(node_id)
|
node = self._entity_wrapper(node_id)
|
||||||
|
fuelversion.FuelVersionClient.check_advanced_feature()
|
||||||
return node.get_node_vms_conf()
|
return node.get_node_vms_conf()
|
||||||
|
|
||||||
def node_vms_create(self, node_id, config):
|
def node_vms_create(self, node_id, config):
|
||||||
node = self._entity_wrapper(node_id)
|
node = self._entity_wrapper(node_id)
|
||||||
|
fuelversion.FuelVersionClient.check_advanced_feature()
|
||||||
return node.node_vms_create(config)
|
return node.node_vms_create(config)
|
||||||
|
|
||||||
def update(self, node_id, **updated_attributes):
|
def update(self, node_id, **updated_attributes):
|
||||||
|
|
Loading…
Reference in New Issue