From 5bb53858baabf8d87c1f2f9ba3a506c5a8a7aeef Mon Sep 17 00:00:00 2001 From: root Date: Sun, 28 Feb 2021 15:29:02 +0000 Subject: [PATCH 1/7] Ansible Demo enchancment --- .../.meta_Ansible_integration.xml | 8 +- ...nect_to_Ansible_host_Defince_variables.php | 35 ++++ ...to_Ansible_host_Retrieve_playbook_list.php | 0 .../.meta_Create_integration_Define_vars.php | 0 ...tegration_Retrieve_playbook_files_list.php | 0 ...eate_integration_Retrive_playbook_list.php | 0 ...dd_microservice_to_deployment_settings.php | 0 ...reate_microservice_Create_microservice.php | 0 ..._microservice_Create_microservice_file.php | 0 ...e_microservice_Create_new_microservice.php | 0 ...roservice_Create_playbook_microservice.php | 35 ++++ ...icroservice_Extract_playbook_variables.php | 6 +- ...roservice_Modify_microservice_to_read_.php | 0 ...w_microservices_to_deployment_settings.php | 0 ...vices__Bulk_mode__Create_microservices.php | 0 ..._Bulk_mode__Extract_playbook_variables.php | 0 ...roservices__Bulk_mode__Monitor_changes.php | 6 +- ...s__Bulk_mode__Monitor_playbook_changes.php | 0 ..._Create_microservices__Bulk_mode__TEMP.php | 0 ...pecific_playbooks_Create_microservices.php | 0 ...ort_specific_playbooks_Monitor_changes.php | 0 ...op_playbook_monitoring_Stop_monitoring.php | 35 ++++ .../.meta_TEST_Create_MS.php | 0 .../Ansible_integration.xml | 51 +++--- ...nect_to_Ansible_host_Defince_variables.php | 8 +- ...to_Ansible_host_Retrieve_playbook_list.php | 0 .../Create_integration_Define_vars.php | 0 ...tegration_Retrieve_playbook_files_list.php | 0 ...eate_integration_Retrive_playbook_list.php | 0 ...dd_microservice_to_deployment_settings.php | 0 ...reate_microservice_Create_microservice.php | 0 ..._microservice_Create_microservice_file.php | 0 ...e_microservice_Create_new_microservice.php | 0 ...roservice_Create_playbook_microservice.php | 3 +- ...icroservice_Extract_playbook_variables.php | 3 + ...roservice_Modify_microservice_to_read_.php | 0 ...w_microservices_to_deployment_settings.php | 2 +- ...vices__Bulk_mode__Create_microservices.php | 0 ..._Bulk_mode__Extract_playbook_variables.php | 2 +- ...roservices__Bulk_mode__Monitor_changes.php | 2 +- ...s__Bulk_mode__Monitor_playbook_changes.php | 2 +- .../Create_microservices__Bulk_mode__TEMP.php | 0 ...pecific_playbooks_Create_microservices.php | 0 ...ort_specific_playbooks_Monitor_changes.php | 0 .../{ => Ansible_Integration}/README.md | 0 ...op_playbook_monitoring_Stop_monitoring.php | 2 +- .../TEST_Create_MS.php | 2 +- .../ansible_integration_library.php | 0 .../.meta_Block_IP_if_auth_failed.xml | 43 +++++ .../.meta_Process_Block_IP | 31 ++++ .../.meta_Process_DELETE | 31 ++++ .../Block_IP_if_auth_failed.xml | 41 +++++ .../Process_Block_IP/.meta_Tasks | 31 ++++ .../Tasks/.meta_Task_Block_IP.py} | 8 +- .../Tasks/.meta_Task_Check_conditions.py | 35 ++++ .../Tasks/.meta_Task_Get_Ansible_hosts.py | 35 ++++ .../Process_Block_IP/Tasks/Task_Block_IP.py | 70 ++++++++ .../Tasks/Task_Check_conditions.py | 53 ++++++ .../Tasks/Task_Get_Ansible_hosts.py | 59 +++++++ .../Process_DELETE/.meta_Tasks | 31 ++++ .../.meta_Configure_host_interface.xml | 43 +++++ .../.meta_Process_DELETE | 31 ++++ .../.meta_Process_Execute_microservice | 31 ++++ .../Configure_host_interface.xml | 34 ++++ .../Process_DELETE/.meta_Tasks | 31 ++++ .../Process_Execute_microservice/.meta_Tasks | 31 ++++ .../Tasks/.meta_Task_Execute_microservice.py | 35 ++++ .../Tasks/Task_Execute_microservice.py | 85 +++++++++ .../.meta_Configure_host_route.xml | 43 +++++ .../Configure_host_route/.meta_Process_DELETE | 31 ++++ .../.meta_Process_Execute_microservice | 31 ++++ .../Configure_host_route.xml | 34 ++++ .../Process_DELETE/.meta_Tasks | 31 ++++ .../Process_Execute_microservice/.meta_Tasks | 31 ++++ .../Tasks/.meta_Task_Execute_microservice.py | 35 ++++ .../Tasks/Task_Execute_microservice.py | 80 +++++++++ .../.meta_Configure_route_announcement.xml | 43 +++++ ....meta_Process_Configure_route_announcement | 31 ++++ .../.meta_Process_DELETE | 31 ++++ .../Configure_route_announcement.xml | 32 ++++ .../.meta_Tasks | 31 ++++ ....meta_Task_Configure_route_announcement.py | 35 ++++ .../Task_Configure_route_announcement.py | 84 +++++++++ .../Process_DELETE/.meta_Tasks | 31 ++++ .../.meta_Configure_router_interface.xml | 43 +++++ .../.meta_Process_Configure_router_interface | 31 ++++ .../.meta_Process_DELETE | 31 ++++ .../Configure_router_interface.xml | 32 ++++ .../.meta_Tasks | 31 ++++ .../.meta_Task_Configure_router_interface.py | 35 ++++ .../Tasks/Task_Configure_router_interface.py | 81 +++++++++ .../Process_DELETE/.meta_Tasks | 31 ++++ ...eta_Execute_Ansible_based_microservice.xml | 43 +++++ .../.meta_Process_DELETE | 31 ++++ .../.meta_Process_Execute_microservice | 31 ++++ .../Execute_Ansible_based_microservice.xml | 34 ++++ .../Process_DELETE/.meta_Tasks | 31 ++++ .../Process_Execute_microservice/.meta_Tasks | 31 ++++ .../Tasks/.meta_Task_Execute_microservice.py | 35 ++++ .../Tasks/Task_Execute_microservice.py | 82 +++++++++ .../.meta_Get_router_interface.xml | 43 +++++ .../Get_router_interface/.meta_Process_DELETE | 31 ++++ .../.meta_Process_Get_router_interface | 31 ++++ .../Get_router_interface.xml | 40 +++++ .../Process_DELETE/.meta_Tasks | 31 ++++ .../Process_Get_router_interface/.meta_Tasks | 31 ++++ .../.meta_Task_Calculate_IP_addresses.py | 35 ++++ .../Tasks/.meta_Task_Get_router_interface.py | 35 ++++ .../Tasks/.meta_Task_Update_IPAM.py} | 8 +- .../Tasks/Task_Calculate_IP_addresses.py | 90 ++++++++++ .../Tasks/Task_Get_router_interface.py | 73 ++++++++ .../Tasks/Task_Update_IPAM.py | 86 ++++++++++ .../microservice_list.json | 21 +++ .../.meta_Import_from_IPAM.xml | 43 +++++ .../Import_from_IPAM/.meta_Process_DELETE | 31 ++++ .../.meta_Process_Import_from_IPAM | 31 ++++ .../Import_from_IPAM/Import_from_IPAM.xml | 43 +++++ .../Process_DELETE/.meta_Tasks | 31 ++++ .../Process_Import_from_IPAM/.meta_Tasks | 31 ++++ .../Tasks/.meta_Task_Define_vars.py} | 8 +- .../Tasks/.meta_Task_Import_site_prefix.py | 35 ++++ .../Tasks/.meta_Task_Import_site_router.py | 35 ++++ .../Tasks/Task_Define_vars.py | 32 ++++ .../Tasks/Task_Import_site_prefix.py | 161 ++++++++++++++++++ .../Tasks/Task_Import_site_router.py | 132 ++++++++++++++ .../ipam_microservice_list.json | 12 ++ .../.meta_Process_DELETE | 31 ++++ .../.meta_Process_Turn_on_LLDP_on_hosts | 31 ++++ .../.meta_Turn_on_LLDP_on_hosts.xml | 43 +++++ .../Process_DELETE/.meta_Tasks | 31 ++++ .../Process_Turn_on_LLDP_on_hosts/.meta_Tasks | 31 ++++ ....meta_Task_Execute_Ansible_microservice.py | 35 ++++ .../Task_Execute_Ansible_microservice.py | 61 +++++++ .../Turn_on_LLDP_on_hosts.xml | 33 ++++ Ansible_integration/exchange_file.json | 1 + 135 files changed, 3697 insertions(+), 38 deletions(-) rename Ansible_integration/{ => Ansible_Integration}/.meta_Ansible_integration.xml (80%) create mode 100755 Ansible_integration/Ansible_Integration/.meta_Connect_to_Ansible_host_Defince_variables.php rename Ansible_integration/{ => Ansible_Integration}/.meta_Connect_to_Ansible_host_Retrieve_playbook_list.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_integration_Define_vars.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_integration_Retrieve_playbook_files_list.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_integration_Retrive_playbook_list.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservice_Add_microservice_to_deployment_settings.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservice_Create_microservice.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservice_Create_microservice_file.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservice_Create_new_microservice.php (100%) create mode 100755 Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_playbook_microservice.php rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservice_Extract_playbook_variables.php (79%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservice_Modify_microservice_to_read_.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservices__Bulk_mode__Create_microservices.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservices__Bulk_mode__Extract_playbook_variables.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservices__Bulk_mode__Monitor_changes.php (78%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservices__Bulk_mode__Monitor_playbook_changes.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Create_microservices__Bulk_mode__TEMP.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Import_specific_playbooks_Create_microservices.php (100%) rename Ansible_integration/{ => Ansible_Integration}/.meta_Import_specific_playbooks_Monitor_changes.php (100%) create mode 100755 Ansible_integration/Ansible_Integration/.meta_Stop_playbook_monitoring_Stop_monitoring.php rename Ansible_integration/{ => Ansible_Integration}/.meta_TEST_Create_MS.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Ansible_integration.xml (82%) rename Ansible_integration/{ => Ansible_Integration}/Connect_to_Ansible_host_Defince_variables.php (73%) rename Ansible_integration/{ => Ansible_Integration}/Connect_to_Ansible_host_Retrieve_playbook_list.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Create_integration_Define_vars.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Create_integration_Retrieve_playbook_files_list.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Create_integration_Retrive_playbook_list.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservice_Add_microservice_to_deployment_settings.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservice_Create_microservice.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservice_Create_microservice_file.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservice_Create_new_microservice.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservice_Create_playbook_microservice.php (83%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservice_Extract_playbook_variables.php (94%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservice_Modify_microservice_to_read_.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php (89%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservices__Bulk_mode__Create_microservices.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservices__Bulk_mode__Extract_playbook_variables.php (93%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservices__Bulk_mode__Monitor_changes.php (99%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservices__Bulk_mode__Monitor_playbook_changes.php (94%) rename Ansible_integration/{ => Ansible_Integration}/Create_microservices__Bulk_mode__TEMP.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Import_specific_playbooks_Create_microservices.php (100%) rename Ansible_integration/{ => Ansible_Integration}/Import_specific_playbooks_Monitor_changes.php (100%) rename Ansible_integration/{ => Ansible_Integration}/README.md (100%) rename Ansible_integration/{ => Ansible_Integration}/Stop_playbook_monitoring_Stop_monitoring.php (85%) rename Ansible_integration/{ => Ansible_Integration}/TEST_Create_MS.php (93%) rename Ansible_integration/{ => Ansible_Integration}/ansible_integration_library.php (100%) create mode 100755 Ansible_integration/Block_IP_if_auth_failed/.meta_Block_IP_if_auth_failed.xml create mode 100755 Ansible_integration/Block_IP_if_auth_failed/.meta_Process_Block_IP create mode 100755 Ansible_integration/Block_IP_if_auth_failed/.meta_Process_DELETE create mode 100644 Ansible_integration/Block_IP_if_auth_failed/Block_IP_if_auth_failed.xml create mode 100755 Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/.meta_Tasks rename Ansible_integration/{.meta_Connect_to_Ansible_host_Defince_variables.php => Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Block_IP.py} (77%) create mode 100755 Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Check_conditions.py create mode 100755 Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Get_Ansible_hosts.py create mode 100755 Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Block_IP.py create mode 100755 Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Check_conditions.py create mode 100755 Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Get_Ansible_hosts.py create mode 100755 Ansible_integration/Block_IP_if_auth_failed/Process_DELETE/.meta_Tasks create mode 100755 Ansible_integration/Configure_host_interface/.meta_Configure_host_interface.xml create mode 100755 Ansible_integration/Configure_host_interface/.meta_Process_DELETE create mode 100755 Ansible_integration/Configure_host_interface/.meta_Process_Execute_microservice create mode 100644 Ansible_integration/Configure_host_interface/Configure_host_interface.xml create mode 100755 Ansible_integration/Configure_host_interface/Process_DELETE/.meta_Tasks create mode 100755 Ansible_integration/Configure_host_interface/Process_Execute_microservice/.meta_Tasks create mode 100755 Ansible_integration/Configure_host_interface/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py create mode 100755 Ansible_integration/Configure_host_interface/Process_Execute_microservice/Tasks/Task_Execute_microservice.py create mode 100755 Ansible_integration/Configure_host_route/.meta_Configure_host_route.xml create mode 100755 Ansible_integration/Configure_host_route/.meta_Process_DELETE create mode 100755 Ansible_integration/Configure_host_route/.meta_Process_Execute_microservice create mode 100644 Ansible_integration/Configure_host_route/Configure_host_route.xml create mode 100755 Ansible_integration/Configure_host_route/Process_DELETE/.meta_Tasks create mode 100755 Ansible_integration/Configure_host_route/Process_Execute_microservice/.meta_Tasks create mode 100755 Ansible_integration/Configure_host_route/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py create mode 100755 Ansible_integration/Configure_host_route/Process_Execute_microservice/Tasks/Task_Execute_microservice.py create mode 100755 Ansible_integration/Configure_route_announcement/.meta_Configure_route_announcement.xml create mode 100755 Ansible_integration/Configure_route_announcement/.meta_Process_Configure_route_announcement create mode 100755 Ansible_integration/Configure_route_announcement/.meta_Process_DELETE create mode 100644 Ansible_integration/Configure_route_announcement/Configure_route_announcement.xml create mode 100755 Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/.meta_Tasks create mode 100755 Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/.meta_Task_Configure_route_announcement.py create mode 100755 Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/Task_Configure_route_announcement.py create mode 100755 Ansible_integration/Configure_route_announcement/Process_DELETE/.meta_Tasks create mode 100755 Ansible_integration/Configure_router_interface/.meta_Configure_router_interface.xml create mode 100755 Ansible_integration/Configure_router_interface/.meta_Process_Configure_router_interface create mode 100755 Ansible_integration/Configure_router_interface/.meta_Process_DELETE create mode 100644 Ansible_integration/Configure_router_interface/Configure_router_interface.xml create mode 100755 Ansible_integration/Configure_router_interface/Process_Configure_router_interface/.meta_Tasks create mode 100755 Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/.meta_Task_Configure_router_interface.py create mode 100755 Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/Task_Configure_router_interface.py create mode 100755 Ansible_integration/Configure_router_interface/Process_DELETE/.meta_Tasks create mode 100755 Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml create mode 100755 Ansible_integration/Execute_Ansible_based_microservice/.meta_Process_DELETE create mode 100755 Ansible_integration/Execute_Ansible_based_microservice/.meta_Process_Execute_microservice create mode 100644 Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml create mode 100755 Ansible_integration/Execute_Ansible_based_microservice/Process_DELETE/.meta_Tasks create mode 100755 Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/.meta_Tasks create mode 100755 Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py create mode 100755 Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/Task_Execute_microservice.py create mode 100755 Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml create mode 100755 Ansible_integration/Get_router_interface/.meta_Process_DELETE create mode 100755 Ansible_integration/Get_router_interface/.meta_Process_Get_router_interface create mode 100644 Ansible_integration/Get_router_interface/Get_router_interface.xml create mode 100755 Ansible_integration/Get_router_interface/Process_DELETE/.meta_Tasks create mode 100755 Ansible_integration/Get_router_interface/Process_Get_router_interface/.meta_Tasks create mode 100755 Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Calculate_IP_addresses.py create mode 100755 Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py rename Ansible_integration/{.meta_Create_microservice_Create_playbook_microservice.php => Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py} (77%) create mode 100755 Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Calculate_IP_addresses.py create mode 100755 Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py create mode 100755 Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Update_IPAM.py create mode 100644 Ansible_integration/Get_router_interface/microservice_list.json create mode 100755 Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml create mode 100755 Ansible_integration/Import_from_IPAM/.meta_Process_DELETE create mode 100755 Ansible_integration/Import_from_IPAM/.meta_Process_Import_from_IPAM create mode 100644 Ansible_integration/Import_from_IPAM/Import_from_IPAM.xml create mode 100755 Ansible_integration/Import_from_IPAM/Process_DELETE/.meta_Tasks create mode 100755 Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/.meta_Tasks rename Ansible_integration/{.meta_Stop_playbook_monitoring_Stop_monitoring.php => Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py} (77%) create mode 100755 Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_prefix.py create mode 100755 Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_router.py create mode 100755 Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py create mode 100755 Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_prefix.py create mode 100755 Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_router.py create mode 100644 Ansible_integration/Import_from_IPAM/ipam_microservice_list.json create mode 100755 Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Process_DELETE create mode 100755 Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Process_Turn_on_LLDP_on_hosts create mode 100755 Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Turn_on_LLDP_on_hosts.xml create mode 100755 Ansible_integration/Turn_on_LLDP_on_hosts/Process_DELETE/.meta_Tasks create mode 100755 Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/.meta_Tasks create mode 100755 Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/Tasks/.meta_Task_Execute_Ansible_microservice.py create mode 100755 Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/Tasks/Task_Execute_Ansible_microservice.py create mode 100644 Ansible_integration/Turn_on_LLDP_on_hosts/Turn_on_LLDP_on_hosts.xml create mode 100644 Ansible_integration/exchange_file.json diff --git a/Ansible_integration/.meta_Ansible_integration.xml b/Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml similarity index 80% rename from Ansible_integration/.meta_Ansible_integration.xml rename to Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml index 8e4749551..3a3c9c99a 100755 --- a/Ansible_integration/.meta_Ansible_integration.xml +++ b/Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml @@ -1,9 +1,13 @@ + + DISPLAYNAME + Ansible_integration.xml + DATE_MODIFICATION - 1602507813168 + 1614494970434 REPOSITORY @@ -11,7 +15,7 @@ DATE_CREATION - 1602507813164 + 1614494970430 MODEL diff --git a/Ansible_integration/Ansible_Integration/.meta_Connect_to_Ansible_host_Defince_variables.php b/Ansible_integration/Ansible_Integration/.meta_Connect_to_Ansible_host_Defince_variables.php new file mode 100755 index 000000000..1f51ad479 --- /dev/null +++ b/Ansible_integration/Ansible_Integration/.meta_Connect_to_Ansible_host_Defince_variables.php @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Connect_to_Ansible_host_Defince_variables.php + + + DATE_MODIFICATION + 1614494024811 + + + REPOSITORY + Process + + + DATE_CREATION + 1613157068143 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/.meta_Connect_to_Ansible_host_Retrieve_playbook_list.php b/Ansible_integration/Ansible_Integration/.meta_Connect_to_Ansible_host_Retrieve_playbook_list.php similarity index 100% rename from Ansible_integration/.meta_Connect_to_Ansible_host_Retrieve_playbook_list.php rename to Ansible_integration/Ansible_Integration/.meta_Connect_to_Ansible_host_Retrieve_playbook_list.php diff --git a/Ansible_integration/.meta_Create_integration_Define_vars.php b/Ansible_integration/Ansible_Integration/.meta_Create_integration_Define_vars.php similarity index 100% rename from Ansible_integration/.meta_Create_integration_Define_vars.php rename to Ansible_integration/Ansible_Integration/.meta_Create_integration_Define_vars.php diff --git a/Ansible_integration/.meta_Create_integration_Retrieve_playbook_files_list.php b/Ansible_integration/Ansible_Integration/.meta_Create_integration_Retrieve_playbook_files_list.php similarity index 100% rename from Ansible_integration/.meta_Create_integration_Retrieve_playbook_files_list.php rename to Ansible_integration/Ansible_Integration/.meta_Create_integration_Retrieve_playbook_files_list.php diff --git a/Ansible_integration/.meta_Create_integration_Retrive_playbook_list.php b/Ansible_integration/Ansible_Integration/.meta_Create_integration_Retrive_playbook_list.php similarity index 100% rename from Ansible_integration/.meta_Create_integration_Retrive_playbook_list.php rename to Ansible_integration/Ansible_Integration/.meta_Create_integration_Retrive_playbook_list.php diff --git a/Ansible_integration/.meta_Create_microservice_Add_microservice_to_deployment_settings.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Add_microservice_to_deployment_settings.php similarity index 100% rename from Ansible_integration/.meta_Create_microservice_Add_microservice_to_deployment_settings.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservice_Add_microservice_to_deployment_settings.php diff --git a/Ansible_integration/.meta_Create_microservice_Create_microservice.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_microservice.php similarity index 100% rename from Ansible_integration/.meta_Create_microservice_Create_microservice.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_microservice.php diff --git a/Ansible_integration/.meta_Create_microservice_Create_microservice_file.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_microservice_file.php similarity index 100% rename from Ansible_integration/.meta_Create_microservice_Create_microservice_file.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_microservice_file.php diff --git a/Ansible_integration/.meta_Create_microservice_Create_new_microservice.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_new_microservice.php similarity index 100% rename from Ansible_integration/.meta_Create_microservice_Create_new_microservice.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_new_microservice.php diff --git a/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_playbook_microservice.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_playbook_microservice.php new file mode 100755 index 000000000..08dc9194f --- /dev/null +++ b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_playbook_microservice.php @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Create_microservice_Create_playbook_microservice.php + + + DATE_MODIFICATION + 1614494969309 + + + REPOSITORY + Process + + + DATE_CREATION + 1613814631165 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/.meta_Create_microservice_Extract_playbook_variables.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Extract_playbook_variables.php similarity index 79% rename from Ansible_integration/.meta_Create_microservice_Extract_playbook_variables.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservice_Extract_playbook_variables.php index c287eb61c..8366aa19e 100755 --- a/Ansible_integration/.meta_Create_microservice_Extract_playbook_variables.php +++ b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Extract_playbook_variables.php @@ -1,9 +1,13 @@ + + DISPLAYNAME + Create_microservice_Extract_playbook_variables.php + DATE_MODIFICATION - 1597304212058 + 1614494932369 REPOSITORY diff --git a/Ansible_integration/.meta_Create_microservice_Modify_microservice_to_read_.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Modify_microservice_to_read_.php similarity index 100% rename from Ansible_integration/.meta_Create_microservice_Modify_microservice_to_read_.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservice_Modify_microservice_to_read_.php diff --git a/Ansible_integration/.meta_Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php similarity index 100% rename from Ansible_integration/.meta_Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php diff --git a/Ansible_integration/.meta_Create_microservices__Bulk_mode__Create_microservices.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Create_microservices.php similarity index 100% rename from Ansible_integration/.meta_Create_microservices__Bulk_mode__Create_microservices.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Create_microservices.php diff --git a/Ansible_integration/.meta_Create_microservices__Bulk_mode__Extract_playbook_variables.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Extract_playbook_variables.php similarity index 100% rename from Ansible_integration/.meta_Create_microservices__Bulk_mode__Extract_playbook_variables.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Extract_playbook_variables.php diff --git a/Ansible_integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php similarity index 78% rename from Ansible_integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php index 79c79a62c..e16ffdae4 100755 --- a/Ansible_integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php +++ b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php @@ -1,9 +1,13 @@ + + DISPLAYNAME + Create_microservices__Bulk_mode__Monitor_changes.php + DATE_MODIFICATION - 1602507085526 + 1614494742298 REPOSITORY diff --git a/Ansible_integration/.meta_Create_microservices__Bulk_mode__Monitor_playbook_changes.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_playbook_changes.php similarity index 100% rename from Ansible_integration/.meta_Create_microservices__Bulk_mode__Monitor_playbook_changes.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_playbook_changes.php diff --git a/Ansible_integration/.meta_Create_microservices__Bulk_mode__TEMP.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__TEMP.php similarity index 100% rename from Ansible_integration/.meta_Create_microservices__Bulk_mode__TEMP.php rename to Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__TEMP.php diff --git a/Ansible_integration/.meta_Import_specific_playbooks_Create_microservices.php b/Ansible_integration/Ansible_Integration/.meta_Import_specific_playbooks_Create_microservices.php similarity index 100% rename from Ansible_integration/.meta_Import_specific_playbooks_Create_microservices.php rename to Ansible_integration/Ansible_Integration/.meta_Import_specific_playbooks_Create_microservices.php diff --git a/Ansible_integration/.meta_Import_specific_playbooks_Monitor_changes.php b/Ansible_integration/Ansible_Integration/.meta_Import_specific_playbooks_Monitor_changes.php similarity index 100% rename from Ansible_integration/.meta_Import_specific_playbooks_Monitor_changes.php rename to Ansible_integration/Ansible_Integration/.meta_Import_specific_playbooks_Monitor_changes.php diff --git a/Ansible_integration/Ansible_Integration/.meta_Stop_playbook_monitoring_Stop_monitoring.php b/Ansible_integration/Ansible_Integration/.meta_Stop_playbook_monitoring_Stop_monitoring.php new file mode 100755 index 000000000..76ac0474b --- /dev/null +++ b/Ansible_integration/Ansible_Integration/.meta_Stop_playbook_monitoring_Stop_monitoring.php @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Stop_playbook_monitoring_Stop_monitoring.php + + + DATE_MODIFICATION + 1613814734824 + + + REPOSITORY + Process + + + DATE_CREATION + 1613814734819 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/.meta_TEST_Create_MS.php b/Ansible_integration/Ansible_Integration/.meta_TEST_Create_MS.php similarity index 100% rename from Ansible_integration/.meta_TEST_Create_MS.php rename to Ansible_integration/Ansible_Integration/.meta_TEST_Create_MS.php diff --git a/Ansible_integration/Ansible_integration.xml b/Ansible_integration/Ansible_Integration/Ansible_integration.xml similarity index 82% rename from Ansible_integration/Ansible_integration.xml rename to Ansible_integration/Ansible_Integration/Ansible_integration.xml index 64ec246da..324e4500d 100755 --- a/Ansible_integration/Ansible_integration.xml +++ b/Ansible_integration/Ansible_Integration/Ansible_integration.xml @@ -1,11 +1,11 @@ - + - + - CommandDefinition/ANSIBLE/Retrieve_playbook_files_list.xml + Retrieve_playbook_files_list @@ -13,88 +13,99 @@ - + CommandDefinition/ANSIBLE/Retrieve_playbook_files_list.xml + Retrive playbook list from Ansible server CREATE 5 + - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Defince variables - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Retrieve playbook list + + /opt/fmc_repository/Process/_TEST_Ansible_integration/Connect_to_Ansible_host/Tasks + Retrieve host list + DELETE DELETE 5 + Import a playbook UPDATE 5 + - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Modify microservice to read - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Extract playbook variables - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Create playbook microservice - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Create microservice file - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Add microservice to deployment settings - + Import specific playbooks UPDATE 5 + - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Create microservices - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Monitor changes - + Import all playbooks UPDATE 5 + - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Create microservices - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Monitor changes - + Stop playbook monitoring UPDATE 5 + - /opt/fmc_repository/Process/Ansible_integration + /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Stop monitoring @@ -106,6 +117,6 @@ 10000 5 Ansible integration - + ANSIBLE|DEMO diff --git a/Ansible_integration/Connect_to_Ansible_host_Defince_variables.php b/Ansible_integration/Ansible_Integration/Connect_to_Ansible_host_Defince_variables.php similarity index 73% rename from Ansible_integration/Connect_to_Ansible_host_Defince_variables.php rename to Ansible_integration/Ansible_Integration/Connect_to_Ansible_host_Defince_variables.php index 25aad4458..7ca71224c 100755 --- a/Ansible_integration/Connect_to_Ansible_host_Defince_variables.php +++ b/Ansible_integration/Ansible_Integration/Connect_to_Ansible_host_Defince_variables.php @@ -10,22 +10,28 @@ function list_args() create_var_def('playbook_path', 'String'); create_var_def('microservice_skeleton', 'String'); create_var_def('microservice_dir', 'String'); + create_var_def('do_import_hosts', 'Boolean'); } check_mandatory_param('device_id'); check_mandatory_param('playbook_path'); check_mandatory_param('microservice_skeleton'); check_mandatory_param('microservice_dir'); +check_mandatory_param('do_import_hosts'); //Gather Device ID (numeric) from procvided ID preg_match("/\S*?(?\d+?)$/", $context['device_id'], $matches); $context['device_id'] = $matches['device_id']; +$context['linux_model_id'] = '14020601'; +$context['linux_manufacturer_id'] = '14020601'; +$context['linux_profile_name'] = 'bash_profile'; $announce = update_asynchronous_task_details($context, "Identifying variables... "); //Define variables what will be written to created microservice file $context['microservice_variables'] = array( 'var_object_id' => ' ', -'var_playbook_path' => ' ' +'var_playbook_path' => ' ', +'var_ansible_hosts' => ' ' ); //Define path to MS to read playbook content. THE MICROSERVICE SHOULD BE ATTACHED TO ANSIBLE ME DEPLOYMENT SETTINGS diff --git a/Ansible_integration/Connect_to_Ansible_host_Retrieve_playbook_list.php b/Ansible_integration/Ansible_Integration/Connect_to_Ansible_host_Retrieve_playbook_list.php similarity index 100% rename from Ansible_integration/Connect_to_Ansible_host_Retrieve_playbook_list.php rename to Ansible_integration/Ansible_Integration/Connect_to_Ansible_host_Retrieve_playbook_list.php diff --git a/Ansible_integration/Create_integration_Define_vars.php b/Ansible_integration/Ansible_Integration/Create_integration_Define_vars.php similarity index 100% rename from Ansible_integration/Create_integration_Define_vars.php rename to Ansible_integration/Ansible_Integration/Create_integration_Define_vars.php diff --git a/Ansible_integration/Create_integration_Retrieve_playbook_files_list.php b/Ansible_integration/Ansible_Integration/Create_integration_Retrieve_playbook_files_list.php similarity index 100% rename from Ansible_integration/Create_integration_Retrieve_playbook_files_list.php rename to Ansible_integration/Ansible_Integration/Create_integration_Retrieve_playbook_files_list.php diff --git a/Ansible_integration/Create_integration_Retrive_playbook_list.php b/Ansible_integration/Ansible_Integration/Create_integration_Retrive_playbook_list.php similarity index 100% rename from Ansible_integration/Create_integration_Retrive_playbook_list.php rename to Ansible_integration/Ansible_Integration/Create_integration_Retrive_playbook_list.php diff --git a/Ansible_integration/Create_microservice_Add_microservice_to_deployment_settings.php b/Ansible_integration/Ansible_Integration/Create_microservice_Add_microservice_to_deployment_settings.php similarity index 100% rename from Ansible_integration/Create_microservice_Add_microservice_to_deployment_settings.php rename to Ansible_integration/Ansible_Integration/Create_microservice_Add_microservice_to_deployment_settings.php diff --git a/Ansible_integration/Create_microservice_Create_microservice.php b/Ansible_integration/Ansible_Integration/Create_microservice_Create_microservice.php similarity index 100% rename from Ansible_integration/Create_microservice_Create_microservice.php rename to Ansible_integration/Ansible_Integration/Create_microservice_Create_microservice.php diff --git a/Ansible_integration/Create_microservice_Create_microservice_file.php b/Ansible_integration/Ansible_Integration/Create_microservice_Create_microservice_file.php similarity index 100% rename from Ansible_integration/Create_microservice_Create_microservice_file.php rename to Ansible_integration/Ansible_Integration/Create_microservice_Create_microservice_file.php diff --git a/Ansible_integration/Create_microservice_Create_new_microservice.php b/Ansible_integration/Ansible_Integration/Create_microservice_Create_new_microservice.php similarity index 100% rename from Ansible_integration/Create_microservice_Create_new_microservice.php rename to Ansible_integration/Ansible_Integration/Create_microservice_Create_new_microservice.php diff --git a/Ansible_integration/Create_microservice_Create_playbook_microservice.php b/Ansible_integration/Ansible_Integration/Create_microservice_Create_playbook_microservice.php similarity index 83% rename from Ansible_integration/Create_microservice_Create_playbook_microservice.php rename to Ansible_integration/Ansible_Integration/Create_microservice_Create_playbook_microservice.php index 0f66de2bb..852453567 100755 --- a/Ansible_integration/Create_microservice_Create_playbook_microservice.php +++ b/Ansible_integration/Ansible_Integration/Create_microservice_Create_playbook_microservice.php @@ -14,6 +14,7 @@ This is required to execute playbook on Ansible host */ $microservice_variables_array['var_playbook_path'] = sprintf($microservice_variables_array['var_playbook_path'], $playbook); +$microservice_variables_array['var_ansible_hosts'] = sprintf($microservice_variables_array['var_ansible_hosts'], $context['ansible_hosts']); //Create a string that contains new variables to write to MS file $microservice_create_vars = ''; @@ -24,7 +25,7 @@ } //Create a string that is used as command for CREAT method -$microservice_create_line = 'sudo ansible-playbook {$params.playbook_path} --extra-vars "'.$microservice_create_vars.'"'; +$microservice_create_line = 'ansible-playbook {$params.playbook_path} --extra-vars "'.$microservice_create_vars.'"'; $variable_line = ' \n'; foreach ($microservice_variables_array as $var) { $variable_line .= $var.'\n'; diff --git a/Ansible_integration/Create_microservice_Extract_playbook_variables.php b/Ansible_integration/Ansible_Integration/Create_microservice_Extract_playbook_variables.php similarity index 94% rename from Ansible_integration/Create_microservice_Extract_playbook_variables.php rename to Ansible_integration/Ansible_Integration/Create_microservice_Extract_playbook_variables.php index ebd2481fa..910d7efb4 100755 --- a/Ansible_integration/Create_microservice_Extract_playbook_variables.php +++ b/Ansible_integration/Ansible_Integration/Create_microservice_Extract_playbook_variables.php @@ -51,6 +51,9 @@ $intention = $matches[1]; $section_end_pattern = '^'.$intention.'\S'; } + if (preg_match('/\s*?-\s*?hosts:(.+?)$/', $line, $matches) === 1) { + $context['ansible_hosts'] = $matches[1]; + } } //Extract variables from var lines diff --git a/Ansible_integration/Create_microservice_Modify_microservice_to_read_.php b/Ansible_integration/Ansible_Integration/Create_microservice_Modify_microservice_to_read_.php similarity index 100% rename from Ansible_integration/Create_microservice_Modify_microservice_to_read_.php rename to Ansible_integration/Ansible_Integration/Create_microservice_Modify_microservice_to_read_.php diff --git a/Ansible_integration/Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php b/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php similarity index 89% rename from Ansible_integration/Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php rename to Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php index 0e84c3f62..96ccc4785 100755 --- a/Ansible_integration/Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php +++ b/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Add_new_microservices_to_deployment_settings.php @@ -4,7 +4,7 @@ * This file is necessary to include to use all the in-built libraries of /opt/fmc_repository/Reference/Common */ require_once '/opt/fmc_repository/Process/Reference/Common/common.php'; -require_once '/opt/fmc_repository/Process/Ansible_integration/ansible_integration_library.php'; +require_once '/opt/fmc_repository/Process/Ansible_integration/Ansible_Integration/ansible_integration_library.php'; //Import required variables $playbook_files_array = $context['playbook_files_array']; diff --git a/Ansible_integration/Create_microservices__Bulk_mode__Create_microservices.php b/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Create_microservices.php similarity index 100% rename from Ansible_integration/Create_microservices__Bulk_mode__Create_microservices.php rename to Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Create_microservices.php diff --git a/Ansible_integration/Create_microservices__Bulk_mode__Extract_playbook_variables.php b/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Extract_playbook_variables.php similarity index 93% rename from Ansible_integration/Create_microservices__Bulk_mode__Extract_playbook_variables.php rename to Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Extract_playbook_variables.php index 2e485fd08..34105054c 100755 --- a/Ansible_integration/Create_microservices__Bulk_mode__Extract_playbook_variables.php +++ b/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Extract_playbook_variables.php @@ -1,7 +1,7 @@ + + + + DISPLAYNAME + Block_IP_if_auth_failed.xml + + + DATE_MODIFICATION + 1614337922934 + + + REPOSITORY + Process + + + DATE_CREATION + 1614337922931 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Block_IP_if_auth_failed/.meta_Process_Block_IP b/Ansible_integration/Block_IP_if_auth_failed/.meta_Process_Block_IP new file mode 100755 index 000000000..7e749d686 --- /dev/null +++ b/Ansible_integration/Block_IP_if_auth_failed/.meta_Process_Block_IP @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Block_IP + + + DATE_MODIFICATION + 1614293335081 + + + REPOSITORY + Process + + + DATE_CREATION + 1614293335076 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Block_IP_if_auth_failed/.meta_Process_DELETE b/Ansible_integration/Block_IP_if_auth_failed/.meta_Process_DELETE new file mode 100755 index 000000000..d1b9d0341 --- /dev/null +++ b/Ansible_integration/Block_IP_if_auth_failed/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614295048872 + + + REPOSITORY + Process + + + DATE_CREATION + 1614295048866 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Block_IP_if_auth_failed/Block_IP_if_auth_failed.xml b/Ansible_integration/Block_IP_if_auth_failed/Block_IP_if_auth_failed.xml new file mode 100644 index 000000000..0a42c9976 --- /dev/null +++ b/Ansible_integration/Block_IP_if_auth_failed/Block_IP_if_auth_failed.xml @@ -0,0 +1,41 @@ + + + + + + + + Block IP + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks + Get Ansible hosts + + + /opt/fmc_repository/Process/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks + Check conditions + + + /opt/fmc_repository/Process/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks + Block IP + + + + DELETE + DELETE + 5 + + + + + The workflow is part of Ansible Demo + service_id + python + 10000 + 5 + Block IP if auth failed + ANSIBLE|DEMO + + diff --git a/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/.meta_Tasks b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/.meta_Tasks new file mode 100755 index 000000000..7c2cfe70c --- /dev/null +++ b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614293335352 + + + REPOSITORY + Process + + + DATE_CREATION + 1614293335346 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/.meta_Connect_to_Ansible_host_Defince_variables.php b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Block_IP.py similarity index 77% rename from Ansible_integration/.meta_Connect_to_Ansible_host_Defince_variables.php rename to Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Block_IP.py index 8c83b01a5..7b4de3066 100755 --- a/Ansible_integration/.meta_Connect_to_Ansible_host_Defince_variables.php +++ b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Block_IP.py @@ -1,9 +1,13 @@ + + DISPLAYNAME + Task_Block_IP.py + DATE_MODIFICATION - 1601377603218 + 1614329208130 REPOSITORY @@ -11,7 +15,7 @@ DATE_CREATION - 1601377603212 + 1614293379085 TAG diff --git a/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Check_conditions.py b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Check_conditions.py new file mode 100755 index 000000000..ef0e7d09c --- /dev/null +++ b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Check_conditions.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Check_conditions.py + + + DATE_MODIFICATION + 1614295166069 + + + REPOSITORY + Process + + + DATE_CREATION + 1614293372478 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Get_Ansible_hosts.py b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Get_Ansible_hosts.py new file mode 100755 index 000000000..95ecba191 --- /dev/null +++ b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/.meta_Task_Get_Ansible_hosts.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Get_Ansible_hosts.py + + + DATE_MODIFICATION + 1614337922103 + + + REPOSITORY + Process + + + DATE_CREATION + 1614293365249 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Block_IP.py b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Block_IP.py new file mode 100755 index 000000000..a084cbab7 --- /dev/null +++ b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Block_IP.py @@ -0,0 +1,70 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.repository import Repository +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import json +import sys +import time +import re + + +""" +The proposals of the tasks are: + +""" + +#New Variables object +TaskVariables = Variables() + + +#Add vars to context +context = Variables.task_call(TaskVariables) + +process_id = context['SERVICEINSTANCEID'] + +process_id = context['SERVICEINSTANCEID'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +AnsibleOrderObject = Order(context['ansible_device_id']) +AnsibleOrderObject.command_synchronize(300) + +RepositoryObject = Repository() + +#Get default values for microservice +deployment_settings_id = AnsibleOrderObject.command_get_deployment_settings_id() +util.log_to_process_file(process_id, 'PROFILE ID {}'.format(deployment_settings_id)) +microservice_path = RepositoryObject.get_microservice_path_by_name(context['ansible_microservice'], deployment_settings_id) +microservice_variables = RepositoryObject.get_microservice_variables_default_value(microservice_path) + + +for ip in context['block_ip_list']: + ms_dict = {context['ansible_microservice']: {'': {'object_id': '', + 'playbook_path': microservice_variables['playbook_path'], + 'dport': '22', + 'sip': ip + } + } + } + AnsibleOrderObject.command_execute('CREATE', ms_dict) +if context['block_ip_list']: + success_comment = 'All IP addresses have been blocked' +else: + success_comment = 'There is no IP addresses to block' + +#Finish the task correctlly +print(MSA_API.process_content('ENDED', success_comment , context, True)) \ No newline at end of file diff --git a/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Check_conditions.py b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Check_conditions.py new file mode 100755 index 000000000..abadf4908 --- /dev/null +++ b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Check_conditions.py @@ -0,0 +1,53 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + +""" +The proposals of the task are: + + +""" + + +#New Variables object +TaskVariables = Variables() + +#Add vars to context +context = Variables.task_call(TaskVariables) + +ms_auth_fail = 'auth_failure' + +fail_ip_dict = dict() +for device_id in context['server_list']: + CurrentDeviceOrderObject = Order(device_id) + CurrentDeviceOrderObject.command_synchronize(300) + objects_list = CurrentDeviceOrderObject.command_objects_instances(ms_auth_fail) + for fail_event in objects_list: + fail_object = CurrentDeviceOrderObject.command_objects_instances_by_id(ms_auth_fail, + fail_event)[ms_auth_fail][fail_event] + if fail_object['rhost'] not in fail_ip_dict.keys(): + fail_ip_dict[fail_object['rhost']] = 0 + + fail_ip_dict[fail_object['rhost']] += 1 + +context['block_ip_list'] = list() +#Prepare blocking list +for ip, number in fail_ip_dict.items(): + if number > 5: + context['block_ip_list'].append(ip) + +#Finish the task correctlly +result = MSA_API.process_content('ENDED', 'Auth fail events have been analysed', context, True) +print(result) diff --git a/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Get_Ansible_hosts.py b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Get_Ansible_hosts.py new file mode 100755 index 000000000..128e04e9b --- /dev/null +++ b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Get_Ansible_hosts.py @@ -0,0 +1,59 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + +""" +The proposals of the task are: + + +""" + + +#New Variables object +TaskVariables = Variables() + +#Add new variables +TaskVariables.add('ansible_device_id', var_type = 'Device') +TaskVariables.add('ansible_microservice', var_type = 'String') + +#Add vars to context +context = Variables.task_call(TaskVariables) +context['ansible_device_id'] = re.match('^\D*?(\d+?)$', context['ansible_device_id']).group(1) +context['ansible_microservice'] = 'ANSIBLE_MS__based_on_grenoble_server_firewall_' + +ms_ansible_host = 'Read_hosts_file' + +#Create site router Order object +AnsibleOrderObject = Order(context['ansible_device_id']) +AnsibleOrderObject.command_synchronize(300) + +server_list = list() +#Find device ID value +MsaLookup = lookup.Lookup() +MsaLookup.look_list_device_ids() +devices = json.loads(MsaLookup.content) + +objects_list = AnsibleOrderObject.command_objects_instances(ms_ansible_host) +for ansible_group in objects_list: + ansible_group_object = AnsibleOrderObject.command_objects_instances_by_id(ms_ansible_host, + ansible_group)[ms_ansible_host][ansible_group] + for device in devices: + if re.search(ansible_group_object['object_id'], device['name']): + server_list.append(device['id']) +context['server_list'] = server_list + +#Finish the task correctlly +result = MSA_API.process_content('ENDED', 'All variables have been defined successfully', context, True) +print(result) diff --git a/Ansible_integration/Block_IP_if_auth_failed/Process_DELETE/.meta_Tasks b/Ansible_integration/Block_IP_if_auth_failed/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..e2092f7c8 --- /dev/null +++ b/Ansible_integration/Block_IP_if_auth_failed/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614295048988 + + + REPOSITORY + Process + + + DATE_CREATION + 1614295048983 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_interface/.meta_Configure_host_interface.xml b/Ansible_integration/Configure_host_interface/.meta_Configure_host_interface.xml new file mode 100755 index 000000000..bcb10128c --- /dev/null +++ b/Ansible_integration/Configure_host_interface/.meta_Configure_host_interface.xml @@ -0,0 +1,43 @@ + + + + + DISPLAYNAME + Configure_host_interface.xml + + + DATE_MODIFICATION + 1614319750333 + + + REPOSITORY + Process + + + DATE_CREATION + 1614319750330 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_interface/.meta_Process_DELETE b/Ansible_integration/Configure_host_interface/.meta_Process_DELETE new file mode 100755 index 000000000..9b3748f43 --- /dev/null +++ b/Ansible_integration/Configure_host_interface/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614319749375 + + + REPOSITORY + Process + + + DATE_CREATION + 1614319749370 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_interface/.meta_Process_Execute_microservice b/Ansible_integration/Configure_host_interface/.meta_Process_Execute_microservice new file mode 100755 index 000000000..dc0215c6f --- /dev/null +++ b/Ansible_integration/Configure_host_interface/.meta_Process_Execute_microservice @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Execute_microservice + + + DATE_MODIFICATION + 1614287926117 + + + REPOSITORY + Process + + + DATE_CREATION + 1614287926112 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_interface/Configure_host_interface.xml b/Ansible_integration/Configure_host_interface/Configure_host_interface.xml new file mode 100644 index 000000000..c00ecff86 --- /dev/null +++ b/Ansible_integration/Configure_host_interface/Configure_host_interface.xml @@ -0,0 +1,34 @@ + + + + + + + + + Execute microservice + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Configure_host_interface/Process_Execute_microservice/Tasks + Execute microservice + + + + DELETE + DELETE + 5 + + + + + The workflow is part of Ansible Demo + service_id + python + 10000 + 5 + Configure host interface + ANSIBLE|DEMO + + diff --git a/Ansible_integration/Configure_host_interface/Process_DELETE/.meta_Tasks b/Ansible_integration/Configure_host_interface/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..0649a339b --- /dev/null +++ b/Ansible_integration/Configure_host_interface/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614319749459 + + + REPOSITORY + Process + + + DATE_CREATION + 1614319749453 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_interface/Process_Execute_microservice/.meta_Tasks b/Ansible_integration/Configure_host_interface/Process_Execute_microservice/.meta_Tasks new file mode 100755 index 000000000..2bad8de87 --- /dev/null +++ b/Ansible_integration/Configure_host_interface/Process_Execute_microservice/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614287926232 + + + REPOSITORY + Process + + + DATE_CREATION + 1614287926226 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_interface/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py b/Ansible_integration/Configure_host_interface/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py new file mode 100755 index 000000000..0713417b6 --- /dev/null +++ b/Ansible_integration/Configure_host_interface/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Execute_microservice.py + + + DATE_MODIFICATION + 1614289532416 + + + REPOSITORY + Process + + + DATE_CREATION + 1614287941290 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_interface/Process_Execute_microservice/Tasks/Task_Execute_microservice.py b/Ansible_integration/Configure_host_interface/Process_Execute_microservice/Tasks/Task_Execute_microservice.py new file mode 100755 index 000000000..e49f04a35 --- /dev/null +++ b/Ansible_integration/Configure_host_interface/Process_Execute_microservice/Tasks/Task_Execute_microservice.py @@ -0,0 +1,85 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.repository import Repository +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import json +import sys +import time +import re + + +""" +The proposals of the tasks are: + +""" + +#New Variables object +TaskVariables = Variables() + +#Add new variables +TaskVariables.add('ansible_device_id', var_type = 'Device') +TaskVariables.add('ansible_microservice', var_type = 'String') + +#Add vars to context +context = Variables.task_call(TaskVariables) +context['ansible_device_id'] = re.match('^\D+?(\d+?)$', context['ansible_device_id']).group(1) + +process_id = context['SERVICEINSTANCEID'] + +#Udate exchange file +with open(context['exchange_file'], 'r') as exchange_file: + exchange_dict = json.load(exchange_file) + +process_id = context['SERVICEINSTANCEID'] +site_ip_plan = exchange_dict['site_ip_plan'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Create Ansible order object +RepositoryObject = Repository() +AnsibleOrderObject = Order(context['ansible_device_id']) +AnsibleOrderObject.command_synchronize(300) + +#Get default values for microservice +deployment_settings_id = AnsibleOrderObject.command_get_deployment_settings_id() +microservice_path = RepositoryObject.get_microservice_path_by_name(context['ansible_microservice'], deployment_settings_id) +microservice_variables = RepositoryObject.get_microservice_variables_default_value(microservice_path) + +#Get list of IP addresses to configure on servers +ip_list = list() +for device, details in site_ip_plan.items(): + if re.match('srv', device): + ip_list.append(details) + + +ms_dict = {context['ansible_microservice']: {'': {'object_id': '', + 'playbook_path': microservice_variables['playbook_path'], + 'server_1_iface': ip_list[0]['interface'], + 'server_1_ip_address': ip_list[0]['ip_address'].split('/')[0], + 'server_1_prefix_len':ip_list[0]['ip_address'].split('/')[1], + 'server_2_iface': ip_list[1]['interface'], + 'server_2_ip_address': ip_list[1]['ip_address'].split('/')[0], + 'server_2_prefix_len':ip_list[1]['ip_address'].split('/')[1] + } + } + } +AnsibleOrderObject.command_execute('CREATE', ms_dict) + +success_comment = 'IP addresses have been configured on host interfaces' + +#Finish the task correctlly +print(MSA_API.process_content('ENDED', success_comment , context, True)) \ No newline at end of file diff --git a/Ansible_integration/Configure_host_route/.meta_Configure_host_route.xml b/Ansible_integration/Configure_host_route/.meta_Configure_host_route.xml new file mode 100755 index 000000000..72d924219 --- /dev/null +++ b/Ansible_integration/Configure_host_route/.meta_Configure_host_route.xml @@ -0,0 +1,43 @@ + + + + + DISPLAYNAME + Configure_host_route.xml + + + DATE_MODIFICATION + 1614290508647 + + + REPOSITORY + Process + + + DATE_CREATION + 1614290508643 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_route/.meta_Process_DELETE b/Ansible_integration/Configure_host_route/.meta_Process_DELETE new file mode 100755 index 000000000..f51506b97 --- /dev/null +++ b/Ansible_integration/Configure_host_route/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614290475945 + + + REPOSITORY + Process + + + DATE_CREATION + 1614290475940 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_route/.meta_Process_Execute_microservice b/Ansible_integration/Configure_host_route/.meta_Process_Execute_microservice new file mode 100755 index 000000000..89e1d8bcd --- /dev/null +++ b/Ansible_integration/Configure_host_route/.meta_Process_Execute_microservice @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Execute_microservice + + + DATE_MODIFICATION + 1614289699805 + + + REPOSITORY + Process + + + DATE_CREATION + 1614289699800 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_route/Configure_host_route.xml b/Ansible_integration/Configure_host_route/Configure_host_route.xml new file mode 100644 index 000000000..b3ab3c966 --- /dev/null +++ b/Ansible_integration/Configure_host_route/Configure_host_route.xml @@ -0,0 +1,34 @@ + + + + + + + + + Execute microservice + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Configure_host_route/Process_Execute_microservice/Tasks + Execute microservice + + + + DELETE + DELETE + 5 + + + + + The workflow is part os Ansible Demo + service_id + python + 10000 + 5 + Configure host route + ANSIBLE|DEMO + + diff --git a/Ansible_integration/Configure_host_route/Process_DELETE/.meta_Tasks b/Ansible_integration/Configure_host_route/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..d2d2f7000 --- /dev/null +++ b/Ansible_integration/Configure_host_route/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614290476060 + + + REPOSITORY + Process + + + DATE_CREATION + 1614290476055 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_route/Process_Execute_microservice/.meta_Tasks b/Ansible_integration/Configure_host_route/Process_Execute_microservice/.meta_Tasks new file mode 100755 index 000000000..e9ca625bc --- /dev/null +++ b/Ansible_integration/Configure_host_route/Process_Execute_microservice/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614289699929 + + + REPOSITORY + Process + + + DATE_CREATION + 1614289699923 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_route/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py b/Ansible_integration/Configure_host_route/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py new file mode 100755 index 000000000..f2d85fd89 --- /dev/null +++ b/Ansible_integration/Configure_host_route/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Execute_microservice.py + + + DATE_MODIFICATION + 1614520427305 + + + REPOSITORY + Process + + + DATE_CREATION + 1614289712204 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Configure_host_route/Process_Execute_microservice/Tasks/Task_Execute_microservice.py b/Ansible_integration/Configure_host_route/Process_Execute_microservice/Tasks/Task_Execute_microservice.py new file mode 100755 index 000000000..a4d24a049 --- /dev/null +++ b/Ansible_integration/Configure_host_route/Process_Execute_microservice/Tasks/Task_Execute_microservice.py @@ -0,0 +1,80 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.repository import Repository +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import json +import sys +import time +import re + + +""" +The proposals of the tasks are: + - Get variables values for Ansible-based microservices from exchange file; + - Get variables names from provided Ansible-based microservice; + - Execute provided Ansible-based microservice with variables from exchange file. + +""" + +#New Variables object +TaskVariables = Variables() + +#Add new variables +TaskVariables.add('ansible_device_id', var_type = 'Device') +TaskVariables.add('ansible_microservice', var_type = 'String') + +#Add vars to context +context = Variables.task_call(TaskVariables) +context['ansible_device_id'] = re.match('^\D+?(\d+?)$', context['ansible_device_id']).group(1) + +#Define additional variables +process_id = context['SERVICEINSTANCEID'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Get variables for ansible based microservices from exchange file +with open(context['exchange_file'], 'r') as exchange_file: + ansible_variables_dict = json.load(exchange_file)['ansible_microservice_variables'] + +#Create Repository object +RepositoryObject = Repository() + +#Create Order object for Ansible host +AnsibleOrderObject = Order(context['ansible_device_id']) +AnsibleOrderObject.command_synchronize(300) + +#Get default values for microservice +deployment_settings_id = AnsibleOrderObject.command_get_deployment_settings_id() +microservice_path = RepositoryObject.get_microservice_path_by_name(context['ansible_microservice'], deployment_settings_id) +microservice_variables = RepositoryObject.get_microservice_variables_default_value(microservice_path) + +#Walk through the provided Ansible-based microservice variables. If the variable exists in exchange dict --> get the value. +#Else - empty string +object_dict = dict() +for variable in microservice_variables: + if variable in ansible_variables_dict: + object_dict[variable] = ansible_variables_dict[variable] + else: + object_dict[variable] = str() + +ms_dict = {context['ansible_microservice']: {'': object_dict}} +AnsibleOrderObject.command_execute('CREATE', ms_dict) + +success_comment = 'Microservice {} has executed Ansible playbook successfully'.format(context['ansible_microservice']) + +#Finish the task correctlly +print(MSA_API.process_content('ENDED', success_comment , context, True)) \ No newline at end of file diff --git a/Ansible_integration/Configure_route_announcement/.meta_Configure_route_announcement.xml b/Ansible_integration/Configure_route_announcement/.meta_Configure_route_announcement.xml new file mode 100755 index 000000000..048c428f9 --- /dev/null +++ b/Ansible_integration/Configure_route_announcement/.meta_Configure_route_announcement.xml @@ -0,0 +1,43 @@ + + + + + DISPLAYNAME + Configure_route_announcement.xml + + + DATE_MODIFICATION + 1614327719904 + + + REPOSITORY + Process + + + DATE_CREATION + 1614327719898 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Configure_route_announcement/.meta_Process_Configure_route_announcement b/Ansible_integration/Configure_route_announcement/.meta_Process_Configure_route_announcement new file mode 100755 index 000000000..04f75de79 --- /dev/null +++ b/Ansible_integration/Configure_route_announcement/.meta_Process_Configure_route_announcement @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Configure_route_announcement + + + DATE_MODIFICATION + 1614286260950 + + + REPOSITORY + Process + + + DATE_CREATION + 1614286260946 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_route_announcement/.meta_Process_DELETE b/Ansible_integration/Configure_route_announcement/.meta_Process_DELETE new file mode 100755 index 000000000..c017a9047 --- /dev/null +++ b/Ansible_integration/Configure_route_announcement/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614286575795 + + + REPOSITORY + Process + + + DATE_CREATION + 1614286575790 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_route_announcement/Configure_route_announcement.xml b/Ansible_integration/Configure_route_announcement/Configure_route_announcement.xml new file mode 100644 index 000000000..ca1142918 --- /dev/null +++ b/Ansible_integration/Configure_route_announcement/Configure_route_announcement.xml @@ -0,0 +1,32 @@ + + + + + + + Configure route announcement + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks + Configure route announcement + + + + DELETE + DELETE + 5 + + + + + The workflow is part of Ansible Demo + service_id + python + 10000 + 5 + Configure route announcement + ANSIBLE|DEMO + + diff --git a/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/.meta_Tasks b/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/.meta_Tasks new file mode 100755 index 000000000..6f19e77ba --- /dev/null +++ b/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614286261037 + + + REPOSITORY + Process + + + DATE_CREATION + 1614286261031 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/.meta_Task_Configure_route_announcement.py b/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/.meta_Task_Configure_route_announcement.py new file mode 100755 index 000000000..88a62bd38 --- /dev/null +++ b/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/.meta_Task_Configure_route_announcement.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Configure_route_announcement.py + + + DATE_MODIFICATION + 1614327718905 + + + REPOSITORY + Process + + + DATE_CREATION + 1614286272338 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/Task_Configure_route_announcement.py b/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/Task_Configure_route_announcement.py new file mode 100755 index 000000000..ac328c960 --- /dev/null +++ b/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/Task_Configure_route_announcement.py @@ -0,0 +1,84 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + + +""" +The proposals of the task are: + + +""" + +#New Variables object +TaskVariables = Variables() + + +#Add vars to context +context = Variables.task_call(TaskVariables) + +#Import microservice alias list +with open('/opt/fmc_repository/Process/Ansible_integration/Get_router_interface/microservice_list.json', 'r') as alias_file: + context['ms_aliases'] = json.load(alias_file) + +#Udate exchange file +with open(context['exchange_file'], 'r') as exchange_file: + exchange_dict = json.load(exchange_file) + +process_id = context['SERVICEINSTANCEID'] +subnet = exchange_dict['site_prefix'] +site_ip_plan = exchange_dict['site_ip_plan'] +site_prefix = exchange_dict['site_prefix'] +ms_router_ospf_config = context['ms_aliases']['Router OSPF configuration'] +ms_router_interface = context['ms_aliases']['Router Interface'] + + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + + +#Create site router Order object +RouterOrderObject = Order(exchange_dict['router_device_id']) +RouterOrderObject.command_synchronize(300) + +objects_list = RouterOrderObject.command_objects_instances(ms_router_ospf_config) +ospf_process_object = RouterOrderObject.command_objects_instances_by_id(ms_router_ospf_config, objects_list[0])[ms_router_ospf_config][objects_list[0]] + +#Add new network to announce +ospf_process_object_interfaces = list(ospf_process_object['interface'].keys()) +for index, value in enumerate(ospf_process_object_interfaces): + ospf_process_object_interfaces[index] = int(value) + +new_index = str(sorted(ospf_process_object_interfaces)[-1]+1) +NetObject = ipaddress.ip_network(site_prefix) +ospf_process_object['interface'][new_index] = {'area': '0', + 'network_address': str(NetObject.network_address), + 'network_mask': str(NetObject.hostmask) + } + +#Configure OSPF +ms_dict = {ms_router_ospf_config: {ospf_process_object['object_id']: ospf_process_object}} +RouterOrderObject.command_execute('UPDATE', ms_dict) + + +result = MSA_API.process_content('ENDED', 'Route has been announced', context, True) +print(result) + diff --git a/Ansible_integration/Configure_route_announcement/Process_DELETE/.meta_Tasks b/Ansible_integration/Configure_route_announcement/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..6713fe297 --- /dev/null +++ b/Ansible_integration/Configure_route_announcement/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614286575879 + + + REPOSITORY + Process + + + DATE_CREATION + 1614286575874 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_router_interface/.meta_Configure_router_interface.xml b/Ansible_integration/Configure_router_interface/.meta_Configure_router_interface.xml new file mode 100755 index 000000000..79d82dd9a --- /dev/null +++ b/Ansible_integration/Configure_router_interface/.meta_Configure_router_interface.xml @@ -0,0 +1,43 @@ + + + + + DISPLAYNAME + Configure_router_interface.xml + + + DATE_MODIFICATION + 1614322410852 + + + REPOSITORY + Process + + + DATE_CREATION + 1614322410849 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Configure_router_interface/.meta_Process_Configure_router_interface b/Ansible_integration/Configure_router_interface/.meta_Process_Configure_router_interface new file mode 100755 index 000000000..39ecd2c6f --- /dev/null +++ b/Ansible_integration/Configure_router_interface/.meta_Process_Configure_router_interface @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Configure_router_interface + + + DATE_MODIFICATION + 1614285170689 + + + REPOSITORY + Process + + + DATE_CREATION + 1614285170684 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_router_interface/.meta_Process_DELETE b/Ansible_integration/Configure_router_interface/.meta_Process_DELETE new file mode 100755 index 000000000..b022b0ed2 --- /dev/null +++ b/Ansible_integration/Configure_router_interface/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614286063083 + + + REPOSITORY + Process + + + DATE_CREATION + 1614286063078 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_router_interface/Configure_router_interface.xml b/Ansible_integration/Configure_router_interface/Configure_router_interface.xml new file mode 100644 index 000000000..d6d3a60e6 --- /dev/null +++ b/Ansible_integration/Configure_router_interface/Configure_router_interface.xml @@ -0,0 +1,32 @@ + + + + + + + Configure router interface + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks + Configure router interface + + + + DELETE + DELETE + 5 + + + + + The workflow is part of Ansible Demo + service_id + python + 10000 + 5 + Configure router interface + ANSIBLE|DEMO + + diff --git a/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/.meta_Tasks b/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/.meta_Tasks new file mode 100755 index 000000000..1560d1f97 --- /dev/null +++ b/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614285170821 + + + REPOSITORY + Process + + + DATE_CREATION + 1614285170815 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/.meta_Task_Configure_router_interface.py b/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/.meta_Task_Configure_router_interface.py new file mode 100755 index 000000000..a5512e731 --- /dev/null +++ b/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/.meta_Task_Configure_router_interface.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Configure_router_interface.py + + + DATE_MODIFICATION + 1614322408899 + + + REPOSITORY + Process + + + DATE_CREATION + 1614285191849 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/Task_Configure_router_interface.py b/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/Task_Configure_router_interface.py new file mode 100755 index 000000000..d65a65941 --- /dev/null +++ b/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/Task_Configure_router_interface.py @@ -0,0 +1,81 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + + +""" +The proposals of the task are: + + +""" + +#New Variables object +TaskVariables = Variables() + + +#Add vars to context +context = Variables.task_call(TaskVariables) + +#Import microservice alias list +with open('/opt/fmc_repository/Process/Ansible_integration/Get_router_interface/microservice_list.json', 'r') as alias_file: + context['ms_aliases'] = json.load(alias_file) + +#Udate exchange file +with open(context['exchange_file'], 'r') as exchange_file: + exchange_dict = json.load(exchange_file) + +process_id = context['SERVICEINSTANCEID'] +router_device_id = exchange_dict['router_device_id'] +subnet = exchange_dict['site_prefix'] +site_ip_plan = exchange_dict['site_ip_plan'] +ms_router_ospf_config = context['ms_aliases']['Router OSPF configuration'] +ms_router_interface = context['ms_aliases']['Router Interface'] + + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Get site router name +RouterDevice = Device(customer_id = re.match('^\D+?(\d+?)$',context['UBIQUBEID']).group(1), + device_id = router_device_id + ) +RouterDevice.read() +router_name = RouterDevice.name + +#Create site router Order object +RouterOrderObject = Order(exchange_dict['router_device_id']) +RouterOrderObject.command_synchronize(300) + +#Configure IP address on CE link +ms_dict = {ms_router_interface: + {site_ip_plan[router_name]['interface']: {'object_id': site_ip_plan[router_name]['interface'], + 'ip_addr': site_ip_plan[router_name]['ip_address'].split('/')[0], + 'ip_prefix': site_ip_plan[router_name]['ip_address'].split('/')[1] + } + } + } +RouterOrderObject.command_execute('CREATE', ms_dict) + + +result = MSA_API.process_content('ENDED', 'Router interface has been configured', context, True) +print(result) + diff --git a/Ansible_integration/Configure_router_interface/Process_DELETE/.meta_Tasks b/Ansible_integration/Configure_router_interface/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..bc3371df2 --- /dev/null +++ b/Ansible_integration/Configure_router_interface/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614286063171 + + + REPOSITORY + Process + + + DATE_CREATION + 1614286063165 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml new file mode 100755 index 000000000..a9587ce99 --- /dev/null +++ b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml @@ -0,0 +1,43 @@ + + + + + DISPLAYNAME + Execute_Ansible_based_microservice.xml + + + DATE_MODIFICATION + 1614526065663 + + + REPOSITORY + Process + + + DATE_CREATION + 1614526065659 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Process_DELETE b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Process_DELETE new file mode 100755 index 000000000..a12f8483a --- /dev/null +++ b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614525158505 + + + REPOSITORY + Process + + + DATE_CREATION + 1614525158502 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Process_Execute_microservice b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Process_Execute_microservice new file mode 100755 index 000000000..2a55c0393 --- /dev/null +++ b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Process_Execute_microservice @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Execute_microservice + + + DATE_MODIFICATION + 1614523661893 + + + REPOSITORY + Process + + + DATE_CREATION + 1614523661889 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml new file mode 100644 index 000000000..f1eb9ab50 --- /dev/null +++ b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml @@ -0,0 +1,34 @@ + + + + + + + + + Execute microservice + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks + Execute microservice + + + + DELETE + DELETE + 5 + + + + + + service_id + python + 10000 + 5 + Execute Ansible-based microservice + + + diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Process_DELETE/.meta_Tasks b/Ansible_integration/Execute_Ansible_based_microservice/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..0617e30c5 --- /dev/null +++ b/Ansible_integration/Execute_Ansible_based_microservice/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614525158589 + + + REPOSITORY + Process + + + DATE_CREATION + 1614525158585 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/.meta_Tasks b/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/.meta_Tasks new file mode 100755 index 000000000..86ab451e8 --- /dev/null +++ b/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614523661975 + + + REPOSITORY + Process + + + DATE_CREATION + 1614523661971 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py b/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py new file mode 100755 index 000000000..86f19ec7b --- /dev/null +++ b/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Execute_microservice.py + + + DATE_MODIFICATION + 1614526064812 + + + REPOSITORY + Process + + + DATE_CREATION + 1614523680567 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/Task_Execute_microservice.py b/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/Task_Execute_microservice.py new file mode 100755 index 000000000..6e30b4cf7 --- /dev/null +++ b/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/Task_Execute_microservice.py @@ -0,0 +1,82 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.repository import Repository +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import json +import sys +import time +import re + + +""" +The proposals of the tasks are: + - Get variables values for Ansible-based microservices from exchange file; + - Get variables names from provided Ansible-based microservice; + - Execute provided Ansible-based microservice with variables from exchange file. + +""" + +#New Variables object +TaskVariables = Variables() + +#Add new variables +TaskVariables.add('ansible_device_id', var_type = 'Device') +TaskVariables.add('ansible_microservice', var_type = 'String') + +#Add vars to context +context = Variables.task_call(TaskVariables) +context['ansible_device_id'] = re.match('^\D+?(\d+?)$', context['ansible_device_id']).group(1) + +#Define additional variables +process_id = context['SERVICEINSTANCEID'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Get variables for ansible based microservices from exchange file +with open(context['exchange_file'], 'r') as exchange_file: + ansible_variables_dict = json.load(exchange_file)['ansible_microservice_variables'] + +#Create Repository object +RepositoryObject = Repository() + +#Create Order object for Ansible host +AnsibleOrderObject = Order(context['ansible_device_id']) +AnsibleOrderObject.command_synchronize(300) + +#Get default values for microservice +deployment_settings_id = AnsibleOrderObject.command_get_deployment_settings_id() +microservice_path = RepositoryObject.get_microservice_path_by_name(context['ansible_microservice'], deployment_settings_id) +microservice_variables = RepositoryObject.get_microservice_variables_default_value(microservice_path) + +#Walk through the provided Ansible-based microservice variables. If the variable exists in exchange dict --> get the value. +#Else - empty string +object_dict = dict() +for variable in microservice_variables: + if variable in ansible_variables_dict: + object_dict[variable] = ansible_variables_dict[variable] + elif variable == 'playbook_path': + object_dict[variable] = microservice_variables['playbook_path'] + else: + object_dict[variable] = str() + +ms_dict = {context['ansible_microservice']: {'': object_dict}} +AnsibleOrderObject.command_execute('CREATE', ms_dict) + +success_comment = 'Microservice {} has executed Ansible playbook successfully'.format(context['ansible_microservice']) + +#Finish the task correctlly +print(MSA_API.process_content('ENDED', success_comment , context, True)) \ No newline at end of file diff --git a/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml b/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml new file mode 100755 index 000000000..095334579 --- /dev/null +++ b/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml @@ -0,0 +1,43 @@ + + + + + DISPLAYNAME + Get_router_interface.xml + + + DATE_MODIFICATION + 1614523829561 + + + REPOSITORY + Process + + + DATE_CREATION + 1614523829557 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Get_router_interface/.meta_Process_DELETE b/Ansible_integration/Get_router_interface/.meta_Process_DELETE new file mode 100755 index 000000000..b576cc28f --- /dev/null +++ b/Ansible_integration/Get_router_interface/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614283971963 + + + REPOSITORY + Process + + + DATE_CREATION + 1614283971958 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Get_router_interface/.meta_Process_Get_router_interface b/Ansible_integration/Get_router_interface/.meta_Process_Get_router_interface new file mode 100755 index 000000000..591bae02f --- /dev/null +++ b/Ansible_integration/Get_router_interface/.meta_Process_Get_router_interface @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Get_router_interface + + + DATE_MODIFICATION + 1614277288825 + + + REPOSITORY + Process + + + DATE_CREATION + 1614277288820 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Get_router_interface/Get_router_interface.xml b/Ansible_integration/Get_router_interface/Get_router_interface.xml new file mode 100644 index 000000000..bbc20a313 --- /dev/null +++ b/Ansible_integration/Get_router_interface/Get_router_interface.xml @@ -0,0 +1,40 @@ + + + + + + + Get router interface + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks + Get router interface + + + /opt/fmc_repository/Process/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks + Calculate IP addresses + + + /opt/fmc_repository/Process/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks + Update IPAM + + + + DELETE + DELETE + 5 + + + + + The workflow is part of Ansible Demo + service_id + python + 10000 + 5 + Get router interface + ANSIBLE|DEMO + + diff --git a/Ansible_integration/Get_router_interface/Process_DELETE/.meta_Tasks b/Ansible_integration/Get_router_interface/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..0b3270dc2 --- /dev/null +++ b/Ansible_integration/Get_router_interface/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614283972050 + + + REPOSITORY + Process + + + DATE_CREATION + 1614283972045 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/.meta_Tasks b/Ansible_integration/Get_router_interface/Process_Get_router_interface/.meta_Tasks new file mode 100755 index 000000000..ec0f04a7d --- /dev/null +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614277288910 + + + REPOSITORY + Process + + + DATE_CREATION + 1614277288904 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Calculate_IP_addresses.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Calculate_IP_addresses.py new file mode 100755 index 000000000..adbff306a --- /dev/null +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Calculate_IP_addresses.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Calculate_IP_addresses.py + + + DATE_MODIFICATION + 1614521815821 + + + REPOSITORY + Process + + + DATE_CREATION + 1614282198783 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py new file mode 100755 index 000000000..addcd085f --- /dev/null +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Get_router_interface.py + + + DATE_MODIFICATION + 1614523828753 + + + REPOSITORY + Process + + + DATE_CREATION + 1614279732991 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/.meta_Create_microservice_Create_playbook_microservice.php b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py similarity index 77% rename from Ansible_integration/.meta_Create_microservice_Create_playbook_microservice.php rename to Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py index 8290a7d94..bd4ad9d4a 100755 --- a/Ansible_integration/.meta_Create_microservice_Create_playbook_microservice.php +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py @@ -1,9 +1,13 @@ + + DISPLAYNAME + Task_Update_IPAM.py + DATE_MODIFICATION - 1597304215928 + 1614521851478 REPOSITORY @@ -11,7 +15,7 @@ DATE_CREATION - 1597304215923 + 1614283125040 TAG diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Calculate_IP_addresses.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Calculate_IP_addresses.py new file mode 100755 index 000000000..0449b9a56 --- /dev/null +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Calculate_IP_addresses.py @@ -0,0 +1,90 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + + +""" +The proposals of the task are: + + +""" + +#New Variables object +TaskVariables = Variables() + +#Add new variables +TaskVariables.add('site', var_type = 'String') + +#Add vars to context +context = Variables.task_call(TaskVariables) + +process_id = context['SERVICEINSTANCEID'] +router_device_id = context['exchange_dict']['router_device_id'] +customer_name = context['exchange_dict']['tenant'] +site = context['exchange_dict']['site'] +subnet = context['exchange_dict']['site_prefix'] +server_list = context['server_list'] +router_interface = context['router_interface'] + +ms_ipam_tenant = context['ms_aliases']['IPAM Tenants'] +ms_ipam_site = context['ms_aliases']['IPAM Sites'] +ms_ipam_device = context['ms_aliases']['IPAM Devices'] +ms_interface_connection = context['ms_aliases']['IPAM Interface Connections'] +ms_ipam_prefix = context['ms_aliases']['IPAM IPv4 prefixes'] +ms_ipam_avaliable_prefix = context['ms_aliases']['IPAM Available Prefixes'] +ms_ipam_address = context['ms_aliases']['IPAM IPv4 addresses'] +ms_ipam_interface = context['ms_aliases']['IPAM Interfaces'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Get site router name +RouterDevice = Device(customer_id = re.match('^\D+?(\d+?)$',context['UBIQUBEID']).group(1), + device_id = router_device_id + ) +RouterDevice.read() +router_name = RouterDevice.name + + +#Get IP addresses +NetObject = ipaddress.ip_network(subnet) +site_ip_plan = dict() +ip_address_list = list(NetObject.hosts()) +site_ip_plan[router_name] = {'ip_address':'{}/{}'.format(ip_address_list[0], NetObject.prefixlen), + 'interface': router_interface} +context['exchange_dict']['ansible_microservice_variables']['next_hop'] = str(ip_address_list[0]) +context['exchange_dict']['ansible_microservice_variables']['network'] = '11.0.0.0/8' + +counter = 10 +server_number_counter = 1 +for server in server_list: + site_ip_plan[server[0]] = {'ip_address':'{}/{}'.format(ip_address_list[counter], NetObject.prefixlen), + 'interface': server[1]} + context['exchange_dict']['ansible_microservice_variables']['server_{}_ip_address'.format(server_number_counter)] = str(ip_address_list[counter]) + context['exchange_dict']['ansible_microservice_variables']['server_{}_prefix_len'.format(server_number_counter)] = str(NetObject.prefixlen) + context['exchange_dict']['ansible_microservice_variables']['server_{}_iface'.format(server_number_counter)] = str(server[1]) + counter += 1 + server_number_counter += 1 + +context['site_ip_plan'] = site_ip_plan +result = MSA_API.process_content('ENDED', 'Site IP plan is ready', context, True) +print(result) \ No newline at end of file diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py new file mode 100755 index 000000000..34257ba68 --- /dev/null +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py @@ -0,0 +1,73 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os +""" +The proposals of the task are: + + +""" + + +#New Variables object +TaskVariables = Variables() + +#Add new variables +context = Variables.task_call(TaskVariables) + +#Import microservice alias list +with open('/opt/fmc_repository/Process/Ansible_integration/Get_router_interface/microservice_list.json', 'r') as alias_file: + context['ms_aliases'] = json.load(alias_file) + +#Udate exchange file +with open(context['exchange_file'], 'r') as exchange_file: + exchange_dict = json.load(exchange_file) + +process_id = context['SERVICEINSTANCEID'] +ms_router_lldp = context['ms_aliases']['Router LLDP neighbour details'] + +#Create site router Order object +RouterOrderObject = Order(exchange_dict['router_device_id']) +RouterOrderObject.command_synchronize(300) + +#Find a router interface where a site server is connected to +objects_list = RouterOrderObject.command_objects_instances(ms_router_lldp) +util.log_to_process_file(process_id, objects_list) +counter = 0 +router_interface = None +while router_interface is None and counter < len(objects_list): + neighbour_object = RouterOrderObject.command_objects_instances_by_id(ms_router_lldp, objects_list[counter])[ms_router_lldp][objects_list[counter]] + util.log_to_process_file(process_id, '{} {}'.format(neighbour_object['system_name'], exchange_dict['site'])) + if re.search(exchange_dict['site'].lower(), neighbour_object['system_name'].lower()): + router_interface = neighbour_object['local_interface'] + counter += 1 + +#Find servers what should be configured to +objects_list = RouterOrderObject.command_objects_instances(ms_router_lldp) +server_list = list() +for neighbour in objects_list: + neighbour_object = RouterOrderObject.command_objects_instances_by_id(ms_router_lldp, neighbour)[ms_router_lldp][neighbour] + if re.search(exchange_dict['site'].lower(), neighbour_object['system_name'].lower()) and neighbour_object['local_interface'] == router_interface: + server_list.append((neighbour_object['system_name'],neighbour_object['port_name'])) + +context['router_interface'] = router_interface +context['server_list'] = server_list +context['exchange_dict'] = exchange_dict + +#Finish the task correctlly +if router_interface: + result = MSA_API.process_content('ENDED', 'Router interface has been identified correctly', context, True) +else: + result = MSA_API.process_content('FAIL', 'No router interface where servers are connected to', context, True) +print(result) diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Update_IPAM.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Update_IPAM.py new file mode 100755 index 000000000..de8fced7d --- /dev/null +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Update_IPAM.py @@ -0,0 +1,86 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + + +""" +The proposals of the task are: + + +""" + +#New Variables object +TaskVariables = Variables() + +#Add new variables +TaskVariables.add('site', var_type = 'String') + +#Add vars to context +context = Variables.task_call(TaskVariables) + +process_id = context['SERVICEINSTANCEID'] +ipam_device_id = context['exchange_dict']['ipam_device_id'] +customer_name = context['exchange_dict']['tenant'] +site = context['exchange_dict']['site'] +subnet = context['exchange_dict']['site_prefix'] +server_list = context['server_list'] +site_ip_plan = context['site_ip_plan'] + +ms_ipam_tenant = context['ms_aliases']['IPAM Tenants'] +ms_ipam_site = context['ms_aliases']['IPAM Sites'] +ms_ipam_device = context['ms_aliases']['IPAM Devices'] +ms_interface_connection = context['ms_aliases']['IPAM Interface Connections'] +ms_ipam_prefix = context['ms_aliases']['IPAM IPv4 prefixes'] +ms_ipam_avaliable_prefix = context['ms_aliases']['IPAM Available Prefixes'] +ms_ipam_address = context['ms_aliases']['IPAM IPv4 addresses'] +ms_ipam_interface = context['ms_aliases']['IPAM Interfaces'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Create IPAM order object +IpamOrderObject = Order(ipam_device_id) +IpamOrderObject.command_synchronize(300) + +for host_name, details in site_ip_plan.items(): + ms_dict = {ms_ipam_address: + {details['ip_address']: {'object_id': details['ip_address'], + 'status': 'active', + 'tenant': customer_name, + 'vrf': '', + 'interface': '', + 'tags': '' + } + } + } + IpamOrderObject.command_execute('CREATE', ms_dict) + +exchange_dict = context['exchange_dict'] +exchange_dict['site_ip_plan'] = site_ip_plan + +#Udate exchange file +with open(context['exchange_file'], 'w') as exchange_file: + json.dump(exchange_dict, exchange_file) + +result = MSA_API.process_content('ENDED', 'IPAM has been updated', context, True) +print(result) + diff --git a/Ansible_integration/Get_router_interface/microservice_list.json b/Ansible_integration/Get_router_interface/microservice_list.json new file mode 100644 index 000000000..95d5ef3ed --- /dev/null +++ b/Ansible_integration/Get_router_interface/microservice_list.json @@ -0,0 +1,21 @@ +{ + "IPAM IPv4 addresses": "ip_address", + "IPAM IPv4 prefixes": "prefix", + "IPAM Sites": "sites", + "IPAM Tenants": "tenants", + "IPAM VLANs": "vlan", + "IPAM VRFs": "vrf", + "IPAM Devices": "devices", + "IPAM Interfaces": "interfaces", + "IPAM Interface Connections": "interface_connections", + "IPAM Available Prefixes": "available_prefix", + "Router OSPF configuration": "OSPFv2_Configuration", + "Router OSPF General": "OSPFv2_General", + "Router OSPF LSDB LSA 1": "OSPFv2_LSDB_LSA_1", + "Router Standard ACL": "Standard_Access_Control_List", + "Router Interface": "interfaces", + "Router LLDP neighbour details": "lldp_neighbour_details", + "Router LLDP neighbour": "lldp_neighbours", + "Router prefix filter": "prefix_filter", + "Router static route": "static_route" +} diff --git a/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml b/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml new file mode 100755 index 000000000..5ffbcab73 --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml @@ -0,0 +1,43 @@ + + + + + DISPLAYNAME + Import_from_IPAM.xml + + + DATE_MODIFICATION + 1614524589800 + + + REPOSITORY + Process + + + DATE_CREATION + 1614524589797 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Import_from_IPAM/.meta_Process_DELETE b/Ansible_integration/Import_from_IPAM/.meta_Process_DELETE new file mode 100755 index 000000000..aa201b8c2 --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614255950671 + + + REPOSITORY + Process + + + DATE_CREATION + 1614255950666 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Import_from_IPAM/.meta_Process_Import_from_IPAM b/Ansible_integration/Import_from_IPAM/.meta_Process_Import_from_IPAM new file mode 100755 index 000000000..22b27645b --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/.meta_Process_Import_from_IPAM @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Import_from_IPAM + + + DATE_MODIFICATION + 1614239986455 + + + REPOSITORY + Process + + + DATE_CREATION + 1614239986451 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Import_from_IPAM/Import_from_IPAM.xml b/Ansible_integration/Import_from_IPAM/Import_from_IPAM.xml new file mode 100644 index 000000000..8e993ccc7 --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/Import_from_IPAM.xml @@ -0,0 +1,43 @@ + + + + + + + + + + Import from IPAM + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks + Define vars + + + /opt/fmc_repository/Process/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks + Import site router + + + /opt/fmc_repository/Process/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks + Import site prefix + + + + DELETE + DELETE + 5 + + + + + Import from IPAM + service_id + python + 10000 + 5 + Import from IPAM + ANSIBLE|DEMO + + diff --git a/Ansible_integration/Import_from_IPAM/Process_DELETE/.meta_Tasks b/Ansible_integration/Import_from_IPAM/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..788e93fcb --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614255950960 + + + REPOSITORY + Process + + + DATE_CREATION + 1614255950956 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/.meta_Tasks b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/.meta_Tasks new file mode 100755 index 000000000..921b6e241 --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614239986604 + + + REPOSITORY + Process + + + DATE_CREATION + 1614239986599 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/.meta_Stop_playbook_monitoring_Stop_monitoring.php b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py similarity index 77% rename from Ansible_integration/.meta_Stop_playbook_monitoring_Stop_monitoring.php rename to Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py index ac757c11d..71eaa6a6d 100755 --- a/Ansible_integration/.meta_Stop_playbook_monitoring_Stop_monitoring.php +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py @@ -1,9 +1,13 @@ + + DISPLAYNAME + Task_Define_vars.py + DATE_MODIFICATION - 1601378494837 + 1614319692313 REPOSITORY @@ -11,7 +15,7 @@ DATE_CREATION - 1601378494831 + 1614240093997 TAG diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_prefix.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_prefix.py new file mode 100755 index 000000000..f658d2d1e --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_prefix.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Import_site_prefix.py + + + DATE_MODIFICATION + 1614524586617 + + + REPOSITORY + Process + + + DATE_CREATION + 1614240262877 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_router.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_router.py new file mode 100755 index 000000000..f57c4e432 --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_router.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Import_site_router.py + + + DATE_MODIFICATION + 1614256302605 + + + REPOSITORY + Process + + + DATE_CREATION + 1614240255278 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py new file mode 100755 index 000000000..1a6ab6ea0 --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py @@ -0,0 +1,32 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +import json +import re + +""" +The proposals of the task are: + + +""" + + +#New Variables object +TaskVariables = Variables() + +#Add new variables +TaskVariables.add('tenant', var_type = 'String') +TaskVariables.add('site', var_type = 'String') +TaskVariables.add('ipam_device_id', var_type = 'Device') + +#Add vars to context +context = Variables.task_call(TaskVariables) +context['ipam_device_id'] = re.match('^\D+?(\d+?)$', context['ipam_device_id']).group(1) + +#Import microservice alias list +with open('/opt/fmc_repository/Process/Ansible_integration/Import_from_IPAM/ipam_microservice_list.json', 'r') as alias_file: + context['ipam_ms_aliases'] = json.load(alias_file) + + +#Finish the task correctlly +result = MSA_API.process_content('ENDED', 'All variables have been defined successfully', context, True) +print(result) diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_prefix.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_prefix.py new file mode 100755 index 000000000..4058c4356 --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_prefix.py @@ -0,0 +1,161 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + + +""" +The proposals of the task are: + + +""" + +#New Variables object +TaskVariables = Variables() + +#Add vars to context +context = Variables.task_call(TaskVariables) + +process_id = context['SERVICEINSTANCEID'] +ipam_device_id = context['ipam_device_id'] +customer_name = context['tenant'] +site = context['site'] + +ms_file = '/opt/fmc_repository/CommandDefinition/NETBOX/available_prefix.xml' +ms_ipam_tenant = context['ipam_ms_aliases']['IPAM Tenants'] +ms_ipam_site = context['ipam_ms_aliases']['IPAM Sites'] +ms_ipam_device = context['ipam_ms_aliases']['IPAM Devices'] +ms_interface_connection = context['ipam_ms_aliases']['IPAM Interface Connections'] +ms_ipam_prefix = context['ipam_ms_aliases']['IPAM IPv4 prefixes'] +ms_ipam_avaliable_prefix = context['ipam_ms_aliases']['IPAM Available Prefixes'] +ms_ipam_address = context['ipam_ms_aliases']['IPAM IPv4 addresses'] +ms_ipam_interface = context['ipam_ms_aliases']['IPAM Interfaces'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Create IPAM order object +IpamOrderObject = Order(ipam_device_id) +IpamOrderObject.command_synchronize(300) + + +Orchestration.update_asynchronous_task_details(*async_update_list, 'Retrieve information about CE device on the site... ') + +objects_list = IpamOrderObject.command_objects_instances(ms_ipam_device) + + +#Pick up a subnet +Orchestration.update_asynchronous_task_details(*async_update_list, 'Find out a IPv4 block for the site... ') +customer_prefix = None +objects_list = IpamOrderObject.command_objects_instances(ms_ipam_prefix) + +#Find customer IPv4 block (assume that customer has big IPv4 block with 'container' status) +counter = 0 +while (customer_prefix is None) or (counter < len(objects_list)): + prefix_object = IpamOrderObject.command_objects_instances_by_id(ms_ipam_prefix, + objects_list[counter])[ms_ipam_prefix][objects_list[counter]] + try: + if prefix_object['tenant'] == customer_name and prefix_object['status'] == 'container' and prefix_object['site'] == context['site']: + customer_prefix = prefix_object + except: + pass + counter += 1 + +Orchestration.update_asynchronous_task_details(*async_update_list, 'Find out a IPv4 block for the site... OK. IPv4 block is {}'.format(customer_prefix['object_id'])) +time.sleep(3) +#Modify microservice to grab avaliable prefix from cusotmer prefix +rewrite_string = '/api/ipam/prefixes/{id}/available-prefixes/'.format(id = customer_prefix['id']) +sed_command = 'sed -i \'s@/api/ipam/prefixes/@{rewrite_string}@\' {ms_file}'.format(rewrite_string = rewrite_string, + ms_file = ms_file) +os.system(sed_command) + +#Retrieve avaliable prefixes +Orchestration.update_asynchronous_task_details(*async_update_list, 'Create prefixes for the site... ') +response = IpamOrderObject.command_synchronize(300) +objects_list = IpamOrderObject.command_objects_instances(ms_ipam_avaliable_prefix) + + +#Find avaliable /24 prefix +prefix_lenght_dict = dict() +for prefix in objects_list: + prefix_object = IpamOrderObject.command_objects_instances_by_id(ms_ipam_avaliable_prefix, prefix)[ms_ipam_avaliable_prefix][prefix] + prefix_lenght_dict[prefix] = prefix_object['prefix'].split('/')[1] +sorted_prefix = sorted(prefix_lenght_dict.items(), key=lambda x: x[1], reverse=True) + +prefix = None +counter = 0 +while (prefix is None) and counter < len(sorted_prefix): + if int(sorted_prefix[counter][1]) <= 24: + prefix = sorted_prefix[counter][0] + counter += 1 + + +#Derive site prefixes +site_base_prefix = ipaddress.ip_network(IpamOrderObject.command_objects_instances_by_id(ms_ipam_avaliable_prefix, + prefix)[ms_ipam_avaliable_prefix][prefix]['prefix']) +site_base_prefix = list(site_base_prefix.subnets(new_prefix = 24))[0] +site_prefix_list = list() +site_prefix_list.append(('lan', list(site_base_prefix.subnets(new_prefix = 24))[0])) + +#Modify microservice to original state back +rewrite_string = '/api/ipam/prefixes/'.format(id = customer_prefix['id']) +sed_command = 'sed -i \'s@/api/ipam/prefixes/.*@{rewrite_string}@\' {ms_file}'.format(rewrite_string = rewrite_string, + ms_file = ms_file) +os.system(sed_command) + +Orchestration.update_asynchronous_task_details(*async_update_list, 'Create prefixes for the site... OK') +time.sleep(3) +Orchestration.update_asynchronous_task_details(*async_update_list, 'Update IPAM system with new prefixes and IP addresses... ') + +#Update IPAM system with new prefixes +for prefix_tuple in site_prefix_list: + object_id = prefix_tuple[1] + tag = prefix_tuple[0] + ms_dict = {ms_ipam_prefix: + {str(object_id): {'object_id': str(object_id), + 'status': 'active', + 'site': site, + 'tenant': customer_name, + 'vrf': '', + 'tags': {'0': {'tag': tag}} + } + } + } + IpamOrderObject.command_execute('CREATE', ms_dict) + + +Orchestration.update_asynchronous_task_details(*async_update_list, 'Update IPAM system with new prefixes and IP addresses... OK') +time.sleep(3) + +exchange_dict = {"ipam_device_id": context['ipam_device_id'], + "router_device_id": context['site_router'], + "tenant": context['tenant'], + "site": context['site'], + "site_prefix": str(site_prefix_list[0][1]), + "ansible_microservice_variables": dict() + } + +#Udate exchange file +with open(context['exchange_file'], 'w') as exchange_file: + json.dump(exchange_dict, exchange_file) + +success_comment = f'IPv4 address plan for site {site} has been prepared successfully. IPAM system has been updated.' +print(IpamOrderObject.process_content('ENDED', success_comment, context, True)) diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_router.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_router.py new file mode 100755 index 000000000..4b5bb7fce --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_router.py @@ -0,0 +1,132 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import json +import sys +import time + + +""" +The proposals of the tasks are: + +""" + + +#Create Variables() object and retrieve useful variables +TaskVariables = Variables() +context = Variables.task_call(TaskVariables) + +ms_ipam_tenant = context['ipam_ms_aliases']['IPAM Tenants'] +ms_ipam_site = context['ipam_ms_aliases']['IPAM Sites'] +ms_ipam_device = context['ipam_ms_aliases']['IPAM Devices'] +ipam_device_id = context['ipam_device_id'] +customer_name = context['tenant'] +site_name = context['site'] +process_id = context['SERVICEINSTANCEID'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + + +#Create order object +IpamOrderObject = Order(ipam_device_id) +IpamOrderObject.command_synchronize(300) + +#Retrieve info about tenants +Orchestration.update_asynchronous_task_details(*async_update_list, 'Retrieving information about customer... ') +objects_list = IpamOrderObject.command_objects_instances(ms_ipam_tenant) + +#Check if customer exists in IPAM system +does_tenant_exists = False +counter = 0 +while not does_tenant_exists and counter < len(objects_list): + tenant_object = IpamOrderObject.command_objects_instances_by_id(ms_ipam_tenant, + objects_list[counter])[ms_ipam_tenant][objects_list[counter]] + if tenant_object['object_id'] == customer_name: + does_tenant_exists = True + customer_id = tenant_object['id'] + counter += 1 + +#If the customer does not exist in IPAM system, finish the task as fail +if not does_tenant_exists: + fail_comment = f'Customer {customer_name} has not been found' + print(fail_string) + + + +#If we here, cusotmer exists. Extract customer sites +Orchestration.update_asynchronous_task_details(*async_update_list, 'Retrieving information about customer... OK') +Orchestration.update_asynchronous_task_details(*async_update_list, 'Retrieving customer details... ') + +objects_list = IpamOrderObject.command_objects_instances(ms_ipam_site) + +#Collect cusromer sites object_id for future use +sites_list = list() +for site in objects_list: + site_object = IpamOrderObject.command_objects_instances_by_id(ms_ipam_site, + site)[ms_ipam_site][site] + try: + if site_object['tenant'] == customer_name: + sites_list.append(site) + except: + pass + +if context['site'] not in sites_list: + fail_comment = f'Site {site_name} has not been found' + print(fail_string) + +#Extract customer devices +objects_list = IpamOrderObject.command_objects_instances(ms_ipam_device) + +#Collect cusromer sites object_id for future use +site_router = None +for device in objects_list: + device_object = IpamOrderObject.command_objects_instances_by_id(ms_ipam_device, + device)[ms_ipam_device][device] + try: + if device_object['tenant'] == customer_name and device_object['site'] == context['site']: + site_router = device_object + except: + pass + +if not site_router: + fail_comment = f'There is no router on site {site_name}' + print(fail_string) + +Orchestration.update_asynchronous_task_details(*async_update_list, 'Retrieving customer details... OK') + +#Find out device_id for all PE what the CE connected to +MsaLookup = lookup.Lookup() +MsaLookup.look_list_device_ids() +devices = json.loads(MsaLookup.content) +counter = 0 +site_router_device_id = None + +while site_router_device_id is None and counter < len(devices): + if devices[counter]['name'] == site_router['object_id']: + site_router_device_id = devices[counter]['id'] + counter +=1 + +if not site_router_device_id: + fail_comment = 'Can not find MSA ME for router {}'.format(site_router['name']) + print(fail_string) +else: + context['site_router'] = site_router_device_id + +success_comment = 'Sie router has been identified' + +#Finish the task correctlly +print(MSA_API.process_content('ENDED', success_comment , context, True)) \ No newline at end of file diff --git a/Ansible_integration/Import_from_IPAM/ipam_microservice_list.json b/Ansible_integration/Import_from_IPAM/ipam_microservice_list.json new file mode 100644 index 000000000..e57d628f7 --- /dev/null +++ b/Ansible_integration/Import_from_IPAM/ipam_microservice_list.json @@ -0,0 +1,12 @@ +{ + "IPAM IPv4 addresses": "ip_address", + "IPAM IPv4 prefixes": "prefix", + "IPAM Sites": "sites", + "IPAM Tenants": "tenants", + "IPAM VLANs": "vlan", + "IPAM VRFs": "vrf", + "IPAM Devices": "devices", + "IPAM Interfaces": "interfaces", + "IPAM Interface Connections": "interface_connections", + "IPAM Available Prefixes": "available_prefix" +} diff --git a/Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Process_DELETE b/Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Process_DELETE new file mode 100755 index 000000000..164234249 --- /dev/null +++ b/Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614258885162 + + + REPOSITORY + Process + + + DATE_CREATION + 1614258885157 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Process_Turn_on_LLDP_on_hosts b/Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Process_Turn_on_LLDP_on_hosts new file mode 100755 index 000000000..33925ec13 --- /dev/null +++ b/Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Process_Turn_on_LLDP_on_hosts @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Turn_on_LLDP_on_hosts + + + DATE_MODIFICATION + 1614257738064 + + + REPOSITORY + Process + + + DATE_CREATION + 1614257738060 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Turn_on_LLDP_on_hosts.xml b/Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Turn_on_LLDP_on_hosts.xml new file mode 100755 index 000000000..909adc702 --- /dev/null +++ b/Ansible_integration/Turn_on_LLDP_on_hosts/.meta_Turn_on_LLDP_on_hosts.xml @@ -0,0 +1,43 @@ + + + + + DISPLAYNAME + Turn_on_LLDP_on_hosts.xml + + + DATE_MODIFICATION + 1614265265590 + + + REPOSITORY + Process + + + DATE_CREATION + 1614265265586 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Turn_on_LLDP_on_hosts/Process_DELETE/.meta_Tasks b/Ansible_integration/Turn_on_LLDP_on_hosts/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..67cc4e2f2 --- /dev/null +++ b/Ansible_integration/Turn_on_LLDP_on_hosts/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614258885249 + + + REPOSITORY + Process + + + DATE_CREATION + 1614258885245 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/.meta_Tasks b/Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/.meta_Tasks new file mode 100755 index 000000000..3d17028a3 --- /dev/null +++ b/Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614257738155 + + + REPOSITORY + Process + + + DATE_CREATION + 1614257738151 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/Tasks/.meta_Task_Execute_Ansible_microservice.py b/Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/Tasks/.meta_Task_Execute_Ansible_microservice.py new file mode 100755 index 000000000..6b8f1a0c8 --- /dev/null +++ b/Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/Tasks/.meta_Task_Execute_Ansible_microservice.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Execute_Ansible_microservice.py + + + DATE_MODIFICATION + 1614265261577 + + + REPOSITORY + Process + + + DATE_CREATION + 1614257758119 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/Tasks/Task_Execute_Ansible_microservice.py b/Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/Tasks/Task_Execute_Ansible_microservice.py new file mode 100755 index 000000000..890d610c0 --- /dev/null +++ b/Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/Tasks/Task_Execute_Ansible_microservice.py @@ -0,0 +1,61 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.repository import Repository +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import json +import sys +import time +import re + + +""" +The proposals of the tasks are: + +""" + +#New Variables object +TaskVariables = Variables() + +#Add new variables +TaskVariables.add('ansible_device_id', var_type = 'Device') +TaskVariables.add('ansible_lldp_microservice', var_type = 'String') + +#Add vars to context +context = Variables.task_call(TaskVariables) +context['ansible_device_id'] = re.match('^\D+?(\d+?)$', context['ansible_device_id']).group(1) + +process_id = context['SERVICEINSTANCEID'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Create Ansible order object +RepositoryObject = Repository() +AnsibleOrderObject = Order(context['ansible_device_id']) +AnsibleOrderObject.command_synchronize(300) + +#Get default values for microservice +deployment_settings_id = AnsibleOrderObject.command_get_deployment_settings_id() +microservice_path = RepositoryObject.get_microservice_path_by_name(context['ansible_lldp_microservice'], deployment_settings_id) +microservice_variables = RepositoryObject.get_microservice_variables_default_value(microservice_path) + +ms_dict = {context['ansible_lldp_microservice']: {'': {'object_id': '', 'playbook_path': microservice_variables['playbook_path']}}} +AnsibleOrderObject.command_execute('CREATE', ms_dict) + +success_comment = 'LLDP activated on hosts' + +#Finish the task correctlly +print(MSA_API.process_content('ENDED', success_comment , context, True)) \ No newline at end of file diff --git a/Ansible_integration/Turn_on_LLDP_on_hosts/Turn_on_LLDP_on_hosts.xml b/Ansible_integration/Turn_on_LLDP_on_hosts/Turn_on_LLDP_on_hosts.xml new file mode 100644 index 000000000..48951373b --- /dev/null +++ b/Ansible_integration/Turn_on_LLDP_on_hosts/Turn_on_LLDP_on_hosts.xml @@ -0,0 +1,33 @@ + + + + + + + + Turn on LLDP on hosts + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Turn_on_LLDP_on_hosts/Process_Turn_on_LLDP_on_hosts/Tasks + Execute Ansible microservice + + + + DELETE + DELETE + 5 + + + + + The workflow is part of Ansiblle Demo + service_id + python + 10000 + 5 + Turn on LLDP on hosts + ANSIBLE|DEMO + + diff --git a/Ansible_integration/exchange_file.json b/Ansible_integration/exchange_file.json new file mode 100644 index 000000000..2b9fb26fe --- /dev/null +++ b/Ansible_integration/exchange_file.json @@ -0,0 +1 @@ +{"ipam_device_id": "1806", "router_device_id": 1802, "tenant": "Ansible Demo", "site": "Grenoble", "site_prefix": "11.0.129.0/24", "ansible_microservice_variables": {}} \ No newline at end of file From 83863fed83392bdaa1ace177de8208e4c9478b11 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 28 Feb 2021 18:27:26 +0000 Subject: [PATCH 2/7] Dynamic default values --- .../.meta_Ansible_integration.xml | 4 +-- ..._microservice_Create_microservice_file.php | 6 +++- ...roservice_Modify_microservice_to_read_.php | 6 +++- .../Ansible_integration.xml | 5 +++ ..._microservice_Create_microservice_file.php | 1 + ...eta_Execute_Ansible_based_microservice.xml | 4 +-- .../Execute_Ansible_based_microservice.xml | 10 +++++- ...Execute_Ansible_based_microservice.xml.bkp | 34 +++++++++++++++++++ 8 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml.bkp diff --git a/Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml b/Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml index 3a3c9c99a..9d2fb211d 100755 --- a/Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml +++ b/Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614494970434 + 1614536500222 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614494970430 + 1614536500218 MODEL diff --git a/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_microservice_file.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_microservice_file.php index c07db45b6..416aa39a1 100755 --- a/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_microservice_file.php +++ b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Create_microservice_file.php @@ -1,9 +1,13 @@ + + DISPLAYNAME + Create_microservice_Create_microservice_file.php + DATE_MODIFICATION - 1601381951271 + 1614534498700 REPOSITORY diff --git a/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Modify_microservice_to_read_.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Modify_microservice_to_read_.php index e8cacdbae..6a867a550 100755 --- a/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Modify_microservice_to_read_.php +++ b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Modify_microservice_to_read_.php @@ -1,9 +1,13 @@ + + DISPLAYNAME + Create_microservice_Modify_microservice_to_read_.php + DATE_MODIFICATION - 1597304207205 + 1614534735487 REPOSITORY diff --git a/Ansible_integration/Ansible_Integration/Ansible_integration.xml b/Ansible_integration/Ansible_Integration/Ansible_integration.xml index 324e4500d..9dcaa0a0c 100755 --- a/Ansible_integration/Ansible_Integration/Ansible_integration.xml +++ b/Ansible_integration/Ansible_Integration/Ansible_integration.xml @@ -19,6 +19,7 @@ + @@ -70,6 +71,10 @@ /opt/fmc_repository/Process/Ansible_integration/Ansible_Integration Add microservice to deployment settings + + /opt/fmc_repository/Process/_TEST_Ansible_integration/Create_microservice/Tasks + Update default values + Import specific playbooks diff --git a/Ansible_integration/Ansible_Integration/Create_microservice_Create_microservice_file.php b/Ansible_integration/Ansible_Integration/Create_microservice_Create_microservice_file.php index f4068edeb..c319c0f18 100755 --- a/Ansible_integration/Ansible_Integration/Create_microservice_Create_microservice_file.php +++ b/Ansible_integration/Ansible_Integration/Create_microservice_Create_microservice_file.php @@ -36,6 +36,7 @@ $result = shell_exec($sed_command); $context['microservice_path'] = $microservice_dir.$microservice_file_name; +$context['microservice_file_name'] = $microservice_file_name; //Looks like we have finished. COngrats! task_success('Success. Microservice '.$microservice_file_name.'has been created successfully.'); diff --git a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml index a9587ce99..c51df1e90 100755 --- a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml +++ b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614526065663 + 1614536593470 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614526065659 + 1614536593468 MODEL diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml index f1eb9ab50..518a23b14 100644 --- a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml +++ b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml @@ -1,7 +1,15 @@ - + + + ANSIBLE_MS__based_on_grenoble_server_demo_rollback_ + ANSIBLE_MS__based_on_grenoble_server_firewall_ + ANSIBLE_MS__based_on_grenoble_server_ip_address_ + ANSIBLE_MS__based_on_grenoble_server_lldp_ + ANSIBLE_MS__based_on_grenoble_server_route_ + + diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml.bkp b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml.bkp new file mode 100644 index 000000000..f1eb9ab50 --- /dev/null +++ b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml.bkp @@ -0,0 +1,34 @@ + + + + + + + + + Execute microservice + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks + Execute microservice + + + + DELETE + DELETE + 5 + + + + + + service_id + python + 10000 + 5 + Execute Ansible-based microservice + + + From cda6085d2775f4e50ac5fb9ac61df2cc4a865c51 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 3 Mar 2021 08:56:42 +0000 Subject: [PATCH 3/7] update dns --- ...eta_Execute_Ansible_based_microservice.xml | 4 +- .../Execute_Ansible_based_microservice.xml | 10 +-- .../.meta_Get_router_interface.xml | 4 +- .../Tasks/.meta_Task_Get_router_interface.py | 4 +- .../Tasks/Task_Get_router_interface.py | 6 ++ .../microservice_list.json | 11 +-- .../.meta_Import_from_IPAM.xml | 4 +- .../Tasks/.meta_Task_Define_vars.py | 4 +- .../Update_DNS_records/.meta_Process_DELETE | 31 +++++++++ .../.meta_Process_Update_DNS_records | 31 +++++++++ .../.meta_Update_DNS_records.xml | 43 ++++++++++++ .../Process_DELETE/.meta_Tasks | 31 +++++++++ .../Process_Update_DNS_records/.meta_Tasks | 31 +++++++++ .../Tasks/.meta_Task_Update_DNS_records.py | 35 ++++++++++ .../Tasks/Task_Update_DNS_records.py | 67 +++++++++++++++++++ .../Update_DNS_records/Update_DNS_records.xml | 33 +++++++++ 16 files changed, 329 insertions(+), 20 deletions(-) create mode 100755 Ansible_integration/Update_DNS_records/.meta_Process_DELETE create mode 100755 Ansible_integration/Update_DNS_records/.meta_Process_Update_DNS_records create mode 100755 Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml create mode 100755 Ansible_integration/Update_DNS_records/Process_DELETE/.meta_Tasks create mode 100755 Ansible_integration/Update_DNS_records/Process_Update_DNS_records/.meta_Tasks create mode 100755 Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/.meta_Task_Update_DNS_records.py create mode 100755 Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/Task_Update_DNS_records.py create mode 100644 Ansible_integration/Update_DNS_records/Update_DNS_records.xml diff --git a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml index c51df1e90..28fc78dec 100755 --- a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml +++ b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614536593470 + 1614698792558 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614536593468 + 1614698792549 MODEL diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml index 518a23b14..0fef3dc98 100644 --- a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml +++ b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml @@ -3,11 +3,11 @@ - ANSIBLE_MS__based_on_grenoble_server_demo_rollback_ - ANSIBLE_MS__based_on_grenoble_server_firewall_ - ANSIBLE_MS__based_on_grenoble_server_ip_address_ - ANSIBLE_MS__based_on_grenoble_server_lldp_ - ANSIBLE_MS__based_on_grenoble_server_route_ + TEST_ANSIBLE__based_on_grenoble_server_demo_rollback_ + TEST_ANSIBLE__based_on_grenoble_server_firewall_ + TEST_ANSIBLE__based_on_grenoble_server_ip_address_ + TEST_ANSIBLE__based_on_grenoble_server_lldp_ + TEST_ANSIBLE__based_on_grenoble_server_route_ diff --git a/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml b/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml index 095334579..ed5fb3873 100755 --- a/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml +++ b/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614523829561 + 1614756326283 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614523829557 + 1614756326279 MODEL diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py index addcd085f..ca84bd497 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614523828753 + 1614756325243 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614279732991 + 1614756325238 TAG diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py index 34257ba68..ad377449c 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py @@ -37,9 +37,15 @@ process_id = context['SERVICEINSTANCEID'] ms_router_lldp = context['ms_aliases']['Router LLDP neighbour details'] + +#Wait when LLDP neighbours become available +time.sleep(30) #Create site router Order object RouterOrderObject = Order(exchange_dict['router_device_id']) RouterOrderObject.command_synchronize(300) +time.sleep(3) +RouterOrderObject.command_synchronize(300) + #Find a router interface where a site server is connected to objects_list = RouterOrderObject.command_objects_instances(ms_router_lldp) diff --git a/Ansible_integration/Get_router_interface/microservice_list.json b/Ansible_integration/Get_router_interface/microservice_list.json index 95d5ef3ed..212822efe 100644 --- a/Ansible_integration/Get_router_interface/microservice_list.json +++ b/Ansible_integration/Get_router_interface/microservice_list.json @@ -9,13 +9,14 @@ "IPAM Interfaces": "interfaces", "IPAM Interface Connections": "interface_connections", "IPAM Available Prefixes": "available_prefix", - "Router OSPF configuration": "OSPFv2_Configuration", - "Router OSPF General": "OSPFv2_General", - "Router OSPF LSDB LSA 1": "OSPFv2_LSDB_LSA_1", - "Router Standard ACL": "Standard_Access_Control_List", + "Router OSPF configuration": "ospfv2_configuration", + "Router OSPF General": "ospfv2_general", + "Router OSPF LSDB LSA 1": "ospfv2_lsdb_lsa_1", + "Router Standard ACL": "std_acl", "Router Interface": "interfaces", "Router LLDP neighbour details": "lldp_neighbour_details", "Router LLDP neighbour": "lldp_neighbours", "Router prefix filter": "prefix_filter", - "Router static route": "static_route" + "Router static route": "static_route", + "Router DNS host records": "host_records" } diff --git a/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml b/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml index 5ffbcab73..54c39b1b0 100755 --- a/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml +++ b/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614524589800 + 1614760653784 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614524589797 + 1614760653779 MODEL diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py index 71eaa6a6d..78532b0a4 100755 --- a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614319692313 + 1614760652936 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614240093997 + 1614760652931 TAG diff --git a/Ansible_integration/Update_DNS_records/.meta_Process_DELETE b/Ansible_integration/Update_DNS_records/.meta_Process_DELETE new file mode 100755 index 000000000..da8168ac8 --- /dev/null +++ b/Ansible_integration/Update_DNS_records/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614761498011 + + + REPOSITORY + Process + + + DATE_CREATION + 1614761498006 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Update_DNS_records/.meta_Process_Update_DNS_records b/Ansible_integration/Update_DNS_records/.meta_Process_Update_DNS_records new file mode 100755 index 000000000..3bc4fcbef --- /dev/null +++ b/Ansible_integration/Update_DNS_records/.meta_Process_Update_DNS_records @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Update_DNS_records + + + DATE_MODIFICATION + 1614759958271 + + + REPOSITORY + Process + + + DATE_CREATION + 1614759958266 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml b/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml new file mode 100755 index 000000000..c2909a240 --- /dev/null +++ b/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml @@ -0,0 +1,43 @@ + + + + + DISPLAYNAME + Update_DNS_records.xml + + + DATE_MODIFICATION + 1614761499255 + + + REPOSITORY + Process + + + DATE_CREATION + 1614761499252 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Update_DNS_records/Process_DELETE/.meta_Tasks b/Ansible_integration/Update_DNS_records/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..e8f733290 --- /dev/null +++ b/Ansible_integration/Update_DNS_records/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614761498096 + + + REPOSITORY + Process + + + DATE_CREATION + 1614761498092 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/.meta_Tasks b/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/.meta_Tasks new file mode 100755 index 000000000..30270873e --- /dev/null +++ b/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614759958354 + + + REPOSITORY + Process + + + DATE_CREATION + 1614759958349 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/.meta_Task_Update_DNS_records.py b/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/.meta_Task_Update_DNS_records.py new file mode 100755 index 000000000..d303aacf7 --- /dev/null +++ b/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/.meta_Task_Update_DNS_records.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Update_DNS_records.py + + + DATE_MODIFICATION + 1614761487389 + + + REPOSITORY + Process + + + DATE_CREATION + 1614761487385 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/Task_Update_DNS_records.py b/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/Task_Update_DNS_records.py new file mode 100755 index 000000000..4a563959e --- /dev/null +++ b/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/Task_Update_DNS_records.py @@ -0,0 +1,67 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + + +""" +The proposals of the task are: + + +""" + +#New Variables object +TaskVariables = Variables() +TaskVariables.add('dns_server', var_type = 'Device') + + +#Add vars to context +context = Variables.task_call(TaskVariables) +context['dns_server'] = re.match('^\D*?(\d+?)$', context['dns_server']).group(1) + +#Import microservice alias list +with open('/opt/fmc_repository/Process/Ansible_integration/Get_router_interface/microservice_list.json', 'r') as alias_file: + context['ms_aliases'] = json.load(alias_file) + +#Udate exchange file +with open(context['exchange_file'], 'r') as exchange_file: + exchange_dict = json.load(exchange_file) + +process_id = context['SERVICEINSTANCEID'] +site_ip_plan = exchange_dict['site_ip_plan'] +ms_router_dns_records = context['ms_aliases']['Router DNS host records'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + + +#Create site router Order object +RouterOrderObject = Order(context['dns_server']) +RouterOrderObject.command_synchronize(300) + +#Create DNS record for each host in site_ip_plan +for host, details in site_ip_plan.items(): + ms_dict = {ms_router_dns_records: {host: {"object_id": host, "ip_address": details['ip_address'].split('/')[0]}}} + RouterOrderObject.command_execute('CREATE', ms_dict) + +result = MSA_API.process_content('ENDED', 'DNS Records have been updated', context, True) +print(result) + diff --git a/Ansible_integration/Update_DNS_records/Update_DNS_records.xml b/Ansible_integration/Update_DNS_records/Update_DNS_records.xml new file mode 100644 index 000000000..b778dedce --- /dev/null +++ b/Ansible_integration/Update_DNS_records/Update_DNS_records.xml @@ -0,0 +1,33 @@ + + + + + + + + Update DNS records + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks + Update DNS records + + + + DELETE + DELETE + 5 + + + + + The workflow is part of Ansible demo + service_id + python + 10000 + 5 + Update DNS records + + + From 4086186d9aa16e2539459600242896dd4bb8f1ab Mon Sep 17 00:00:00 2001 From: root Date: Fri, 5 Mar 2021 09:56:43 +0000 Subject: [PATCH 4/7] Rollback workflow has been added --- .../.meta_Ansible_integration.xml | 4 +- ...roservices__Bulk_mode__Monitor_changes.php | 4 +- ...roservices__Bulk_mode__Monitor_changes.php | 2 +- .../.meta_Clean_up_Ansible_demo.xml | 43 ++++++++ .../.meta_Process_Clean_up_Ansible_demo | 31 ++++++ .../Clean_up_Ansible_demo.xml | 50 ++++++++++ .../Process_Clean_up_Ansible_demo/.meta_Tasks | 31 ++++++ ..._Task_Clean_up_Ansible_controlled_hosts.py | 35 +++++++ .../.meta_Task_Clean_up_Ansible_server.py | 35 +++++++ .../Tasks/.meta_Task_Clean_up_DNS.py | 35 +++++++ .../.meta_Task_Clean_up_Grenoble_router.py | 35 +++++++ .../Tasks/.meta_Task_Clean_up_IPAM.py | 35 +++++++ .../Tasks/.meta_Task_Clean_up_processes.py | 35 +++++++ .../Task_Clean_up_Ansible_controlled_hosts.py | 73 ++++++++++++++ .../Tasks/Task_Clean_up_Ansible_server.py | 72 ++++++++++++++ .../Tasks/Task_Clean_up_DNS.py | 62 ++++++++++++ .../Tasks/Task_Clean_up_Grenoble_router.py | 93 +++++++++++++++++ .../Tasks/Task_Clean_up_IPAM.py | 99 +++++++++++++++++++ .../Tasks/Task_Clean_up_processes.py | 54 ++++++++++ ...eta_Execute_Ansible_based_microservice.xml | 4 +- .../Execute_Ansible_based_microservice.xml | 10 +- .../.meta_Update_DNS_records.xml | 4 +- .../Update_DNS_records/Update_DNS_records.xml | 2 +- Ansible_integration/exchange_file.json | 2 +- 24 files changed, 834 insertions(+), 16 deletions(-) create mode 100755 Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml create mode 100755 Ansible_integration/Clean_up_Ansible_demo/.meta_Process_Clean_up_Ansible_demo create mode 100644 Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/.meta_Tasks create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py diff --git a/Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml b/Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml index 9d2fb211d..df76de467 100755 --- a/Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml +++ b/Ansible_integration/Ansible_Integration/.meta_Ansible_integration.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614536500222 + 1614772411528 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614536500218 + 1614772411524 MODEL diff --git a/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php index e16ffdae4..519bedc8a 100755 --- a/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php +++ b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614494742298 + 1614772403489 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1602507085519 + 1614772403485 TAG diff --git a/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Monitor_changes.php b/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Monitor_changes.php index 909d5d0d9..1ffb7f535 100755 --- a/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Monitor_changes.php +++ b/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Monitor_changes.php @@ -2,7 +2,7 @@ require_once '/opt/fmc_repository/Process/Reference/Common/common.php'; -if (!$context['do_monitor_changes']) { +if ($context['do_monitor_changes'] !== 'false') { $microservice_name_prefix = $context['microservice_name_prefix']; $microservice_file = $context['read_playbook_file']; $microservice_name = $context['microservice_name']; diff --git a/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml b/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml new file mode 100755 index 000000000..d3ac026a4 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml @@ -0,0 +1,43 @@ + + + + + DISPLAYNAME + Clean_up_Ansible_demo.xml + + + DATE_MODIFICATION + 1614938154265 + + + REPOSITORY + Process + + + DATE_CREATION + 1614938154247 + + + MODEL + 0 + + + TAG + + + FILE_TYPE + text + + + MANUFACTURER + 0 + + + TYPE + FILE + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/.meta_Process_Clean_up_Ansible_demo b/Ansible_integration/Clean_up_Ansible_demo/.meta_Process_Clean_up_Ansible_demo new file mode 100755 index 000000000..266d98503 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/.meta_Process_Clean_up_Ansible_demo @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_Clean_up_Ansible_demo + + + DATE_MODIFICATION + 1614930003719 + + + REPOSITORY + Process + + + DATE_CREATION + 1614930003709 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml b/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml new file mode 100644 index 000000000..0e612da6c --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + Clean up Ansible demo + CREATE + 5 + + + /opt/fmc_repository/Process/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks + Clean up IPAM + + + /opt/fmc_repository/Process/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks + Clean up Grenoble router + + + /opt/fmc_repository/Process/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks + Clean up DNS + + + /opt/fmc_repository/Process/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks + Clean up Ansible-controlled hosts + + + /opt/fmc_repository/Process/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks + Clean up Ansible server + + + /opt/fmc_repository/Process/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks + Clean up processes + + + + + The workflow is part of Ansible demo + service_id + python + 10000 + 5 + Clean up Ansible demo + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/.meta_Tasks b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/.meta_Tasks new file mode 100755 index 000000000..17c65c56a --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614930003806 + + + REPOSITORY + Process + + + DATE_CREATION + 1614930003800 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py new file mode 100755 index 000000000..3740143d6 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Clean_up_Ansible_controlled_hosts.py + + + DATE_MODIFICATION + 1614934623703 + + + REPOSITORY + Process + + + DATE_CREATION + 1614934623695 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py new file mode 100755 index 000000000..918803c87 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Clean_up_Ansible_server.py + + + DATE_MODIFICATION + 1614938153477 + + + REPOSITORY + Process + + + DATE_CREATION + 1614938153473 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py new file mode 100755 index 000000000..4bee5963b --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Clean_up_DNS.py + + + DATE_MODIFICATION + 1614933299220 + + + REPOSITORY + Process + + + DATE_CREATION + 1614933299213 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py new file mode 100755 index 000000000..5bc83c285 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Clean_up_Grenoble_router.py + + + DATE_MODIFICATION + 1614934120792 + + + REPOSITORY + Process + + + DATE_CREATION + 1614934120779 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py new file mode 100755 index 000000000..fb0841ce8 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Clean_up_IPAM.py + + + DATE_MODIFICATION + 1614934542265 + + + REPOSITORY + Process + + + DATE_CREATION + 1614934542258 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py new file mode 100755 index 000000000..4b8e304b8 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Clean_up_processes.py + + + DATE_MODIFICATION + 1614930132891 + + + REPOSITORY + Process + + + DATE_CREATION + 1614930132886 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py new file mode 100755 index 000000000..473ea475e --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py @@ -0,0 +1,73 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.repository import Repository +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import json +import sys +import time +import re + + +""" +The proposals of the tasks are: + - Get variables values for Ansible-based microservices from exchange file; + - Get variables names from provided Ansible-based microservice; + - Execute provided Ansible-based microservice with variables from exchange file. + +""" + +#New Variables object +TaskVariables = Variables() + +#Add vars to context +context = Variables.task_call(TaskVariables) + +#Define additional variables +process_id = context['SERVICEINSTANCEID'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Create Repository object +RepositoryObject = Repository() + +#Create Order object for Ansible host +AnsibleOrderObject = Order(context['ansible_device_id']) +AnsibleOrderObject.command_synchronize(300) + +#Get default values for microservice +deployment_settings_id = AnsibleOrderObject.command_get_deployment_settings_id() +microservice_path = RepositoryObject.get_microservice_path_by_name(context['ansible_rollback_ms'], deployment_settings_id) +microservice_variables = RepositoryObject.get_microservice_variables_default_value(microservice_path) + +#Walk through the provided Ansible-based microservice variables. If the variable exists in exchange dict --> get the value. +#Else - empty string +object_dict = dict() +for variable in microservice_variables: + if variable in ansible_variables_dict: + object_dict[variable] = ansible_variables_dict[variable] + elif variable == 'playbook_path': + object_dict[variable] = microservice_variables['playbook_path'] + else: + object_dict[variable] = str() + +ms_dict = {context['ansible_rollback_ms']: {'': object_dict}} +AnsibleOrderObject.command_execute('CREATE', ms_dict) + +success_comment = 'Microservice {} has executed Ansible playbook successfully'.format(context['ansible_microservice']) + +#Finish the task correctlly +print(MSA_API.process_content('ENDED', success_comment , context, True)) \ No newline at end of file diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py new file mode 100755 index 000000000..42c74e10b --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py @@ -0,0 +1,72 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.customer import Customer +from msa_sdk.repository import Repository +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + + +""" +The proposals of the task are: + + +""" + +#New Variables object +TaskVariables = Variables() + + +#Add vars to context +context = Variables.task_call(TaskVariables) + + +#Udate exchange file +with open(context['exchange_file'], 'r') as exchange_file: + exchange_dict = json.load(exchange_file) + +process_id = context['SERVICEINSTANCEID'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +customer_id = re.match('^\D+?(\d+?)$',context['UBIQUBEID']).group(1) +CustomerObject = Customer() +RepositoryObject = Repository() +deployment_settings_list = CustomerObject.get_deployment_settings_by_customer_id(customer_id) +ansible_profile = dict() +counter = 0 +while not ansible_profile and conunter < len(deployment_settings_list): + if context['ansible_device_id'] in deployment_settings_list[counter]['attachedManagedEntities']: + ansible_profile = deployment_settings_list[counter] + counter =+ 1 +ms_list = list() +for microservice_uri, microservice_details in ansible_profile.items(): + if 'Ansible-based' in microservice_details['groups']: + ms_list.append(microservice_uri) + +RepositoryObject.detach_microserviceis_from_configuration_profile(ansible_profile['id'], ms_list) + +for microservice_uri in ms_list: + RepositoryObject.delete_repository_resource(microservice_uri) + +result = MSA_API.process_content('ENDED', 'Ansible-based microservices have been removed', context, True) +print(result) + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py new file mode 100755 index 000000000..a34f9ab86 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py @@ -0,0 +1,62 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + + +""" +The proposals of the task are: + + +""" + +#New Variables object +TaskVariables = Variables() + +#Add vars to context +context = Variables.task_call(TaskVariables) + +#Udate exchange file +with open(context['exchange_file'], 'r') as exchange_file: + exchange_dict = json.load(exchange_file) + +process_id = context['SERVICEINSTANCEID'] +site_ip_plan = exchange_dict['site_ip_plan'] +ms_router_dns_records = context['ms_aliases']['Router DNS host records'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + + +#Create site router Order object +RouterOrderObject = Order(context['dns_server_device_id']) +RouterOrderObject.command_synchronize(300) + +#Create DNS record for each host in site_ip_plan +objects_list = RouterOrderObject.command_objects_instances(ms_router_dns_records) + +for host_record_object in objects_list: + ms_dict = {ms_router_dns_records: {host_record_object: dict()} + RouterOrderObject.command_execute('DELETE', ms_dict) + +result = MSA_API.process_content('ENDED', 'DNS Records have been updated', context, True) +print(result) + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py new file mode 100755 index 000000000..fb5e8da1c --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py @@ -0,0 +1,93 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + + +""" +The proposals of the task are: + + +""" + +#New Variables object +TaskVariables = Variables() + + +#Add vars to context +context = Variables.task_call(TaskVariables) + + +#Udate exchange file +with open(context['exchange_file'], 'r') as exchange_file: + exchange_dict = json.load(exchange_file) + +process_id = context['SERVICEINSTANCEID'] +router_device_id = exchange_dict['router_device_id'] +subnet = exchange_dict['site_prefix'] +site_ip_plan = exchange_dict['site_ip_plan'] +ms_router_ospf_config = context['ms_aliases']['Router OSPF configuration'] +ms_router_interface = context['ms_aliases']['Router Interface'] + + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Get site router name +RouterDevice = Device(customer_id = re.match('^\D+?(\d+?)$',context['UBIQUBEID']).group(1), + device_id = router_device_id + ) +RouterDevice.read() +router_name = RouterDevice.name + +#Create site router Order object +RouterOrderObject = Order(exchange_dict['router_device_id']) +RouterOrderObject.command_synchronize(300) + +#Configure IP address on CE link +ms_dict = {ms_router_interface: + {site_ip_plan[router_name]['interface']: {'object_id': site_ip_plan[router_name]['interface'], + 'ip_addr': str(), + 'ip_prefix': str() + } + } + } +RouterOrderObject.command_execute('CREATE', ms_dict) + + +#Clean up route announcment +objects_list = RouterOrderObject.command_objects_instances(ms_router_ospf_config) +ospf_process_object = RouterOrderObject.command_objects_instances_by_id(ms_router_ospf_config, objects_list[0])[ms_router_ospf_config][objects_list[0]] + +#Remove new network to announce +for index, value in ospf_process_object['interface']: + if value['network_address'] == exchange_dict['site_prefix']: + del ospf_process_object['interface'][index] + +#Configure OSPF +ms_dict = {ms_router_ospf_config: {ospf_process_object['object_id']: ospf_process_object}} +RouterOrderObject.command_execute('UPDATE', ms_dict) + + + +result = MSA_API.process_content('ENDED', 'Router interface and OSPF configuration has been updated', context, True) +print(result) + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py new file mode 100755 index 000000000..6198d7ff6 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py @@ -0,0 +1,99 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from datetime import datetime +from msa_sdk import constants +from msa_sdk import lookup +from msa_sdk import util +import ipaddress +import time +import re +import json +import sys +import os + + +""" +The proposals of the task are: + + +""" + +#New Variables object +TaskVariables = Variables() + +#Add new variables +TaskVariables.add('ipam_device_id', var_type = 'Device') +TaskVariables.add('ansible_device_id', var_type = 'Device') +TaskVariables.add('dns_server_device_id', var_type = 'Device') +TaskVariables.add('ansible_rollback_ms', var_type = 'String') + +#Add vars to context +context = Variables.task_call(TaskVariables) +context['ipam_device_id'] = re.match('^\D+?(\d+?)$', context['ipam_device_id']).group(1) +context['ansible_device_id'] = re.match('^\D+?(\d+?)$', context['ansible_device_id']).group(1) +context['dns_server_device_id'] = re.match('^\D+?(\d+?)$', context['dns_server_device_id']).group(1) + +#Udate exchange file +with open(context['exchange_file'], 'r') as exchange_file: + exchange_dict = json.load(exchange_file) + +#Import microservice alias list +with open('/opt/fmc_repository/Process/Ansible_integration/Import_from_IPAM/ipam_microservice_list.json', 'r') as alias_file: + context['ipam_ms_aliases'] = json.load(alias_file) + +process_id = context['SERVICEINSTANCEID'] +ms_ipam_tenant = context['ms_aliases']['IPAM Tenants'] +ms_ipam_site = context['ms_aliases']['IPAM Sites'] +ms_ipam_device = context['ms_aliases']['IPAM Devices'] +ms_interface_connection = context['ms_aliases']['IPAM Interface Connections'] +ms_ipam_prefix = context['ms_aliases']['IPAM IPv4 prefixes'] +ms_ipam_avaliable_prefix = context['ms_aliases']['IPAM Available Prefixes'] +ms_ipam_address = context['ms_aliases']['IPAM IPv4 addresses'] +ms_ipam_interface = context['ms_aliases']['IPAM Interfaces'] + +#Variables to finish the task properlly +fail_comment = str() +success_comment = str() +fail_string = f'{{"wo_status": "FAIL", "wo_comment": "{fail_comment}"}}' +success_string = f'{{"wo_status": "ENDED", "wo_comment": "{success_comment}"}}' + +#Create Orchestration object to update GUI dynamically +Orchestration = Orchestration(context['UBIQUBEID']) +async_update_list = (context['PROCESSINSTANCEID'], context['TASKID'], context['EXECNUMBER']) + +#Create IPAM order object +IpamOrderObject = Order(ipam_device_id) +IpamOrderObject.command_synchronize(300) + +#A list of IP address what should be removed from IPAM +ip_address_list = list() +for host, host_detial in exchange_dict['site_ip_plan'].items(): + ip_address_list.append(host_detial['ip_address']) + +objects_list = IpamOrderObject.command_objects_instances(ms_ipam_address) +counter = 0 +while ip_address_list and (counter < len(objects_list)): + object = IpamOrderObject.command_objects_instances_by_id(ms_ipam_address, + objects_list[counter])[ms_ipam_address][objects_list[counter]] + if object['tenant'] == exchange_dict['tenant'] and object['object_id'] in ip_address_list: + ms_dict = {ms_ipam_address: {object['object_id']: dict()}} + IpamOrderObject.command_execute('DELETE', ms_dict) + ip_address_list.remove(object['object_id']) + +#Clean up prefix +objects_list = IpamOrderObject.command_objects_instances(ms_ipam_prefix) +counter = 0 +is_removed = False +while not is_removed and (counter < len(objects_list)): + object = IpamOrderObject.command_objects_instances_by_id(ms_ipam_prefix, + objects_list[counter])[ms_ipam_prefix][objects_list[counter]] + if object['tenant'] == exchange_dict['tenant'] and exchange_dict['site_prefix'] == object['object_id']: + ms_dict = {ms_ipam_prefix: {object['object_id']: dict()}} + IpamOrderObject.command_execute('DELETE', ms_dict) + +result = MSA_API.process_content('ENDED', 'IPAM has been updated', context, True) +print(result) + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py new file mode 100755 index 000000000..e8cb07252 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py @@ -0,0 +1,54 @@ +''' +Visit http://[YOUR_MSA_URL]/msa_sdk/ to see what you can import. +''' +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API + +''' +List all the parameters required by the task + +You can use var_name convention for your variables +They will display automaticaly as "Var Name" +The allowed types are: + 'String', 'Boolean', 'Integer', 'Password', 'IpAddress', + 'IpMask', 'Ipv6Address', 'Composite', 'OBMFRef', 'Device' + + Add as many variables as needed +''' +dev_var = Variables() +dev_var.add('var_name', var_type='String') +dev_var.add('var_name2', var_type='Integer') + +''' +context => Service Context variable per Service Instance +All the user-inputs of Tasks are automatically stored in context +Also, any new variables should be stored in context which are used across Service Instance +The variables stored in context can be used across all the Tasks and Processes of a particular Service +Update context array [add/update/delete variables] as per requirement + +ENTER YOUR CODE HERE +''' +context = Variables.task_call(dev_var) +context['var_name2'] = int(context['var_name2']) + 1 + +''' +Format of the Task response : +JSON format : {"wo_status":"status","wo_comment":"comment","wo_newparams":{json_body}} +wo_status : ENDED [Green color] or FAILED [Red color] or WARNING [Orange color] + -> While the Task is Running [means no response returned yet], task status is RUNNING [Blue color] + -> When status is returned as FAILED, the Orchestration Engine stops the Process Execution from this Task +wo_comment : Appropriate Comment to display as per the success/failure of the Task +wo_newparams : json_body parameters returned from this Task + +Function process_content() takes care of Creating a Json response from inputs +This function definiton can be found at : http://[YOUR_MSA_URL]/msa_sdk/msa_api.html#msa_sdk.msa_api.MSA_API.process_content +NOTE : For 'wo_newparams', always pass "context" [whether wo_status is ENDED/FAILED/WARNING to preserve it across Service Instance] + -> Last argument "true" mentions whether the json_response to be Logged in the logfile : /opt/jboss/latest/logs/process.log + -> If not passed, it's "false" + +The response "ret" should be echoed from the Task "print(ret)" which is read by Orchestration Engine +In case of FAILURE/WARNING, the Task can be Terminated by calling "exit" as per Logic +''' +ret = MSA_API.process_content('ENDED', 'Task OK', context, True) +print(ret) + diff --git a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml index 28fc78dec..c6442d045 100755 --- a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml +++ b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614698792558 + 1614775839499 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614698792549 + 1614775839497 MODEL diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml index 0fef3dc98..518a23b14 100644 --- a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml +++ b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml @@ -3,11 +3,11 @@ - TEST_ANSIBLE__based_on_grenoble_server_demo_rollback_ - TEST_ANSIBLE__based_on_grenoble_server_firewall_ - TEST_ANSIBLE__based_on_grenoble_server_ip_address_ - TEST_ANSIBLE__based_on_grenoble_server_lldp_ - TEST_ANSIBLE__based_on_grenoble_server_route_ + ANSIBLE_MS__based_on_grenoble_server_demo_rollback_ + ANSIBLE_MS__based_on_grenoble_server_firewall_ + ANSIBLE_MS__based_on_grenoble_server_ip_address_ + ANSIBLE_MS__based_on_grenoble_server_lldp_ + ANSIBLE_MS__based_on_grenoble_server_route_ diff --git a/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml b/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml index c2909a240..6487171ec 100755 --- a/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml +++ b/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614761499255 + 1614762668814 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614761499252 + 1614762668808 MODEL diff --git a/Ansible_integration/Update_DNS_records/Update_DNS_records.xml b/Ansible_integration/Update_DNS_records/Update_DNS_records.xml index b778dedce..ad94cb6c7 100644 --- a/Ansible_integration/Update_DNS_records/Update_DNS_records.xml +++ b/Ansible_integration/Update_DNS_records/Update_DNS_records.xml @@ -1,6 +1,6 @@ - + diff --git a/Ansible_integration/exchange_file.json b/Ansible_integration/exchange_file.json index 2b9fb26fe..bfa0405c4 100644 --- a/Ansible_integration/exchange_file.json +++ b/Ansible_integration/exchange_file.json @@ -1 +1 @@ -{"ipam_device_id": "1806", "router_device_id": 1802, "tenant": "Ansible Demo", "site": "Grenoble", "site_prefix": "11.0.129.0/24", "ansible_microservice_variables": {}} \ No newline at end of file +{"ipam_device_id": "1806", "router_device_id": 1802, "tenant": "Ansible Demo", "site": "Grenoble", "site_prefix": "11.0.129.0/24", "ansible_microservice_variables": {"next_hop": "11.0.129.1", "network": "11.0.0.0/8", "server_1_ip_address": "11.0.129.11", "server_1_prefix_len": "24", "server_1_iface": "ens192", "server_2_ip_address": "11.0.129.12", "server_2_prefix_len": "24", "server_2_iface": "ens192"}, "site_ip_plan": {"grenoble-router-1": {"ip_address": "11.0.129.1/24", "interface": "Gi0/2"}, "srv1.grenoble.lab": {"ip_address": "11.0.129.11/24", "interface": "ens192"}, "srv2.grenoble.lab": {"ip_address": "11.0.129.12/24", "interface": "ens192"}}} \ No newline at end of file From ff5a0439e9e2b2eb2564ae7fe94830f9081499f6 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 7 Mar 2021 07:03:25 +0000 Subject: [PATCH 5/7] Updated --- .../.meta_Clean_up_Ansible_demo.xml | 4 +-- .../.meta_Process_DELETE | 31 +++++++++++++++++++ .../Clean_up_Ansible_demo.xml | 15 +++++---- ..._Task_Clean_up_Ansible_controlled_hosts.py | 4 +-- .../.meta_Task_Clean_up_Ansible_server.py | 4 +-- .../Tasks/.meta_Task_Clean_up_DNS.py | 4 +-- .../.meta_Task_Clean_up_Grenoble_router.py | 4 +-- .../Tasks/.meta_Task_Clean_up_IPAM.py | 4 +-- .../Task_Clean_up_Ansible_controlled_hosts.py | 6 ++-- .../Tasks/Task_Clean_up_Ansible_server.py | 21 ++++++++++--- .../Tasks/Task_Clean_up_DNS.py | 2 +- .../Tasks/Task_Clean_up_Grenoble_router.py | 2 +- .../Tasks/Task_Clean_up_IPAM.py | 26 ++++++++++------ .../Process_DELETE/.meta_Tasks | 31 +++++++++++++++++++ .../.meta_Get_router_interface.xml | 4 +-- .../Tasks/.meta_Task_Get_router_interface.py | 4 +-- .../Tasks/Task_Get_router_interface.py | 2 +- .../.meta_Import_from_IPAM.xml | 4 +-- .../Tasks/.meta_Task_Define_vars.py | 4 +-- .../Tasks/Task_Define_vars.py | 2 +- Ansible_integration/microservice_list.json | 22 +++++++++++++ 21 files changed, 153 insertions(+), 47 deletions(-) create mode 100755 Ansible_integration/Clean_up_Ansible_demo/.meta_Process_DELETE create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_DELETE/.meta_Tasks create mode 100644 Ansible_integration/microservice_list.json diff --git a/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml b/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml index d3ac026a4..d94a30583 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml +++ b/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614938154265 + 1615099810812 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614938154247 + 1615099810806 MODEL diff --git a/Ansible_integration/Clean_up_Ansible_demo/.meta_Process_DELETE b/Ansible_integration/Clean_up_Ansible_demo/.meta_Process_DELETE new file mode 100755 index 000000000..1c46cd57c --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/.meta_Process_DELETE @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Process_DELETE + + + DATE_MODIFICATION + 1614943555238 + + + REPOSITORY + Process + + + DATE_CREATION + 1614943555232 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml b/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml index 0e612da6c..bb46da46d 100644 --- a/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml +++ b/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml @@ -3,8 +3,9 @@ - - + + + @@ -32,10 +33,12 @@ /opt/fmc_repository/Process/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks Clean up Ansible server - - /opt/fmc_repository/Process/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks - Clean up processes - + + + DELETE + DELETE + 5 + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py index 3740143d6..a618136ac 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614934623703 + 1615098288272 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614934623695 + 1615098288266 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py index 918803c87..37ab8bb33 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614938153477 + 1615099809472 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614938153473 + 1615099809466 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py index 4bee5963b..0e0c3da07 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614933299220 + 1615098043089 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614933299213 + 1615098043082 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py index 5bc83c285..03c52a1da 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614934120792 + 1615097965387 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614934120779 + 1615097965381 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py index fb0841ce8..81252d339 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614934542265 + 1614966617433 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614934542258 + 1614966617425 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py index 473ea475e..5569688f4 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py @@ -57,9 +57,7 @@ #Else - empty string object_dict = dict() for variable in microservice_variables: - if variable in ansible_variables_dict: - object_dict[variable] = ansible_variables_dict[variable] - elif variable == 'playbook_path': + if variable == 'playbook_path': object_dict[variable] = microservice_variables['playbook_path'] else: object_dict[variable] = str() @@ -67,7 +65,7 @@ ms_dict = {context['ansible_rollback_ms']: {'': object_dict}} AnsibleOrderObject.command_execute('CREATE', ms_dict) -success_comment = 'Microservice {} has executed Ansible playbook successfully'.format(context['ansible_microservice']) +success_comment = 'Microservice {} has executed Ansible playbook successfully'.format(context['ansible_rollback_ms']) #Finish the task correctlly print(MSA_API.process_content('ENDED', success_comment , context, True)) \ No newline at end of file diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py index 42c74e10b..6f6a12f2c 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py @@ -53,12 +53,14 @@ deployment_settings_list = CustomerObject.get_deployment_settings_by_customer_id(customer_id) ansible_profile = dict() counter = 0 -while not ansible_profile and conunter < len(deployment_settings_list): - if context['ansible_device_id'] in deployment_settings_list[counter]['attachedManagedEntities']: +while not ansible_profile and counter < len(deployment_settings_list): + if int(context['ansible_device_id']) in deployment_settings_list[counter]['attachedManagedEntities']: ansible_profile = deployment_settings_list[counter] - counter =+ 1 + counter += 1 ms_list = list() -for microservice_uri, microservice_details in ansible_profile.items(): +util.log_to_process_file(process_id, ansible_profile) +for microservice_uri, microservice_details in ansible_profile['microserviceUris'].items(): + util.log_to_process_file(process_id, microservice_details) if 'Ansible-based' in microservice_details['groups']: ms_list.append(microservice_uri) @@ -66,6 +68,17 @@ for microservice_uri in ms_list: RepositoryObject.delete_repository_resource(microservice_uri) + +workflow_details = RepositoryObject.get_workflow_definition(context['ansible_execute_wf']) +util.log_to_process_file(process_id, 'WORKFLOW DETAILS BEFORE: {}'.format(workflow_details)) + +for variable, details in workflow_details.items(): + if details['name'] == 'params.ansible_microservice': + details['values'] = list() + +util.log_to_process_file(process_id, 'WORKFLOW DETAILS AFTER: {}'.format(workflow_details)) + +RepositoryObject.change_workflow_definition(context['ansible_execute_wf'], workflow_details) result = MSA_API.process_content('ENDED', 'Ansible-based microservices have been removed', context, True) print(result) diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py index a34f9ab86..0646d01e8 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py @@ -54,7 +54,7 @@ objects_list = RouterOrderObject.command_objects_instances(ms_router_dns_records) for host_record_object in objects_list: - ms_dict = {ms_router_dns_records: {host_record_object: dict()} + ms_dict = {ms_router_dns_records: {host_record_object: dict()}} RouterOrderObject.command_execute('DELETE', ms_dict) result = MSA_API.process_content('ENDED', 'DNS Records have been updated', context, True) diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py index fb5e8da1c..7de17ea79 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py @@ -78,7 +78,7 @@ ospf_process_object = RouterOrderObject.command_objects_instances_by_id(ms_router_ospf_config, objects_list[0])[ms_router_ospf_config][objects_list[0]] #Remove new network to announce -for index, value in ospf_process_object['interface']: +for index, value in ospf_process_object['interface'].items(): if value['network_address'] == exchange_dict['site_prefix']: del ospf_process_object['interface'][index] diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py index 6198d7ff6..ad3a07dd7 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py @@ -29,6 +29,7 @@ TaskVariables.add('ansible_device_id', var_type = 'Device') TaskVariables.add('dns_server_device_id', var_type = 'Device') TaskVariables.add('ansible_rollback_ms', var_type = 'String') +TaskVariables.add('exchange_file', var_type = 'String') #Add vars to context context = Variables.task_call(TaskVariables) @@ -41,10 +42,11 @@ exchange_dict = json.load(exchange_file) #Import microservice alias list -with open('/opt/fmc_repository/Process/Ansible_integration/Import_from_IPAM/ipam_microservice_list.json', 'r') as alias_file: - context['ipam_ms_aliases'] = json.load(alias_file) +with open('/opt/fmc_repository/Process/Ansible_integration/microservice_list.json', 'r') as alias_file: + context['ms_aliases'] = json.load(alias_file) process_id = context['SERVICEINSTANCEID'] +ipam_device_id = context['ipam_device_id'] ms_ipam_tenant = context['ms_aliases']['IPAM Tenants'] ms_ipam_site = context['ms_aliases']['IPAM Sites'] ms_ipam_device = context['ms_aliases']['IPAM Devices'] @@ -78,10 +80,13 @@ while ip_address_list and (counter < len(objects_list)): object = IpamOrderObject.command_objects_instances_by_id(ms_ipam_address, objects_list[counter])[ms_ipam_address][objects_list[counter]] - if object['tenant'] == exchange_dict['tenant'] and object['object_id'] in ip_address_list: - ms_dict = {ms_ipam_address: {object['object_id']: dict()}} - IpamOrderObject.command_execute('DELETE', ms_dict) - ip_address_list.remove(object['object_id']) + if 'tenant' in list(object.keys()): + if object['tenant'] == exchange_dict['tenant'] and object['object_id'] in ip_address_list: + ms_dict = {ms_ipam_address: {object['object_id']: dict()}} + IpamOrderObject.command_execute('DELETE', ms_dict) + ip_address_list.remove(object['object_id']) + counter += 1 + #Clean up prefix objects_list = IpamOrderObject.command_objects_instances(ms_ipam_prefix) @@ -90,9 +95,12 @@ while not is_removed and (counter < len(objects_list)): object = IpamOrderObject.command_objects_instances_by_id(ms_ipam_prefix, objects_list[counter])[ms_ipam_prefix][objects_list[counter]] - if object['tenant'] == exchange_dict['tenant'] and exchange_dict['site_prefix'] == object['object_id']: - ms_dict = {ms_ipam_prefix: {object['object_id']: dict()}} - IpamOrderObject.command_execute('DELETE', ms_dict) + if 'tenant' in list(object.keys()): + if object['tenant'] == exchange_dict['tenant'] and exchange_dict['site_prefix'] == object['object_id']: + ms_dict = {ms_ipam_prefix: {object['object_id']: dict()}} + IpamOrderObject.command_execute('DELETE', ms_dict) + is_removed = True + counter += 1 result = MSA_API.process_content('ENDED', 'IPAM has been updated', context, True) print(result) diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_DELETE/.meta_Tasks b/Ansible_integration/Clean_up_Ansible_demo/Process_DELETE/.meta_Tasks new file mode 100755 index 000000000..8712a636e --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_DELETE/.meta_Tasks @@ -0,0 +1,31 @@ + + + + + DISPLAYNAME + Tasks + + + DATE_MODIFICATION + 1614943555332 + + + REPOSITORY + Process + + + DATE_CREATION + 1614943555326 + + + TAG + + + TYPE + DIRECTORY + + + COMMENT + + + diff --git a/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml b/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml index ed5fb3873..b4d5da8b2 100755 --- a/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml +++ b/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614756326283 + 1614966559182 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614756326279 + 1614966559172 MODEL diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py index ca84bd497..039bddb08 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614756325243 + 1614966557388 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614756325238 + 1614966557372 TAG diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py index ad377449c..62ffd48e5 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py @@ -27,7 +27,7 @@ context = Variables.task_call(TaskVariables) #Import microservice alias list -with open('/opt/fmc_repository/Process/Ansible_integration/Get_router_interface/microservice_list.json', 'r') as alias_file: +with open('/opt/fmc_repository/Process/Ansible_integration/microservice_list.json', 'r') as alias_file: context['ms_aliases'] = json.load(alias_file) #Udate exchange file diff --git a/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml b/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml index 54c39b1b0..fbd8eb45b 100755 --- a/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml +++ b/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614760653784 + 1614966589637 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614760653779 + 1614966589633 MODEL diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py index 78532b0a4..03216bc44 100755 --- a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614760652936 + 1614966586549 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614760652931 + 1614966586533 TAG diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py index 1a6ab6ea0..67abaf3f0 100755 --- a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py @@ -23,7 +23,7 @@ context['ipam_device_id'] = re.match('^\D+?(\d+?)$', context['ipam_device_id']).group(1) #Import microservice alias list -with open('/opt/fmc_repository/Process/Ansible_integration/Import_from_IPAM/ipam_microservice_list.json', 'r') as alias_file: +with open('/opt/fmc_repository/Process/Ansible_integration/microservice_list.json', 'r') as alias_file: context['ipam_ms_aliases'] = json.load(alias_file) diff --git a/Ansible_integration/microservice_list.json b/Ansible_integration/microservice_list.json new file mode 100644 index 000000000..212822efe --- /dev/null +++ b/Ansible_integration/microservice_list.json @@ -0,0 +1,22 @@ +{ + "IPAM IPv4 addresses": "ip_address", + "IPAM IPv4 prefixes": "prefix", + "IPAM Sites": "sites", + "IPAM Tenants": "tenants", + "IPAM VLANs": "vlan", + "IPAM VRFs": "vrf", + "IPAM Devices": "devices", + "IPAM Interfaces": "interfaces", + "IPAM Interface Connections": "interface_connections", + "IPAM Available Prefixes": "available_prefix", + "Router OSPF configuration": "ospfv2_configuration", + "Router OSPF General": "ospfv2_general", + "Router OSPF LSDB LSA 1": "ospfv2_lsdb_lsa_1", + "Router Standard ACL": "std_acl", + "Router Interface": "interfaces", + "Router LLDP neighbour details": "lldp_neighbour_details", + "Router LLDP neighbour": "lldp_neighbours", + "Router prefix filter": "prefix_filter", + "Router static route": "static_route", + "Router DNS host records": "host_records" +} From 1f9853b681abf8d03057e63bbde99fde0969df81 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 8 Mar 2021 21:51:00 +0000 Subject: [PATCH 6/7] Update --- .../.Ansible_integration.xml.swp | Bin 0 -> 16384 bytes .../.meta_Ansible_integration.xml | 4 +- ...roservice_Modify_microservice_to_read_.php | 4 +- ...roservices__Bulk_mode__Monitor_changes.php | 4 +- ...ort_specific_playbooks_Monitor_changes.php | 8 +- .../Ansible_integration.xml | 2 +- ...roservices__Bulk_mode__Monitor_changes.php | 1 + ...ort_specific_playbooks_Monitor_changes.php | 1 + .../Process_Block_IP/Tasks/Task_Block_IP.py | 3 +- .../.meta_Clean_up_Ansible_demo.xml | 4 +- .../Clean_up_Ansible_demo.xml | 12 +- .../Tasks/.meta_Task_Clean_processes.py | 35 ++++++ ..._Task_Clean_up_Ansible_controlled_hosts.py | 4 +- .../.meta_Task_Clean_up_Ansible_server.py | 4 +- .../Tasks/.meta_Task_Clean_up_DNS.py | 4 +- .../.meta_Task_Clean_up_Grenoble_router.py | 4 +- .../Tasks/.meta_Task_Clean_up_IPAM.py | 4 +- .../Tasks/.meta_Task_Clean_up_processes.py | 4 +- .../Tasks/Task_Clean_processes.py | 45 +++++++ .../Task_Clean_up_Ansible_controlled_hosts.py | 23 ++-- .../Tasks/Task_Clean_up_Ansible_server.py | 12 +- .../Tasks/Task_Clean_up_DNS.py | 2 +- .../Tasks/Task_Clean_up_Grenoble_router.py | 11 +- .../Tasks/Task_Clean_up_IPAM.py | 1 + .../Tasks/Task_Clean_up_processes.py | 110 +++++++++--------- .../.meta_Configure_route_announcement.xml | 4 +- .../Configure_route_announcement.xml | 2 +- ....meta_Task_Configure_route_announcement.py | 4 +- .../Task_Configure_route_announcement.py | 1 + .../.meta_Configure_router_interface.xml | 4 +- .../Configure_router_interface.xml | 2 +- .../.meta_Task_Configure_router_interface.py | 4 +- .../Tasks/Task_Configure_router_interface.py | 1 + ...eta_Execute_Ansible_based_microservice.xml | 4 +- .../Execute_Ansible_based_microservice.xml | 2 +- .../.meta_Get_router_interface.xml | 4 +- .../Get_router_interface.xml | 2 +- .../.meta_Task_Calculate_IP_addresses.py | 4 +- .../Tasks/.meta_Task_Get_router_interface.py | 4 +- .../Tasks/.meta_Task_Update_IPAM.py | 4 +- .../Tasks/Task_Calculate_IP_addresses.py | 2 + .../Tasks/Task_Get_router_interface.py | 3 +- .../Tasks/Task_Update_IPAM.py | 1 + .../.meta_Import_from_IPAM.xml | 4 +- .../Import_from_IPAM/Import_from_IPAM.xml | 2 +- .../Tasks/.meta_Task_Define_vars.py | 4 +- .../Tasks/.meta_Task_Import_site_prefix.py | 4 +- .../Tasks/.meta_Task_Import_site_router.py | 4 +- .../Tasks/Task_Define_vars.py | 3 +- .../Tasks/Task_Import_site_prefix.py | 2 + .../Tasks/Task_Import_site_router.py | 2 + .../.meta_Update_DNS_records.xml | 4 +- .../Tasks/.meta_Task_Update_DNS_records.py | 4 +- .../Tasks/Task_Update_DNS_records.py | 2 +- .../Update_DNS_records/Update_DNS_records.xml | 2 +- 55 files changed, 251 insertions(+), 144 deletions(-) create mode 100644 Ansible_integration/Ansible_Integration/.Ansible_integration.xml.swp create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_processes.py create mode 100755 Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_processes.py diff --git a/Ansible_integration/Ansible_Integration/.Ansible_integration.xml.swp b/Ansible_integration/Ansible_Integration/.Ansible_integration.xml.swp new file mode 100644 index 0000000000000000000000000000000000000000..ceb79e6193596c6e4aa6cac22cbd3f2dfbd94716 GIT binary patch literal 16384 zcmeHO&u<(_6>iwTZdevpERi^&Vj@shBGYzaJ9c(Fk`vp>h>UGKb^r;fsp+ov)Vimu z>8i1JBG4YVz?Bmc9J%EWK%9{{AWne91@R96HzY0y_^PX_Ju{h^WV5n&L%QY9qpn~5 z>Z@0;UcIjFE<9|t$*ua5hwDwxyZXcJ@6lf@eDT}g@Vs0IrIVj_tu02YE8*he+RDvn zURhsc%8&bDkh4rku0%fccQcl@I~&2bwu6mS@@~Qco+@^fQ^iH<&r55~FIRuBpUjh{ z%BvW7*%)}kyLn@ALHGJPK*ME)!Ge%1copUAhj)lbDh#X!YC#X!YC z#X!YC#X!YC#X!YC#X!YC#lSf*K=Hh zp7)(gp4S4d0GEJ&VpFf{{n!Ny&OyGHrb&XUaYA!WaR!1!TxJO!?$AD4ukBIQBT5jR z(iP$uxj75<@rfEqixL^lX$6m?*A{9-4Kp;@Q8`bKYNSuo zi0XDW@|+IWYcWkEtC1649K=|!seFLjh{-VLnLdxPUOVV2kEXCg=6 ztmrJ_N)za07iluwWQy|SA!ny$u|$M4c}R23Z=0&HryB%KLb1tIs;Rk4(~T%{jk=_L zR5&RgDs43D>+HI>IIUXz$@345C;Dv!@=I$(ZmGA(B- zf(ozKtVxK9w17uXoiJ8wK8`cy%uw8Cv@j1f5)YDO!h&4P1hVtTO&@2sjHzyqDop2? zB}_qKt{t#G=8j@-PiXh3ngr4opQGx}YPjuKPPN>WC@YP&-&WaEb~>i)vQD-!$BVhB z)tlP0d8Gw#!s=6YI#dNSG!BAD@$RxwivVJZWn#87J}Ie z!Nj@9yP~gG=S>##l$)cFJDt{@2V4H!p}6Q(Wcn=FbB+p(63bZ%X;OKeMtv zmxtjTW+y{?t4R4@MRU{z>$@bn}p zq>LgXqIQ6$h*=qUnoc$Fi??nqU8rR)9dAkETs&gfxGmJ0USqfWE;f#5i%Qee`~N2P z^0z-__W$nv{I9V0e+)bVE(3q~oag-(_%-ld;41Js@b@=7@6W(bf$PA(5HI)}@EF(z zt^k*Te1t{=M;LE_xPkY|0z+cd(-vGY^-Uk9;2he?81FEZHpkkn6;Q1J6_)l6>9Yx_O ze938~(_h z$rd_n)?8e`)$q-Y$*|Fj1B4z95d3Rqy{zF+CYqwwXWHg0iJG1-(_5drv_78zn%AjohRCp*fGHQFtwxcttkne+f)QyOfWPV>Xoiv zL~ZUJw!Ti_&!2Ew-0yF74#>t{OQ%sCy37?3F`)w`%s7?O*U{IJj+w6VP^3+t_vsOn zJ_{3`N!CJ|^fM#{qWf`pl&)yd^jHgM!*E)pv$)@xY(bH6c3+2H z!NVZ98dUqJ9qrE!66WHKBN{tRe|2EGdAPT^aj*q~^o?oj33{BK%;U*%Wc%;|8S!WJ zx#(ZXmlbgKXtvEj5`<+_sLsb>G);6e7!5ngAhhU3!cv{~^hx)}=X2W72GZylghozO0|6f`>yPMO7 z_yX0}5r2L DATE_MODIFICATION - 1614772411528 + 1615238318202 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614772411524 + 1615238318193 MODEL diff --git a/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Modify_microservice_to_read_.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Modify_microservice_to_read_.php index 6a867a550..788353146 100755 --- a/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Modify_microservice_to_read_.php +++ b/Ansible_integration/Ansible_Integration/.meta_Create_microservice_Modify_microservice_to_read_.php @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614534735487 + 1615232136600 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1597304207201 + 1615232136594 TAG diff --git a/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php index 519bedc8a..003a7bccd 100755 --- a/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php +++ b/Ansible_integration/Ansible_Integration/.meta_Create_microservices__Bulk_mode__Monitor_changes.php @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614772403489 + 1615232282572 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614772403485 + 1615232282560 TAG diff --git a/Ansible_integration/Ansible_Integration/.meta_Import_specific_playbooks_Monitor_changes.php b/Ansible_integration/Ansible_Integration/.meta_Import_specific_playbooks_Monitor_changes.php index 3ef3f35de..5a2a309a2 100755 --- a/Ansible_integration/Ansible_Integration/.meta_Import_specific_playbooks_Monitor_changes.php +++ b/Ansible_integration/Ansible_Integration/.meta_Import_specific_playbooks_Monitor_changes.php @@ -1,9 +1,13 @@ + + DISPLAYNAME + Import_specific_playbooks_Monitor_changes.php + DATE_MODIFICATION - 1602507073446 + 1615232290794 REPOSITORY @@ -11,7 +15,7 @@ DATE_CREATION - 1602507073440 + 1615232290790 TAG diff --git a/Ansible_integration/Ansible_Integration/Ansible_integration.xml b/Ansible_integration/Ansible_Integration/Ansible_integration.xml index 9dcaa0a0c..91627f64f 100755 --- a/Ansible_integration/Ansible_Integration/Ansible_integration.xml +++ b/Ansible_integration/Ansible_Integration/Ansible_integration.xml @@ -1,6 +1,6 @@ - + diff --git a/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Monitor_changes.php b/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Monitor_changes.php index 1ffb7f535..987c44c03 100755 --- a/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Monitor_changes.php +++ b/Ansible_integration/Ansible_Integration/Create_microservices__Bulk_mode__Monitor_changes.php @@ -26,6 +26,7 @@ //Syncing Ansible host $announce = update_asynchronous_task_details($context, "Syncing Ansible host... "); $response = json_decode(synchronize_objects_and_verify_response($device_id), true); + sleep(15); if ($response['wo_status'] !== ENDED) { echo json_encode($response); exit; diff --git a/Ansible_integration/Ansible_Integration/Import_specific_playbooks_Monitor_changes.php b/Ansible_integration/Ansible_Integration/Import_specific_playbooks_Monitor_changes.php index 6fe34e939..39e15b760 100755 --- a/Ansible_integration/Ansible_Integration/Import_specific_playbooks_Monitor_changes.php +++ b/Ansible_integration/Ansible_Integration/Import_specific_playbooks_Monitor_changes.php @@ -26,6 +26,7 @@ //Syncing Ansible host $announce = update_asynchronous_task_details($context, "Syncing Ansible host... "); $response = json_decode(synchronize_objects_and_verify_response($device_id), true); + sleep(15); if ($response['wo_status'] !== ENDED) { echo json_encode($response); exit; diff --git a/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Block_IP.py b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Block_IP.py index a084cbab7..61047e26c 100755 --- a/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Block_IP.py +++ b/Ansible_integration/Block_IP_if_auth_failed/Process_Block_IP/Tasks/Task_Block_IP.py @@ -47,7 +47,6 @@ #Get default values for microservice deployment_settings_id = AnsibleOrderObject.command_get_deployment_settings_id() -util.log_to_process_file(process_id, 'PROFILE ID {}'.format(deployment_settings_id)) microservice_path = RepositoryObject.get_microservice_path_by_name(context['ansible_microservice'], deployment_settings_id) microservice_variables = RepositoryObject.get_microservice_variables_default_value(microservice_path) @@ -67,4 +66,4 @@ success_comment = 'There is no IP addresses to block' #Finish the task correctlly -print(MSA_API.process_content('ENDED', success_comment , context, True)) \ No newline at end of file +print(MSA_API.process_content('ENDED', success_comment , context, True)) diff --git a/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml b/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml index d94a30583..ff6281685 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml +++ b/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615099810812 + 1615239724877 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615099810806 + 1615239724874 MODEL diff --git a/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml b/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml index bb46da46d..ab260a92b 100644 --- a/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml +++ b/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml @@ -1,8 +1,8 @@ - - - + + + @@ -33,6 +33,10 @@ /opt/fmc_repository/Process/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks Clean up Ansible server + + /opt/fmc_repository/Process/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks + Clean up processes + DELETE @@ -42,7 +46,7 @@ - The workflow is part of Ansible demo + The workflow is part of Ansible demo. The workflow is proposed to clean up Ansible demo and return it to initial state service_id python 10000 diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_processes.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_processes.py new file mode 100755 index 000000000..967be0643 --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_processes.py @@ -0,0 +1,35 @@ + + + + + DISPLAYNAME + Task_Clean_processes.py + + + DATE_MODIFICATION + 1615236055881 + + + REPOSITORY + Process + + + DATE_CREATION + 1615236055876 + + + TAG + + + FILE_TYPE + text + + + TYPE + UPLOAD + + + COMMENT + + + diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py index a618136ac..844137a0d 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_controlled_hosts.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615098288272 + 1615239620902 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615098288266 + 1615239620897 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py index 37ab8bb33..f5fe48177 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615099809472 + 1615239699329 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615099809466 + 1615239699324 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py index 0e0c3da07..64aa19d25 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615098043089 + 1615239561899 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615098043082 + 1615239561893 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py index 03c52a1da..e9f244655 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615097965387 + 1615239541831 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615097965381 + 1615239541823 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py index 81252d339..6a1dec36a 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614966617433 + 1615239511635 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614966617425 + 1615239511623 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py index 4b8e304b8..c95e207a4 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614930132891 + 1615239723888 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614930132886 + 1615239723884 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_processes.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_processes.py new file mode 100755 index 000000000..0e7d9433c --- /dev/null +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_processes.py @@ -0,0 +1,45 @@ +from msa_sdk.variables import Variables +from msa_sdk.msa_api import MSA_API +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from msa_sdk.customer import Customer +from msa_sdk import util + +from datetime import datetime +from msa_sdk import constants +import re +import json +import sys +import time + + +time.sleep(5) + +#New Variables object +TaskVariables = Variables() + +context = Variables.task_call(TaskVariables) +process_id = context['SERVICEINSTANCEID'] + +Orchestration = Orchestration(context['UBIQUBEID']) +response = Orchestration.list_service_instances() +service_list = json.loads(Orchestration.content) + +for service in service_list: + if service['state'] == 'ACTIVE': + if service['name'] in ('Process/IP_CONTROLLER/Fulfilment_Handler/Fulfilment_Handler', + 'Process/IP_CONTROLLER/Fulfilment_Dispatcher/Fulfilment_Dispatcher', + 'Process/IP_CONTROLLER/Cleaner/Cleaner'): + is_finished = True + response = Orchestration.list_process_instances_by_service(service['id']) + for process in json.loads(Orchestration.content): + if process['status']['status'] != 'ENDED': + is_finished = False + + if is_finished: + Orchestration.delete_service(service['id']) + +#Finish the task correctlly +result = MSA_API.process_content('ENDED', 'Cleaner has been finished' , context, True) +print(result) diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py index 5569688f4..3786390fb 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_controlled_hosts.py @@ -16,9 +16,11 @@ """ The proposals of the tasks are: - - Get variables values for Ansible-based microservices from exchange file; - - Get variables names from provided Ansible-based microservice; - - Execute provided Ansible-based microservice with variables from exchange file. + - Execute a playbook what cleans Linux host states: + - Remove lldpd packet; + - Flush Iptables; + - Flush routes; + - Flush interface config """ @@ -56,14 +58,15 @@ #Walk through the provided Ansible-based microservice variables. If the variable exists in exchange dict --> get the value. #Else - empty string object_dict = dict() -for variable in microservice_variables: - if variable == 'playbook_path': - object_dict[variable] = microservice_variables['playbook_path'] - else: - object_dict[variable] = str() +if microservice_variables: + for variable in microservice_variables: + if variable == 'playbook_path': + object_dict[variable] = microservice_variables['playbook_path'] + else: + object_dict[variable] = str() -ms_dict = {context['ansible_rollback_ms']: {'': object_dict}} -AnsibleOrderObject.command_execute('CREATE', ms_dict) + ms_dict = {context['ansible_rollback_ms']: {'': object_dict}} + AnsibleOrderObject.command_execute('CREATE', ms_dict) success_comment = 'Microservice {} has executed Ansible playbook successfully'.format(context['ansible_rollback_ms']) diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py index 6f6a12f2c..020077046 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py @@ -19,7 +19,8 @@ """ The proposals of the task are: - + - Remove default values for ansible-based microservice name in + the workflow what executes ansible-based microservices """ @@ -58,25 +59,20 @@ ansible_profile = deployment_settings_list[counter] counter += 1 ms_list = list() -util.log_to_process_file(process_id, ansible_profile) for microservice_uri, microservice_details in ansible_profile['microserviceUris'].items(): - util.log_to_process_file(process_id, microservice_details) if 'Ansible-based' in microservice_details['groups']: ms_list.append(microservice_uri) - RepositoryObject.detach_microserviceis_from_configuration_profile(ansible_profile['id'], ms_list) for microservice_uri in ms_list: RepositoryObject.delete_repository_resource(microservice_uri) - + workflow_details = RepositoryObject.get_workflow_definition(context['ansible_execute_wf']) -util.log_to_process_file(process_id, 'WORKFLOW DETAILS BEFORE: {}'.format(workflow_details)) -for variable, details in workflow_details.items(): +for variable, details in enumerate(workflow_details['variables']['variable']): if details['name'] == 'params.ansible_microservice': details['values'] = list() -util.log_to_process_file(process_id, 'WORKFLOW DETAILS AFTER: {}'.format(workflow_details)) RepositoryObject.change_workflow_definition(context['ansible_execute_wf'], workflow_details) diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py index 0646d01e8..fa3e1a20e 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_DNS.py @@ -17,7 +17,7 @@ """ The proposals of the task are: - + - Remove server FQDN records from DNS server """ diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py index 7de17ea79..b25f38fe2 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py @@ -17,7 +17,8 @@ """ The proposals of the task are: - + - Remove IPv4 address from router interface + - Remove IPv4 network from OSPF announcment """ @@ -78,9 +79,13 @@ ospf_process_object = RouterOrderObject.command_objects_instances_by_id(ms_router_ospf_config, objects_list[0])[ms_router_ospf_config][objects_list[0]] #Remove new network to announce +index_to_remove = None for index, value in ospf_process_object['interface'].items(): - if value['network_address'] == exchange_dict['site_prefix']: - del ospf_process_object['interface'][index] + if value['network_address'] == exchange_dict['site_prefix'].split('/')[0]: + index_to_remove = index + break +if index_to_remove is not None: + del ospf_process_object['interface'][index_to_remove] #Configure OSPF ms_dict = {ms_router_ospf_config: {ospf_process_object['object_id']: ospf_process_object}} diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py index ad3a07dd7..9ef868469 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py @@ -17,6 +17,7 @@ """ The proposals of the task are: + - Clean up IPv4 prefixes and IPv4 addresses in IPAM """ diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py index e8cb07252..120dd4a8a 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py @@ -1,54 +1,60 @@ -''' -Visit http://[YOUR_MSA_URL]/msa_sdk/ to see what you can import. -''' from msa_sdk.variables import Variables from msa_sdk.msa_api import MSA_API - -''' -List all the parameters required by the task - -You can use var_name convention for your variables -They will display automaticaly as "Var Name" -The allowed types are: - 'String', 'Boolean', 'Integer', 'Password', 'IpAddress', - 'IpMask', 'Ipv6Address', 'Composite', 'OBMFRef', 'Device' - - Add as many variables as needed -''' -dev_var = Variables() -dev_var.add('var_name', var_type='String') -dev_var.add('var_name2', var_type='Integer') - -''' -context => Service Context variable per Service Instance -All the user-inputs of Tasks are automatically stored in context -Also, any new variables should be stored in context which are used across Service Instance -The variables stored in context can be used across all the Tasks and Processes of a particular Service -Update context array [add/update/delete variables] as per requirement - -ENTER YOUR CODE HERE -''' -context = Variables.task_call(dev_var) -context['var_name2'] = int(context['var_name2']) + 1 - -''' -Format of the Task response : -JSON format : {"wo_status":"status","wo_comment":"comment","wo_newparams":{json_body}} -wo_status : ENDED [Green color] or FAILED [Red color] or WARNING [Orange color] - -> While the Task is Running [means no response returned yet], task status is RUNNING [Blue color] - -> When status is returned as FAILED, the Orchestration Engine stops the Process Execution from this Task -wo_comment : Appropriate Comment to display as per the success/failure of the Task -wo_newparams : json_body parameters returned from this Task - -Function process_content() takes care of Creating a Json response from inputs -This function definiton can be found at : http://[YOUR_MSA_URL]/msa_sdk/msa_api.html#msa_sdk.msa_api.MSA_API.process_content -NOTE : For 'wo_newparams', always pass "context" [whether wo_status is ENDED/FAILED/WARNING to preserve it across Service Instance] - -> Last argument "true" mentions whether the json_response to be Logged in the logfile : /opt/jboss/latest/logs/process.log - -> If not passed, it's "false" - -The response "ret" should be echoed from the Task "print(ret)" which is read by Orchestration Engine -In case of FAILURE/WARNING, the Task can be Terminated by calling "exit" as per Logic -''' -ret = MSA_API.process_content('ENDED', 'Task OK', context, True) -print(ret) - +from msa_sdk.order import Order +from msa_sdk.device import Device +from msa_sdk.orchestration import Orchestration +from msa_sdk.customer import Customer +from msa_sdk import util + +from datetime import datetime +from msa_sdk import constants +import re +import json +import sys +import time + +""" +The proposals of the task are: + - Clean up processes + +""" + +time.sleep(5) + +#New Variables object +TaskVariables = Variables() + +context = Variables.task_call(TaskVariables) +process_id = context['SERVICEINSTANCEID'] + +Orchestration = Orchestration(context['UBIQUBEID']) +response = Orchestration.list_service_instances() +service_list = json.loads(Orchestration.content) + + +Orchestration.execute_service('Process/Ansible_integration/Ansible_Integration/Ansible_integration', 'Process/Ansible_integration/Ansible_Integration/Stop_playbook_monitoring', dict()) +time.sleep(5) +Orchestration.execute_service('Process/Ansible_integration/Ansible_Integration/Ansible_integration', 'Process/_TEST_Ansible_integration/DELETE', dict()) +time.sleep(5) +for service in service_list: + if service['state'] == 'ACTIVE': + if service['name'] in ('Process/Ansible_integration/Configure_router_interface/Configure_router_interface', +'Process/Ansible_integration/Configure_route_announcement/Configure_route_announcement', +'Process/Ansible_integration/Update_DNS_records/Update_DNS_records', +'Process/Ansible_integration/Get_router_interface/Get_router_interface', +'Process/Ansible_integration/Import_from_IPAM/Import_from_IPAM', +'Process/Ansible_integration/Ansible_Integration/Ansible_integration', +'Process/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice', +'Process/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml'): + is_finished = True + response = Orchestration.list_process_instances_by_service(service['id']) + for process in json.loads(Orchestration.content): + if process['status']['status'] not in ('ENDED', 'FAILED'): + is_finished = False + + if is_finished: + Orchestration.delete_service(service['id']) + +#Finish the task correctlly +result = MSA_API.process_content('ENDED', 'Cleaner has been finished' , context, True) +print(result) \ No newline at end of file diff --git a/Ansible_integration/Configure_route_announcement/.meta_Configure_route_announcement.xml b/Ansible_integration/Configure_route_announcement/.meta_Configure_route_announcement.xml index 048c428f9..77bca1a55 100755 --- a/Ansible_integration/Configure_route_announcement/.meta_Configure_route_announcement.xml +++ b/Ansible_integration/Configure_route_announcement/.meta_Configure_route_announcement.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614327719904 + 1615239988276 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614327719898 + 1615239988272 MODEL diff --git a/Ansible_integration/Configure_route_announcement/Configure_route_announcement.xml b/Ansible_integration/Configure_route_announcement/Configure_route_announcement.xml index ca1142918..fa88547be 100644 --- a/Ansible_integration/Configure_route_announcement/Configure_route_announcement.xml +++ b/Ansible_integration/Configure_route_announcement/Configure_route_announcement.xml @@ -21,7 +21,7 @@ - The workflow is part of Ansible Demo + The workflow is part of Ansible demo. The workflow is proposed to configure server subnet announcement via OSPF service_id python 10000 diff --git a/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/.meta_Task_Configure_route_announcement.py b/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/.meta_Task_Configure_route_announcement.py index 88a62bd38..42d048c6e 100755 --- a/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/.meta_Task_Configure_route_announcement.py +++ b/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/.meta_Task_Configure_route_announcement.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614327718905 + 1615239984300 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614286272338 + 1615239984295 TAG diff --git a/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/Task_Configure_route_announcement.py b/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/Task_Configure_route_announcement.py index ac328c960..c564b38da 100755 --- a/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/Task_Configure_route_announcement.py +++ b/Ansible_integration/Configure_route_announcement/Process_Configure_route_announcement/Tasks/Task_Configure_route_announcement.py @@ -17,6 +17,7 @@ """ The proposals of the task are: + - Configure server subnet announcment via OSPF """ diff --git a/Ansible_integration/Configure_router_interface/.meta_Configure_router_interface.xml b/Ansible_integration/Configure_router_interface/.meta_Configure_router_interface.xml index 79d82dd9a..ff24298e9 100755 --- a/Ansible_integration/Configure_router_interface/.meta_Configure_router_interface.xml +++ b/Ansible_integration/Configure_router_interface/.meta_Configure_router_interface.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614322410852 + 1615240039395 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614322410849 + 1615240039392 MODEL diff --git a/Ansible_integration/Configure_router_interface/Configure_router_interface.xml b/Ansible_integration/Configure_router_interface/Configure_router_interface.xml index d6d3a60e6..b767f5083 100644 --- a/Ansible_integration/Configure_router_interface/Configure_router_interface.xml +++ b/Ansible_integration/Configure_router_interface/Configure_router_interface.xml @@ -21,7 +21,7 @@ - The workflow is part of Ansible Demo + The workflow is part of Ansible demo. The workflow is proposed to configure router interface for the server segment service_id python 10000 diff --git a/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/.meta_Task_Configure_router_interface.py b/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/.meta_Task_Configure_router_interface.py index a5512e731..46b9154a7 100755 --- a/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/.meta_Task_Configure_router_interface.py +++ b/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/.meta_Task_Configure_router_interface.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614322408899 + 1615240038329 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614285191849 + 1615240038323 TAG diff --git a/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/Task_Configure_router_interface.py b/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/Task_Configure_router_interface.py index d65a65941..9f9b325c6 100755 --- a/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/Task_Configure_router_interface.py +++ b/Ansible_integration/Configure_router_interface/Process_Configure_router_interface/Tasks/Task_Configure_router_interface.py @@ -17,6 +17,7 @@ """ The proposals of the task are: + - Configure router interface """ diff --git a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml index c6442d045..e16619612 100755 --- a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml +++ b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614775839499 + 1615239251731 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614775839497 + 1615239251728 MODEL diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml index 518a23b14..aec158240 100644 --- a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml +++ b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml @@ -31,7 +31,7 @@ - + The workflow is part of Ansible demo. The workflow is proposed to execute Ansible-based microservice inside BPM. It gets microservice name as input and looking for the microservice variables in exchange file service_id python 10000 diff --git a/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml b/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml index b4d5da8b2..bce7e8855 100755 --- a/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml +++ b/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614966559182 + 1615239832606 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614966559172 + 1615239832602 MODEL diff --git a/Ansible_integration/Get_router_interface/Get_router_interface.xml b/Ansible_integration/Get_router_interface/Get_router_interface.xml index bbc20a313..874814529 100644 --- a/Ansible_integration/Get_router_interface/Get_router_interface.xml +++ b/Ansible_integration/Get_router_interface/Get_router_interface.xml @@ -29,7 +29,7 @@ - The workflow is part of Ansible Demo + The workflow is part of Ansible demo. The workflow is proposed to get information about router interface where servers are connected to. service_id python 10000 diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Calculate_IP_addresses.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Calculate_IP_addresses.py index adbff306a..94be73732 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Calculate_IP_addresses.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Calculate_IP_addresses.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614521815821 + 1615239818514 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614282198783 + 1615239818503 TAG diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py index 039bddb08..25ca55252 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614966557388 + 1615239791446 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614966557372 + 1615239791434 TAG diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py index bd4ad9d4a..136305bbb 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614521851478 + 1615239831485 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614283125040 + 1615239831480 TAG diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Calculate_IP_addresses.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Calculate_IP_addresses.py index 0449b9a56..1101c1ea8 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Calculate_IP_addresses.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Calculate_IP_addresses.py @@ -17,6 +17,8 @@ """ The proposals of the task are: + - Calculate IPv4 addresses to configure on + router interface and on server interfaces """ diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py index 62ffd48e5..0d6a78a18 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py @@ -15,6 +15,7 @@ import os """ The proposals of the task are: + - Get router interface name where servers are connected to """ @@ -49,12 +50,10 @@ #Find a router interface where a site server is connected to objects_list = RouterOrderObject.command_objects_instances(ms_router_lldp) -util.log_to_process_file(process_id, objects_list) counter = 0 router_interface = None while router_interface is None and counter < len(objects_list): neighbour_object = RouterOrderObject.command_objects_instances_by_id(ms_router_lldp, objects_list[counter])[ms_router_lldp][objects_list[counter]] - util.log_to_process_file(process_id, '{} {}'.format(neighbour_object['system_name'], exchange_dict['site'])) if re.search(exchange_dict['site'].lower(), neighbour_object['system_name'].lower()): router_interface = neighbour_object['local_interface'] counter += 1 diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Update_IPAM.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Update_IPAM.py index de8fced7d..57f71bad1 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Update_IPAM.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Update_IPAM.py @@ -17,6 +17,7 @@ """ The proposals of the task are: + - Update IPAM by new IPv4 addresses """ diff --git a/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml b/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml index fbd8eb45b..f84454f18 100755 --- a/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml +++ b/Ansible_integration/Import_from_IPAM/.meta_Import_from_IPAM.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614966589637 + 1615239467865 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614966589633 + 1615239467860 MODEL diff --git a/Ansible_integration/Import_from_IPAM/Import_from_IPAM.xml b/Ansible_integration/Import_from_IPAM/Import_from_IPAM.xml index 8e993ccc7..33fad793a 100644 --- a/Ansible_integration/Import_from_IPAM/Import_from_IPAM.xml +++ b/Ansible_integration/Import_from_IPAM/Import_from_IPAM.xml @@ -32,7 +32,7 @@ - Import from IPAM + The workflow is part of Ansible integration demo. The workflow is proposed to get info about available prefixes in IPAM and create a new prefix for server subnet. service_id python 10000 diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py index 03216bc44..9ca21b658 100755 --- a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Define_vars.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614966586549 + 1615239355144 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614966586533 + 1615239355139 TAG diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_prefix.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_prefix.py index f658d2d1e..086193168 100755 --- a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_prefix.py +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_prefix.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614524586617 + 1615239466809 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614240262877 + 1615239466802 TAG diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_router.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_router.py index f57c4e432..f3631199d 100755 --- a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_router.py +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/.meta_Task_Import_site_router.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614256302605 + 1615239422664 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614240255278 + 1615239422656 TAG diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py index 67abaf3f0..3b157fd0c 100755 --- a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Define_vars.py @@ -5,8 +5,7 @@ """ The proposals of the task are: - - + - Define variables """ diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_prefix.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_prefix.py index 4058c4356..2c4133742 100755 --- a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_prefix.py +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_prefix.py @@ -17,6 +17,8 @@ """ The proposals of the task are: + - Find out available IPv4 prefix for the provided site; + - Create IPv4 prefix for the new server segment """ diff --git a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_router.py b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_router.py index 4b5bb7fce..e8b9257ff 100755 --- a/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_router.py +++ b/Ansible_integration/Import_from_IPAM/Process_Import_from_IPAM/Tasks/Task_Import_site_router.py @@ -14,6 +14,8 @@ """ The proposals of the tasks are: + - Find out a MSA ME what represents site router + - Put the ME device id to context """ diff --git a/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml b/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml index 6487171ec..d9ce40417 100755 --- a/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml +++ b/Ansible_integration/Update_DNS_records/.meta_Update_DNS_records.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614762668814 + 1615239877817 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614762668808 + 1615239877813 MODEL diff --git a/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/.meta_Task_Update_DNS_records.py b/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/.meta_Task_Update_DNS_records.py index d303aacf7..eb4bebbc6 100755 --- a/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/.meta_Task_Update_DNS_records.py +++ b/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/.meta_Task_Update_DNS_records.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614761487389 + 1615239877137 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614761487385 + 1615239877132 TAG diff --git a/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/Task_Update_DNS_records.py b/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/Task_Update_DNS_records.py index 4a563959e..3fe320e5e 100755 --- a/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/Task_Update_DNS_records.py +++ b/Ansible_integration/Update_DNS_records/Process_Update_DNS_records/Tasks/Task_Update_DNS_records.py @@ -17,7 +17,7 @@ """ The proposals of the task are: - + - Update DNS records """ diff --git a/Ansible_integration/Update_DNS_records/Update_DNS_records.xml b/Ansible_integration/Update_DNS_records/Update_DNS_records.xml index ad94cb6c7..7eeef3b00 100644 --- a/Ansible_integration/Update_DNS_records/Update_DNS_records.xml +++ b/Ansible_integration/Update_DNS_records/Update_DNS_records.xml @@ -22,7 +22,7 @@ - The workflow is part of Ansible demo + The workflow is part of Ansible demo. The workflow is proposed to configure servers FQDN on DNS server service_id python 10000 From 1d7bdff83bf85fabc716666d8c34c29ef6660035 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 16 Mar 2021 15:22:16 +0000 Subject: [PATCH 7/7] Clean up process has been finished --- .../.meta_Clean_up_Ansible_demo.xml | 4 ++-- .../Clean_up_Ansible_demo.xml | 2 +- .../.meta_Task_Clean_up_Ansible_server.py | 4 ++-- .../Tasks/.meta_Task_Clean_up_DNS.py | 4 ++-- .../.meta_Task_Clean_up_Grenoble_router.py | 4 ++-- .../Tasks/.meta_Task_Clean_up_IPAM.py | 4 ++-- .../Tasks/.meta_Task_Clean_up_processes.py | 4 ++-- .../Tasks/Task_Clean_up_Ansible_server.py | 1 - .../Tasks/Task_Clean_up_Grenoble_router.py | 1 + .../Tasks/Task_Clean_up_IPAM.py | 1 + .../Tasks/Task_Clean_up_processes.py | 2 +- ...meta_Execute_Ansible_based_microservice.xml | 4 ++-- .../Execute_Ansible_based_microservice.xml | 18 +++++------------- .../Tasks/.meta_Task_Execute_microservice.py | 4 ++-- .../.meta_Get_router_interface.xml | 4 ++-- .../Tasks/.meta_Task_Get_router_interface.py | 4 ++-- .../Tasks/.meta_Task_Update_IPAM.py | 4 ++-- .../Tasks/Task_Get_router_interface.py | 2 +- .../Update_DNS_records/Update_DNS_records.xml | 2 +- 19 files changed, 33 insertions(+), 40 deletions(-) diff --git a/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml b/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml index ff6281685..19a4e7b01 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml +++ b/Ansible_integration/Clean_up_Ansible_demo/.meta_Clean_up_Ansible_demo.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615239724877 + 1615907898289 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615239724874 + 1615907898285 MODEL diff --git a/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml b/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml index ab260a92b..f78273937 100644 --- a/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml +++ b/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml @@ -52,6 +52,6 @@ 10000 5 Clean up Ansible demo - + ANSIBLE|DEMO diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py index f5fe48177..0feb0c64c 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Ansible_server.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615239699329 + 1615907879608 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615239699324 + 1615907879603 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py index 64aa19d25..93a0fd2c6 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_DNS.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615239561899 + 1615907795255 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615239561893 + 1615907795247 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py index e9f244655..6088ec986 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_Grenoble_router.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615239541831 + 1615907785281 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615239541823 + 1615907785275 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py index 6a1dec36a..2646633fc 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_IPAM.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615239511635 + 1615907751215 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615239511623 + 1615907751211 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py index c95e207a4..518166972 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/.meta_Task_Clean_up_processes.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615239723888 + 1615900258251 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615239723884 + 1615900258246 TAG diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py index 020077046..dc32eacf7 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Ansible_server.py @@ -72,7 +72,6 @@ for variable, details in enumerate(workflow_details['variables']['variable']): if details['name'] == 'params.ansible_microservice': details['values'] = list() - RepositoryObject.change_workflow_definition(context['ansible_execute_wf'], workflow_details) diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py index b25f38fe2..fe798cf4a 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_Grenoble_router.py @@ -34,6 +34,7 @@ with open(context['exchange_file'], 'r') as exchange_file: exchange_dict = json.load(exchange_file) +#Define additional variables process_id = context['SERVICEINSTANCEID'] router_device_id = exchange_dict['router_device_id'] subnet = exchange_dict['site_prefix'] diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py index 9ef868469..b892135ce 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_IPAM.py @@ -46,6 +46,7 @@ with open('/opt/fmc_repository/Process/Ansible_integration/microservice_list.json', 'r') as alias_file: context['ms_aliases'] = json.load(alias_file) +#Define additional variables process_id = context['SERVICEINSTANCEID'] ipam_device_id = context['ipam_device_id'] ms_ipam_tenant = context['ms_aliases']['IPAM Tenants'] diff --git a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py index 120dd4a8a..52f0f9108 100755 --- a/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py +++ b/Ansible_integration/Clean_up_Ansible_demo/Process_Clean_up_Ansible_demo/Tasks/Task_Clean_up_processes.py @@ -45,7 +45,7 @@ 'Process/Ansible_integration/Import_from_IPAM/Import_from_IPAM', 'Process/Ansible_integration/Ansible_Integration/Ansible_integration', 'Process/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice', -'Process/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo.xml'): +'Process/Ansible_integration/Clean_up_Ansible_demo/Clean_up_Ansible_demo'): is_finished = True response = Orchestration.list_process_instances_by_service(service['id']) for process in json.loads(Orchestration.content): diff --git a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml index e16619612..4d93dd17b 100755 --- a/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml +++ b/Ansible_integration/Execute_Ansible_based_microservice/.meta_Execute_Ansible_based_microservice.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615239251731 + 1615907649233 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615239251728 + 1615907649227 MODEL diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml index aec158240..bd93f7915 100644 --- a/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml +++ b/Ansible_integration/Execute_Ansible_based_microservice/Execute_Ansible_based_microservice.xml @@ -1,16 +1,8 @@ - - - - ANSIBLE_MS__based_on_grenoble_server_demo_rollback_ - ANSIBLE_MS__based_on_grenoble_server_firewall_ - ANSIBLE_MS__based_on_grenoble_server_ip_address_ - ANSIBLE_MS__based_on_grenoble_server_lldp_ - ANSIBLE_MS__based_on_grenoble_server_route_ - - - + + + @@ -31,12 +23,12 @@ - The workflow is part of Ansible demo. The workflow is proposed to execute Ansible-based microservice inside BPM. It gets microservice name as input and looking for the microservice variables in exchange file + The workflow is part of Ansible demo. The workflow is proposed to execute Ansible-based microservice inside BPM. It gets microservice name as input and looking for the microservice variables in exchange file ("ansible_microservice_variables") service_id python 10000 5 Execute Ansible-based microservice - + ANSIBLE|DEMO diff --git a/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py b/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py index 86f19ec7b..3233cd3f2 100755 --- a/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py +++ b/Ansible_integration/Execute_Ansible_based_microservice/Process_Execute_microservice/Tasks/.meta_Task_Execute_microservice.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1614526064812 + 1615907648205 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1614523680567 + 1615907648198 TAG diff --git a/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml b/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml index bce7e8855..b0e0d1839 100755 --- a/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml +++ b/Ansible_integration/Get_router_interface/.meta_Get_router_interface.xml @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615239832606 + 1615907957053 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615239832602 + 1615907957045 MODEL diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py index 25ca55252..b9521211c 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Get_router_interface.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615239791446 + 1615520396883 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615239791434 + 1615520396875 TAG diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py index 136305bbb..23ff5488a 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/.meta_Task_Update_IPAM.py @@ -7,7 +7,7 @@ DATE_MODIFICATION - 1615239831485 + 1615907956172 REPOSITORY @@ -15,7 +15,7 @@ DATE_CREATION - 1615239831480 + 1615907956166 TAG diff --git a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py index 0d6a78a18..6e56adb36 100755 --- a/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py +++ b/Ansible_integration/Get_router_interface/Process_Get_router_interface/Tasks/Task_Get_router_interface.py @@ -44,7 +44,7 @@ #Create site router Order object RouterOrderObject = Order(exchange_dict['router_device_id']) RouterOrderObject.command_synchronize(300) -time.sleep(3) +time.sleep(10) RouterOrderObject.command_synchronize(300) diff --git a/Ansible_integration/Update_DNS_records/Update_DNS_records.xml b/Ansible_integration/Update_DNS_records/Update_DNS_records.xml index 7eeef3b00..4f6a0d6cf 100644 --- a/Ansible_integration/Update_DNS_records/Update_DNS_records.xml +++ b/Ansible_integration/Update_DNS_records/Update_DNS_records.xml @@ -28,6 +28,6 @@ 10000 5 Update DNS records - + ANSIBLE|DEMO