Merge "Add Deployment Info handlers"
This commit is contained in:
commit
0ffa8ef34d
|
@ -56,3 +56,34 @@ class TransactionCollectionHandler(CollectionHandler):
|
|||
)
|
||||
else:
|
||||
return self.collection.to_json()
|
||||
|
||||
|
||||
class BaseTransactionDataHandler(TransactionHandler):
|
||||
|
||||
get_data = None
|
||||
|
||||
@content
|
||||
def GET(self, transaction_id):
|
||||
""":returns: Collection of JSONized DeploymentInfo objects.
|
||||
|
||||
:http: * 200 (OK)
|
||||
* 404 (cluster not found in db)
|
||||
"""
|
||||
transaction = self.get_object_or_404(objects.Transaction,
|
||||
transaction_id)
|
||||
return self.get_data(transaction)
|
||||
|
||||
|
||||
class TransactionDeploymentInfo(BaseTransactionDataHandler):
|
||||
|
||||
get_data = objects.Transaction.get_deployment_info
|
||||
|
||||
|
||||
class TransactionClusterSettings(BaseTransactionDataHandler):
|
||||
|
||||
get_data = objects.Transaction.get_cluster_settings
|
||||
|
||||
|
||||
class TransactionNetworkSettings(BaseTransactionDataHandler):
|
||||
|
||||
get_data = objects.Transaction.get_network_settings
|
||||
|
|
|
@ -131,8 +131,12 @@ from nailgun.api.v1.handlers.role import RoleHandler
|
|||
|
||||
from nailgun.api.v1.handlers.tasks import TaskCollectionHandler
|
||||
from nailgun.api.v1.handlers.tasks import TaskHandler
|
||||
from nailgun.api.v1.handlers.transactions import TransactionClusterSettings
|
||||
from nailgun.api.v1.handlers.transactions import TransactionCollectionHandler
|
||||
from nailgun.api.v1.handlers.transactions import TransactionDeploymentInfo
|
||||
from nailgun.api.v1.handlers.transactions import TransactionHandler
|
||||
from nailgun.api.v1.handlers.transactions import TransactionNetworkSettings
|
||||
|
||||
|
||||
from nailgun.api.v1.handlers.version import VersionHandler
|
||||
|
||||
|
@ -326,6 +330,12 @@ urls = (
|
|||
TransactionHandler,
|
||||
r'/transactions/(?P<transaction_id>\d+)/deployment_history/?$',
|
||||
DeploymentHistoryCollectionHandler,
|
||||
r'/transactions/(?P<transaction_id>\d+)/deployment_info/?$',
|
||||
TransactionDeploymentInfo,
|
||||
r'/transactions/(?P<transaction_id>\d+)/network_configuration/?$',
|
||||
TransactionNetworkSettings,
|
||||
r'/transactions/(?P<transaction_id>\d+)/settings/?$',
|
||||
TransactionClusterSettings,
|
||||
|
||||
r'/plugins/(?P<plugin_id>\d+)/links/?$',
|
||||
PluginLinkCollectionHandler,
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
from nailgun import consts
|
||||
from nailgun.db.sqlalchemy.models import Task
|
||||
from nailgun import objects
|
||||
from nailgun.orchestrator import deployment_serializers
|
||||
from nailgun.test.base import BaseTestCase
|
||||
from nailgun.utils import reverse
|
||||
|
||||
|
@ -131,3 +133,106 @@ class TestTransactionHandlers(BaseTestCase):
|
|||
)
|
||||
self.assertEqual(resp.status_code, 404)
|
||||
self.assertIsNone(self.db().query(Task).get(task.id))
|
||||
|
||||
def test_get_transaction_cluster_attributes(self):
|
||||
cluster = self.cluster_db
|
||||
cluster_attrs = objects.Cluster.get_editable_attributes(cluster)
|
||||
transaction = objects.Transaction.create({
|
||||
'cluster_id': cluster.id,
|
||||
'status': consts.TASK_STATUSES.ready,
|
||||
'name': consts.TASK_NAMES.deployment
|
||||
})
|
||||
objects.Transaction.attach_cluster_settings(
|
||||
transaction, {'editable': cluster_attrs}
|
||||
)
|
||||
self.assertIsNotNone(
|
||||
objects.Transaction.get_cluster_settings(transaction)
|
||||
)
|
||||
resp = self.app.get(
|
||||
reverse(
|
||||
'TransactionClusterSettings',
|
||||
kwargs={'transaction_id': transaction.id}),
|
||||
headers=self.default_headers
|
||||
)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.datadiff(cluster_attrs, resp.json_body['editable'])
|
||||
|
||||
def test_get_cluster_attributes_fail_not_existed_transaction(self):
|
||||
resp = self.app.get(
|
||||
reverse(
|
||||
'TransactionClusterSettings',
|
||||
kwargs={'transaction_id': -1}),
|
||||
headers=self.default_headers,
|
||||
expect_errors=True
|
||||
)
|
||||
self.assertEqual(resp.status_code, 404)
|
||||
|
||||
def test_get_transaction_deployment_info(self):
|
||||
cluster = self.cluster_db
|
||||
nodes = objects.Cluster.get_nodes_not_for_deletion(cluster)
|
||||
deployment_node_info = deployment_serializers.serialize_for_lcm(
|
||||
cluster, nodes
|
||||
)
|
||||
deployment_info = {node['uid']: node for node in deployment_node_info}
|
||||
transaction = objects.Transaction.create({
|
||||
'cluster_id': cluster.id,
|
||||
'status': consts.TASK_STATUSES.ready,
|
||||
'name': consts.TASK_NAMES.deployment
|
||||
})
|
||||
objects.Transaction.attach_deployment_info(
|
||||
transaction, deployment_info
|
||||
)
|
||||
self.assertIsNotNone(
|
||||
objects.Transaction.get_deployment_info(transaction)
|
||||
)
|
||||
resp = self.app.get(
|
||||
reverse(
|
||||
'TransactionDeploymentInfo',
|
||||
kwargs={'transaction_id': transaction.id}),
|
||||
headers=self.default_headers
|
||||
)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.datadiff(deployment_info, resp.json_body)
|
||||
|
||||
def test_get_deployment_info_fail_not_existed_transaction(self):
|
||||
resp = self.app.get(
|
||||
reverse(
|
||||
'TransactionDeploymentInfo',
|
||||
kwargs={'transaction_id': -1}),
|
||||
headers=self.default_headers,
|
||||
expect_errors=True
|
||||
)
|
||||
self.assertEqual(resp.status_code, 404)
|
||||
|
||||
def test_get_transaction_network_settings(self):
|
||||
cluster = self.cluster_db
|
||||
resp = self.env.neutron_networks_get(cluster.id)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
net_attrs = resp.json_body
|
||||
transaction = objects.Transaction.create({
|
||||
'cluster_id': cluster.id,
|
||||
'status': consts.TASK_STATUSES.ready,
|
||||
'name': consts.TASK_NAMES.deployment
|
||||
})
|
||||
objects.Transaction.attach_network_settings(transaction, net_attrs)
|
||||
self.assertIsNotNone(
|
||||
objects.Transaction.get_network_settings(transaction)
|
||||
)
|
||||
resp = self.app.get(
|
||||
reverse(
|
||||
'TransactionNetworkSettings',
|
||||
kwargs={'transaction_id': transaction.id}),
|
||||
headers=self.default_headers
|
||||
)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.datadiff(net_attrs, resp.json_body)
|
||||
|
||||
def test_get_network_settings_fail_not_existed_transaction(self):
|
||||
resp = self.app.get(
|
||||
reverse(
|
||||
'TransactionNetworkSettings',
|
||||
kwargs={'transaction_id': -1}),
|
||||
headers=self.default_headers,
|
||||
expect_errors=True
|
||||
)
|
||||
self.assertEqual(resp.status_code, 404)
|
||||
|
|
Loading…
Reference in New Issue