diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..70bfc27e17dce4bdd2df10ee86b2490ec7789d98 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,15 @@ +repos: + - repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.1.15 + hooks: + # Run the linter. + - id: ruff + args: + - --fix + - --preview + - --ignore=PLR0917,PLR0914 + # Run the formatter. + - id: ruff-format + args: + - --preview diff --git a/Changelog.md b/Changelog.md index 1aeb441f968055ac663593acf4642a7e04be7976..e5624c2a65a0a385f73ba3774b9734479c6db862 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,6 +2,9 @@ All notable changes to this project will be documented in this file. +## [0.6] - 2024-02-07 +- Removed the import workflows from migrations. + ## [0.5] - 2024-01-30 - Changed the router access ts field to FALSE in import router workfolw. diff --git a/data/routers.json b/data/routers.json deleted file mode 100644 index a68e7fe83737c5e893d63f068ef9d24d95a35892..0000000000000000000000000000000000000000 --- a/data/routers.json +++ /dev/null @@ -1,57 +0,0 @@ -[ - { - "router_site": "AMS", - "hostname": "rt1", - "ts_port": 22111, - "router_vendor": "juniper", - "router_role": "pe", - "router_lo_ipv4_address": "62.40.119.2", - "router_lo_ipv6_address": "2001:798:1ab::2", - "router_lo_iso_address": "49.51e5.0001.0620.4011.9002.00", - "is_ias_connected": true - }, - { - "router_site": "ATH", - "hostname": "rt1", - "ts_port": 22111, - "router_vendor": "juniper", - "router_role": "pe", - "router_lo_ipv4_address": "62.40.119.1", - "router_lo_ipv6_address": "2001:798:1ab::1", - "router_lo_iso_address": "49.51e5.0001.0620.4011.9001.00", - "is_ias_connected": false - }, - { - "router_site": "BIL", - "hostname": "rt1", - "ts_port": 22111, - "router_vendor": "juniper", - "router_role": "pe", - "router_lo_ipv4_address": "62.40.119.3", - "router_lo_ipv6_address": "2001:798:1ab::3", - "router_lo_iso_address": "49.51e5.0001.0620.4011.9003.00", - "is_ias_connected": false - }, - { - "router_site": "DUB", - "hostname": "rt1", - "ts_port": 22111, - "router_vendor": "juniper", - "router_role": "pe", - "router_lo_ipv4_address": "62.40.119.4", - "router_lo_ipv6_address": "2001:798:1ab::4", - "router_lo_iso_address": "49.51e5.0001.0620.4011.9004.00", - "is_ias_connected": false - }, - { - "router_site": "LON", - "hostname": "rt1", - "ts_port": 22111, - "router_vendor": "juniper", - "router_role": "pe", - "router_lo_ipv4_address": "62.40.119.5", - "router_lo_ipv6_address": "2001:798:1ab::5", - "router_lo_iso_address": "49.51e5.0001.0620.4011.9005.00", - "is_ias_connected": true - } -] diff --git a/data/sites.json b/data/sites.json deleted file mode 100644 index 1ce7427645053e6c6774534e895293178e04097f..0000000000000000000000000000000000000000 --- a/data/sites.json +++ /dev/null @@ -1,62 +0,0 @@ -[ - { - "site_name": "AMS", - "site_city": "Amsterdam", - "site_country": "The Netherlands", - "site_country_code": "NL", - "site_latitude": 52.35640299542275, - "site_longitude": 4.952931412236851, - "site_bgp_community_id": 13, - "site_internal_id": 2, - "site_tier": "1", - "site_ts_address": "62.40.111.195" - }, - { - "site_name": "ATH", - "site_city": "Athens", - "site_country": "Greece", - "site_country_code": "GR", - "site_latitude": 37.973573902105514, - "site_longitude": 23.74551842723506, - "site_bgp_community_id": 14, - "site_internal_id": 4, - "site_tier": "1", - "site_ts_address": "62.40.111.196" - }, - { - "site_name": "BIL", - "site_city": "Bilbao", - "site_country": "Spain", - "site_country_code": "ES", - "site_latitude": 43.32311388825037, - "site_longitude": -2.996764830318336, - "site_bgp_community_id": 47, - "site_internal_id": 3, - "site_tier": "1", - "site_ts_address": "62.40.111.197" - }, - { - "site_name": "DUB", - "site_city": "Dublin", - "site_country": "Ireland", - "site_country_code": "IE", - "site_latitude": 53.29025463849949, - "site_longitude": -6.4207320574310165, - "site_bgp_community_id": 20, - "site_internal_id": 5, - "site_tier": "1", - "site_ts_address": "62.40.111.198" - }, - { - "site_name": "LON", - "site_city": "London", - "site_country": "United Kingdom", - "site_country_code": "UK", - "site_latitude": 51.49821912962843, - "site_longitude": -0.015228819041376851, - "site_bgp_community_id": 28, - "site_internal_id": 1, - "site_tier": "1", - "site_ts_address": "62.40.111.199" - } -] \ No newline at end of file diff --git a/data/trunks.json b/data/trunks.json deleted file mode 100644 index f1c2b8720358dc0d63aa9863af417f3818427eac..0000000000000000000000000000000000000000 --- a/data/trunks.json +++ /dev/null @@ -1,300 +0,0 @@ -[ - { - "id": "LGS-00001", - "config": { - "common": { - "link_speed": "100G", - "minimum_links": 1, - "isis_metric": 500, - "type": "Leased" - }, - "nodeA": { - "name": "rt1.ath.gr.lab.office.geant.net", - "ae_name": "ae0", - "port_sid": "LGA-00001", - "members": [ - { - "interface_name": "et-0/0/2", - "interface_description": "et-0/0/2" - } - ], - "ipv4_address": "62.40.98.0/31", - "ipv6_address": "2001:798:cc::1/126" - }, - "nodeB": { - "name": "rt1.ams.nl.lab.office.geant.net", - "ae_name": "ae0", - "port_sid": "LGA-00002", - "members": [ - { - "interface_name": "et-9/0/2", - "interface_description": "et-9/0/2" - } - ], - "ipv4_address": "62.40.98.1/31", - "ipv6_address": "2001:798:cc::2/126" - } - } - }, - { - "id": "LGS-00003", - "config": { - "common": { - "link_speed": "100G", - "minimum_links": 1, - "isis_metric": 500, - "type": "Leased" - }, - "nodeA": { - "name": "rt1.ath.gr.lab.office.geant.net", - "ae_name": "ae1", - "port_sid": "LGA-00005", - "members": [ - { - "interface_name": "et-0/0/1", - "interface_description": "et-0/0/1" - } - ], - "ipv4_address": "62.40.98.2/31", - "ipv6_address": "2001:798:cc::9/126" - }, - "nodeB": { - "name": "rt1.lon.uk.lab.office.geant.net", - "ae_name": "ae1", - "port_sid": "LGA-00006", - "members": [ - { - "interface_name": "et-2/0/0", - "interface_description": "et-2/0/0" - } - ], - "ipv4_address": "62.40.98.3/31", - "ipv6_address": "2001:798:cc::a/126" - } - } - }, - { - "id": "LGS-00004", - "config": { - "common": { - "link_speed": "400G", - "minimum_links": 1, - "isis_metric": 100, - "type": "Dark_fiber" - }, - "nodeA": { - "name": "rt1.lon.uk.lab.office.geant.net", - "ae_name": "ae6", - "port_sid": "LGA-00004", - "members": [ - { - "interface_name": "et-1/0/4", - "interface_description": "et-1/0/4" - } - ], - "ipv4_address": "62.40.98.55/31", - "ipv6_address": "2001:798:cc::6e/126" - }, - "nodeB": { - "name": "rt1.ams.nl.lab.office.geant.net", - "ae_name": "ae6", - "port_sid": "LGA-00004", - "members": [ - { - "interface_name": "et-3/0/4", - "interface_description": "et-3/0/4" - } - ], - "ipv4_address": "62.40.98.54/31", - "ipv6_address": "2001:798:cc::6d/126" - } - } - }, - { - "id": "LGS-00006", - "config": { - "common": { - "link_speed": "100G", - "minimum_links": 1, - "isis_metric": 500, - "type": "Dark_fiber" - }, - "nodeA": { - "name": "rt1.ams.nl.lab.office.geant.net", - "ae_name": "ae1", - "port_sid": "LGA-00011", - "members": [ - { - "interface_name": "et-9/0/5", - "interface_description": "et-9/0/5" - } - ], - "ipv4_address": "62.40.98.4/31", - "ipv6_address": "2001:798:cc::d/126" - }, - "nodeB": { - "name": "rt1.bil.es.lab.office.geant.net", - "ae_name": "ae1", - "port_sid": "LGA-00012", - "members": [ - { - "interface_name": "et-0/0/0", - "interface_description": "et-0/0/0" - } - ], - "ipv4_address": "62.40.98.5/31", - "ipv6_address": "2001:798:cc::e/126" - } - } - }, - { - "id": "LGS-00007", - "config": { - "common": { - "link_speed": "100G", - "minimum_links": 1, - "isis_metric": 500, - "type": "Dark_fiber" - }, - "nodeA": { - "name": "rt1.lon.uk.lab.office.geant.net", - "ae_name": "ae0", - "port_sid": "LGA-00013", - "members": [ - { - "interface_name": "et-5/2/0", - "interface_description": "et-5/2/0" - } - ], - "ipv4_address": "62.40.98.17/31", - "ipv6_address": "2001:798:cc::22/126" - }, - "nodeB": { - "name": "rt1.dub.ie.lab.office.geant.net", - "ae_name": "ae0", - "port_sid": "LGA-00014", - "members": [ - { - "interface_name": "et-0/0/1", - "interface_description": "et-0/0/1" - } - ], - "ipv4_address": "62.40.98.16/31", - "ipv6_address": "2001:798:cc::21/126" - } - } - }, - { - "id": "LGS-00008", - "config": { - "common": { - "link_speed": "100G", - "minimum_links": 1, - "isis_metric": 500, - "type": "Dark_fiber" - }, - "nodeA": { - "name": "rt1.bil.es.lab.office.geant.net", - "ae_name": "ae2", - "port_sid": "LGA-00016", - "members": [ - { - "interface_name": "et-0/0/1", - "interface_description": "et-0/0/1" - } - ], - "ipv4_address": "62.40.98.8/31", - "ipv6_address": "2001:798:cc::15/126" - }, - "nodeB": { - "name": "rt1.dub.ie.lab.office.geant.net", - "ae_name": "ae2", - "port_sid": "LGA-00015", - "members": [ - { - "interface_name": "et-0/0/0", - "interface_description": "et-0/0/0" - } - ], - "ipv4_address": "62.40.98.9/31", - "ipv6_address": "2001:798:cc::16/126" - } - } - }, - { - "id": "LGS-00012", - "config": { - "common": { - "link_speed": "100G", - "minimum_links": 1, - "isis_metric": 500, - "type": "Dark_fiber" - }, - "nodeA": { - "name": "rt1.ams.nl.lab.office.geant.net", - "ae_name": "ae5", - "port_sid": "LGA-00023", - "members": [ - { - "interface_name": "et-1/0/2", - "interface_description": "et-1/0/2" - } - ], - "ipv4_address": "62.40.98.52/31", - "ipv6_address": "2001:798:cc::69/126" - }, - "nodeB": { - "name": "rt2.lon.uk.lab.office.geant.net", - "ae_name": "ae1", - "port_sid": "LGA-00024", - "members": [ - { - "interface_name": "et-0/0/0", - "interface_description": "et-0/0/0" - } - ], - "ipv4_address": "62.40.98.53/31", - "ipv6_address": "2001:798:cc::6a/126" - } - } - }, - { - "id": "LGS-00013", - "config": { - "common": { - "link_speed": "100G", - "minimum_links": 1, - "isis_metric": 500, - "type": "Dark_fiber" - }, - "nodeA": { - "name": "rt1.lon.uk.lab.office.geant.net", - "ae_name": "ae3", - "port_sid": "LGA-00025", - "members": [ - { - "interface_name": "et-0/0/2", - "interface_description": "et-0/0/2" - } - ], - "ipv4_address": "62.40.98.36/31", - "ipv6_address": "2001:798:cc::65/126" - }, - "nodeB": { - "name": "rt2.lon.uk.lab.office.geant.net", - "ae_name": "ae2", - "port_sid": "LGA-00026", - "members": [ - { - "interface_name": "et-0/0/1", - "interface_description": "et-0/0/1" - } - ], - "ipv4_address": "62.40.98.37/31", - "ipv6_address": "2001:798:cc::66/126" - } - } - } -] - - diff --git a/gso/migrations/versions/2023-11-21_0c31b60487c8_add_site_workflows.py b/gso/migrations/versions/2023-11-21_0c31b60487c8_add_site_workflows.py index 3373f1d4dbe86d2ab93dbe785983fcdc76f0d929..d0c4980fa521248fce89230095e8e11a1dd4b00b 100644 --- a/gso/migrations/versions/2023-11-21_0c31b60487c8_add_site_workflows.py +++ b/gso/migrations/versions/2023-11-21_0c31b60487c8_add_site_workflows.py @@ -36,12 +36,6 @@ new_workflows = [ "description": "Modify Site", "product_type": "Site" }, - { - "name": "import_site", - "target": "CREATE", - "description": "Import Site", - "product_type": "Site" - } ] diff --git a/gso/migrations/versions/2023-11-21_6dbd6c4c04b4_add_ip_trunk_workflows.py b/gso/migrations/versions/2023-11-21_6dbd6c4c04b4_add_ip_trunk_workflows.py index 14165a6f66f6c24189abfd5e970a0ceb28b1b423..b2ae1da22f4836940059267a31ed4be661dfd300 100644 --- a/gso/migrations/versions/2023-11-21_6dbd6c4c04b4_add_ip_trunk_workflows.py +++ b/gso/migrations/versions/2023-11-21_6dbd6c4c04b4_add_ip_trunk_workflows.py @@ -30,12 +30,6 @@ new_workflows = [ "description": "Terminate IPtrunk", "product_type": "Iptrunk" }, - { - "name": "import_iptrunk", - "target": "CREATE", - "description": "Import iptrunk", - "product_type": "Iptrunk" - }, { "name": "migrate_iptrunk", "target": "MODIFY", diff --git a/gso/migrations/versions/2023-11-21_815033570ad7_add_router_workflows.py b/gso/migrations/versions/2023-11-21_815033570ad7_add_router_workflows.py index 02cb440d4f234d7298c787f13340baa0f3902c21..1d996616d410081c01938ade185fc45455e48046 100644 --- a/gso/migrations/versions/2023-11-21_815033570ad7_add_router_workflows.py +++ b/gso/migrations/versions/2023-11-21_815033570ad7_add_router_workflows.py @@ -30,12 +30,6 @@ new_workflows = [ "description": "Terminate router", "product_type": "Router" }, - { - "name": "import_router", - "target": "CREATE", - "description": "Import router", - "product_type": "Router" - } ] diff --git a/gso/utils/workflow_steps.py b/gso/utils/workflow_steps.py index 23126f26c7fac70e57c2a9e1dfef060fa5aec11e..5890d62b76d042eb8d6ff9c95383ab8cbbedf733 100644 --- a/gso/utils/workflow_steps.py +++ b/gso/utils/workflow_steps.py @@ -77,7 +77,7 @@ def set_isis_to_90000(subscription: Iptrunk, process_id: UUIDstr, callback_route } execute_playbook( - playbook_name="playbooks.yaml", + playbook_name="iptrunks.yaml", callback_route=callback_route, inventory=f"{subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_fqdn}\n" f"{subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_fqdn}\n", diff --git a/gso/workflows/iptrunk/migrate_iptrunk.py b/gso/workflows/iptrunk/migrate_iptrunk.py index 880f62f99dff23942a00644c758ad80cb9153aaf..810041cd89a7a5c7104ddd8a8ab5f368ac5ac068 100644 --- a/gso/workflows/iptrunk/migrate_iptrunk.py +++ b/gso/workflows/iptrunk/migrate_iptrunk.py @@ -7,7 +7,6 @@ configured to run from A to C. B is then no longer associated with this IP trunk import copy import json import re -from typing import NoReturn from uuid import uuid4 from orchestrator import step, workflow @@ -85,10 +84,12 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: current_router_site = Router.from_subscription(router_id).router.router_site.subscription old_side_site = Router.from_subscription(migrate_form_input.replace_side).router.router_site if ( - migrate_form_input.migrate_to_different_site - and current_router_site.subscription_id == old_side_site.owner_subscription_id + not migrate_form_input.migrate_to_different_site + and current_router_site.subscription_id != old_side_site.owner_subscription_id ): + # We want to stay on the same site, so all routers that are in different sites get skipped. continue + # If migrate_to_different_site is true, we can add ALL routers to the result map routers[str(router_id)] = router["description"] new_router_enum = Choice("Select a new router", zip(routers.keys(), routers.items(), strict=True)) # type: ignore[arg-type] @@ -148,7 +149,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: new_lag_member_interfaces: ae_members # type: ignore[valid-type] @validator("new_lag_interface", allow_reuse=True, pre=True, always=True) - def lag_interface_proper_name(cls, new_lag_interface: str) -> str | NoReturn: + def lag_interface_proper_name(cls, new_lag_interface: str) -> str: if get_router_vendor(new_router) == RouterVendor.JUNIPER: juniper_lag_re = re.compile("^ae\\d{1,2}$") if not juniper_lag_re.match(new_lag_interface): diff --git a/pyproject.toml b/pyproject.toml index 5a2ca81c14941c381684b2b8d626f7b1c8323a3e..5162b2ca226c9a3181ee6942ec7153a57d909b25 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,6 +35,7 @@ ignore = [ "COM812", "D203", "D213", + "ISC001", "N805", "PLR0913", "PLR0904", diff --git a/requirements.txt b/requirements.txt index 87dc706a5986c5833967ea7fae184a5228dad1ca..73bb46ff0e83e703d78bca7c58a728f95e7fa696 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,3 +19,4 @@ sphinx==7.2.6 sphinx-rtd-theme==1.3.0 urllib3_mock==0.3.3 pytest-asyncio==0.23.3 +pre-commit~=3.6.0 diff --git a/setup.py b/setup.py index 4c5d9bcad270fddcf073655a91c62145ae02e02a..85e9b36696de7be28dea8acf89e2fddaa74cbcba 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import find_packages, setup setup( name="geant-service-orchestrator", - version="0.5", + version="0.6", author="GÉANT", author_email="swd@geant.org", description="GÉANT Service Orchestrator", diff --git a/test/workflows/iptrunk/test_migrate_iptrunk.py b/test/workflows/iptrunk/test_migrate_iptrunk.py index 8dc3acf02b5cf854ab8de257bed30647acdf8311..c7ca62bf11a89dbde7aa9d3bf2297eef2c5651cd 100644 --- a/test/workflows/iptrunk/test_migrate_iptrunk.py +++ b/test/workflows/iptrunk/test_migrate_iptrunk.py @@ -76,6 +76,7 @@ def migrate_form_input( { "tt_number": faker.tt_number(), "replace_side": replace_side, + "migrate_to_different_site": True, }, { "new_node": new_router,