60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
from kubeflow.kubeflow.crud_backend import status
|
|
from werkzeug.exceptions import BadRequest
|
|
|
|
|
|
def parse_tensorboard(tensorboard):
|
|
"""
|
|
Process the Tensorboard object and format it as the UI expects it.
|
|
"""
|
|
if tensorboard.get("status", {}).get("readyReplicas", 0) == 1:
|
|
phase = status.STATUS_PHASE.READY
|
|
message = "The Tensorboard server is ready to connect"
|
|
else:
|
|
phase = status.STATUS_PHASE.UNAVAILABLE
|
|
message = "The Tensorboard server is currently unavailble"
|
|
|
|
parsed_tensorboard = {
|
|
"name": tensorboard["metadata"]["name"],
|
|
"namespace": tensorboard["metadata"]["namespace"],
|
|
"logspath": tensorboard["spec"]["logspath"],
|
|
"age": tensorboard["metadata"]["creationTimestamp"],
|
|
"status": status.create_status(phase, message, "")
|
|
}
|
|
|
|
return parsed_tensorboard
|
|
|
|
|
|
def get_tensorboard_dict(namespace, body):
|
|
"""
|
|
Create Tensorboard object from request body and format it as a Python dict.
|
|
"""
|
|
metadata = {
|
|
"name": body["name"],
|
|
"namespace": namespace,
|
|
}
|
|
labels = get_tensorboard_configurations(body=body)
|
|
if labels:
|
|
metadata["labels"] = labels
|
|
|
|
tensorboard = {
|
|
"apiVersion": "tensorboard.kubeflow.org/v1alpha1",
|
|
"kind": "Tensorboard",
|
|
"metadata": metadata,
|
|
"spec": {"logspath": body["logspath"]},
|
|
}
|
|
|
|
return tensorboard
|
|
|
|
|
|
def get_tensorboard_configurations(body):
|
|
labels = body.get("configurations", None)
|
|
cr_labels = {}
|
|
|
|
if not isinstance(labels, list):
|
|
raise BadRequest("Labels for PodDefaults are not list: %s" % labels)
|
|
|
|
for label in labels:
|
|
cr_labels[label] = "true"
|
|
|
|
return cr_labels
|