polyaxon 2.1.0rc9__py3-none-any.whl → 2.4.0rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. polyaxon/_cli/artifacts.py +96 -11
  2. polyaxon/_cli/components.py +96 -11
  3. polyaxon/_cli/config.py +31 -0
  4. polyaxon/_cli/dashboard.py +15 -2
  5. polyaxon/_cli/init.py +1 -1
  6. polyaxon/_cli/models.py +96 -11
  7. polyaxon/_cli/operations.py +133 -58
  8. polyaxon/_cli/project_versions.py +139 -6
  9. polyaxon/_cli/projects.py +23 -9
  10. polyaxon/_cli/run.py +29 -9
  11. polyaxon/_cli/services/agent.py +2 -2
  12. polyaxon/_client/mixin.py +39 -0
  13. polyaxon/_client/project.py +218 -23
  14. polyaxon/_client/run.py +84 -27
  15. polyaxon/_compiler/contexts/ray_job.py +4 -2
  16. polyaxon/_compiler/resolver/agent.py +12 -1
  17. polyaxon/_compiler/resolver/runtime.py +3 -3
  18. polyaxon/_contexts/paths.py +1 -1
  19. polyaxon/_deploy/operators/compose.py +1 -27
  20. polyaxon/_deploy/schemas/deployment.py +1 -0
  21. polyaxon/_deploy/schemas/intervals.py +0 -7
  22. polyaxon/_deploy/schemas/proxy.py +1 -0
  23. polyaxon/_deploy/schemas/service.py +5 -0
  24. polyaxon/_env_vars/getters/owner_entity.py +4 -2
  25. polyaxon/_env_vars/getters/project.py +4 -2
  26. polyaxon/_env_vars/getters/run.py +5 -2
  27. polyaxon/_env_vars/keys.py +1 -0
  28. polyaxon/_flow/environment/__init__.py +3 -3
  29. polyaxon/_flow/operations/operation.py +27 -19
  30. polyaxon/_fs/fs.py +1 -1
  31. polyaxon/_k8s/converter/base/base.py +2 -1
  32. polyaxon/_k8s/converter/base/main.py +1 -0
  33. polyaxon/_k8s/converter/common/accelerators.py +7 -4
  34. polyaxon/_k8s/converter/converters/ray_job.py +4 -2
  35. polyaxon/_k8s/custom_resources/dask_job.py +3 -0
  36. polyaxon/_k8s/custom_resources/kubeflow/common.py +4 -1
  37. polyaxon/_k8s/custom_resources/ray_job.py +3 -0
  38. polyaxon/_k8s/custom_resources/setter.py +1 -1
  39. polyaxon/_k8s/executor/async_executor.py +2 -0
  40. polyaxon/_k8s/logging/async_monitor.py +64 -8
  41. polyaxon/_k8s/manager/async_manager.py +15 -0
  42. polyaxon/_k8s/manager/manager.py +16 -1
  43. polyaxon/_local_process/__init__.py +0 -0
  44. polyaxon/_local_process/agent.py +6 -0
  45. polyaxon/_local_process/converter/__init__.py +1 -0
  46. polyaxon/_local_process/converter/base/__init__.py +1 -0
  47. polyaxon/_local_process/converter/base/base.py +140 -0
  48. polyaxon/_local_process/converter/base/containers.py +69 -0
  49. polyaxon/_local_process/converter/base/env_vars.py +253 -0
  50. polyaxon/_local_process/converter/base/init.py +414 -0
  51. polyaxon/_local_process/converter/base/main.py +74 -0
  52. polyaxon/_local_process/converter/base/mounts.py +82 -0
  53. polyaxon/_local_process/converter/converters/__init__.py +8 -0
  54. polyaxon/_local_process/converter/converters/job.py +40 -0
  55. polyaxon/_local_process/converter/converters/service.py +41 -0
  56. polyaxon/_local_process/converter/mixins.py +38 -0
  57. polyaxon/_local_process/executor.py +132 -0
  58. polyaxon/_local_process/process_types.py +39 -0
  59. polyaxon/_pql/manager.py +1 -1
  60. polyaxon/_runner/agent/async_agent.py +17 -6
  61. polyaxon/_runner/agent/base_agent.py +11 -5
  62. polyaxon/_runner/agent/sync_agent.py +16 -5
  63. polyaxon/_runner/executor.py +1 -1
  64. polyaxon/_schemas/agent.py +1 -1
  65. polyaxon/_sdk/api/agents_v1_api.py +179 -0
  66. polyaxon/_sdk/api/organizations_v1_api.py +8 -8
  67. polyaxon/_sdk/api/project_dashboards_v1_api.py +12 -12
  68. polyaxon/_sdk/api/project_searches_v1_api.py +12 -12
  69. polyaxon/_sdk/api/projects_v1_api.py +221 -44
  70. polyaxon/_sdk/api/runs_v1_api.py +186 -232
  71. polyaxon/_sdk/api/service_accounts_v1_api.py +4 -4
  72. polyaxon/_sdk/api/teams_v1_api.py +2827 -375
  73. polyaxon/_sdk/api/users_v1_api.py +231 -55
  74. polyaxon/_sdk/async_client/api_client.py +4 -0
  75. polyaxon/_sdk/schemas/__init__.py +1 -1
  76. polyaxon/_sdk/schemas/v1_agent.py +2 -1
  77. polyaxon/_sdk/schemas/v1_dashboard_spec.py +4 -0
  78. polyaxon/_sdk/schemas/v1_preset.py +8 -0
  79. polyaxon/_sdk/schemas/v1_project_settings.py +4 -2
  80. polyaxon/_sdk/schemas/v1_section_spec.py +7 -2
  81. polyaxon/_sdk/schemas/v1_settings_catalog.py +1 -0
  82. polyaxon/_sdk/schemas/v1_team.py +3 -0
  83. polyaxon/_sdk/schemas/v1_user.py +1 -2
  84. polyaxon/_sdk/schemas/v1_user_access.py +17 -0
  85. polyaxon/_sidecar/container/__init__.py +31 -17
  86. polyaxon/_sidecar/container/monitors/logs.py +10 -13
  87. polyaxon/_sidecar/ignore.py +0 -1
  88. polyaxon/_utils/fqn_utils.py +25 -2
  89. polyaxon/pkg.py +1 -1
  90. polyaxon/schemas.py +1 -1
  91. {polyaxon-2.1.0rc9.dist-info → polyaxon-2.4.0rc1.dist-info}/METADATA +43 -43
  92. {polyaxon-2.1.0rc9.dist-info → polyaxon-2.4.0rc1.dist-info}/RECORD +96 -79
  93. {polyaxon-2.1.0rc9.dist-info → polyaxon-2.4.0rc1.dist-info}/WHEEL +1 -1
  94. polyaxon/_sdk/schemas/v1_project_user_access.py +0 -10
  95. {polyaxon-2.1.0rc9.dist-info → polyaxon-2.4.0rc1.dist-info}/LICENSE +0 -0
  96. {polyaxon-2.1.0rc9.dist-info → polyaxon-2.4.0rc1.dist-info}/entry_points.txt +0 -0
  97. {polyaxon-2.1.0rc9.dist-info → polyaxon-2.4.0rc1.dist-info}/top_level.txt +0 -0
