Prechádzať zdrojové kódy

Expose `include_task_info` parameters to `include_tasks_info_in_api` config options

Daniel Vincze 4 rokov pred
rodič
commit
8a9446a749

+ 17 - 2
coriolis/api/v1/migrations.py

@@ -1,6 +1,7 @@
 # Copyright 2016 Cloudbase Solutions Srl
 # All Rights Reserved.
 
+from oslo_config import cfg as conf
 from oslo_log import log as logging
 from webob import exc
 
@@ -12,6 +13,16 @@ from coriolis.endpoints import api as endpoints_api
 from coriolis.migrations import api
 from coriolis.policies import migrations as migration_policies
 
+
+MIGRATIONS_API_OPTS = [
+    conf.BoolOpt("include_task_info_in_migrations_api",
+                 default=False,
+                 help="Whether or not to expose the internal 'info' field of "
+                      "a Migration as part of a `GET` request.")]
+
+CONF = conf.CONF
+CONF.register_opts(MIGRATIONS_API_OPTS, 'api')
+
 LOG = logging.getLogger(__name__)
 
 
@@ -24,7 +35,9 @@ class MigrationController(api_wsgi.Controller):
     def show(self, req, id):
         context = req.environ["coriolis.context"]
         context.can(migration_policies.get_migrations_policy_label("show"))
-        migration = self._migration_api.get_migration(context, id)
+        migration = self._migration_api.get_migration(
+            context, id,
+            include_task_info=CONF.api.include_task_info_in_migrations_api)
         if not migration:
             raise exc.HTTPNotFound()
 
@@ -38,7 +51,9 @@ class MigrationController(api_wsgi.Controller):
         context.can(migration_policies.get_migrations_policy_label("list"))
         return migration_view.collection(
             req, self._migration_api.get_migrations(
-                context, include_tasks=False))
+                context,
+                include_tasks=CONF.api.include_task_info_in_migrations_api,
+                include_task_info=CONF.api.include_task_info_in_migrations_api))
 
     def index(self, req):
         return self._list(req)

+ 18 - 2
coriolis/api/v1/replicas.py

@@ -1,6 +1,7 @@
 # Copyright 2016 Cloudbase Solutions Srl
 # All Rights Reserved.
 
+from oslo_config import cfg as conf
 from oslo_log import log as logging
 from webob import exc
 
@@ -13,6 +14,16 @@ from coriolis.endpoints import api as endpoints_api
 from coriolis.policies import replicas as replica_policies
 from coriolis.replicas import api
 
+
+REPLICA_API_OPTS = [
+    conf.BoolOpt("include_task_info_in_replicas_api",
+                 default=False,
+                 help="Whether or not to expose the internal 'info' field of "
+                      "a Replica as part of a `GET` request.")]
+
+CONF = conf.CONF
+CONF.register_opts(REPLICA_API_OPTS, 'api')
+
 LOG = logging.getLogger(__name__)
 
 
@@ -25,7 +36,9 @@ class ReplicaController(api_wsgi.Controller):
     def show(self, req, id):
         context = req.environ["coriolis.context"]
         context.can(replica_policies.get_replicas_policy_label("show"))
-        replica = self._replica_api.get_replica(context, id)
+        replica = self._replica_api.get_replica(
+            context, id,
+            include_task_info=CONF.api.include_task_info_in_replicas_api)
         if not replica:
             raise exc.HTTPNotFound()
 
@@ -37,9 +50,12 @@ class ReplicaController(api_wsgi.Controller):
         context = req.environ["coriolis.context"]
         context.show_deleted = show_deleted
         context.can(replica_policies.get_replicas_policy_label("list"))
+        include_task_info = CONF.api.include_task_info_in_replicas_api
         return replica_view.collection(
             req, self._replica_api.get_replicas(
-                context, include_tasks_executions=False))
+                context,
+                include_tasks_executions=include_task_info,
+                include_task_info=include_task_info))
 
     def index(self, req):
         return self._list(req)

