Commit Graph

39 Commits

Author SHA1 Message Date
Luis Magana 5df2801603
feat(backend): Added multi-user pipelines (UI + API); Fixes #4197 (#4835)
* Added multi-user pipelines backend


corrected typo


updating code based on review


fixes for pipelines server


reverting this back

* removing unnecessary info logging
2021-02-26 06:10:15 -08:00
Niklas Hansson e669b22954
fix(backend): remove Bazel from building the API. Part of #3250 (#4906)
* updated to remove bazel

* rename@

* script to run in container

* update the generation

* updated docker image

* changed name

* updated the code

* regenerated API

* fix env variables

* updated version of go swagger

* rerun generate with updated package

* added healthz

* typo with folders fixed

* changed version

* set version of protoc compiler

* test if version is correct

* test version

* changed version

* updated version agian

* test version

* the latest test

* updated docker image

* fixed some stuff

* new test

* tested other version

* new tests

* changed swagger

* new test

* updated versions

* missed docker file

* updated files@

* change back

* updated after feedback@

* clean up

* remove license and install binary

* update and check differences

* completed rebase

* go mod tidy

* updated based upon work of boby

* remove code commited by misstake

* added by misstake

* updated after feedback

* futher updates after feedback

* final updates from feedback

* switch to Makefile

* update

* fix non-root execution

* clean up, fix release script

* fix swagger

* fix healthz endpoint & regenerate python client

* Delete sample.py.tar.gz

