From 11ee0478ff0f2c577db45e46cdc6d77c1a8b8bab Mon Sep 17 00:00:00 2001 From: Mohammad Torkashvand <mohammad.torkashvand@geant.org> Date: Thu, 25 Jan 2024 09:32:25 +0100 Subject: [PATCH] add API key for calling GSO endpoint --- README.md | 3 ++- ansible_inventory_generator/app.py | 4 +++- ansible_inventory_generator/config.py | 1 + example.env | 1 + setup.py | 2 +- tests/test_inventory_generator.py | 1 + 6 files changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8437d31..75220d7 100644 --- a/README.md +++ b/README.md @@ -21,5 +21,6 @@ export api_url=http://127.0.0.1:8080/api/v1/subscriptions/routers export host_vars_dir=/path/to/base/hostvars/dir export vars_file_name=wfo_vars.yaml export hosts_file_dir=/path/to/base/hosts/dir +export gso_api_key=get_this_token_from_gso_admin_based_on_your_environment -ansible_inventory_generator \ No newline at end of file +ansible_inventory_generator diff --git a/ansible_inventory_generator/app.py b/ansible_inventory_generator/app.py index 7c4d1fb..7b535c2 100644 --- a/ansible_inventory_generator/app.py +++ b/ansible_inventory_generator/app.py @@ -100,7 +100,9 @@ def safe_write(temp_dir: Path, old_vars_dir: Path, old_hosts_file: Path) -> Gene def generate_inventory_from_api() -> None: settings = load_settings() """Generate Ansible inventory from API.""" - response = requests.get(settings.api_url, timeout=API_TIMEOUT_SEC) + response = requests.get( + settings.api_url, timeout=API_TIMEOUT_SEC, headers={"Authorization": f"Bearer {settings.gso_api_key}"} + ) response.raise_for_status() try: router_subscriptions = response.json() diff --git a/ansible_inventory_generator/config.py b/ansible_inventory_generator/config.py index b94b8ce..35e125b 100644 --- a/ansible_inventory_generator/config.py +++ b/ansible_inventory_generator/config.py @@ -6,6 +6,7 @@ class Settings(BaseSettings): host_vars_dir: str vars_file_name: str hosts_file_dir: str + gso_api_key: str class Config: env_file = "../.env" diff --git a/example.env b/example.env index 4654690..5900559 100644 --- a/example.env +++ b/example.env @@ -2,3 +2,4 @@ api_url=http://127.0.0.1:8080/api/v1/subscriptions/routers host_vars_dir=/path/to/base/hostvars/dir vars_file_name=wfo_vars.yaml hosts_file_dir=/path/to/base/hosts/dir +gso_api_key=askjdhaskhdaksjhdkajshdkashd diff --git a/setup.py b/setup.py index f676b0f..7ffd35e 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setup( name="ansible_inventory_generator", version="0.1", author="GEANT", - author_email="swd@geant.org", + author_email="gap@geant.org", description="Ansible inventory generator for WFO", url="https://gitlab.software.geant.org/goat/gap/ansible_inventory_generator", packages=find_packages(), diff --git a/tests/test_inventory_generator.py b/tests/test_inventory_generator.py index a309c7b..2b5fc13 100644 --- a/tests/test_inventory_generator.py +++ b/tests/test_inventory_generator.py @@ -157,6 +157,7 @@ def setup_test(tmp_dir, mocked_subscription_api_data): host_vars_dir=str(tmp_dir), vars_file_name="wfo_vars.yaml", hosts_file_dir=str(tmp_dir), + gso_api_key="random_gso_api_key", ) mock_get.return_value.json.return_value = mocked_subscription_api_data -- GitLab