+ 0 - 15
coriolis/api/v1/views/migration_view.py

@@ -3,21 +3,9 @@
 
 import itertools
 
-from oslo_config import cfg as conf
-
 from coriolis.api.v1.views import replica_tasks_execution_view as view
 
 
-MIGRATIONS_API_OPTS = [
-    conf.BoolOpt("include_task_info_in_migrations_api",
-                 default=False,
-                 help="Whether or not to expose the internal 'info' field of "
-                      "a Migration as part of a `GET` request.")]
-
-CONF = conf.CONF
-CONF.register_opts(MIGRATIONS_API_OPTS)
-
-
 def _format_migration(req, migration, keys=None):
     def transform(key, value):
         if keys and key not in keys:
@@ -39,9 +27,6 @@ def _format_migration(req, migration, keys=None):
     if tasks:
         migration_dict["tasks"] = tasks
 
-    if not CONF.include_task_info_in_migrations_api and (
-            "info" in migration_dict):
-        migration_dict.pop("info")
     return migration_dict
 
 

+ 0 - 18
coriolis/api/v1/views/replica_tasks_execution_view.py

@@ -3,26 +3,14 @@
 
 import itertools
 
-from oslo_config import cfg as conf
 from oslo_log import log as logging
 
 from coriolis import constants
-from coriolis import utils
 
 
 LOG = logging.getLogger(__name__)
 
 
