Skip to content

Commit

Permalink
update impl to include cookies
Browse files Browse the repository at this point in the history
  • Loading branch information
ck-c8y committed Jan 23, 2025
1 parent f172330 commit ac8101d
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 28 deletions.
2 changes: 1 addition & 1 deletion analytics-service/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ fi
if ! [ $IMG_ARCH ]; then
ARCH="linux/amd64"
else
ARCH="linux/$IMG_ARCH"
ARCH="$IMG_ARCH"
fi
BUILD_DIR="./build"
DIST_DIR="./dist"
Expand Down
37 changes: 22 additions & 15 deletions analytics-service/c8y_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,10 @@ def __init__(self):
self.c8yapp = MultiTenantCumulocityApp()
dir(self.c8yapp)

def upload_extension(self, request_headers, request_cookies, extension_name, ext_file):
def upload_extension(self, request, extension_name, ext_file):
headers={**request.headers, **request.cookies}
b = Binary(
c8y=self.c8yapp.get_tenant_instance(headers=request_headers, cookies=request_cookies),
c8y=self.c8yapp.get_tenant_instance(headers=headers),
type="application/zip",
name=f"{extension_name}",
file=ext_file,
Expand All @@ -45,10 +46,11 @@ def upload_extension(self, request_headers, request_cookies, extension_name, ext

return b.id

def restart_cep(self, request_headers, request_cookies):
def restart_cep(self, request):
try:
headers={**request.headers, **request.cookies}
self._logger.info(f"Restarting CEP ...")
self.c8yapp.get_tenant_instance(headers=request_headers, cookies=request_cookies).put(
self.c8yapp.get_tenant_instance(headers=headers).put(
resource=self.PATH_CEP_RESTART, json={}
)
except Exception as e:
Expand All @@ -58,11 +60,12 @@ def restart_cep(self, request_headers, request_cookies):

self._logger.info(f"Restarted CEP!")

def get_cep_operationobject_id(self, request_headers, request_cookies):
def get_cep_operationobject_id(self, request):
try:
self._logger.info(f"Retrieving id of operation object for CEP ...")

response = self.c8yapp.get_tenant_instance(headers=request_headers, cookies=request_cookies ).get(
headers={**request.headers, **request.cookies}
response = self.c8yapp.get_tenant_instance(headers=headers).get(
resource=self.PATH_CEP_DIAGNOSTICS)
try:
app_id = response["microservice_application_id"]
Expand All @@ -73,7 +76,7 @@ def get_cep_operationobject_id(self, request_headers, request_cookies):
self._logger.info(f"Build filter: {query}")

managed_objects_app = self.c8yapp.get_tenant_instance(
headers=request_headers, cookies=request_cookies
headers=headers
).inventory.select(query=query)
managed_object_id = None
for managed_object in managed_objects_app:
Expand All @@ -97,25 +100,27 @@ def get_cep_operationobject_id(self, request_headers, request_cookies):
# for keys,values in request_headers.items():
# self._logger.info(f"Headers: {keys} {values}")

def get_cep_ctrl_status(self, request_headers, request_cookies):
def get_cep_ctrl_status(self, request):
try:
self._logger.info(f"Retrieving CEP control status ...")

response = self.c8yapp.get_tenant_instance(headers=request_headers, cookies=request_cookies).get(
headers={**request.headers, **request.cookies}
response = self.c8yapp.get_tenant_instance(headers=headers).get(
resource=self.PATH_CEP_DIAGNOSTICS)
return response
except Exception as e:
self._logger.error(f"Exception:", exc_info=True)
# for keys,values in request_headers.items():
# self._logger.info(f"Headers: {keys} {values}")

def load_repositories(self, request_headers, request_cookies):
def load_repositories(self, request):
try:
self._logger.info(f"Retrieving repositories ...")

# tenant_options = self.c8yapp.get_tenant_instance(headers=request_headers).tenant_options.get_all(category=self.ANALYTICS_MANAGEMENT_REPOSITORIES)

response = self.c8yapp.get_tenant_instance(headers=request_headers, cookies=request_cookies).get(
headers={**request.headers, **request.cookies}
response = self.c8yapp.get_tenant_instance(headers=headers).get(
resource=f"{self.PATH_TENANT_OPTIONS}/{self.ANALYTICS_MANAGEMENT_REPOSITORIES}")
tenant_options = response
# List comprehension to convert TenantOptions to array
Expand All @@ -137,13 +142,14 @@ def load_repositories(self, request_headers, request_cookies):
except Exception as e:
self._logger.error(f"Exception:", exc_info=True)

def load_repository(self, request_headers, request_cookies, repository_id):
def load_repository(self, request, repository_id):
try:
self._logger.info(f"Retrieving repository {repository_id} ...")

# tenant_options = self.c8yapp.get_tenant_instance(headers=request_headers).tenant_options.get_all(category=self.ANALYTICS_MANAGEMENT_REPOSITORIES)

response = self.c8yapp.get_tenant_instance(headers=request_headers, cookies=request_cookies).get(
headers={**request.headers, **request.cookies}
response = self.c8yapp.get_tenant_instance(headers=headers).get(
resource=f"{self.PATH_TENANT_OPTIONS}/{self.ANALYTICS_MANAGEMENT_REPOSITORIES}/{repository_id}")
tenant_option = response
# List comprehension to convert TenantOptions to array
Expand All @@ -163,10 +169,11 @@ def load_repository(self, request_headers, request_cookies, repository_id):
except Exception as e:
self._logger.error(f"Exception:", exc_info=True)

def save_repositories(self, request_headers, request_cookies, repositories):
def save_repositories(self, request, repositories):
try:
self._logger.info(f"Saving repositories...")
tenant = self.c8yapp.get_tenant_instance(headers=request_headers, cookies=request_cookies)
headers={**request.headers, **request.cookies}
tenant = self.c8yapp.get_tenant_instance(headers=headers)

for repository in repositories:
repository_id = repository.get('id')
Expand Down
21 changes: 9 additions & 12 deletions analytics-service/flask_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def get_content_list():
'Accept': 'application/json'
}
if repository_id:
repository_configuration = agent.load_repository(request_headers=request.headers, request_cookies=request.cookies, repository_id=repository_id)
repository_configuration = agent.load_repository(request=request, repository_id=repository_id)
if "accessToken" in repository_configuration:
headers["Authorization"] = f"token {repository_configuration['accessToken']}"
logger.info(f"Found accessToken: {headers['Authorization']}")
Expand Down Expand Up @@ -92,7 +92,7 @@ def get_content():
}

if repository_id:
repository_configuration = agent.load_repository(request_headers=request.headers, request_cookies=request.cookies, repository_id=repository_id)
repository_configuration = agent.load_repository(request=request, repository_id=repository_id)
if "accessToken" in repository_configuration:
headers["Authorization"] = f"token {repository_configuration['accessToken']}"
logger.info(f"Found accessToken: {headers['Authorization']}")
Expand Down Expand Up @@ -144,7 +144,7 @@ def get_content():
# params:
@app.route("/repository/configuration", methods=["GET"])
def load_repositories():
result = agent.load_repositories(request_headers=request.headers,request_cookies=request.cookies)
result = agent.load_repositories(request)
if result == None:
resp = Response(
json.dumps({"message": "No repositories found"}), mimetype="application/json"
Expand All @@ -169,11 +169,8 @@ def save_repositories():
if not all(key in repo for key in ['id', 'name', 'url']):
return {"error": "Each repository must have id, name, and url"}, 400

# Get headers from request
request_headers = dict(request.headers)

# Call save method
return agent.save_repositories(request_headers , request.cookies, repositories)
return agent.save_repositories(request, repositories)

except Exception as e:
return {"error": str(e)}, 500
Expand Down Expand Up @@ -203,7 +200,7 @@ def create_extension_zip():
# get the contents of the file
try:
file_name = extract_raw_path(monitor["downloadUrl"])
repository_configuration = agent.load_repository(request_headers=request.headers, request_cookies=request.cookies, repository_id=monitor["repositoryId"])
repository_configuration = agent.load_repository(request=request, repository_id=monitor["repositoryId"])
headers = {
'Accept': 'application/vnd.github.v3.raw'
}
Expand Down Expand Up @@ -271,7 +268,7 @@ def create_extension_zip():
f"Uploaded extension {extension_name} as {id} and restart: {deploy}"
)
if deploy:
agent.restart_cep(request_headers=request.headers, request_cookies= request.cookies)
agent.restart_cep(request)
return "", 201

except Exception as e:
Expand Down Expand Up @@ -334,7 +331,7 @@ def get_extension_metadata():
# id
@app.route("/cep/id", methods=["GET"])
def get_cep_operationobject_id():
result = agent.get_cep_operationobject_id(request_headers=request.headers, request_cookies= request.cookies)
result = agent.get_cep_operationobject_id(request)
if result == None:
resp = Response(
json.dumps({"message": "Not found"}), mimetype="application/json"
Expand All @@ -351,7 +348,7 @@ def get_cep_operationobject_id():
# @app.route("/cep/status", methods=["GET"])
@app.route("/cep/status", methods=["GET"])
def get_cep_ctrl_status():
result = agent.get_cep_ctrl_status(request_headers=request.headers, request_cookies= request.cookies)
result = agent.get_cep_ctrl_status(request)
if result == None:
resp = Response(
json.dumps({"message": "Not found"}), mimetype="application/json"
Expand All @@ -364,7 +361,7 @@ def get_cep_ctrl_status():
# this endpoint was only exposed for test purposes
# @app.route("/cep/restart", methods=["PUT"])
# def restart():
# agent.restart_cep(request_headers=request.headers)
# agent.restart_cep(request)
# return f"OK", 200
def extract_path(path):
# Extract information from the API URL
Expand Down

0 comments on commit ac8101d

Please sign in to comment.