Skip to content
Snippets Groups Projects
Verified Commit 97f877b6 authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

add modify IP trunk to pp

parent bab2fa1b
No related branches found
No related tags found
1 merge request!12Add sites, and add integration of IPtrunks and routers with LSO deployment
import enum
import json import json
import logging import logging
...@@ -11,13 +12,26 @@ from orchestrator.types import UUIDstr, State ...@@ -11,13 +12,26 @@ from orchestrator.types import UUIDstr, State
from orchestrator.utils.json import json_dumps from orchestrator.utils.json import json_dumps
from gso import settings from gso import settings
from gso.products.product_types.device import DeviceProvisioning from gso.products.product_types.iptrunk import IptrunkProvisioning, Iptrunk
from gso.products.product_types.iptrunk import IptrunkProvisioning
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def _send_request(endpoint: str, parameters: dict, process_id: UUIDstr): class CUDOperation(str, enum.Enum):
"""
Enum for different C(R)UD operations that the provisioning proxy supports.
Read is not applicable, hence these become CUD and not CRUD operations.
"""
#: Creation is done with a POST request
POST = 'POST'
#: Updating is done with a PUT request
PUT = 'PUT'
#: Removal is done with a DELETE request
DELETE = 'DELETE'
def _send_request(endpoint: str, parameters: dict, process_id: UUIDstr,
operation: CUDOperation):
oss = settings.load_oss_params() oss = settings.load_oss_params()
pp_params = oss.PROVISIONING_PROXY pp_params = oss.PROVISIONING_PROXY
assert pp_params assert pp_params
...@@ -27,13 +41,19 @@ def _send_request(endpoint: str, parameters: dict, process_id: UUIDstr): ...@@ -27,13 +41,19 @@ def _send_request(endpoint: str, parameters: dict, process_id: UUIDstr):
logger.debug(f'[provisioning proxy] provisioning for process {process_id}') logger.debug(f'[provisioning proxy] provisioning for process {process_id}')
parameters.update({'callback': callback_url}) parameters.update({'callback': callback_url})
url = f'{pp_params.scheme}://{pp_params.api_base}/api/{endpoint}'
request = None
post_request = requests.post( if operation == CUDOperation.POST:
f'{pp_params.scheme}://{pp_params.api_base}/api/{endpoint}', request = requests.post(url, json=parameters)
json=parameters) elif operation == CUDOperation.PUT:
request = requests.put(url, json=parameters)
elif operation == CUDOperation.DELETE:
request = requests.delete(url, json=parameters)
if post_request.status_code != 200: if request.status_code != 200:
raise AssertionError(post_request.text) raise AssertionError(request.text)
def provision_device( def provision_device(
...@@ -45,7 +65,7 @@ def provision_device( ...@@ -45,7 +65,7 @@ def provision_device(
'subscription': json.loads(json_dumps(subscription)) 'subscription': json.loads(json_dumps(subscription))
} }
_send_request('device', parameters, process_id) _send_request('device', parameters, process_id, CUDOperation.POST)
def provision_ip_trunk(subscription: IptrunkProvisioning, def provision_ip_trunk(subscription: IptrunkProvisioning,
...@@ -58,7 +78,21 @@ def provision_ip_trunk(subscription: IptrunkProvisioning, ...@@ -58,7 +78,21 @@ def provision_ip_trunk(subscription: IptrunkProvisioning,
'object': '' # FIXME 'object': '' # FIXME
} }
_send_request('ip_trunk', parameters, process_id) _send_request('ip_trunk', parameters, process_id, CUDOperation.POST)
def modify_ip_trunk(old_subscription: Iptrunk,
new_subscription: Iptrunk,
process_id: UUIDstr,
dry_run: bool = True):
parameters = {
'dry_run': dry_run,
'old_subscription': old_subscription,
'subscription': new_subscription
# FIXME missing parameters
}
_send_request('ip_trunk', parameters, process_id, CUDOperation.PUT)
@inputstep('Await provisioning proxy results', assignee=Assignee('SYSTEM')) @inputstep('Await provisioning proxy results', assignee=Assignee('SYSTEM'))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment