소스 검색

Merge pull request #12 from aznashwan/safe-api

Improve resiliency of various API calls and a minor refacor.
Nashwan Azhari 7 년 전
부모
커밋
2fb5afd6bc

+ 4 - 0
coriolis/api/v1/endpoint_destination_options.py

@@ -26,10 +26,14 @@ class EndpointDestinationOptionsController(api_wsgi.Controller):
         env = req.GET.get("env")
         if env is not None:
             env = utils.decode_base64_param(env, is_json=True)
+        else:
+            env = {}
 
         options = req.GET.get("options")
         if options is not None:
             options = utils.decode_base64_param(options, is_json=True)
+        else:
+            options = {}
 
         return endpoint_destination_options_view.collection(
             req,

+ 5 - 0
coriolis/api/v1/endpoint_instances.py

@@ -2,6 +2,7 @@
 # All Rights Reserved.
 
 from oslo_log import log as logging
+from webob import exc
 
 from coriolis import utils
 from coriolis.api import common
@@ -25,6 +26,10 @@ class EndpointInstanceController(api_wsgi.Controller):
         marker, limit = common.get_paging_params(req)
         instance_name_pattern = req.GET.get("name")
 
+        if instance_name_pattern is None:
+            raise exc.HTTPBadRequest(
+                explanation="Missing instance name to index.")
+
         return endpoint_instance_view.collection(
             req, self._instance_api.get_endpoint_instances(
                 context, endpoint_id, marker, limit, instance_name_pattern))

+ 2 - 0
coriolis/api/v1/endpoint_networks.py

@@ -24,6 +24,8 @@ class EndpointNetworkController(api_wsgi.Controller):
         env = req.GET.get("env")
         if env is not None:
             env = utils.decode_base64_param(env, is_json=True)
+        else:
+            env = {}
 
         return endpoint_network_view.collection(
             req, self._network_api.get_endpoint_networks(

+ 2 - 0
coriolis/api/v1/endpoint_storage.py

@@ -24,6 +24,8 @@ class EndpointStorageController(api_wsgi.Controller):
         env = req.GET.get("env")
         if env is not None:
             env = utils.decode_base64_param(env, is_json=True)
+        else:
+            env = {}
 
         return endpoint_storage_view.collection(
             req, self._storage_api.get_endpoint_storage(

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

@@ -49,7 +49,8 @@ class MigrationController(api_wsgi.Controller):
         try:
             origin_endpoint_id = migration["origin_endpoint_id"]
             destination_endpoint_id = migration["destination_endpoint_id"]
-            destination_environment = migration.get("destination_environment")
+            destination_environment = migration.get(
+                "destination_environment", {})
             instances = migration["instances"]
             notes = migration.get("notes")
             skip_os_morphing = migration.get("skip_os_morphing", False)

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

@@ -51,7 +51,8 @@ class ReplicaController(api_wsgi.Controller):
 
             origin_endpoint_id = replica["origin_endpoint_id"]
             destination_endpoint_id = replica["destination_endpoint_id"]
-            destination_environment = replica.get("destination_environment")
+            destination_environment = replica.get(
+                "destination_environment", {})
             instances = replica["instances"]
             notes = replica.get("notes")