* Set current namespace in local KFP context if running from notebook
* Create "~/.config/kfp/" instead of ".config/kfp/"
At first it was assumed the `get_user_namespace` command would be executed from the home directory.
* Create local context file if it doesn't exist during set_user_namespace
* Grab path from LOCAL_KFP_CONTEXT when creating folder
Instead of harcoding the os.mkdirs path to `~/.config/kfp` it now grabs it from the LOCAL_KFP_CONTEXT. Also, removed path creation in `get_user_namespace` as that is now handled in `set_user_namespace`. Also, it now checks if the path exists rather than the local_context_file to remove the situation where it tries to create ~/.config/kfp/ because the context.json doesn't exist when the path does.
* add multi-user setting to healthz api
* Add http prefix to health api url
* move healtz api call to own function and fix multi_user boolean
* Fix HEALTH_PATH declaration
* Move check to Client __init__ and change get_kfp_healthz to avoid breaking in case of old apiserver image
* Add multi_user to frontend healthz
* Expose multi_user in frontend and add integration test
* Fix integration test
* Fix host hardcoding and error handling
* Handle empty API response, check if API up to date
* Fix response return
* remove API check due to empty response
* retry API call if first response empty
* retry getting healthz api if no response
* change health_api to https
The healthz_api has been returning empty responses which might be caused by sending an http request to an https endpoint. Although requests handles redirects, this commit is to test if this solves the issue.
* Add some debug info to healthz exception
* add url to debug and lower retries to 1
* Use api_client to get healthz data
* Debug info for API response
* Follow API redirect history
* Fix indentation
* Add healthz proto
* Try getting healthz api with new python backend
* Add installation of kfp_server_api in tests
* Fix incorrect setup location
* Replace old .get with new http backend .multi_user
* Code clean up
* Small fixes and TimeOutError for retries healthz api
* Remove changes to go dependencies
* Send empty proto request and fix exception client
* Remove unused commit_sha and tag_name
* New server API: read run log
- The new server API endpoint (/apis/v1beta1/runs/{run_id}/nodes/{node_id}/log) to fetch run log
- `ARCHIVE_LOG_FILE_NAME` and `ARCHIVE_LOG_PATH_PREFIX` options allows to control archive log path
- UI Server fetches logs from server API or directly from k8s depending on `STREAM_LOGS_FROM_SERVER_API` option
* New server API: read run log
- ml-pipeline rbac update: allow for access to log
* Read run log: enhanced error handling
- log message on Pod access errors
* Read run log: enhanced log archive options
* Code format
* Test update after getPodLogs signature change
* Updated comments after review
* `follow` query parameter in GET /apis/v1beta1/runs/{run_id}/nodes/{node_id}/log
* Env variable friendly config names & comments
- Config options: ARCHIVE_CONFIG_LOG_FILE_NAME, ARCHIVE_CONFIG_LOG_PATH_PREFIX
- Copyright message update
- New endpoint as `v1alpha1`
* Licence updates
- fluent-bit licence inlined
- copyright message updates
* Master merge
- dependency conflicts
* support local file storage type for local volume mount path, refer: https://github.com/kubeflow/pipelines/issues/4208
* add todo comment to support directory and filePath include wildcards '*', detail refer: https://github.com/kubeflow/pipelines/issues/4208
* revert old code indent
* run 'npm run format' to format code
* support tensorboard viewer and other visualize Results using volume mount path, modify 'file' schema to 'volume':
1. source schema: volume://volume-name/relative/path/from/volume/xxx.csv
2. for tensorboard(also support Series1:volume://volume-name/path_to_model_dir_1,Series2:volume://volume-name/path_to_model_dir_2):
* check volume-name was specified in podTemplateSpec( which was inject by VIEWER_TENSORBOARD_POD_TEMPLATE_SPEC_PATH env)
* check /relative/path/from/volume/xxx file path was prefix-mounted in podTemplateSpec
3. for others:
* check volume-name was specified at ml-pipeline-ui pod
* check /relative/path/from/volume/xxx.csv file path exist
* fix test and add more tests
* change error message not found to not exist.
* fix tensorboard create test
* combining volume mount path and key as artifacts path
* extra complex code to a function and add more test
* use ml-pipeline-ui container name to find server container instead of use containers[0]
* fix review suggestion: https://github.com/kubeflow/pipelines/pull/4236
* format code
* extract how to find file path on a pod volume to a common function, and optimize error message
* fix k8s-helper.test error
* add more documentation and fix mistake: volumeMountPath to filePathInVolume
* fix test error
* Update k8s-helper.test.ts
* format error message
Co-authored-by: Yuan (Bob) Gong <gongyuan94@gmail.com>
* Show version tag in UI
* Add new arguments to test cloudbuild configuration
* backend cloudbuild should use commit_sha as argument
* Fix minor bug during dev
* Authorization service proto
* implement auth service
* Add unit tests
* Generate auth api client
* Authorization checks for tensorboard apis
* UI Server authorization checks
* Clean up error parsing
* Revert changes
* Fix portable-fetch not found bug
* Fix unit test
* Include portable-fetch required by api client
* Fix portable-fetch module import error
* Fix portable-fetch again
* Add unit tests
* Address CR comments
* add unit test for header
* Update readme
* WorkflowParser->loadNodeOutputPaths
source: s3.endpoint === 's3.amazonaws.com' ? StorageService.S3 : StorageService.MINIO
* Use isS3Endpoint (server/aws-helper.ts) to identify artifact source
* npm run format
* created src/lib/AwsHelper.ts (for frontend code), because frontend client and frontend server do not share code for now.
* [UI Server] Proxy /namespaces/:namespace/artifacts/get requests to namespace specific artifact services
* [UI] Show artifacts by namespace
* Fix minio artifact link tests
* Fix DetailsTable tests
* Fix OutputArtifactLoader.test
* Change artifact proxy to use query param instead
* Add integration tests for artifact proxy
* Fix unit tests
* Rename service name
* Add comment
* add more comments
* Fix import
* Refactored how to spy on internal methods from tests
* [UI Server] Add namespace argument for tensorboard endpoints
* Allow local node server to talk to minio in cluster
* Use tensorboard namespace in UI
* Add unit tests for tensorboard UI server
* Fix tests
* Fix tensorboard proxy url
* Fix tensorboard proxy failure
* Fix tests
* Remove unecessary encodeURIComponent
* Add old comment back
* [UI Server] Pod info handler
* [UI] Pod info tab in run details page
* Change pod info preview to use yaml editor
* Fix namespace
* Adds error handling for PodInfo
* Adjust to warning message
* [UI] Pod events in RunDetails page
* Adjust error message
* Refactor k8s helper to get rid of in cluster limit
* Tests for pod info handler
* Tests for pod event list handler
* Move pod yaml viewer related components to separate file.
* Unit tests for PodYaml component
* Fix react unit tests
* Fix error message
* Address CR comments
* Add permission to ui role
* Parametrize the image used for the Tensorboard viewer
Right now, the image is hard-coded and it's not possible to override it.
This is a problem when running Kubeflow Pipelines in a cluster without
access to the internet or public repositories (e.g.
https://github.com/kubeflow/pipelines/issues/3232). This solves the
issue by parametrizing the image name through an environment
variable.
* Fix formatting issues
* Address review comments
* Updated create-react-app dependencies
* Fix some type errors
* Fix type errors
* Fix linting and typing
* Fix more things
* Fix typestyle mock
* Fix some unit tests
* Update snapshots
* Frontend server should use its own configuration
* Clean up server tsconfig.json and tslint.json
* Fix mock-backend
* Frontend image cloudbuild config
* Remove @jupyter/html-manager from full.tpl
* Include visualization server cloudbuild yaml to facilitate local dev
* Stop fallback behavior of KFP UI to improve dev experience
* Implement getting started page.
* Add feature flag to only show getting started page on hosted pipelines
* Add tests
* Fix format
* Implement requested layout in getting started page
* Minor adjust layout
* Fix tests
* Fix snapshots
* Update page title
* Add unit tests for aws-helper and minio-helper.
* Break up server.ts into app.ts and handlers/*.ts so that unit test can be written more easily.
* update @types/node because of https://github.com/microsoft/TypeScript/issues/32333
* upgrade kubernete-client version to be compatible with new @types/node version
* fix bug: AWSInstanceProfileCredentials.profile() returns a promise not a string
* remove I prefix from interfaces. minor fixes on lint errors.
* fix format errors
* Added more unit tests, and minor fixes.
* Fix comment: GKS should be GKE
* use jest.resetAllMocks instead of reset each mock individually
* fix format for helper test
* Support select tensorflow image for tensorboard
* modify test for tensorflow version select
* delete not available image entry
* Support tensorflow image selection to run tensorboard
* format code with prettier
* use HasPrefix instead of regexp
* delete
* modified tensorboard test
* delete tensorboard
* modify typo
* test tensorboard
* tensorboard test
* fuck
* fuck2
* modify test
* modify typo in tensorboard hint
* npm run format
* modify tensorboard snapshot
* compatible with previous kfp version. Allow vacant tensorflowImage field.
* add 2 tests for dialog
* modify default tensorflow image to 1.13.2
* merge get version and get tensorboard; let --bind_all support tensorboard3.x
* modify reconciler.go
* reconciler rollback
* modify corresponding test for --bind_all
* modify requested chances 12/23
* formControl sorted alphabetically
* select sorted alphabetically
* modify details from PR request 12/24
* moidfy format
* modify details 12/23
* modify snapshot
* retest
* retest
* Format other frontend code using prettier
* Regenerate frontend api clients
* Pass namespace to CreateRun api request
* Fetch logs from pod namespace
* Fix log handler cannot work with pod name only query bug
* Fix and refactor existing tests
* Unit test adding namespace to create run api call.
* Remove unneeded snapshot
* Fix lint errors
* Consistently use resource reference id for namespace
* Script to set up workload identity for standalone deployment
* Migrate tests to run on standalone + workload identity
* Fix test script
* Switch to static GSAs for testing, because they have name length limit
* Add workload identity binding for argo
* Fix argo workload identity bindings
* Remove user-gcp-sa from tests
* Remove use_gcp_secret from xgboost sample
* Allow debugging tests locally
* Wait for policies to take effect
* Update deploy-pipeline-lite.sh
* Update deploy-pipeline-lite.sh
* [WIP] test gcloud auth list with test-runner sa
* Add namespace
* test again
* Use new image builder
* test again
* Remove debug code
* Remove usages of use_gcp_secret
* Fix unit test and tensorboard pod template
* Add debug code again to test
* Try waiting until workload identity bindings are ready
* Fix some other samples
* Fix parameterized tfx oss sample
* Add retry to image building
* Try fixing tfx oss sample
* Fix compiled tfx oss sample
* Update all google/cloud-sdk to latest
* Try fixing parameterized tfx oss sample again
* Also verify pipeline-runner ksa is working
* Fix parameterized_tfx_oss sample
* Update gcp-workload-identity-setup.sh
* Revert unneeded change
* Pin to new google/cloud-sdk
* Remove wrongly commited binaries
* FE changes for version ui
* sort methods; remove console
* format
* remove obsolete snapshots
* cosmetic change: simplify href link construction
* fix the clone run behavior when version present
* format
* run-integration-test
* frontend-integration-test: try to simulate uploading file
* fix frontend-integration-test
* address comments
* address comments and add one more unit test
* Get kubeflow namespace from kfp UI
* Add a react context that makes namespace available anywhere.
* Move KFP_FLAGS check to index.tsx
* Update index.tsx
* Without version bump
* fix the delete caller
* return after delete
* reconciler removes old viewer crd file that misses image specification
* add frontend comment
* remove accidental changes that are irrelevant
* Revise log message
* Add error handling
* add test
* tensorflow image check only applies to viewer tensorboard type and thus put it after the type check.
* Use of default image instead of validation
* Retrieve pod logs from argo archive
* Added aws instance profile iam credential support for minio client. Read workflow status for argo archive location for pod logs.
* fix minor typo, and enforce typing for minio client options
* Update helm chart for pipelines ui role with permission to access secret and workflow crd
* remove unnecessary type cast
* Fix bug: s3client should be a callable, so that iam token is refreshed
* Working, though the request seems malformed
* Working with grpc-web. trying to push to cluster
* WIP
* With great hax come great success
* Begin moving some metadata UI pages to KFP
* Artifact list and details pages work! A lot of clean up is needed. Look for console.log and TODO
* Clean up
* Fixes filtering of artifact list
* More cleanup
* Revert ui deployment
* Updates tests
* Update envoy deployment
* Added support for custom visualizations to the VisualizationCreator component
* Add support for enabling/disabling custom visualizations
* Added mock-backend support for new api endpoint
* Changed allowCustomVisualization to be a prop