示例#1
0
    def login(self, password):
        """
        == Login to Kadalu Storage

        Login to Kadalu Storage

        Example:

        [source,python]
        ----
        from kadalu_storage import StorageManager

        mgr = StorageManager("http://localhost:3000")

        mgr.user("admin").login("secret")
        ----
        """
        resp = self.mgr.http_post(
            f"{self.mgr.url}/api/v1/users/{self.username}/api-keys",
            {"password": password})
        if resp.status == 201:
            data = json_from_response(resp)
            self.mgr.api_key_id = data["id"]
            self.mgr.user_id = data["user_id"]
            self.mgr.username = self.username
            self.mgr.token = data["token"]

        return response_object_or_error("ApiKey", resp, 201)
示例#2
0
 def add(cls, mgr, pool_name, name, endpoint=""):
     # noqa # pylint: disable=missing-function-docstring
     resp = mgr.http_post(f"{mgr.url}/api/v1/pools/{pool_name}/nodes", {
         "name": name,
         "endpoint": endpoint
     })
     return response_object_or_error("Node", resp, 201)
示例#3
0
    def logout(self):
        """
        == Logout from Kadalu Storage

        Logout from Kadalu Storage

        Example:

        [source,python]
        ----
        from kadalu_storage import StorageManager

        mgr = StorageManager("http://localhost:3000")

        mgr.user("admin").logout()
        ----
        """
        url = f"{self.mgr.url}/api/v1/api-keys/{self.mgr.api_key_id}"
        resp = self.mgr.http_delete(url)

        if resp.status == 204:
            self.mgr.api_key_id = ""
            self.mgr.user_id = ""
            self.mgr.username = ""
            self.mgr.token = ""

        return response_object_or_error("User", resp, 204)
示例#4
0
    def delete(self, username=None):
        """
        == Delete a User

        Delete a User

        Example:

        [source,python]
        ----
        from kadalu_storage import StorageManager

        mgr = StorageManager("http://localhost:3000")

        mgr.user("admin").delete()

        # Delete other user if admin
        mgr.user("admin").delete("user1")
        ----
        """
        if username is None:
            username = self.mgr.username
        url = f"{self.mgr.url}/api/v1/users/{username}"
        resp = self.mgr.http_delete(url)

        if resp.status == 204:
            if username == self.mgr.username:
                self.mgr.api_key_id = ""
                self.mgr.user_id = ""
                self.mgr.username = ""
                self.mgr.token = ""

        return response_object_or_error("User", resp, 204)
示例#5
0
 def create(cls, mgr, username, name, password):
     # noqa # pylint: disable=missing-function-docstring
     resp = mgr.http_post(f"{mgr.url}/api/v1/users", {
         "name": name,
         "username": username,
         "password": password
     })
     return response_object_or_error("User", resp, 201)
示例#6
0
    def delete(self):
        """
        == Delete a Kadalu Storage Volume

        Delete a Kadalu Storage Volume

        Example:

        [source,python]
        ----
        from kadalu_storage import StorageManager

        mgr = StorageManager("http://localhost:3000")

        mgr.pool("DEV").volume("vol1").delete()
        ----
        """
        url = f"{self.mgr.url}/api/v1/pools/{self.pool_name}/volumes/{self.volume_name}"
        resp = self.mgr.http_delete(url)
        return response_object_or_error("Volume", resp, 204)
示例#7
0
    def remove(self):
        """
        == Remove a node from a Pool

        Remove a node from a Pool

        Example:

        [source,python]
        ----
        from kadalu_storage import StorageManager

        mgr = StorageManager("http://localhost:3000")

        mgr.pool("DEV").node("server2.example.com").remove()
        ----
        """
        url = f"{self.mgr.url}/api/v1/pools/{self.pool_name}/nodes/{self.name}"
        resp = self.mgr.http_delete(url)
        return response_object_or_error("Node", resp, 204)
示例#8
0
文件: api_keys.py 项目: kadalu/moana
    def delete(self):
        """
        == Create a new API Key

        Create a new API Key

        Example:

        [source,python]
        ----
        from kadalu_storage import StorageManager

        mgr = StorageManager("http://localhost:3000")

        mgr.user("admin").api_key(
            "801bbbb7-375b-4f04-89f6-ad9e9728689e").delete()
        ----
        """
        resp = self.mgr.http_delete(
            f"{self.mgr.url}/api/v1/api-keys/{self.api_key_id}")
        return response_object_or_error("ApiKey", resp, 204)
示例#9
0
    def stop(self):
        """
        == Stop a Kadalu Storage Volume

        Stop a Kadalu Storage Volume

        Example:

        [source,python]
        ----
        from kadalu_storage import StorageManager

        mgr = StorageManager("http://localhost:3000")

        mgr.pool("DEV").volume("vol1").stop()
        ----
        """
        resp = self.mgr.http_post(
            f"{self.mgr.url}/api/v1/pools/{self.pool_name}"
            f"/volumes/{self.volume_name}/stop",
        )
        return response_object_or_error("Volume", resp, 200)
示例#10
0
    def set_password(self, password, new_password):
        """
        == Set user password

        Set Kadalu Storage user password

        Example:

        [source,python]
        ----
        from kadalu_storage import StorageManager

        mgr = StorageManager("http://localhost:3000")

        mgr.user("admin").set_password("secret", "new_secret")
        ----
        """
        resp = self.mgr.http_post(
            f"{self.mgr.url}/api/v1/users/{self.mgr.username}/password", {
                "password": password,
                "new_password": new_password
            })
        return response_object_or_error("User", resp, 200)
示例#11
0
 def create(cls, mgr, pool_name, volume_name, _distribute_groups):
     # noqa # pylint: disable=missing-function-docstring
     # TODO: Implimentation pending
     resp = mgr.http_post(f"{mgr.url}/api/v1/pools/{pool_name}/volumes",
                      {"name": volume_name})
     return response_object_or_error("Volume", resp, 201)
示例#12
0
 def list(cls, mgr, pool_name=None, state = False):
     # noqa # pylint: disable=missing-function-docstring
     url_part = "/volumes" if pool_name is None else "/pools/{pool_name}/volumes"
     resp = mgr.http_get(f'{mgr.url}/api/v1{url_part}?state={1 if state else 0}')
     return response_object_or_error("Volume", resp, 200)
示例#13
0
 def list(cls, mgr):
     # noqa # pylint: disable=missing-function-docstring
     resp = mgr.http_get(mgr.url + "/api/v1/users")
     return response_object_or_error("User", resp, 200)
示例#14
0
文件: api_keys.py 项目: kadalu/moana
 def create(cls, mgr, name):
     # noqa # pylint: disable=missing-function-docstring
     resp = mgr.http_post(mgr.url + "/api/v1/api-keys", {"name": name})
     return response_object_or_error("ApiKey", resp, 201)