Skip to content

Commit

Permalink
feat(manager): Loadbalancer service support with raw dictionary objects
Browse files Browse the repository at this point in the history
  • Loading branch information
Antti Myyrä committed Aug 7, 2023
1 parent 7fa674a commit a1625fd
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Server network interface support
- Server simple backup rule support
- Manager support for listing server plans
- Manager support for loadbalancers with raw dictionary objects

## [2.0.1] - 2023-03-22

Expand Down
12 changes: 7 additions & 5 deletions upcloud_api/cloud_manager/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from upcloud_api.cloud_manager.firewall_mixin import FirewallManager
from upcloud_api.cloud_manager.host_mixin import HostManager
from upcloud_api.cloud_manager.ip_address_mixin import IPManager
from upcloud_api.cloud_manager.lb_mixin import LoadBalancerManager
from upcloud_api.cloud_manager.network_mixin import NetworkManager
from upcloud_api.cloud_manager.object_storage_mixin import ObjectStorageManager
from upcloud_api.cloud_manager.server_mixin import ServerManager
Expand All @@ -12,14 +13,15 @@


class CloudManager(
ServerManager,
IPManager,
StorageManager,
FirewallManager,
TagManager,
NetworkManager,
HostManager,
IPManager,
LoadBalancerManager,
NetworkManager,
ObjectStorageManager,
ServerManager,
StorageManager,
TagManager,
):
"""
CloudManager contains the core functionality of the upcloud API library.
Expand Down
108 changes: 108 additions & 0 deletions upcloud_api/cloud_manager/lb_mixin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
from upcloud_api.api import API


class LoadBalancerManager:
"""
Functions for managing UpCloud loadbalancer instances and their properties with basic dictionary objects
"""

api: API

def get_loadbalancers(self):
"""
Returns a list of loadbalancer dictionary objects
"""

url = '/load-balancer'
return self.api.get_request(url)

def get_loadbalancer(self, lb_uuid: str):
"""
Returns details for a single loadbalancer as a dictionary
:param lb_uuid:
:return: LB details
"""
url = f'/load-balancer/{lb_uuid}'
return self.api.get_request(url)

def create_loadbalancer(self, body: dict):
"""
Creates a loadbalancer service specified in body and returns its details
:param body:
:return: LB details
"""

url = '/load-balancer'
return self.api.post_request(url, body)

def delete_loadbalancer(self, lb_uuid: str):
"""
Deletes a loadbalancer service
:param lb_uuid:
"""

url = f'/load-balancer/{lb_uuid}'
return self.api.delete_request(url)

def get_loadbalancer_backends(self, lb_uuid: str):
"""
Returns a list of backends for a loadbalancer service
:param lb_uuid:
:return: List of LB backends
"""

url = f'/load-balancer/{lb_uuid}/backends'
return self.api.get_request(url)

def get_loadbalancer_backend(self, lb_uuid: str, backend: str):
"""
Returns details for a single loadbalancer backend
:param lb_uuid:
:param backend:
:return: LB backend details
"""

url = f'/load-balancer/{lb_uuid}/backends/{backend}'
return self.api.get_request(url)

def create_loadbalancer_backend(self, lb_uuid: str, body: dict):
"""
Creates a new backend for a loadbalancer and returns its details
:param lb_uuid:
:param body:
:return: LB backend details
"""

url = f'/load-balancer/{lb_uuid}/backends'
return self.api.post_request(url, body)

def modify_loadbalancer_backend(self, lb_uuid: str, backend: str, body: dict):
"""
Modifies an existing loadbalancer backend and returns its details
:param lb_uuid:
:param backend:
:param body:
:return: LB backend details
"""

url = f'/load-balancer/{lb_uuid}/backends/{backend}'
return self.api.patch_request(url, body)

def delete_loadbalancer_backend(self, lb_uuid: str, backend: str):
"""
Deletes a loadbalancer backend
:param lb_uuid:
:param backend:
:return:
"""

url = f'/load-balancer/{lb_uuid}/backends/{backend}'
return self.api.delete_request(url)

0 comments on commit a1625fd

Please sign in to comment.