Forráskód Böngészése

Expose `include_task_info` parameters to `include_tasks_info_in_api` config options

Daniel Vincze 4 éve
szülő
commit
8a9446a749

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

@@ -1,6 +1,7 @@
 # Copyright 2016 Cloudbase Solutions Srl
 # Copyright 2016 Cloudbase Solutions Srl
 # All Rights Reserved.
 # All Rights Reserved.
 
 
+from oslo_config import cfg as conf
 from oslo_log import log as logging
 from oslo_log import log as logging
 from webob import exc
 from webob import exc
 
 
@@ -12,6 +13,16 @@ from coriolis.endpoints import api as endpoints_api
 from coriolis.migrations import api
 from coriolis.migrations import api
 from coriolis.policies import migrations as migration_policies
 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__)
 LOG = logging.getLogger(__name__)
 
 
 
 
@@ -24,7 +35,9 @@ class MigrationController(api_wsgi.Controller):
     def show(self, req, id):
     def show(self, req, id):
         context = req.environ["coriolis.context"]
         context = req.environ["coriolis.context"]
         context.can(migration_policies.get_migrations_policy_label("show"))
         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:
         if not migration:
             raise exc.HTTPNotFound()
             raise exc.HTTPNotFound()
 
 
@@ -38,7 +51,9 @@ class MigrationController(api_wsgi.Controller):
         context.can(migration_policies.get_migrations_policy_label("list"))
         context.can(migration_policies.get_migrations_policy_label("list"))
         return migration_view.collection(
         return migration_view.collection(
             req, self._migration_api.get_migrations(
             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):
     def index(self, req):
         return self._list(req)
         return self._list(req)

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

@@ -1,6 +1,7 @@
 # Copyright 2016 Cloudbase Solutions Srl
 # Copyright 2016 Cloudbase Solutions Srl
 # All Rights Reserved.
 # All Rights Reserved.
 
 
+from oslo_config import cfg as conf
 from oslo_log import log as logging
 from oslo_log import log as logging
 from webob import exc
 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.policies import replicas as replica_policies
 from coriolis.replicas import api
 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__)
 LOG = logging.getLogger(__name__)
 
 
 
 
@@ -25,7 +36,9 @@ class ReplicaController(api_wsgi.Controller):
     def show(self, req, id):
     def show(self, req, id):
         context = req.environ["coriolis.context"]
         context = req.environ["coriolis.context"]
         context.can(replica_policies.get_replicas_policy_label("show"))
         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:
         if not replica:
             raise exc.HTTPNotFound()
             raise exc.HTTPNotFound()
 
 
@@ -37,9 +50,12 @@ class ReplicaController(api_wsgi.Controller):
         context = req.environ["coriolis.context"]
         context = req.environ["coriolis.context"]
         context.show_deleted = show_deleted
         context.show_deleted = show_deleted
         context.can(replica_policies.get_replicas_policy_label("list"))
         context.can(replica_policies.get_replicas_policy_label("list"))
+        include_task_info = CONF.api.include_task_info_in_replicas_api
         return replica_view.collection(
         return replica_view.collection(
             req, self._replica_api.get_replicas(
             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):
     def index(self, req):
         return self._list(req)
         return self._list(req)

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

@@ -3,21 +3,9 @@
 
 
 import itertools
 import itertools
 
 
-from oslo_config import cfg as conf
-
 from coriolis.api.v1.views import replica_tasks_execution_view as view
 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 _format_migration(req, migration, keys=None):
     def transform(key, value):
     def transform(key, value):
         if keys and key not in keys:
         if keys and key not in keys:
@@ -39,9 +27,6 @@ def _format_migration(req, migration, keys=None):
     if tasks:
     if tasks:
         migration_dict["tasks"] = 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
     return migration_dict
 
 
 
 

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

@@ -3,26 +3,14 @@
 
 
 import itertools
 import itertools
 
 
-from oslo_config import cfg as conf
 from oslo_log import log as logging
 from oslo_log import log as logging
 
 
 from coriolis import constants
 from coriolis import constants
-from coriolis import utils
 
 
 
 
 LOG = logging.getLogger(__name__)
 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):
 def _sort_tasks(tasks, filter_error_only_tasks=True):
     """ Sorts the given list of dicts representing tasks.
     """ Sorts the given list of dicts representing tasks.
     Tasks are sorted primarily based on their index.
     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(
     execution_dict = dict(itertools.chain.from_iterable(
         transform(k, v) for k, v in execution.items()))
         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
     return execution_dict
 
 
 
 

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

@@ -3,21 +3,9 @@
 
 
 import itertools
 import itertools
 
 
-from oslo_config import cfg as conf
-
 from coriolis.api.v1.views import replica_tasks_execution_view as view
 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 _format_replica(req, replica, keys=None):
     def transform(key, value):
     def transform(key, value):
         if keys and key not in keys:
         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)
         view.format_replica_tasks_execution(req, ex)
         for ex in executions]
         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
     return replica_dict
 
 
 
 

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

@@ -142,10 +142,11 @@ class ConductorClient(rpc.BaseRPCClient):
             replica_id=replica_id,
             replica_id=replica_id,
             include_tasks=include_tasks)
             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(
         return self._call(
             ctxt, 'get_replica_tasks_execution', replica_id=replica_id,
             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):
     def delete_replica_tasks_execution(self, ctxt, replica_id, execution_id):
         return self._call(
         return self._call(
@@ -182,14 +183,17 @@ class ConductorClient(rpc.BaseRPCClient):
             source_environment=source_environment,
             source_environment=source_environment,
             user_scripts=user_scripts)
             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(
         return self._call(
             ctxt, 'get_replicas',
             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(
         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):
     def delete_replica(self, ctxt, replica_id):
         self._call(
         self._call(
@@ -200,14 +204,15 @@ class ConductorClient(rpc.BaseRPCClient):
             ctxt, 'delete_replica_disks', replica_id=replica_id)
             ctxt, 'delete_replica_disks', replica_id=replica_id)
 
 
     def get_migrations(self, ctxt, include_tasks=False,
     def get_migrations(self, ctxt, include_tasks=False,
-                       include_info=False):
+                       include_task_info=False):
         return self._call(
         return self._call(
             ctxt, 'get_migrations', include_tasks=include_tasks,
             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(
         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,
     def migrate_instances(self, ctxt, origin_endpoint_id,
                           destination_endpoint_id, origin_minion_pool_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):
     def cancel(self, ctxt, migration_id, force):
         self._rpc_client.cancel_migration(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):
     def delete(self, ctxt, replica_id):
         self._rpc_client.delete_replica(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):
     def delete_disks(self, ctxt, replica_id):
         return self._rpc_client.delete_replica_disks(ctxt, replica_id)
         return self._rpc_client.delete_replica_disks(ctxt, replica_id)