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 logging
......@@ -11,13 +12,26 @@ from orchestrator.types import UUIDstr, State
from orchestrator.utils.json import json_dumps
from gso import settings
from gso.products.product_types.device import DeviceProvisioning
from gso.products.product_types.iptrunk import IptrunkProvisioning
from gso.products.product_types.iptrunk import IptrunkProvisioning, Iptrunk
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()
pp_params = oss.PROVISIONING_PROXY
assert pp_params
......@@ -27,13 +41,19 @@ def _send_request(endpoint: str, parameters: dict, process_id: UUIDstr):
logger.debug(f'[provisioning proxy] provisioning for process {process_id}')
parameters.update({'callback': callback_url})
url = f'{pp_params.scheme}://{pp_params.api_base}/api/{endpoint}'
request = None
post_request = requests.post(
f'{pp_params.scheme}://{pp_params.api_base}/api/{endpoint}',
json=parameters)
if operation == CUDOperation.POST:
request = requests.post(url, 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:
raise AssertionError(post_request.text)
if request.status_code != 200:
raise AssertionError(request.text)
def provision_device(
......@@ -45,7 +65,7 @@ def provision_device(
'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,
......@@ -58,7 +78,21 @@ def provision_ip_trunk(subscription: IptrunkProvisioning,
'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'))
......
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