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

update workflow and provisioning proxy

parent c3c750d3
No related branches found
No related tags found
2 merge requests!11Feature/test provisioning proxy,!10Make create_device use provisioning proxy
import logging import logging
from gso.products.product_types.device import DeviceBlock from gso.products.product_blocks.device import DeviceBlockProvisioning
from gso import settings from gso import settings
import requests import requests
...@@ -8,7 +8,8 @@ logger = logging.getLogger(__name__) ...@@ -8,7 +8,8 @@ logger = logging.getLogger(__name__)
def provision_node( def provision_node(
node_subscription_params: DeviceBlock, node_subscription_params: DeviceBlockProvisioning,
callback_url: str,
dry_run: bool = True): dry_run: bool = True):
oss = settings.load_oss_params() oss = settings.load_oss_params()
pp_params = oss.PROVISIONING_PROXY pp_params = oss.PROVISIONING_PROXY
...@@ -17,12 +18,14 @@ def provision_node( ...@@ -17,12 +18,14 @@ def provision_node(
logger.debug(f'[disabled] provisioning node {node_subscription_params}') logger.debug(f'[disabled] provisioning node {node_subscription_params}')
parameters = { parameters = {
'callback': oss.GENERAL.public_hostname, # TODO: implement 'callback': callback_url,
'dry_run': dry_run,
'device': node_subscription_params.dict() 'device': node_subscription_params.dict()
} }
r = requests.post( r = requests.post(
f'https://{pp_params.api_base}' f'https://{pp_params.api_base}'
f'/api/device', f'/api/device',
params=parameters) json=parameters)
r.raise_for_status() r.raise_for_status()
requests.post()
\ No newline at end of file
...@@ -11,8 +11,10 @@ from orchestrator.workflow import done, init, step, workflow ...@@ -11,8 +11,10 @@ from orchestrator.workflow import done, init, step, workflow
from orchestrator.workflows.steps import resync, set_status from orchestrator.workflows.steps import resync, set_status
from orchestrator.workflows.steps import store_process_subscription from orchestrator.workflows.steps import store_process_subscription
from orchestrator.workflows.utils import wrap_create_initial_input_form from orchestrator.workflows.utils import wrap_create_initial_input_form
from gso import settings
from gso.services import provisioning_proxy
from gso.products.product_types import device from gso.products.product_types import device
# from gso.services import ipam, provisioning_proxy
def initial_input_form_generator(product_name: str) -> FormGenerator: def initial_input_form_generator(product_name: str) -> FormGenerator:
...@@ -96,12 +98,16 @@ def initialize_subscription( ...@@ -96,12 +98,16 @@ def initialize_subscription(
@step("Provision device [DRY RUN]") @step("Provision device [DRY RUN]")
def provision_device_dry( def provision_device_dry(subscription: device.DeviceProvisioning) -> State:
subscription: device.DeviceProvisioning, # TODO: verify this URL
fqdn: str, callback_url = f'{settings.load_oss_params().GENERAL.public_hostname}' \
ts_address: str, f'/api/process/{subscription.product.product_id}/resume'
ts_port: str
) -> State: proxy_result = provisioning_proxy.provision_node(
subscription.device,
callback_url
)
# import ansible_runner # import ansible_runner
# #
# r = ansible_runner.run( # r = ansible_runner.run(
...@@ -130,7 +136,7 @@ def provision_device_dry( ...@@ -130,7 +136,7 @@ def provision_device_dry(
# dry_run=True) # dry_run=True)
# TODO: figure out what to return when we are suspending & waiting # TODO: figure out what to return when we are suspending & waiting
# for the provisioning-proxy to call back # for the provisioning-proxy to call back
return {"return_code": 0} return {"subscription": proxy_result}
@inputstep("Confirm step", assignee="CHANGES") @inputstep("Confirm step", assignee="CHANGES")
...@@ -150,6 +156,16 @@ def provision_device_real( ...@@ -150,6 +156,16 @@ def provision_device_real(
ts_address: str, ts_address: str,
ts_port: str ts_port: str
) -> State: ) -> State:
# TODO: generate actual callback URL
callback_url = settings.load_oss_params().GENERAL.public_hostname
provisioning_proxy.provision_node(
subscription.device,
callback_url,
False
)
# import ansible_runner # import ansible_runner
# #
# r = ansible_runner.run( # r = ansible_runner.run(
...@@ -176,7 +192,7 @@ def provision_device_real( ...@@ -176,7 +192,7 @@ def provision_device_real(
# node_subscription_params=subscription) # node_subscription_params=subscription)
# TODO: figure out what to return when we are suspending & waiting # TODO: figure out what to return when we are suspending & waiting
# for the provisioning-proxy to call back # for the provisioning-proxy to call back
return {"return_code": 0} return {"subscription": subscription}
@workflow( @workflow(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment