Skip to content
Snippets Groups Projects
Verified Commit fa7aec19 authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

Move GSO service version config into oss-params

parent 4bc757f7
No related branches found
No related tags found
1 merge request!424Resolve NAT-1048 "Service version"
Pipeline #94345 passed
{
"IP_TRUNK": {
"version": {
"1.0": "Base Version",
"1.1": "Minor Upgrade"
},
"default_version": "1.0"
},
"GEANT_IP": {
"version": {
"1.0": "Base Version",
"2.0": "Major Upgrade"
},
"default_version": "1.0"
}
}
...@@ -130,5 +130,21 @@ ...@@ -130,5 +130,21 @@
"MOODI": { "MOODI": {
"host": "moodi.test.gap.geant.org", "host": "moodi.test.gap.geant.org",
"moodi_enabled": true "moodi_enabled": true
},
"SERVICE_VERSIONS": {
"IP_TRUNK": {
"version": {
"1.0": "Base Version",
"1.1": "Minor Upgrade"
},
"default_version": "1.0"
},
"GEANT_IP": {
"version": {
"1.0": "Base Version",
"2.0": "Major Upgrade"
},
"default_version": "1.0"
}
} }
} }
...@@ -228,6 +228,20 @@ class MoodiParams(BaseSettings): ...@@ -228,6 +228,20 @@ class MoodiParams(BaseSettings):
moodi_enabled: bool = False moodi_enabled: bool = False
class ServiceConfig(BaseSettings):
"""Base configuration object for setting version information of a service."""
version: dict[str, str]
default_version: str
class ServiceVersionConfig(BaseSettings):
"""Services offered by GSO that support multiple versions."""
IP_TRUNK: ServiceConfig
GEANT_IP: ServiceConfig
class OSSParams(BaseSettings): class OSSParams(BaseSettings):
"""The set of parameters required for running GSO.""" """The set of parameters required for running GSO."""
...@@ -242,6 +256,7 @@ class OSSParams(BaseSettings): ...@@ -242,6 +256,7 @@ class OSSParams(BaseSettings):
KENTIK: KentikParams KENTIK: KentikParams
SENTRY: SentryParams | None = None SENTRY: SentryParams | None = None
MOODI: MoodiParams MOODI: MoodiParams
SERVICE_VERSIONS: ServiceVersionConfig
def load_oss_params() -> OSSParams: def load_oss_params() -> OSSParams:
...@@ -250,29 +265,7 @@ def load_oss_params() -> OSSParams: ...@@ -250,29 +265,7 @@ def load_oss_params() -> OSSParams:
return OSSParams(**json.loads(file.read())) return OSSParams(**json.loads(file.read()))
class ServiceConfig(BaseSettings):
"""Configurations for base gso service."""
version: dict[str, str]
default_version: str
class GSOServiceConfig(BaseSettings):
"""Configuration for the GSO service."""
IP_TRUNK: ServiceConfig
GEANT_IP: ServiceConfig
def load_gso_service_config() -> GSOServiceConfig:
"""Load the GSO service configuration from the environment variable."""
"""Look for ``GSO_SERVICE_CONFIG`` in the environment and load the parameters from that file."""
with Path(os.environ["GSO_SERVICE_CONFIG"]).open(encoding="utf-8") as file:
return GSOServiceConfig(**json.loads(file.read()))
celery_settings = CelerySettings() celery_settings = CelerySettings()
if __name__ == "__main__": if __name__ == "__main__":
logger.debug(load_oss_params()) logger.debug(load_oss_params())
logger.debug(load_gso_service_config())
...@@ -62,7 +62,7 @@ from gso.services.subscriptions import ( ...@@ -62,7 +62,7 @@ from gso.services.subscriptions import (
generate_unique_id, generate_unique_id,
get_non_terminated_iptrunk_subscriptions, get_non_terminated_iptrunk_subscriptions,
) )
from gso.settings import load_gso_service_config, load_oss_params from gso.settings import load_oss_params
from gso.utils.helpers import ( from gso.utils.helpers import (
available_interfaces_choices, available_interfaces_choices,
available_lags_choices, available_lags_choices,
...@@ -86,7 +86,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator: ...@@ -86,7 +86,7 @@ def initial_input_form_generator(product_name: str) -> FormGenerator:
routers = {str(router["subscription_id"]): router["description"] for router in active_and_provisioning_routers} routers = {str(router["subscription_id"]): router["description"] for router in active_and_provisioning_routers}
# Get version choices from config # Get version choices from config
iptrunk_versions = list(load_gso_service_config().IP_TRUNK.version.keys()) iptrunk_versions = list(load_oss_params().SERVICE_VERSIONS.IP_TRUNK.version.keys())
iptrunk_version_choices = Choice("Select version", [(v, v) for v in iptrunk_versions]) # type: ignore[arg-type] iptrunk_version_choices = Choice("Select version", [(v, v) for v in iptrunk_versions]) # type: ignore[arg-type]
class CreateIptrunkForm(FormPage): class CreateIptrunkForm(FormPage):
......
...@@ -30,7 +30,7 @@ from gso.products.product_blocks.iptrunk import ( ...@@ -30,7 +30,7 @@ from gso.products.product_blocks.iptrunk import (
from gso.products.product_types.iptrunk import Iptrunk from gso.products.product_types.iptrunk import Iptrunk
from gso.services.lso_client import LSOState, lso_interaction from gso.services.lso_client import LSOState, lso_interaction
from gso.services.netbox_client import NetboxClient from gso.services.netbox_client import NetboxClient
from gso.settings import load_gso_service_config from gso.settings import load_oss_params
from gso.utils.helpers import ( from gso.utils.helpers import (
available_interfaces_choices, available_interfaces_choices,
available_interfaces_choices_including_current_members, available_interfaces_choices_including_current_members,
...@@ -88,7 +88,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator: ...@@ -88,7 +88,7 @@ def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
subscription = Iptrunk.from_subscription(subscription_id) subscription = Iptrunk.from_subscription(subscription_id)
# Get version choices from config (single-select dropdown) # Get version choices from config (single-select dropdown)
iptrunk_versions = list(load_gso_service_config().IP_TRUNK.version.keys()) iptrunk_versions = list(load_oss_params().SERVICE_VERSIONS.IP_TRUNK.version.keys())
iptrunk_version_choices = Choice("Select version", [(v, v) for v in iptrunk_versions]) # type: ignore[arg-type] iptrunk_version_choices = Choice("Select version", [(v, v) for v in iptrunk_versions]) # type: ignore[arg-type]
class ModifyIptrunkForm(FormPage): class ModifyIptrunkForm(FormPage):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment