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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)