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
from gso.products.product_types.device import DeviceBlock
from gso.products.product_blocks.device import DeviceBlockProvisioning
from gso import settings
import requests
......@@ -8,7 +8,8 @@ logger = logging.getLogger(__name__)
def provision_node(
node_subscription_params: DeviceBlock,
node_subscription_params: DeviceBlockProvisioning,
callback_url: str,
dry_run: bool = True):
oss = settings.load_oss_params()
pp_params = oss.PROVISIONING_PROXY
......@@ -17,12 +18,14 @@ def provision_node(
logger.debug(f'[disabled] provisioning node {node_subscription_params}')
parameters = {
'callback': oss.GENERAL.public_hostname, # TODO: implement
'callback': callback_url,
'dry_run': dry_run,
'device': node_subscription_params.dict()
}
r = requests.post(
f'https://{pp_params.api_base}'
f'/api/device',
params=parameters)
json=parameters)
r.raise_for_status()
requests.post()
\ No newline at end of file
......@@ -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 store_process_subscription
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.services import ipam, provisioning_proxy
def initial_input_form_generator(product_name: str) -> FormGenerator:
......@@ -96,12 +98,16 @@ def initialize_subscription(
@step("Provision device [DRY RUN]")
def provision_device_dry(
subscription: device.DeviceProvisioning,
fqdn: str,
ts_address: str,
ts_port: str
) -> State:
def provision_device_dry(subscription: device.DeviceProvisioning) -> State:
# TODO: verify this URL
callback_url = f'{settings.load_oss_params().GENERAL.public_hostname}' \
f'/api/process/{subscription.product.product_id}/resume'
proxy_result = provisioning_proxy.provision_node(
subscription.device,
callback_url
)
# import ansible_runner
#
# r = ansible_runner.run(
......@@ -130,7 +136,7 @@ def provision_device_dry(
# dry_run=True)
# TODO: figure out what to return when we are suspending & waiting
# for the provisioning-proxy to call back
return {"return_code": 0}
return {"subscription": proxy_result}
@inputstep("Confirm step", assignee="CHANGES")
......@@ -150,6 +156,16 @@ def provision_device_real(
ts_address: str,
ts_port: str
) -> 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
#
# r = ansible_runner.run(
......@@ -176,7 +192,7 @@ def provision_device_real(
# node_subscription_params=subscription)
# TODO: figure out what to return when we are suspending & waiting
# for the provisioning-proxy to call back
return {"return_code": 0}
return {"subscription": subscription}
@workflow(
......
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