Skip to content

Commit

Permalink
Allow for scoping of the VO property (#315)
Browse files Browse the repository at this point in the history
* Allow for scoping of the VO property

Support the "egi.VO" as default property name, fallback to "VO" if not
available. See fedcloud-tf meeting notes for 2023-10-24 at https://docs.google.com/document/d/1PlTXexteaMz7Qw8gYuou0WpTxlsz-kHS_fbgGZrwR7Y/edit#heading=h.rrn6n11rq6zt

* Black
  • Loading branch information
enolfc authored Oct 24, 2023
1 parent 33c141b commit 905cd12
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 7 deletions.
23 changes: 16 additions & 7 deletions cloud-info/cloud_info_catchall/share_discovery.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,21 @@ def __init__(self, config, secret):
def build_share(self, project, access_token):
return {"auth": {"project_id": project["id"]}}

def get_project_vo(self, project):
if not project.get("enabled", False):
logging.warning(
f"Discarding project {project['name']} as it is not enabled"
)
return None
vo = project.get("egi.VO", None)
if not vo:
vo = project.get("VO", None)
if not vo:
logging.warning(
f"Discarding project {project['name']} as it does not have VO property"
)
return vo

def get_token_shares(self):
access_token = self.get_token()
# rely on fedcloudclient for getting token
Expand All @@ -32,14 +47,8 @@ def get_token_shares(self):
return shares
projects = fedcli.get_projects_from_single_site(self.auth_url, token)
for p in projects:
vo = p.get("VO", None)
vo = self.get_project_vo(p)
if not vo:
logging.warning(
"Discarding project %s as it does not have VO property", p["name"]
)
continue
if not p.get("enabled", False):
logging.warning("Discarding project %s as it is not enabled", p["name"])
continue
shares[vo] = self.build_share(p, access_token)
self.config_shares(shares, access_token)
Expand Down
32 changes: 32 additions & 0 deletions cloud-info/cloud_info_catchall/test_share_discovery.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,38 @@ class ShareDiscoveryTest(unittest.TestCase):
def setUp(self):
self.discoverer = self.DISCOVERER_CLASS(self.CONFIG, self.SECRET)

def test_get_project_vo_disabled(self):
p = {
"enabled": False,
"name": "foo.eu",
"VO": "foo",
}
self.assertEqual(self.discoverer.get_project_vo(p), None)

def test_get_project_vo_egi_property(self):
p = {
"enabled": True,
"name": "foo.eu",
"VO": "bar",
"egi.VO": "foo",
}
self.assertEqual(self.discoverer.get_project_vo(p), "foo")

def test_get_project_vo_property(self):
p = {
"enabled": True,
"name": "foo.eu",
"VO": "bar",
}
self.assertEqual(self.discoverer.get_project_vo(p), "bar")

def test_get_project_no_vo_property(self):
p = {
"enabled": True,
"name": "foo.eu",
}
self.assertEqual(self.discoverer.get_project_vo(p), None)

@patch("fedcloudclient.endpoint.get_projects_from_single_site")
@patch("fedcloudclient.endpoint.retrieve_unscoped_token")
def test_token_shares(self, m_fedcli_token, m_proj):
Expand Down

0 comments on commit 905cd12

Please sign in to comment.