@@ -15,6 +15,7 @@ from polyaxon._cli.project_versions import (
15
15
  list_project_versions,
16
16
  open_project_version_dashboard,
17
17
  pull_one_or_many_project_versions,
18
+ push_one_or_many_project_versions,
18
19
  register_project_version,
19
20
  stage_project_version,
20
21
  transfer_project_version,
@@ -72,7 +73,7 @@ def ls(ctx, project, query, sort, limit, offset):
72
73
  \b
73
74
  $ polyaxon artifacts ls --project=acme/data-versioning
74
75
  """
75
- owner, project_name = get_project_or_local(
76
+ owner, _, project_name = get_project_or_local(
76
77
  project or ctx.obj.get("project"), is_cli=True
77
78
  )
78
79
  list_project_versions(
@@ -145,11 +146,12 @@ def register(
145
146
  $ polyaxon artifacts register -p owner/name -ver v1 --tags="tag1,tag2"
146
147
  """
147
148
  version = version or ctx.obj.get("version")
148
- owner, project_name = get_project_or_local(
149
+ owner, team, project_name = get_project_or_local(
149
150
  project or ctx.obj.get("project"), is_cli=True
150
151
  )
151
152
  register_project_version(
152
153
  owner=owner,
154
+ team=team,
153
155
  project_name=project_name,
154
156
  version=version,
155
157
  kind=V1ProjectVersionKind.ARTIFACT,
@@ -227,11 +229,12 @@ def copy(
227
229
  $ polyaxon artifacts copy -p owner/name -ver v1 --tags="tag1,tag2" --name new-v1
228
230
  """
229
231
  version = version or ctx.obj.get("version")
230
- owner, project_name = get_project_or_local(
232
+ owner, team, project_name = get_project_or_local(
231
233
  project or ctx.obj.get("project"), is_cli=True
232
234
  )
233
235
  copy_project_version(
234
236
  owner=owner,
237
+ team=team,
235
238
  project_name=project_name,
236
239
  version=version,
237
240
  kind=V1ProjectVersionKind.ARTIFACT,
@@ -265,11 +268,12 @@ def get(ctx, project, version):
265
268
  $ polyaxon artifacts get -p owner/data-versioning -ver rc1
266
269
  """
267
270
  version = version or ctx.obj.get("version") or "latest"
268
- owner, project_name = get_project_or_local(
271
+ owner, team, project_name = get_project_or_local(
269
272
  project or ctx.obj.get("project"), is_cli=True
270
273
  )
271
274
  get_project_version(
272
275
  owner=owner,
276
+ team=team,
273
277
  project_name=project_name,
274
278
  kind=V1ProjectVersionKind.ARTIFACT,
275
279
  version=version,
@@ -296,7 +300,7 @@ def stages(ctx, project, version):
296
300
  $ polyaxon artifacts stages -p owner/my-project -ver rc12
297
301
  """
298
302
  version = version or ctx.obj.get("version") or "latest"
299
- owner, project_name = get_project_or_local(
303
+ owner, _, project_name = get_project_or_local(
300
304
  project or ctx.obj.get("project"), is_cli=True
301
305
  )
302
306
  get_project_version_stages(
@@ -332,7 +336,7 @@ def delete(ctx, project, version, yes):
332
336
  $ polyaxon artifacts get -p owner/my-project -ver rc12
333
337
  """
334
338
  version = version or ctx.obj.get("version") or "latest"
335
- owner, project_name = get_project_or_local(
339
+ owner, _, project_name = get_project_or_local(
336
340
  project or ctx.obj.get("project"), is_cli=True
337
341
  )
338
342
  delete_project_version(
@@ -375,7 +379,7 @@ def update(ctx, project, version, name, description, tags):
375
379
  $ polyaxon artifacts update --tags="foo, bar"
376
380
  """
377
381
  version = version or ctx.obj.get("version") or "latest"
378
- owner, project_name = get_project_or_local(
382
+ owner, _, project_name = get_project_or_local(
379
383
  project or ctx.obj.get("project"), is_cli=True
380
384
  )
381
385
  update_project_version(
@@ -423,7 +427,7 @@ def stage(ctx, project, version, to, reason, message):
423
427
  $ polyaxon artifacts stage -p acme/foobar -ver rc12 --to=staging --reason GithubAction --message="Use carefully!"
424
428
  """
425
429
  version = version or ctx.obj.get("version") or "latest"
426
- owner, project_name = get_project_or_local(
430
+ owner, _, project_name = get_project_or_local(
427
431
  project or ctx.obj.get("project"), is_cli=True
428
432
  )
429
433
  stage_project_version(
@@ -461,7 +465,7 @@ def transfer(ctx, project, version, to_project):
461
465
  $ polyaxon artifacts transfer -p acme/foobar -ver rc12 --to-project=dest-project
462
466
  """
463
467
  version = version or ctx.obj.get("version") or "latest"
464
- owner, project_name = get_project_or_local(
468
+ owner, _, project_name = get_project_or_local(
465
469
  project or ctx.obj.get("project"), is_cli=True
466
470
  )
467
471
  transfer_project_version(
@@ -530,7 +534,7 @@ def pull(
530
534
  \b
531
535
  $ polyaxon artifacts pull -p acme/foobar -a --path /tmp/versions
532
536
  """
533
- owner, project_name = get_project_or_local(
537
+ owner, _, project_name = get_project_or_local(
534
538
  project or ctx.obj.get("project"), is_cli=True
535
539
  )
536
540
  pull_one_or_many_project_versions(
@@ -547,6 +551,86 @@ def pull(
547
551
  )
548
552
 
549
553
 
554
+ @artifacts.command()
555
+ @click.option(*OPTIONS_PROJECT["args"], **OPTIONS_PROJECT["kwargs"])
556
+ @click.option(*OPTIONS_ARTIFACT_VERSION["args"], **OPTIONS_ARTIFACT_VERSION["kwargs"])
557
+ @click.option(
558
+ "--all-versions",
559
+ "-a",
560
+ is_flag=True,
561
+ default=False,
562
+ help="To push all versions.",
563
+ )
564
+ @click.option(
565
+ "--clean",
566
+ "-c",
567
+ is_flag=True,
568
+ default=False,
569
+ help="To clean the version(s) local data after syncing.",
570
+ )
571
+ @click.option(
572
+ "--path",
573
+ "--path-from",
574
+ type=click.Path(exists=False),
575
+ help="Optional path where the artifact versions are persisted, "
576
+ "default value is taken from the env var: `POLYAXON_OFFLINE_ROOT`.",
577
+ )
578
+ @click.option(
579
+ "--reset-project",
580
+ is_flag=True,
581
+ default=False,
582
+ help="Optional, to ignore the owner/project of the local "
583
+ "version and use the owner/project provided or resolved from the current project.",
584
+ )
585
+ @click.option(
586
+ "--force",
587
+ is_flag=True,
588
+ default=False,
589
+ help="Flag to force register if the version already exists.",
590
+ )
591
+ @click.pass_context
592
+ @clean_outputs
593
+ def push(
594
+ ctx,
595
+ project,
596
+ version,
597
+ all_versions,
598
+ clean,
599
+ path,
600
+ reset_project,
601
+ force,
602
+ ):
603
+ """Push local packaged artifact version or multiple artifact versions to a remove server.
604
+
605
+ Uses /docs/core/cli/#caching
606
+
607
+ Examples:
608
+
609
+ \b
610
+ $ polyaxon artifacts push -ver rc12
611
+
612
+ \b
613
+ $ polyaxon artifacts push -p acme/foobar --path /tmp/versions
614
+
615
+ \b
616
+ $ polyaxon artifacts pull -p acme/foobar -a --path /tmp/versions
617
+ """
618
+ owner, _, project_name = get_project_or_local(
619
+ project or ctx.obj.get("project"), is_cli=True
620
+ )
621
+ push_one_or_many_project_versions(
622
+ owner=owner,
623
+ project_name=project_name,
624
+ kind=V1ProjectVersionKind.ARTIFACT,
625
+ version=version,
626
+ all_versions=all_versions,
627
+ path=path,
628
+ clean=clean,
629
+ force=force,
630
+ reset_project=reset_project,
631
+ )
632
+
633
+
550
634
  @artifacts.command()
551
635
  @click.option(*OPTIONS_PROJECT["args"], **OPTIONS_PROJECT["kwargs"])
552
636
  @click.option(*OPTIONS_ARTIFACT_VERSION["args"], **OPTIONS_ARTIFACT_VERSION["kwargs"])
@@ -569,11 +653,12 @@ def pull(
569
653
  def dashboard(ctx, project, version, yes, url):
570
654
  """Open this artifact version's dashboard details in browser."""
571
655
  version = version or ctx.obj.get("version") or "latest"
572
- owner, project_name = get_project_or_local(
656
+ owner, team, project_name = get_project_or_local(
573
657
  project or ctx.obj.get("project"), is_cli=True
574
658
  )
575
659
  open_project_version_dashboard(
576
660
  owner=owner,
661
+ team=team,
577
662
  project_name=project_name,
578
663
  kind=V1ProjectVersionKind.ARTIFACT,
579
664
  version=version,
@@ -21,6 +21,7 @@ from polyaxon._cli.project_versions import (
21
21
  list_project_versions,
22
22
  open_project_version_dashboard,
23
23
  pull_one_or_many_project_versions,
24
+ push_one_or_many_project_versions,
24
25
  register_project_version,
25
26
  stage_project_version,
26
27
  transfer_project_version,
@@ -113,7 +114,7 @@ def ls(ctx, project, query, sort, limit, offset):
113
114
  \b
114
115
  $ polyaxon components ls -p=acme/kaniko
115
116
  """
116
- owner, project_name = get_project_or_local(
117
+ owner, _, project_name = get_project_or_local(
117
118
  project or ctx.obj.get("project"), is_cli=True
118
119
  )
119
120
  polyaxon_client = get_current_or_public_client()
@@ -169,7 +170,7 @@ def register(ctx, polyaxonfile, project, version, description, tags, force):
169
170
  $ polyaxon components register -f polyaxonfile.yaml -p owner/name -ver v1 --tags="tag1,tag2"
170
171
  """
171
172
  version = version or ctx.obj.get("version")
172
- owner, project_name = get_project_or_local(
173
+ owner, team, project_name = get_project_or_local(
173
174
  project or ctx.obj.get("project"), is_cli=True
174
175
  )
175
176
 
@@ -187,6 +188,7 @@ def register(ctx, polyaxonfile, project, version, description, tags, force):
187
188
 
188
189
  register_project_version(
189
190
  owner=owner,
191
+ team=team,
190
192
  project_name=project_name,
191
193
  version=version,
192
194
  kind=V1ProjectVersionKind.COMPONENT,
@@ -255,11 +257,12 @@ def copy(
255
257
  $ polyaxon components copy -p owner/name -ver v1 --tags="tag1,tag2" --name new-v1
256
258
  """
257
259
  version = version or ctx.obj.get("version")
258
- owner, project_name = get_project_or_local(
260
+ owner, team, project_name = get_project_or_local(
259
261
  project or ctx.obj.get("project"), is_cli=True
260
262
  )
261
263
  copy_project_version(
262
264
  owner=owner,
265
+ team=team,
263
266
  project_name=project_name,
264
267
  version=version,
265
268
  kind=V1ProjectVersionKind.COMPONENT,
@@ -291,13 +294,14 @@ def get(ctx, project, version):
291
294
  $ polyaxon components get -p owner/my-project -ver rc12
292
295
  """
293
296
  version = version or ctx.obj.get("version") or "latest"
294
- owner, project_name = get_project_or_local(
297
+ owner, team, project_name = get_project_or_local(
295
298
  project or ctx.obj.get("project"), is_cli=True
296
299
  )
297
300
  polyaxon_client = get_current_or_public_client()
298
301
 
299
302
  get_project_version(
300
303
  owner=owner,
304
+ team=team,
301
305
  project_name=project_name,
302
306
  kind=V1ProjectVersionKind.COMPONENT,
303
307
  version=version,
@@ -326,7 +330,7 @@ def stages(ctx, project, version):
326
330
  $ polyaxon components stages -p owner/my-project -ver rc12
327
331
  """
328
332
  version = version or ctx.obj.get("version") or "latest"
329
- owner, project_name = get_project_or_local(
333
+ owner, _, project_name = get_project_or_local(
330
334
  project or ctx.obj.get("project"), is_cli=True
331
335
  )
332
336
  polyaxon_client = get_current_or_public_client()
@@ -368,7 +372,7 @@ def delete(ctx, project, version, yes):
368
372
  $ polyaxon components get -p owner/my-project -ver rc12
369
373
  """
370
374
  version = version or ctx.obj.get("version") or "latest"
371
- owner, project_name = get_project_or_local(
375
+ owner, _, project_name = get_project_or_local(
372
376
  project or ctx.obj.get("project"), is_cli=True
373
377
  )
374
378
  delete_project_version(
@@ -411,7 +415,7 @@ def update(ctx, project, version, name, description, tags):
411
415
  $ polyaxon components update --tags="foo, bar"
412
416
  """
413
417
  version = version or ctx.obj.get("version") or "latest"
414
- owner, project_name = get_project_or_local(
418
+ owner, _, project_name = get_project_or_local(
415
419
  project or ctx.obj.get("project"), is_cli=True
416
420
  )
417
421
  update_project_version(
@@ -460,7 +464,7 @@ def stage(ctx, project, version, to, reason, message):
460
464
  $ polyaxon components stage -p acme/foobar -ver rc12 --to=staging --reason GithubAction --message="Use carefully!"
461
465
  """
462
466
  version = version or ctx.obj.get("version") or "latest"
463
- owner, project_name = get_project_or_local(
467
+ owner, _, project_name = get_project_or_local(
464
468
  project or ctx.obj.get("project"), is_cli=True
465
469
  )
466
470
  stage_project_version(
@@ -498,7 +502,7 @@ def transfer(ctx, project, version, to_project):
498
502
  $ polyaxon components transfer -p acme/foobar -ver rc12 --to-project=dest-project
499
503
  """
500
504
  version = version or ctx.obj.get("version") or "latest"
501
- owner, project_name = get_project_or_local(
505
+ owner, _, project_name = get_project_or_local(
502
506
  project or ctx.obj.get("project"), is_cli=True
503
507
  )
504
508
  transfer_project_version(
@@ -559,7 +563,7 @@ def pull(
559
563
  \b
560
564
  $ polyaxon components pull -p acme/foobar -a --path /tmp/versions
561
565
  """
562
- owner, project_name = get_project_or_local(
566
+ owner, _, project_name = get_project_or_local(
563
567
  project or ctx.obj.get("project"), is_cli=True
564
568
  )
565
569
  pull_one_or_many_project_versions(
@@ -576,6 +580,86 @@ def pull(
576
580
  )
577
581
 
578
582
 
583
+ @components.command()
584
+ @click.option(*OPTIONS_PROJECT["args"], **OPTIONS_PROJECT["kwargs"])
585
+ @click.option(*OPTIONS_COMPONENT_VERSION["args"], **OPTIONS_COMPONENT_VERSION["kwargs"])
586
+ @click.option(
587
+ "--all-versions",
588
+ "-a",
589
+ is_flag=True,
590
+ default=False,
591
+ help="To push all versions.",
592
+ )
593
+ @click.option(
594
+ "--clean",
595
+ "-c",
596
+ is_flag=True,
597
+ default=False,
598
+ help="To clean the version(s) local data after syncing.",
599
+ )
600
+ @click.option(
601
+ "--path",
602
+ "--path-from",
603
+ type=click.Path(exists=False),
604
+ help="Optional path where the component versions are persisted, "
605
+ "default value is taken from the env var: `POLYAXON_OFFLINE_ROOT`.",
606
+ )
607
+ @click.option(
608
+ "--reset-project",
609
+ is_flag=True,
610
+ default=False,
611
+ help="Optional, to ignore the owner/project of the local "
612
+ "version and use the owner/project provided or resolved from the current project.",
613
+ )
614
+ @click.option(
615
+ "--force",
616
+ is_flag=True,
617
+ default=False,
618
+ help="Flag to force register if the version already exists.",
619
+ )
620
+ @click.pass_context
621
+ @clean_outputs
622
+ def push(
623
+ ctx,
624
+ project,
625
+ version,
626
+ all_versions,
627
+ clean,
628
+ path,
629
+ reset_project,
630
+ force,
631
+ ):
632
+ """Push local packaged component version or multiple component versions to a remove server.
633
+
634
+ Uses /docs/core/cli/#caching
635
+
636
+ Examples:
637
+
638
+ \b
639
+ $ polyaxon components push -ver rc12
640
+
641
+ \b
642
+ $ polyaxon components push -p acme/foobar --path /tmp/versions
643
+
644
+ \b
645
+ $ polyaxon components pull -p acme/foobar -a --path /tmp/versions
646
+ """
647
+ owner, _, project_name = get_project_or_local(
648
+ project or ctx.obj.get("project"), is_cli=True
649
+ )
650
+ push_one_or_many_project_versions(
651
+ owner=owner,
652
+ project_name=project_name,
653
+ kind=V1ProjectVersionKind.COMPONENT,
654
+ version=version,
655
+ all_versions=all_versions,
656
+ path=path,
657
+ clean=clean,
658
+ force=force,
659
+ reset_project=reset_project,
660
+ )
661
+
662
+
579
663
  @components.command()
580
664
  @click.option(*OPTIONS_PROJECT["args"], **OPTIONS_PROJECT["kwargs"])
581
665
  @click.option(*OPTIONS_COMPONENT_VERSION["args"], **OPTIONS_COMPONENT_VERSION["kwargs"])
@@ -598,11 +682,12 @@ def pull(
598
682
  def dashboard(ctx, project, version, yes, url):
599
683
  """Open this component version's dashboard details in browser."""
600
684
  version = version or ctx.obj.get("version") or "latest"
601
- owner, project_name = get_project_or_local(
685
+ owner, team, project_name = get_project_or_local(
602
686
  project or ctx.obj.get("project"), is_cli=True
603
687
  )
604
688
  open_project_version_dashboard(
605
689
  owner=owner,
690
+ team=team,
606
691
  project_name=project_name,
607
692
  kind=V1ProjectVersionKind.COMPONENT,
608
693
  version=version,
polyaxon/_cli/config.py CHANGED
@@ -44,6 +44,27 @@ def set_home_path(home_path: str):
44
44
  settings.set_home_config(_config)
45
45
 
46
46
 
47
+ def set_owner(owner: str):
48
+ try:
49
+ _config = UserConfigManager.get_config_or_default()
50
+ except Exception as e:
51
+ logger.debug(
52
+ "Home configuration could not be loaded.\n"
53
+ "Error: %s\n"
54
+ "Purging home configuration and resetting values.",
55
+ e,
56
+ )
57
+ UserConfigManager.purge()
58
+ _config = UserConfigManager.get_config_or_default()
59
+
60
+ data = owner.split("/")
61
+ if len(data) > 2:
62
+ Printer.error("Invalid owner format, please provide a valid owner.")
63
+ sys.exit(1)
64
+ _config.organization = owner
65
+ UserConfigManager.set_config(_config)
66
+
67
+
47
68
  def validate_options(ctx, param, value):
48
69
  possible_values = ["verbose", "host"]
49
70
  if value and value not in possible_values:
@@ -199,6 +220,11 @@ def get(keys):
199
220
  type=click.Path(exists=False),
200
221
  help="To set POLYAXON_HOME to specify the context where the CLI/Client reads/writes global configuration.",
201
222
  )
223
+ @click.option(
224
+ "--owner",
225
+ type=click.Path(exists=False),
226
+ help="To set current organization or team space.",
227
+ )
202
228
  @click.option(
203
229
  "--disable-errors-reporting",
204
230
  type=bool,
@@ -230,6 +256,11 @@ def set_(**kwargs): # pylint:disable=redefined-builtin
230
256
  home_path = kwargs.pop("home", None)
231
257
  set_home_path(home_path)
232
258
 
259
+ if kwargs.get("owner") is not None:
260
+ owner = kwargs.pop("owner", None)
261
+ if owner:
262
+ set_owner(owner)
263
+
233
264
  from polyaxon._managers.auth import AuthConfigManager
234
265
 
235
266
  try:
@@ -1,5 +1,7 @@
1
1
  import sys
2
2
 
3
+ from typing import Optional
4
+
3
5
  import click
4
6
 
5
7
  from clipped.formatting import Printer
@@ -10,10 +12,21 @@ from polyaxon.api import POLYAXON_CLOUD_HOST
10
12
  from polyaxon.logger import clean_outputs
11
13
 
12
14
 
15
+ def get_project_subpath_url(owner: str, team: Optional[str], project: str):
16
+ if team:
17
+ return "{}/ts/{}/{}".format(owner, team, project)
18
+ return "{}/{}".format(owner, project)
19
+
20
+
13
21
  def get_dashboard_url(
14
- base: str = "ui", subpath: str = "", use_cloud: bool = False
22
+ base: str = "ui", subpath: str = "", use_cloud: bool = False, host: str = None
15
23
  ) -> str:
16
- host = POLYAXON_CLOUD_HOST if use_cloud else clean_host(settings.CLIENT_CONFIG.host)
24
+ if not host:
25
+ host = (
26
+ POLYAXON_CLOUD_HOST
27
+ if use_cloud
28
+ else clean_host(settings.CLIENT_CONFIG.host)
29
+ )
17
30
  dashboard_url = "{}/{}/".format(host, base)
18
31
  if subpath:
19
32
  return "{}{}/".format(dashboard_url, subpath.rstrip("/"))
polyaxon/_cli/init.py CHANGED
@@ -112,7 +112,7 @@ def init(project, git_connection, git_url, polyaxonfile, polyaxonignore, yes):
112
112
  command_help="polyaxon init",
113
113
  )
114
114
  if project:
115
- owner, project_name = get_project_or_local(project, is_cli=True)
115
+ owner, _, project_name = get_project_or_local(project, is_cli=True)
116
116
  try:
117
117
  polyaxon_client = ProjectClient(
118
118
  owner=owner, project=project_name, manual_exceptions_handling=True