Skip to content
Snippets Groups Projects
Commit e5ec2c24 authored by Simone Spinelli's avatar Simone Spinelli
Browse files

Resolve conflicts

parent ef79a217
Branches
Tags
1 merge request!12Add sites, and add integration of IPtrunks and routers with LSO deployment
...@@ -92,6 +92,7 @@ def provision_device( ...@@ -92,6 +92,7 @@ def provision_device(
def provision_ip_trunk(subscription: IptrunkProvisioning, def provision_ip_trunk(subscription: IptrunkProvisioning,
process_id: UUIDstr, process_id: UUIDstr,
config_object: str,
dry_run: bool = True): dry_run: bool = True):
""" """
Function that provisions an IP trunk service using LSO. Function that provisions an IP trunk service using LSO.
...@@ -105,37 +106,56 @@ def provision_ip_trunk(subscription: IptrunkProvisioning, ...@@ -105,37 +106,56 @@ def provision_ip_trunk(subscription: IptrunkProvisioning,
parameters = { parameters = {
'subscription': json.loads(json_dumps(subscription)), 'subscription': json.loads(json_dumps(subscription)),
'dry_run': dry_run, 'dry_run': dry_run,
'verb': '', # FIXME 'verb': "deploy", # FIXME
'object': '' # FIXME 'object': config_object # FIXME
} }
_send_request('ip_trunk', parameters, process_id, CUDOperation.POST) _send_request('ip_trunk', parameters, process_id, CUDOperation.POST)
def modify_ip_trunk(old_subscription: Iptrunk, #def modify_ip_trunk(old_subscription: Iptrunk,
new_subscription: Iptrunk, # new_subscription: Iptrunk,
process_id: UUIDstr, # process_id: UUIDstr,
dry_run: bool = True): # dry_run: bool = True):
# """
# Function that modifies an existing IP trunk subscription using LSO.
#
# :param :class:`Iptrunk` old_subscription: The subscription object, before
# its modification.
# :param :class:`Iptrunk` new_subscription: The subscription object, after
# modifications have been made to it.
# :param UUIDstr process_id: The related process ID, used for callback.
# :param bool dry_run: A boolean indicating whether this should be a dry ryn
# or not, defaults to ``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)
def deprovision_ip_trunk(subscription: Iptrunk,
process_id: UUIDstr,
dry_run: bool = True):
""" """
Function that modifies an existing IP trunk subscription using LSO. Function that provisions an IP trunk service using LSO.
:param :class:`Iptrunk` old_subscription: The subscription object, before :param :class:`IptrunkProvisioning` subscription: The subscription object
its modification. that is to be provisioned.
:param :class:`Iptrunk` new_subscription: The subscription object, after
modifications have been made to it.
:param UUIDstr process_id: The related process ID, used for callback. :param UUIDstr process_id: The related process ID, used for callback.
:param bool dry_run: A boolean indicating whether this should be a dry ryn :param bool dry_run: A boolean indicating whether this should be a dry run
or not, defaults to ``True``. or not, defaults to ``True``.
""" """
parameters = { parameters = {
'subscription': json.loads(json_dumps(subscription)),
'dry_run': dry_run, 'dry_run': dry_run,
'old_subscription': old_subscription, 'verb': "remove"
'subscription': new_subscription
# FIXME missing parameters
} }
_send_request('ip_trunk', parameters, process_id, CUDOperation.PUT) _send_request('ip_trunk', parameters, process_id, CUDOperation.DELETE)
@inputstep('Await provisioning proxy results', assignee=Assignee('SYSTEM')) @inputstep('Await provisioning proxy results', assignee=Assignee('SYSTEM'))
def await_pp_results() -> State: def await_pp_results() -> State:
......
...@@ -89,9 +89,11 @@ def get_info_from_ipam(subscription: DeviceInactive) -> State: ...@@ -89,9 +89,11 @@ def get_info_from_ipam(subscription: DeviceInactive) -> State:
# subscription.device.lo_ipv6_address = lo.v6 # subscription.device.lo_ipv6_address = lo.v6
# TODO: get info about how these should be generated # TODO: get info about how these should be generated
subscription.device.device_lo_ipv4_address = \ subscription.device.device_lo_ipv4_address = \
ipaddress.ip_address('10.10.10.10') ipaddress.ip_address('10.10.10.20')
subscription.device.device_lo_ipv6_address = \ subscription.device.device_lo_ipv6_address = \
ipaddress.ip_address('fc00:798:10::10') ipaddress.ip_address('fc00:798:10::20')
#subscription.device.device_lo_iso_address \
# = "49.51e5.0001.0620.4009.6047.00"
subscription.device.device_lo_iso_address \ subscription.device.device_lo_iso_address \
= iso_from_ipv4(str(subscription.device.device_lo_ipv4_address)) = iso_from_ipv4(str(subscription.device.device_lo_ipv4_address))
subscription.device.device_si_ipv4_network = '192.168.0.0/31' subscription.device.device_si_ipv4_network = '192.168.0.0/31'
......
...@@ -150,18 +150,66 @@ def initialize_subscription( ...@@ -150,18 +150,66 @@ def initialize_subscription(
return {'subscription': subscription} return {'subscription': subscription}
@step('Provision IP trunk [DRY RUN]') @step('Provision IP trunk interface [DRY RUN]')
def provision_ip_trunk_dry(subscription: IptrunkProvisioning, def provision_ip_trunk_iface_dry(subscription: IptrunkProvisioning,
process_id: UUIDstr) -> State: process_id: UUIDstr) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id) provisioning_proxy.provision_ip_trunk(subscription, process_id, "trunk_interface")
return {'subscription': subscription} return {'subscription': subscription}
@step('Provision IP trunk [FOR REAL]') @step('Provision IP trunk interface [FOR REAL]')
def provision_ip_trunk_real(subscription: IptrunkProvisioning, def provision_ip_trunk_iface_real(subscription: IptrunkProvisioning,
process_id: UUIDstr) -> State: process_id: UUIDstr) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, False) provisioning_proxy.provision_ip_trunk(subscription, process_id, "trunk_interface", False)
return {'subscription': subscription}
@step('Provision IP trunk ISIS interface [DRY RUN]')
def provision_ip_trunk_isis_iface_dry(subscription: IptrunkProvisioning,
process_id: UUIDstr) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, "isis_interface")
return {'subscription': subscription}
@step('Provision IP trunk ISIS interface [FOR REAL]')
def provision_ip_trunk_isis_iface_real(subscription: IptrunkProvisioning,
process_id: UUIDstr) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, "isis_interface", False)
return {'subscription': subscription}
@step('Provision IP trunk LDP interface [DRY RUN]')
def provision_ip_trunk_ldp_iface_dry(subscription: IptrunkProvisioning,
process_id: UUIDstr) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, "ldp_interface")
return {'subscription': subscription}
@step('Provision IP trunk LDP interface [FOR REAL]')
def provision_ip_trunk_ldp_iface_real(subscription: IptrunkProvisioning,
process_id: UUIDstr) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, "ldp_interface", False)
return {'subscription': subscription}
@step('Provision IP trunk LLDP interface [DRY RUN]')
def provision_ip_trunk_lldp_iface_dry(subscription: IptrunkProvisioning,
process_id: UUIDstr) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, "lldp_interface")
return {'subscription': subscription}
@step('Provision IP trunk LLDP interface [FOR REAL]')
def provision_ip_trunk_lldp_iface_real(subscription: IptrunkProvisioning,
process_id: UUIDstr) -> State:
provisioning_proxy.provision_ip_trunk(subscription, process_id, "lldp_interface", False)
return {'subscription': subscription} return {'subscription': subscription}
...@@ -179,10 +227,28 @@ def create_iptrunk(): ...@@ -179,10 +227,28 @@ def create_iptrunk():
>> store_process_subscription(Target.CREATE) >> store_process_subscription(Target.CREATE)
>> get_info_from_ipam >> get_info_from_ipam
>> initialize_subscription >> initialize_subscription
>> provision_ip_trunk_dry >> provision_ip_trunk_iface_dry
>> await_pp_results
>> confirm_pp_results
>> provision_ip_trunk_iface_real
>> await_pp_results
>> confirm_pp_results
>> provision_ip_trunk_isis_iface_dry
>> await_pp_results
>> confirm_pp_results
>> provision_ip_trunk_isis_iface_real
>> await_pp_results
>> confirm_pp_results
>> provision_ip_trunk_ldp_iface_dry
>> await_pp_results
>> confirm_pp_results
>> provision_ip_trunk_ldp_iface_real
>> await_pp_results
>> confirm_pp_results
>> provision_ip_trunk_lldp_iface_dry
>> await_pp_results >> await_pp_results
>> confirm_pp_results >> confirm_pp_results
>> provision_ip_trunk_real >> provision_ip_trunk_lldp_iface_real
>> await_pp_results >> await_pp_results
>> confirm_pp_results >> confirm_pp_results
>> set_status(SubscriptionLifecycle.ACTIVE) >> set_status(SubscriptionLifecycle.ACTIVE)
......
from orchestrator.forms import FormPage from orchestrator.forms import FormPage
from orchestrator.types import FormGenerator, State
from orchestrator.forms.validators import Label from orchestrator.forms.validators import Label
from orchestrator.targets import Target from orchestrator.targets import Target
from orchestrator.types import InputForm, SubscriptionLifecycle, UUIDstr from orchestrator.types import InputForm, SubscriptionLifecycle, UUIDstr
...@@ -12,6 +13,9 @@ from orchestrator.workflows.steps import ( ...@@ -12,6 +13,9 @@ from orchestrator.workflows.steps import (
from orchestrator.workflows.utils import wrap_modify_initial_input_form from orchestrator.workflows.utils import wrap_modify_initial_input_form
from gso.products.product_types.iptrunk import Iptrunk from gso.products.product_types.iptrunk import Iptrunk
from gso.services import provisioning_proxy
from gso.services.provisioning_proxy import confirm_pp_results, \
await_pp_results
def initial_input_form_generator(subscription_id: UUIDstr) -> InputForm: def initial_input_form_generator(subscription_id: UUIDstr) -> InputForm:
...@@ -29,10 +33,20 @@ def _deprovision_in_user_management_system(fqdn: str) -> str: ...@@ -29,10 +33,20 @@ def _deprovision_in_user_management_system(fqdn: str) -> str:
pass pass
@step("Deprovision Iptrunk") @step('Deprovision IP trunk [DRY RUN]')
def deprovision_iptrunk(subscription: Iptrunk) -> None: def deprovision_ip_trunk_dry(subscription: Iptrunk,
# _deprovision_in_user_management_system(subscription.user.user_id) process_id: UUIDstr) -> State:
pass provisioning_proxy.deprovision_ip_trunk(subscription, process_id )
return {'subscription': subscription}
@step('Deprovision IP trunk [FOR REAL]')
def deprovision_ip_trunk_real(subscription: Iptrunk,
process_id: UUIDstr) -> State:
provisioning_proxy.deprovision_ip_trunk(subscription, process_id, False)
return {'subscription': subscription}
@workflow( @workflow(
...@@ -46,7 +60,12 @@ def terminate_iptrunk(): ...@@ -46,7 +60,12 @@ def terminate_iptrunk():
init init
>> store_process_subscription(Target.TERMINATE) >> store_process_subscription(Target.TERMINATE)
>> unsync >> unsync
>> deprovision_iptrunk >> deprovision_ip_trunk_dry
>> await_pp_results
>> confirm_pp_results
>> deprovision_ip_trunk_real
>> await_pp_results
>> confirm_pp_results
>> set_status(SubscriptionLifecycle.TERMINATED) >> set_status(SubscriptionLifecycle.TERMINATED)
>> resync >> resync
>> done >> done
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment