Commit Graph

119 Commits

Author SHA1 Message Date
Riley Bauer b1a6848308 Only render JSON objects and arrays, not primitives (#1366) 2019-05-22 13:18:27 -07:00
Eran Nussbaum 2da723c2fa Add HTTP/HTTPS support in FE (#1339)
* Add HTTP/HTTPS support in FE

* Fix typo (HTTP instead of HTTPS)
2019-05-19 21:41:11 -07:00
Riley Bauer be4febc562 Trims the file extension from suggested pipeline names (#1349) 2019-05-17 13:28:11 -07:00
Riley Bauer 38540d7621 Pretty print inputs and outputs json (#1348)
* Pretty prints pipeline step input/outputs if they are JSON

* Further cleanup and added tests
2019-05-17 12:38:12 -07:00
Riley Bauer 814fe28511
Adds metrics table to Compare page, creates Metric component (#1284)
* Adds metrics table to Compare page, creates Metric atom

* Cleanup

* Adds tests for metric component

* Adds CompareUtils tests

* Adds MetricUtils tests

* Adds compare page tests
2019-05-16 15:46:15 -07:00
Riley Bauer 49aa8c7f7d Removes redundant npm install from FE Dockerfile (#1332) 2019-05-14 21:28:16 -07:00
Eterna2 4eeeb6e224 [Frontend] minio client in API server can be configured with environment variables (#1324)
* kfp frontend API service can configure minio client params thru env vars

* minio endpoint is composed from host and namespace to support k8s yaml

* Added kustomize patch for pipeline-ui deploy
2019-05-14 17:38:18 -07:00
Riley Bauer 1ab4315d0d Shows link to Stackdriver logs if logs retrieval fails and cluster is running in GKE (#1310)
* Shows link to Stackdriver logs if logs retrieval fails and cluster is running in GKE

* Add additional link for new k8s stackdriver resource names

* Fix spacing
2019-05-13 12:35:10 -07:00
Jiaxin Shan 5c850b92b1 Frontend - Add support for artifacts stored in S3 (#1278)
* Add s3 and local support for artifact viewer

* Remove local file support and use ViewerCRD instead

* Fix condition failed tests

* Keep using minio for metadata manifests
2019-05-06 13:47:42 -07:00
Riley Bauer 25cb766dae Adds a toggle between one-off and recurring runs to NewRun page (#1274)
* Allows toggling between one-off and recurring runs in the new run page

* Clean up and adds tests

* Fix integration test - account for extra field in form

* Cleanup and PR comments
2019-05-04 11:29:37 -07:00
Riley Bauer 41b8fc26b8
Sets the background color for KFP pages (#1281)
This will prevent the pages from appearing gray when viewed within the
iframe of the greater Kubeflow console.
2019-05-03 13:19:17 -07:00
Riley Bauer bcca4ed67a Pulls most functions out of Status and into StatusUtils. Fixes run duration bug (#1262) 2019-05-02 01:28:18 -07:00
Riley Bauer 3289f43ef8 Fixes sorting in PagedTable so that it properly alternates between ascending and descending (#1261) 2019-05-02 00:42:16 -07:00
Ilias Katsakioris 07cb50ee0c Extend the DSL to implement the design of #801 (#926)
* SDK: Create BaseOp class

* BaseOp class is the base class for any Argo Template type
* ContainerOp derives from BaseOp
* Rename dependent_names to deps

Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>

* SDK: In preparation for the new feature ResourceOps (#801)

* Add cops attributes to Pipeline. This is a dict having all the
  ContainerOps of the pipeline.
* Set some processing in _op_to_template as ContainerOp specific

Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>

* SDK: Simplify the consumption of Volumes by ContainerOps

Add `pvolumes` argument and attribute to ContainerOp. It is a dict
having mount paths as keys and V1Volumes as values. These are added to
the pipeline and mounted by the container of the ContainerOp.

Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>

* SDK: Add ResourceOp

* ResourceOp is the SDK's equivalent for Argo's resource template
* Add rops attribute to Pipeline: Dictionary containing ResourceOps
* Extend _op_to_template to produce the template for ResourceOps
* Use processed_op instead of op everywhere in _op_to_template()
* Add samples/resourceop/resourceop_basic.py
* Add tests/dsl/resource_op_tests.py
* Extend tests/compiler/compiler_tests.py

Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>

* SDK: Simplify the creation of PersistentVolumeClaim instances

* Add VolumeOp: A specified ResourceOp for PVC creation
* Add samples/resourceops/volumeop_basic.py
* Add tests/dsl/volume_op_tests.py
* Extend tests/compiler/compiler_tests.py

Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>

* SDK: Emit a V1Volume as `.volume` from dsl.VolumeOp

* Extend VolumeOp so it outputs a `.volume` attribute ready to be
  consumed by the `pvolumes` argument to ContainerOp's constructor
* Update samples/resourceop/volumeop_basic.py
* Extend tests/dsl/volume_op_tests.py
* Update tests/compiler/compiler_tests.py

Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>

* SDK: Add PipelineVolume

* PipelineVolume inherits from V1Volume and it comes with its own set of
  KFP-specific dependencies. It is aligned with how PipelineParam
  instances are used. I.e. consuming a PipelineVolume leads to implicit
  dependencies without the user having to call the `.after()` method on
  a ContainerOp.
* PipelineVolume comes with its own `.after()` method, which can be used
  to append extra dependencies to the instance.
* Extend ContainerOp to handle PipelineVolume deps
* Set `.volume` attribute of VolumeOp to be a PipelineVolume instead
* Add samples/resourceops/volumeop_{parallel,dag,sequential}.py
* Fix tests/dsl/volume_op_tests.py
* Add tests/dsl/pipeline_volume_tests.py
* Extend tests/compiler/compiler_tests.py

Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>

* SDK: Simplify the creation of VolumeSnapshot instances

* VolumeSnapshotOp: A specified ResourceOp for VolumeSnapshot creation
* Add samples/resourceops/volume_snapshotop_{sequential,rokurl}.py
* Add tests/dsl/volume_snapshotop_tests.py
* Extend tests/compiler/compiler_tests.py

NOTE: VolumeSnapshots is an Alpha feature at the time of this commit.

Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>

* Extend UI for the ResourceOp and Volumes feature of the Compiler

* Add VolumeMounts tab/entry (Run/Pipeline view)
* Add Manifest tab/entry (Run/Pipeline view)
* Add & Extend tests
* Update tests snapshot files

Signed-off-by: Ilias Katsakioris <elikatsis@arrikto.com>

* Cleaning up the diff (before moving things back)

* Renamed op.deps back to op.dependent_names

* Moved Container, Sidecar and BaseOp classed back to _container_op.py
This way the diff is much smaller and more understandable. We can always split or refactor the file later. Refactorings should not be mixed with genuine changes.
2019-04-25 10:40:48 -07:00
Riley Bauer 4de20179c6 Update to version 3.0.2 of npm package 'extend' (#1211)
* Update to version 3.0.2 of npm package 'extend'

* Use 'new' with Storage
2019-04-24 10:24:10 -07:00
Alexey Volkov 173ecbda4c Marked all scripts as executable (#1177) 2019-04-23 16:12:00 -07:00
Riley Bauer b29266351e Allow creating runs without experiments (#1175)
* Adds 'Create run' button to experiment list / all runs page

* Add run without experiment and filtering to FE integration test

* Update snapshots

* Add refresh and wait to integration test

* Adjust

* Adjust

* Don't exit integration test early if npm test fails

* PR comments

* TEMP - take screenshots to debug integration test

* Store screenshots

* Remove create run without experiment integration test for now as it fails due to the default experiment being deleted at the end of the API initialization and integration test suites
2019-04-22 11:59:45 -07:00
Riley Bauer 72b0914868
Fixes deletion of recurring runs (#1185)
* Fixes deletion of recurring runs and redirects after deleting pipeline from pipeline details page

* Add comment for deletion on recurring run and pipeline details pages

* Remove refreshOnComplete flag from buttons
2019-04-22 10:45:30 -07:00
Riley Bauer ce8071566f
Removes unnecessary API calls (#1144)
From the ExperimentDetails and ExperimentList pages, calls to getRun and
getExperiment are removed.

From the RunList page, calls to getRun are removed.
2019-04-11 17:41:08 -07:00
Riley Bauer c5a727abf7 Removes link to Kubeflow privacy links as KFP no longer runs Spartakus (#1074) 2019-04-01 11:36:34 -07:00
Riley Bauer 94925ff2bd Add run termination controls to ui (#1039)
* Update swagger definitions

* WIP - Adds ability to terminate runs to frontend

* Update snapshots

* Adds tests. Also changes warning message color to orange rather than red

* Remove refresh button from run details page

* Elaborate terminate confirmation message

* Minor fixes

* Remove references to refresh button from integration tests
2019-04-01 10:18:35 -07:00
IronPan 2bde76092a remove jupyter hub link from UI (#1046)
* remove jupyter hub link from UI

* remove jupyter hub link from UI

* remove jupyter hub link from UI
2019-03-29 22:49:08 -07:00
Riley Bauer afcecbb480 Improve runtime graph exit-handler node name (#1059)
* Gives the exit-handler node in a runtime graph a human readable name

Also adds tooltips for full node names in graphs.

* Adds tests
2019-03-28 21:24:12 -07:00
Riley Bauer a60355abac Update sidebar styling (#1010)
* Update sidebar styling

* Update tests
2019-03-21 10:21:40 -07:00
Yasser Elsayed c0303b7d46 Add code formatting to markdown viewer (#935)
* add code formatting to markdown viewer

* tests
2019-03-08 14:20:55 -08:00
Yasser Elsayed 473c4be97c Add markdown viewer (#897)
* working, needs tests

* tests

* add output artifact loader tests

* cleanup new experiment tests

* pr comments
2019-03-04 16:53:01 -08:00
Riley Bauer 85de728236 Support rendering recursive static DAGs (#845)
* Adds support for rendering recursive pipelines to the StaticGraphParser

* Adds a recursive pipeline to the list of mocks

* Fixes recursive graph rendering under new styling

* Adds additional comments and surfaces pipeline yaml error to users

* Remove unnecessary comment
2019-02-25 17:48:26 -08:00
hongye-sun 749d0aab9f Update swagger codegen version (#839) 2019-02-21 12:21:38 -08:00
Riley Bauer a8b9107878 Update graph styling (#829)
* Updates styling for the graphs

* Break all diagonal edges into vertical and horizontal components

* Checkpointing. A lot of minor adjustments being made

* Change graph rendering to only use horizontal and vertical lines for
edges. Previously diagonal edges are converted into two vertical edges
and one horiztonal

* Small cleanup

* Hovering over node now highlights all incoming and outgoing edges, as does selecting a node

More fixes, stop stacking starting edges

* Clean up

* Remove edge starting circle code

* Returns the DAG to using arbitrary angles rather than right angles

* Adds small vertical segment to end of all edges

* Significant clean up and updating tests

* A little more clean up and adding tests for the new Status util function

* One more test for Status

* Increase node font weight

* PR comments

* A little more cleanup in Graph
2019-02-21 11:34:41 -08:00
Riley Bauer 2ec15c271e
Sets 'Choose file' button width to avoid wrap (#830)
* Sets 'Choose file' button width to avoid wrap

* Switch to white-space nowrap
2019-02-19 13:40:28 -08:00
Riley Bauer f07d578d64
Updates frontend to Typescript to 3.3.1 (#772)
* Updates Typescript to 3.3.1 and updates code around CustomTable customRenderer to make better use of FunctionComponent typings

* Remove extra afterEach from merge

* Further merge clean-up
2019-02-14 11:54:45 -08:00
Elvira d4c087fd78 Fixed validation in new run form when filling name then pipeline (#826) 2019-02-13 16:19:35 -08:00
Yasser Elsayed 603597d65b Archive runs UI (#748)
* update ts definitions from swagger

* fix case

* Update run.go

* storageState -> storage_state

* storageState -> storage_state

* wip mock backend changes, need to use filter for storagestate

* filter_by -> filter, remove options handlers

* show only available runs, mock middleware support

* add basic Archive page with runs

* fixes, added button to sidenav

* fix generated ts filter-related changes in definitions

* storageState -> storage_state

* fix after rebase

* cleanup

* use notequals archived instead of equals available

* augment runs request filter with storage state

* fix tests

* treat available runs as unarchived

* refactor buttons to separate file

* experiment details buttons, remove test console log

* cleanup

* added actions to Buttons module

* tests

* cleanup

* add messages to dialogs

* add archive/restore button to run details

* archive breadcrumb

* mention run will not stop when archiving

* pr comments
2019-02-13 13:50:12 -08:00
Riley Bauer 600acbdd23
Updates lodash to version 4.17.11 (#803)
* Pin lodash version

* Commit updated package-locks
2019-02-13 10:40:21 -08:00
Yasser Elsayed e29b1819b0 Add UI actions to Buttons module (#758)
* add actions to Buttons module

* pr comments
2019-01-31 15:46:03 -08:00
Riley Bauer 423f33c4bd Regenerate frontend API files now that listCount APIs are merged (#757)
* Regenerate frontend swagger-generated API files now that listCount APIs are merged

* Manually remove 'url' import from filter/api.ts
2019-01-31 14:48:27 -08:00
Riley Bauer 2c6ad29737 Improve runtime graph starting and running experience (#734)
* Improve runtime graph starting and running experience

- displays spinner when no nodes have started
- adds info message to bottom of runtime graph indicating that it is
runtime and that the graph will update over time
- adds placeholder nodes at end of graph to indicate future progress

* Update test snapshots

* Fix bug with virtual nodes, and add transition to graph

* PR comments, updating tests

* Moves IconWithTooltip to atoms/ and adds tests

* Update copyright and add further tests
2019-01-30 14:21:31 -08:00
Yasser Elsayed be19cbc259 Refactor UI buttons to lib file (#737)
* refactor buttons to lib file

* Add license header

* fix e2e test
2019-01-28 11:27:45 -08:00
Riley Bauer 5beffef614 Auto-refreshes the run details page (#722)
* Auto-refreshes the run details page

Auto-refresh is paused when the window loses focus (blur) and is resumed
upon re-focus. Autorefresh is permanently terminated if the run has
stopped due to failure, error, being skipped, or succeeding.

* Adds tests for Status.hasCompleted

* Clean up and PR comments
2019-01-24 10:55:02 -08:00
Ajay Gopinathan 578e8231d0 Update all Pipelines CRD versions to v1beta1. (#681) 2019-01-17 19:35:51 -08:00
Riley Bauer ce91c085d0 Include date in run status tooltips (#671)
* Adds run (created_at) date to tooltip for experiment last 5 runs

* Adds start and end date to tooltip for status icons in runtime graph

* Add start date to RunDetails status tooltip

* Mock formatDateString util function to avoid mismatch between local and CI test environments
2019-01-15 12:47:16 -08:00
Riley Bauer 065e1f6e16 Adds a link in the side nav to the KF 'usage-reporting' doc (#682) 2019-01-15 11:39:01 -08:00
Riley Bauer 504b89620e Add build version to side nav (#670)
* Makes KF logo a button and adds tooltips to sidenav when collapsed

* Adds build version, date, and link to side nav. Still needs tests

* Cleanup and PR comments
2019-01-14 10:08:22 -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
Riley Bauer 705d00038c Add simple filtering by name to CustomTable (#656)
* Adds simple filtering by 'name' to CustomTable

* Update tests

* Adds new tests for filtering the CustomTable

* Filter using 'is_substring' rather than 'equal'

* Clean up and some comments

* Add snapshot to handleFilterChange test
2019-01-10 15:38:42 -08:00
Riley Bauer d9665549ce Use "create" rather than "start" except when initiating a run (#650)
* Uses 'Create' for all actions that lead to creation flow, or result in a static object (experiment). 'Start' is used solely for initiating runs

* Update integration test
2019-01-09 11:56:45 -08:00
Yasser Elsayed 76f8b6b77b Correctly ignore src/apis when building frontend (#654) 2019-01-08 19:05:01 -08:00
Riley Bauer 2158d23279 Updates material-ui and react npm libraries (#630)
* Updates material-ui and react npm libraries

* Update failing BusyButton snapshots

* Reduce material-ui version to 3.7.1 to avoid known issue with 3.8.1
2019-01-04 16:07:44 -08:00
Yasser Elsayed d4d4f62056 Compare perf - pure components, disable ROC curve thumbnail animations (#598)
* pure components, no animations for roc curve thumbnails

* fix snapshot tests

* set state once when loading parameters

* manually check plot card pros/state to make it pure
2019-01-04 11:54:41 -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