Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
marjo-luc committed Aug 28, 2024
1 parent a83e389 commit fd01642
Show file tree
Hide file tree
Showing 4 changed files with 135 additions and 1 deletion.
129 changes: 129 additions & 0 deletions maap/Secrets.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
import requests
import logging
import json
from maap.utils import endpoints
from maap.utils import requests_utils


class Secrets:
"""
Functions used for Member secrets API interfacing
"""
def __init__(self, config, api_header):
self._api_header = api_header
# self._members_endpoint = members_endpoint
self._members_endpoint = "https://api.dit.maap-project.org/api/members/self"
self._logger = logging.getLogger(__name__)


def get_secrets(self):
"""
Returns a list of secrets for a given user.
Returns:
list: Secret names for a given user.
"""
try:
response = requests.get(
url = f"{self._members_endpoint}/{endpoints.MEMBERS_SECRETS}",
headers=self._api_header
)

return json.loads(response.text)

except Exception as ex:
raise(f"Error retrieving secrets: {ex}")


def get_secret(self, secret_name=None):
"""
Returns secret value for provided secret name.
Args:
secret_name (str, required): Secret name.
secret_value (str, optional): Secret value.
Returns:
dict: Secret name and value.
Raises:
ValueError: If secret name is not provided.
"""
try:
if secret_name is None:
raise ValueError("Failed to get secret value. Please provide secret name.")

response = requests.get(
url = f"{self._members_endpoint}/{endpoints.MEMBERS_SECRETS}/{secret_name}",
headers=self._api_header
)

return json.loads(response.text)

except Exception as ex:
raise(f"Error retrieving secret: {ex}")


def add_secret(self, secret_name=None, secret_value=None):
"""
Adds a secret. Secret name must be provided. Secret value may be null.
Args:
secret_name (str, required): Secret name.
secret_value (str, optional): Secret value.
Returns:
dict: Containing name and value of secret that was just added.
Raises:
ValueError: If secret name is not provided.
"""
try:
if secret_name is None:
raise ValueError("Failed to add secret. Please provide secret name.")

response = requests.post(
url = f"{self._members_endpoint}/{endpoints.MEMBERS_SECRETS}",
headers=self._api_header,
data=json.dumps({"secret_name": secret_name, "secret_value": secret_value})
)

return json.loads(response.text)

except Exception as ex:
raise(f"Error adding secret: {ex}")



def delete_secret(self, secret_name=None):
"""
Deletes a secret.
Args:
secret_name (str, required): Secret name.
Returns:
dict: Containing response code and message indicating whether or not deletion was successful.
Raises:
ValueError: If secret name is not provided.
"""
try:
if secret_name is None:
raise ValueError("Failed to delete secret. Please provide secret name.")

response = requests.delete(
url = f"{self._members_endpoint}/{endpoints.MEMBERS_SECRETS}/{secret_name}",
headers=self._api_header
)

return json.loads(response.text)

except Exception as ex:
raise(f"Error deleting secret: {ex}")






1 change: 1 addition & 0 deletions maap/config_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ def __init__(self, maap_host):
self.algorithm_build = self._get_api_endpoint("algorithm_build")
self.mas_algo = self._get_api_endpoint("mas_algo")
self.dps_job = self._get_api_endpoint("dps_job")
self.member_secrets = self._get_api_endpoint("member_secrets")
self.member_dps_token = self._get_api_endpoint("member_dps_token")
self.requester_pays = self._get_api_endpoint("requester_pays")
self.edc_credentials = self._get_api_endpoint("edc_credentials")
Expand Down
4 changes: 3 additions & 1 deletion maap/maap.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from maap.utils import algorithm_utils
from maap.Profile import Profile
from maap.AWS import AWS
from maap.Secrets import Secrets
from maap.dps.DpsHelper import DpsHelper
from maap.utils import endpoints

Expand All @@ -40,10 +41,11 @@ def __init__(self, maap_host=os.getenv('MAAP_API_HOST', 'api.maap-project.org'))
self.config.workspace_bucket_credentials,
self._get_api_header()
)
self.secrets = Secrets(self.config, self._get_api_header(content_type="application/json"))

def _get_api_header(self, content_type=None):

api_header = {'Accept': content_type if content_type else self.config.content_type, 'token': self.config.maap_token}
api_header = {'Accept': content_type if content_type else self.config.content_type, 'token': self.config.maap_token, 'Content-Type': content_type if content_type else self.config.content_type}

if os.environ.get("MAAP_PGT"):
api_header['proxy-ticket'] = os.environ.get("MAAP_PGT")
Expand Down
2 changes: 2 additions & 0 deletions maap/utils/endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@
DPS_JOB_DISMISS = "cancel"
DPS_JOB_LIST = "list"
CMR_ALGORITHM_DATA = "data"

MEMBERS_SECRETS = "secrets"

0 comments on commit fd01642

Please sign in to comment.