Co-authored-by: Yuan Gong <gongyuan94@gmail.com>
Co-authored-by: Yuan (Bob) Gong <4957653+Bobgy@users.noreply.github.com>
2021-02-16 16:58:30 -08:00
Yuan (Bob) Gong 3d40bba9a3
chore(backend): clean up backend code generation (#5116)
* chore(backend): tidy go.mod and update tools.go

* go install, instead of go get

* fix problems reported by go vet

* simplify some ide reported redundant syntax

* license is not required for generated code

* remove licenses for generated code

* cleanup

* remove license more

* rm unused BUILD.bazel files

* fixed generate_api.sh

* reimport error.proto
2021-02-09 07:10:57 -08:00
Yang Pan c484cfa46c chore(release): bumped version to 1.3.0 2021-01-07 00:39:26 -08:00
DavidSpek 0df9473bba
feat: Set current namespace for in-cluster SDK in multi-user mode and add healthz endpoint to API backends (#4638)
* 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
2020-11-24 15:36:39 -08:00
Niklas Hansson 5742991c1a
feat(API): exposing api for setting the default version of pipeline. Fixes #4049 (#4406)
* initial work on exposing the default version of pipeline

* update description

* added missing files

* updated api build, unsure if this is correct ...

* updated after feedback

* clean up

* remove empty line

* started to make the integration test

* added integreation test

* fixed build and feedback

* updated the tests

* Updated the test

* new test

* typo

* updated the pipeline default

* updated the pipeline version

* formatting

* error in comparison
2020-10-15 16:19:25 -07:00
Yuan (Bob) Gong 7dfb34edc8
Regenerate clients after proto description fix (#3895) 2020-06-03 01:52:17 -07:00
jingzhang36 286492591b
More documentation on backend API methods (#3758)
* list experiment desc

* changes should be made in proto

* add comments and descriptions

* comments/descriptions in run.proto

* comments in job.proto and pipeline.proto

* try starting a new line

* newline doesnt help

* add swagger gen'ed file

* address comments

* regenerate json and client via swagger

* address comments

* regenerate go_http_client and swagger from proto

* two periods

* re-generate
2020-06-01 12:26:25 +08:00
Yuan (Bob) Gong c38f36cdc1
[Backend] Add service account field to run and job api objects (#3649)
* Add service account field to run and job api objects

* Update description

* Fix field casing

* Add comment about the next field number
2020-04-29 22:58:17 -07:00
Chen Sun c4fb79447c
[API] Include namespace in visualization.swagger.json (#3588)
* include namespace in CreateVisualization

* include namespace in post body

* put namespace in the path and in front of visualization

* post /apis/v1beta1/visualizations/{namespace}
2020-04-23 13:44:06 -07:00
jingzhang36 60f896bacc
Upload pipeline/pipeline version with a description (#3511)
* add desscription to client interface

* autogen

* version doesn't have description field

* swagger autogen

* remove two accidentally committed local python package
2020-04-17 15:36:04 +08:00
jingzhang36 56d519e9f7
Add archive experiment feature in backend (#3359)
* add new field in db schema and api schema

* auto genereted types for experiment storage state

* add archive and unarchive methods to backend for experiments.

* auto generated archive/unarchive methods for epxeriments

* add archive and unarchive to client

* set proper storage state when creating experiment

* retrieve storage state when we get/list epxeriment(s)

* change expection in test to have storage state

* add storage state in resource manager test

* revise experiemnt server test

* revise api converter test

* integration test of experiment archive

* archive/unarchive experiment affect the storage state of runs in it

* test all the runs in archive/unarchive experiment

* test all runs are archived/unarchived with their experiment in experiment server

* integration test

* integration test: value type mismatch in assertion

* unused import; default value for storage state

* autogen code for frontend

* reorder the fields in api experiment schema

* switch the position of the two enum to verify a hypothesis

* Put a place hodler to prevent any valid item to take the value 0

* Get rid of the place holder since the cause of issue related to value 0 is found and fixed.

* The returned api experiment now has storage state field

* create experiment return doesn't contain storege state

* Cleanup needs to clean runs and pipeliens now

* a missing client

* use resource reference as fileter instead of experiment uuid

* use same namespace in archive unit test

* Leave archive/unarchive experiment integration test to a separate PR

* also need to update jobs when experiments are archived

* Change of unarchiving logic. When experiment is unarchived, jobs/runs in
it stay archived

* add unit test for the job status in archived/unarchived experiment

* change archive state to 3 value enum; add experiment integration test

* make archive state 3 value enum to avoid 0 value mapped to available; add integration test

* run swagger autogen

* fix an expected value

* fix experiment server test

* add job check in experiment server test

* update job crds

* fix a typo

* remove accidentally included irrelevant changes
2020-04-16 07:31:09 +08:00
Chen Sun 2f1dbbedd2
Experiment API change (#3198) 2020-03-06 09:17:23 -08:00
jingzhang36 80fc767eb8
Fix a missing query parameter in swagger json file for version upload api (#3160)
* add pipelineid to api parameter

* Backend swagger autogent

* Reverse a local change

* Reverse another local change
2020-02-24 19:44:15 +08:00
Yuan (Bob) Gong 74a8178e1d
[Controller] Scheduled workflow supports catch up false (#3073)
* GetNextScheduledEpochNoCatchup implementation

* Add tests for cron schedule nocatchup

* Add tests for periodic schedule and fix a corner case

* Integrate no catchup behavior in swf controller

* Update job api proto

* Regenerate backend client

* Pass catchup parameter in backend api

* Rename proto field to no_catchup, so that it has backward compatible default value

* Update generated backend api

* Use no_catchup field instead

* Add some comments
2020-02-19 19:13:02 -08:00
jingzhang36 96f1e4dedb
Swagger generated code for UploadPipelineVersion method (#3010) 2020-02-07 20:23:53 -08:00
jingzhang36 4c491823a0
Update auto-generated files' license date (generated by swagger-gen) (#2998) 2020-02-07 14:44:50 +08:00
Ning 1b85a614bf add namespace to the resourcereference (#2651)
* add namespace to some run APIs

* update only the create run api

* add resourcereference for namespace runs

* add variables in const

* add types to toModel func

* bug fix

* strip the namespace resource reference when mapping to the db model

* add unit tests

* use gofmt

* replace belonging relationshipreference to owner

* put a todo for further investigation of using namespace or uuid

* apply gofmt

* revert minor change

* Update model_converter.go
2019-12-03 22:06:57 -08:00
jingzhang36 6c1c641e40 Open version api in BE proto and auto-generate BE/FE api methods (#2620)
* Open the version api in BE for later FE PR to use. Including
auto-generated BE and FE code.

* format FE

* re-generate

* remove an unnecessary auto-generated file

* format
2019-11-26 19:35:19 -08:00
jingzhang36 af090bffa2 Regenerate api since https://github.com/kubeflow/pipelines/pull/2445 changed api proto (#2506)
* re-generate api since #2445 changed api proto

* Fix integration test for pipeline client

* use generated constants
2019-10-29 23:54:52 -07:00
Ajay Gopinathan 26f8e628b4 Fix documentation for filter.proto (#2447)
* Fix documentation for filter.proto

* Fix file generation
2019-10-25 02:35:38 -07:00
Kirin Patel cd2a684f7c Add generated client from visualization swagger (#1979)
* Update backend/api/generate_api.sh to build visualization swagger file

* Built visualization client
2019-08-30 09:35:54 -07:00
IronPan f1c9594f7d Propagate pipeline name in pipeline spec (#1842)
* update

* add pipeline name

* propagate name

* propagate name

* fix

* update test
2019-08-14 23:30:32 -07:00
IronPan 4e43750c9d
add reference name to resource reference API proto (#1781)
* add resource reference

* fix tests

* fix tests

* fix e2e test

* fix e2e

* fix test

* update api requirement

* fix tests

* Update job_api_test.go

* Update run_api_test.go

* Update setup.py

* Update deploy-kubeflow.sh

* fix tests

* Update deploy-kubeflow.sh
2019-08-13 03:15:11 -07:00
IronPan a9602fbc3f
Add API to rerun the pipeline (#1720)
* add resubmit proto

* add compiled code

* fix

* add resubmit proto

* add

* refactor

* update builder

* refactor

* refactor

* refactor

* refactor

* refactor

* refactor

* add test

* add test

* add test

* add test

* fix test

* fix test

* fix test

* fix test

* fix test

* fix test

* fix test

* address comments

* add comments

* change request body def

* recompile api

* retry instead of resubmit

* update test

* update test

* fix tests

* fix tests

* fix tests

* robust retry

* robust retry

* robust retry

* robust retry

* robust retry

* robust retry

* robust retry

* robust retry

* robust retry

* add error handling

* reorder the call

* remove logic to update the database entry

* add mock

* add tests for rerousrce manager

* update error handling logic

* fix tests

* address comments
2019-08-07 13:59:06 -07:00
IronPan 06e4dc6604
Add doc for API (#1406)
* initial update

* initial update

* update

* add doc

* update
2019-05-30 17:48:50 -07:00
Ajay Gopinathan 5f1b41171f Fix API package names and regenerate checked-in proto files. (#1404)
* Fix API package names and regenerate checked-in proto files. Also bump version of GRPC gateway used.

* Fix BUILD.bazel file for api as well.

* Update Bazel version
2019-05-30 11:26:28 -07:00
IronPan 086d4763d9 Surface workflow finished time in list run API (#1122)
* add finished time for list runs

* add finished time for list runs

* fix tests

* add finished time for list runs

* Update run.proto

* address comments

* make query more robust

* fix e2e test

* fix e2e test
2019-04-10 23:02:10 -07:00
Alexey Volkov f98ec68488 Added the ability to terminate a run (#528)
* Added the terminate run command to backend and CLI.
No generated files for now.

* Added the generated files.

* Moved the code to run_store.go
Now the call chain is run_client->run_server->resource_manager->run_store

* Using the backoff package for retries.

* Trying to update run status in the DB to "Terminating" before patching the workflow.

* Stopped using the Argo errors module.

* Fixed the compilation errors due to recent backend changes.

* RILEY - WIP - Implementation of workflow_fake.go and first test

Added successful test in resource_manager_test.go and completed, barring nits and conventions, the implementation of Patch() and isTerimated() within workflow_fake.go

Additional tests and lots of clean-up are still necessary

* Adds a few more tests to resource_manager_test and cleans up a bit

* Further clean up. Stopped using squirrel for UPDATE query. Added run_store_tests

* Adds terminate run integration test

* Undo changes to go.sum

* Fixes path to long-running.yaml in integration test

* Allow runs with no Conditions to be terminated
2019-03-21 18:00:18 -07:00
Yasser Elsayed ec4d7e8bd3 Return resource count from ListXXX calls (#595)
* add count to protos and libs

* close db rows before second query

* count -> total_size

* int32 -> int

* move scan count row to util

* add comments

* add logs when transactions fail

* dedup from and where clauses

* simplify job count query

* job count queries

* run count queries

* add job_store total size test

* added tests for list util

* pr comments

* list_utils -> list

* fix clients and fake clients to support TotalSize

* added TotalSize checks in api integration tests
2019-01-31 11:15:54 -08:00
Yasser Elsayed df635af409 Support filtering on storage state (#629)
* filter on storage state

* fix case

* Update run.go

* storageState -> storage_state

* ignore generated ts client libs

* remove url import to make tslint happy
2019-01-11 11:01:01 -08:00
Ajay Gopinathan 163545b370 Use Bazel to build the entire backend and perform API code generation (#609)
* Use Bazel to build the entire backend.

This also uses Bazel to generate code from the API definition in the
proto files.

The Makefile is replaced with a script that uses Bazel to first generate
the code, and then copy them back into the source tree.

Most of the BUILD files were generated automatically using Gazelle.

* Fix indentation in generate_api.sh

* Clean up WORKSPACE

* Add README for building/testing backend.

Also fix the missing licenses in the generated proto files.

* Add license to files under go_http_client
2019-01-04 17:17:20 -08:00
Ajay Gopinathan 8616398602 Encode filter parameter as a base64-encoded JSON string in List requests (#563)
* Make all ListXXX operations use POST instead of GET.

Generate new swagger definitions and use these to generate the frontend
APIs using `npm run apis`.

This is to support filtering in List requests, as the current
grpc-gateway swagger generator tool does not support repeated fields in
requests used in GET endpoints.

* Use base64-encoded JSON-stringified version of Filter instead.

This lets us keep filter as a simple parameter in the ListXXX requests,
and gets around having to use POST for List requests.

* refactor filter parsing to parseAPIFilter and add tests

* Hack to ensure correct Swagger definitions are generated for Filter.

* Fix merge conflicts with master after rebase

* fix indentation

* Fix hack so frontend apis compile.

* print failing experiments

* try print again.

* revert experiment_api_test

* Use StdEncoding for base64 encoding

* Fix nil pointer dereference error caused err variable shadowing
2019-01-02 13:03:14 -08:00
Yasser Elsayed 549a366c39 Support archiving/unarchiving runs on the backend (#552)
* skip integration tests when unit test flag is set to true

* wip

* add StorageState enum to proto

* add StorageState to model

* archive proto/model changes

* wip archive endpoint

* wip adding tests

* archive test

* unarchive proto and implementation

* cleanup

* make storage state required, with a default value

* remove unspecified value from storage state enum

* pr comments

* pr comments

* fix archive/unarchive endpoints, add api integration test

* typo
2018-12-19 14:01:06 -08:00
Ajay Gopinathan 0c0d8a2b91 Add filtering ability for all backend API ListXXX requests (#537)
* WIP: Add filter package with tests.

* Add tests for IN predicate.

* Add listing functions

* Try updating list experiments

* Cleanup and finalize list API.

Add tests for list package, and let ExperimentStore use this new API.
Update tests for the latter as well.

* Add comments. BuildSQL -> AddToSelect for flexibility

* Run dep ensure

* Add filter proto to all other resources

* Add filtering for pipeline server

* Add filtering for job server

* Add filtering for run server

* Try to fix integration tests
2018-12-14 00:18:31 -08:00
IronPan 9eee2bbb47 move name (#498) 2018-12-07 16:41:15 -08:00
Yang Pan b494e3daa0 Add integration tests for API servers (#112)
* add pipeline e2e test back

* delete samples

* more changes to pipeline test

* add delete run/experiment

* update test name

* stage

* add api

* fii

* add tensorboard routing rule (#143)

* add tensorboard routing rule

* rename tb routing rule

* address comments

* remove debugger

* fix url prefix

* more fixes

* update tests

* revert debugging

* update

* update test

* fix

* update test

* fix

* fix pipeline tests

* exp

* update run

* update jobs
2018-11-09 20:39:15 -08:00
Pascal Vicaire 1bab424abf Fixing the GO import paths to reference the kubeflow/pipelines repository. 2018-11-02 14:53:42 -07:00
Pascal Vicaire 633e2ddcc8 Initial commit of the kubeflow/pipeline project. 2018-11-02 14:02:31 -07:00