Browse Source

Adds instance name filter to get_endpoint_instances

Alessandro Pilotti 9 years ago
parent
commit
c49264e509

+ 3 - 1
coriolis/api/v1/endpoint_instances.py

@@ -18,10 +18,12 @@ class EndpointInstanceController(api_wsgi.Controller):
 
     def index(self, req, endpoint_id):
         marker, limit = common.get_paging_params(req)
+        instance_name_pattern = req.GET.get("name")
 
         return endpoint_instance_view.collection(
             req, self._instance_api.get_endpoint_instances(
-                req.environ['coriolis.context'], endpoint_id, marker, limit))
+                req.environ['coriolis.context'], endpoint_id, marker, limit,
+                instance_name_pattern))
 
 
 def create_resource():

+ 3 - 2
coriolis/conductor/rpc/client.py

@@ -32,12 +32,13 @@ class ConductorClient(object):
             ctxt, 'delete_endpoint', endpoint_id=endpoint_id)
 
     def get_endpoint_instances(self, ctxt, endpoint_id, marker=None,
-                               limit=None):
+                               limit=None, instance_name_pattern=None):
         return self._client.call(
             ctxt, 'get_endpoint_instances',
             endpoint_id=endpoint_id,
             marker=marker,
-            limit=limit)
+            limit=limit,
+            instance_name_pattern=instance_name_pattern)
 
     def execute_replica_tasks(self, ctxt, replica_id,
                               shutdown_instances=False):

+ 4 - 2
coriolis/conductor/rpc/server.py

@@ -102,7 +102,8 @@ class ConductorServerEndpoint(object):
     def delete_endpoint(self, ctxt, endpoint_id):
         db_api.delete_endpoint(ctxt, endpoint_id)
 
-    def get_endpoint_instances(self, ctxt, endpoint_id, marker, limit):
+    def get_endpoint_instances(self, ctxt, endpoint_id, marker, limit,
+                               instance_name_pattern):
         endpoint = self.get_endpoint(ctxt, endpoint_id)
 
         export_provider = providers_factory.get_provider(
@@ -112,7 +113,8 @@ class ConductorServerEndpoint(object):
             ctxt, endpoint.connection_info)
 
         instances_info = export_provider.get_instances(
-            ctxt, connection_info, last_seen_id=marker, limit=limit)
+            ctxt, connection_info, last_seen_id=marker, limit=limit,
+            instance_name_pattern=instance_name_pattern)
         for instance_info in instances_info:
             schemas.validate_value(
                 instance_info, schemas.CORIOLIS_VM_INSTANCE_INFO_SCHEMA)

+ 2 - 2
coriolis/endpoint_instances/api.py

@@ -9,6 +9,6 @@ class API(object):
         self._rpc_client = rpc_client.ConductorClient()
 
     def get_endpoint_instances(self, ctxt, endpoint_id, marker=None,
-                               limit=None):
+                               limit=None, instance_name_pattern=None):
         return self._rpc_client.get_endpoint_instances(
-            ctxt, endpoint_id, marker, limit)
+            ctxt, endpoint_id, marker, limit, instance_name_pattern)