-REPLICA_EXECUTION_API_OPTS = [
-    conf.BoolOpt("include_task_info_in_replica_executions_api",
-                 default=False,
-                 help="Whether or not to expose the internal 'info' field of "
-                      "a Replica execution as part of a `GET` request.")]
-
-CONF = conf.CONF
-CONF.register_opts(REPLICA_EXECUTION_API_OPTS)
-
-
 def _sort_tasks(tasks, filter_error_only_tasks=True):
     """ Sorts the given list of dicts representing tasks.
     Tasks are sorted primarily based on their index.
@@ -48,12 +36,6 @@ def format_replica_tasks_execution(req, execution, keys=None):
     execution_dict = dict(itertools.chain.from_iterable(
         transform(k, v) for k, v in execution.items()))
 
-    if not CONF.include_task_info_in_replica_executions_api and (
-            "action" in execution_dict):
-        action_dict = execution_dict["action"]
-        if "info" in action_dict:
-            action_dict.pop("info")
-
     return execution_dict
 
 

+ 0 - 16
coriolis/api/v1/views/replica_view.py

@@ -3,21 +3,9 @@
 
 import itertools
 
-from oslo_config import cfg as conf
-
 from coriolis.api.v1.views import replica_tasks_execution_view as view
 
 
-REPLICA_API_OPTS = [
-    conf.BoolOpt("include_task_info_in_replicas_api",
-                 default=False,
-                 help="Whether or not to expose the internal 'info' field of "
-                      "a Replica as part of a `GET` request.")]
-
-CONF = conf.CONF
-CONF.register_opts(REPLICA_API_OPTS)
-
-
 def _format_replica(req, replica, keys=None):
     def transform(key, value):
         if keys and key not in keys:
@@ -32,10 +20,6 @@ def _format_replica(req, replica, keys=None):
         view.format_replica_tasks_execution(req, ex)
         for ex in executions]
 
-    if not CONF.include_task_info_in_replicas_api and (
-            "info" in replica_dict):
-        replica_dict.pop("info")
-
     return replica_dict
 
 

+ 15 - 10
coriolis/conductor/rpc/client.py

@@ -142,10 +142,11 @@ class ConductorClient(rpc.BaseRPCClient):
             replica_id=replica_id,
             include_tasks=include_tasks)
 
-    def get_replica_tasks_execution(self, ctxt, replica_id, execution_id):
+    def get_replica_tasks_execution(self, ctxt, replica_id, execution_id,
+                                    include_task_info=False):
         return self._call(
             ctxt, 'get_replica_tasks_execution', replica_id=replica_id,
-            execution_id=execution_id)
+            execution_id=execution_id, include_task_info=include_task_info)
 
     def delete_replica_tasks_execution(self, ctxt, replica_id, execution_id):
         return self._call(
@@ -182,14 +183,17 @@ class ConductorClient(rpc.BaseRPCClient):
             source_environment=source_environment,
             user_scripts=user_scripts)
 
-    def get_replicas(self, ctxt, include_tasks_executions=False):
+    def get_replicas(self, ctxt, include_tasks_executions=False,
+                     include_task_info=False):
         return self._call(
             ctxt, 'get_replicas',
-            include_tasks_executions=include_tasks_executions)
+            include_tasks_executions=include_tasks_executions,
+            include_task_info=include_task_info)
 
-    def get_replica(self, ctxt, replica_id):
+    def get_replica(self, ctxt, replica_id, include_task_info=False):
         return self._call(
-            ctxt, 'get_replica', replica_id=replica_id)
+            ctxt, 'get_replica', replica_id=replica_id,
+            include_task_info=include_task_info)
 
     def delete_replica(self, ctxt, replica_id):
         self._call(
@@ -200,14 +204,15 @@ class ConductorClient(rpc.BaseRPCClient):
             ctxt, 'delete_replica_disks', replica_id=replica_id)
 
     def get_migrations(self, ctxt, include_tasks=False,
-                       include_info=False):
+                       include_task_info=False):
         return self._call(
             ctxt, 'get_migrations', include_tasks=include_tasks,
-            include_info=include_info)
+            include_task_info=include_task_info)
 
-    def get_migration(self, ctxt, migration_id):
+    def get_migration(self, ctxt, migration_id, include_task_info=False):
         return self._call(
-            ctxt, 'get_migration', migration_id=migration_id)
+            ctxt, 'get_migration', migration_id=migration_id,
+            include_task_info=include_task_info)
 
     def migrate_instances(self, ctxt, origin_endpoint_id,
                           destination_endpoint_id, origin_minion_pool_id,

+ 8 - 5
coriolis/migrations/api.py

@@ -44,8 +44,11 @@ class API(object):
     def cancel(self, ctxt, migration_id, force):
         self._rpc_client.cancel_migration(ctxt, migration_id, force)
 
-    def get_migrations(self, ctxt, include_tasks=False):
-        return self._rpc_client.get_migrations(ctxt, include_tasks)
-
-    def get_migration(self, ctxt, migration_id):
-        return self._rpc_client.get_migration(ctxt, migration_id)
+    def get_migrations(self, ctxt, include_tasks=False,
+                       include_task_info=False):
+        return self._rpc_client.get_migrations(
+            ctxt, include_tasks, include_task_info=include_task_info)
+
+    def get_migration(self, ctxt, migration_id, include_task_info=False):
+        return self._rpc_client.get_migration(
+            ctxt, migration_id, include_task_info=include_task_info)

+ 9 - 5
coriolis/replicas/api.py

@@ -27,11 +27,15 @@ class API(object):
     def delete(self, ctxt, replica_id):
         self._rpc_client.delete_replica(ctxt, replica_id)
 
-    def get_replicas(self, ctxt, include_tasks_executions=False):
-        return self._rpc_client.get_replicas(ctxt, include_tasks_executions)
-
-    def get_replica(self, ctxt, replica_id):
-        return self._rpc_client.get_replica(ctxt, replica_id)
+    def get_replicas(self, ctxt, include_tasks_executions=False,
+                     include_task_info=False):
+        return self._rpc_client.get_replicas(
+            ctxt, include_tasks_executions,
+            include_task_info=include_task_info)
+
+    def get_replica(self, ctxt, replica_id, include_task_info=False):
+        return self._rpc_client.get_replica(
+            ctxt, replica_id, include_task_info=include_task_info)
 
     def delete_disks(self, ctxt, replica_id):
         return self._rpc_client.delete_replica_disks(ctxt, replica_id)