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
This commit is part of merge request !12. Comments created here will be created in the context of that merge request.
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.
Please register or to comment