]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/orchestrator: Add RGW service support
authorroot <t.mour@cern.ch>
Wed, 22 Aug 2018 16:36:32 +0000 (18:36 +0200)
committerroot <t.mour@cern.ch>
Thu, 23 Aug 2018 08:03:17 +0000 (10:03 +0200)
Signed-off-by: Rubab-Syed <rubab.syed21@gmail.com>
src/pybind/mgr/orchestrator_cli/module.py
src/pybind/mgr/rook/module.py
src/pybind/mgr/rook/rook_cluster.py

index dffe367a938aaf3558f576f24f1069ed23f41316..560cc073ff89630d1dba888f7cfbb81bcdf13cf2 100644 (file)
@@ -174,6 +174,20 @@ class OrchestratorCli(MgrModule):
             )
             self._wait([completion])
 
+            return 0, "", "Success."
+        elif svc_type == "rgw":
+            store_name = cmd['svc_arg']
+
+            spec = orchestrator.StatelessServiceSpec()
+            spec.name = store_name
+
+            completion = self._oremote(
+                "add_stateless_service",
+                svc_type,
+                spec
+            )
+            self._wait([completion])
+
             return 0, "", "Success."
         else:
             raise NotImplementedError(svc_type)
index 33dfe7cc3eaa0c6e39912f86cf5a77af8fe02afb..4e9a69066c2d491f754e45e4f5cb2f7cb4a8d6c1 100644 (file)
@@ -359,6 +359,10 @@ class RookOrchestrator(MgrModule, orchestrator.Orchestrator):
             return RookWriteCompletion(
                 lambda: self.rook_cluster.add_filesystem(spec), None,
                 "Creating Filesystem services for {0}".format(spec.name))
+        elif service_type == "rgw" :
+            return RookWriteCompletion(
+                lambda: self.rook_cluster.add_objectstore(spec), None,
+                "Creating RGW services for {0}".format(spec.name))
         else:
             # TODO: RGW, NFS
             raise NotImplementedError(service_type)
index c4046fe57914494d0c77f87eedcb7a73f7dccb17..709d10e67fafef1b26bc4481058186a40ed9c3b5 100644 (file)
@@ -218,6 +218,49 @@ class RookCluster(object):
             else:
                 raise
 
+    def add_objectstore(self, spec):
+  
+        rook_os = {
+            "apiVersion": ROOK_API_NAME,
+            "kind": "ObjectStore",
+            "metadata": {
+                "name": spec.name,
+                "namespace": self.rook_namespace
+            },
+            "spec": {
+                "metaDataPool": {
+                    "failureDomain": "host",
+                    "replicated": {
+                        "size": 1
+                    }
+                },
+                "dataPool": {
+                    "failureDomain": "osd",
+                    "replicated": {
+                        "size": 1
+                    }
+                },
+                "gateway": {
+                    "type": "s3",
+                    "port": 80,
+                    "instances": 1,
+                    "allNodes": False
+                }
+            }
+        }
+        
+        try:
+            self.rook_api_post(
+                "objectstores/",
+                body=rook_os
+            )
+        except ApiException as e:
+            if e.status == 409:
+                log.info("ObjectStore '{0}' already exists".format(spec.name))
+                # Idempotent, succeed.                                                                                                                                                                     
+            else:
+                raise
+
     def can_create_osd(self):
         current_cluster = self.rook_api_get(
             "clusters/{0}".format(self.cluster_name))