Kaynağa Gözat

Add config options for providing Migration/Replica 'info' via API.

Nashwan Azhari 7 yıl önce
ebeveyn
işleme
b9f8670b97

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

@@ -3,9 +3,21 @@
 
 import itertools
 
+from oslo_config import cfg as conf
+
 from coriolis.api.v1.views import replica_tasks_execution_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:
@@ -22,6 +34,11 @@ def _format_migration(req, migration, keys=None):
     tasks = execution.get("tasks")
     if tasks:
         migration_dict["tasks"] = tasks
+
+    if not CONF.include_task_info_in_migrations_api and (
+            "info" in migration_dict):
+        migration_dict.pop("info")
+
     del migration_dict["executions"]
     return migration_dict
 

+ 19 - 1
coriolis/api/v1/views/replica_view.py

@@ -3,6 +3,18 @@
 
 import itertools
 
+from oslo_config import cfg as conf
+
+
+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):
@@ -10,9 +22,15 @@ def _format_replica(req, replica, keys=None):
             return
         yield (key, value)
 
-    return dict(itertools.chain.from_iterable(
+    replica_dict = dict(itertools.chain.from_iterable(
         transform(k, v) for k, v in replica.items()))
 
+    if not CONF.include_task_info_in_replicas_api and (
+            "info" in replica_dict):
+        replica_dict.pop("info")
+
+    return replica_dict
+
 
 def single(req, replica):
     return {"replica": _format_replica(req, replica)}