Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/source/user_guide/runtime-conf.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,13 @@ This should be the URL address of your S3-compatible Object Storage. If running

Example: `https://minio-service.kubeflow:9000`

##### Public Cloud Object Storage endpoint (public_cos_endpoint)

If the `Cloud Object Storage endpoint` setting identifies a URL that can only be resolved within the kubernetes cluster, Elyra cannot generate valid links to the object storage page.
If your instalation requires a different public URL specify it as `Public Cloud Object Storage endpoint`.

Example: `https://public-kubernetes-service-url/storage`

##### Cloud Object Storage bucket name (cos_bucket)

Name of the bucket you want Elyra to store pipeline artifacts in. This setting is required. If the bucket doesn't exist, it will be created. The specified bucket name must meet the naming conventions imposed by the Object Storage service.
Expand Down
10 changes: 10 additions & 0 deletions elyra/metadata/schemas/kfp.json
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,16 @@
"ui:placeholder": "https://your-cos-service:port"
}
},
"public_cos_endpoint": {
"title": "Public Cloud Object Storage Endpoint",
"description": "The public Cloud Object Storage endpoint",
"type": "string",
"format": "uri",
"uihints": {
"category": "Cloud Object Storage",
"ui:placeholder": "https://your-public-cos-endpoint:port"
}
},
"cos_bucket": {
"title": "Cloud Object Storage Bucket Name",
"description": "The Cloud Object Storage bucket name",
Expand Down
3 changes: 2 additions & 1 deletion elyra/pipeline/kfp/processor_kfp.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ def process(self, pipeline):

# unpack Cloud Object Storage configs
cos_endpoint = runtime_configuration.metadata["cos_endpoint"]
cos_public_endpoint = runtime_configuration.metadata.get("cos_public_endpoint", cos_endpoint)
cos_bucket = runtime_configuration.metadata["cos_bucket"]

# Determine which provider to use to authenticate with Kubeflow
Expand Down Expand Up @@ -362,7 +363,7 @@ def process(self, pipeline):
)

if pipeline.contains_generic_operations():
object_storage_url = f"{cos_endpoint}"
object_storage_url = f"{cos_public_endpoint}"
os_path = join_paths(pipeline.pipeline_parameters.get(COS_OBJECT_PREFIX), pipeline_instance_id)
object_storage_path = f"/{cos_bucket}/{os_path}"
else:
Expand Down
7 changes: 6 additions & 1 deletion packages/pipeline-editor/src/RuntimesWidget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class RuntimesDisplay extends MetadataDisplay<
> {
renderExpandableContent(metadata: IDictionary<any>): JSX.Element {
let apiEndpoint = addTrailingSlash(metadata.metadata.api_endpoint);
const cosEndpoint = addTrailingSlash(metadata.metadata.cos_endpoint);
let cosEndpoint = addTrailingSlash(metadata.metadata.cos_endpoint);

let githubRepoElement = null;
let metadata_props = null;
Expand Down Expand Up @@ -98,6 +98,11 @@ class RuntimesDisplay extends MetadataDisplay<
// user specified a public API endpoint. use it instead of the API endpoint
apiEndpoint = addTrailingSlash(metadata.metadata.public_api_endpoint);
}

if (metadata.metadata.public_cos_endpoint) {
// user specified a public COS endpoint. use it instead of the API endpoint
cosEndpoint = addTrailingSlash(metadata.metadata.public_cos_endpoint);
}
}

return (
Expand Down