Skip to content

Commit

Permalink
Fallback to site config if no property
Browse files Browse the repository at this point in the history
  • Loading branch information
enolfc committed Sep 19, 2024
1 parent c3ab07c commit a12c05c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
1 change: 1 addition & 0 deletions cloud-info/cloud_info_catchall/config_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ def main():
"site_name": os.environ["SITE_NAME"],
"token_url": os.environ.get("TOKEN_URL", ""),
"vo_dir": os.environ.get("VO_SECRETS_PATH", ""),
"site_config": os.environ.get("CLOUD_INFO_CONFIG", ""),
}
secrets = read_secrets(secrets_file)
shares_config = generate_shares_config(config, secrets)
Expand Down
28 changes: 26 additions & 2 deletions cloud-info/cloud_info_catchall/share_discovery.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,29 @@ def __init__(self, config, secret):
self.identity_provider = config["identity_provider"]
self.protocol = config["protocol"]
self.secret = secret
self.site_config = config.get("site_config", None)
self._site_mapping = {}

def get_site_mapping(self):
if self._site_mapping:
return self._site_mapping
if not self.site_config:
return {}
with open(self.site_config, "r") as f:
cloud_info_config = yaml.load(f.read(), Loader=yaml.SafeLoader)
shares = cloud_info_config["compute"]["shares"]
for share in shares.values():
project = share.get("auth", {}).get("project_id", None)
if project:
self._site_mapping[project] = share.get("name", None)
return self._site_mapping

def build_share(self, project, access_token):
return {"auth": {"project_id": project["id"]}}

def site_config_vo(self, project):
return self.get_site_mapping().get(project["id"], None)

def get_project_vos(self, project):
if not project.get("enabled", False):
logging.warning(
Expand All @@ -29,9 +48,14 @@ def get_project_vos(self, project):
vo = project.get("VO", None)
if not vo:
logging.warning(
f"Discarding project {project['name']} as it does not have VO property"
f"Project {project['name']} as it does not have VO property"
)
return []
vo = self.site_config_vo(project)
if not vo:
logging.warning(
f"Discarding project {project['name']} as it's not known"
)
return []
return vo.split(",")

def get_token_shares(self):
Expand Down

0 comments on commit a12c05c

Please sign in to comment.