anyscale 0.25.1__py3-none-any.whl → 0.25.2__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 (39) hide show
  1. anyscale/__init__.py +10 -0
  2. anyscale/_private/anyscale_client/anyscale_client.py +35 -9
  3. anyscale/_private/anyscale_client/common.py +32 -3
  4. anyscale/_private/anyscale_client/fake_anyscale_client.py +69 -6
  5. anyscale/_private/docgen/__main__.py +9 -2
  6. anyscale/_private/docgen/api.md +13 -0
  7. anyscale/_private/docgen/models.md +3 -3
  8. anyscale/client/README.md +1 -0
  9. anyscale/client/openapi_client/api/default_api.py +119 -0
  10. anyscale/client/openapi_client/models/baseimagesenum.py +43 -1
  11. anyscale/client/openapi_client/models/jobs_sort_field.py +1 -2
  12. anyscale/client/openapi_client/models/sessions_sort_field.py +1 -2
  13. anyscale/client/openapi_client/models/supportedbaseimagesenum.py +43 -1
  14. anyscale/commands/cloud_commands.py +25 -8
  15. anyscale/commands/service_account_commands.py +65 -8
  16. anyscale/controllers/cloud_controller.py +29 -21
  17. anyscale/controllers/cluster_controller.py +1 -9
  18. anyscale/controllers/job_controller.py +0 -3
  19. anyscale/resource_quota/_private/resource_quota_sdk.py +15 -6
  20. anyscale/sdk/anyscale_client/api/default_api.py +119 -0
  21. anyscale/sdk/anyscale_client/models/baseimagesenum.py +43 -1
  22. anyscale/sdk/anyscale_client/models/jobs_sort_field.py +1 -2
  23. anyscale/sdk/anyscale_client/models/supportedbaseimagesenum.py +43 -1
  24. anyscale/service_account/__init__.py +88 -0
  25. anyscale/service_account/_private/service_account_sdk.py +101 -0
  26. anyscale/service_account/commands.py +147 -0
  27. anyscale/service_account/models.py +66 -0
  28. anyscale/shared_anyscale_utils/latest_ray_version.py +1 -1
  29. anyscale/shared_anyscale_utils/utils/id_gen.py +1 -0
  30. anyscale/util.py +8 -0
  31. anyscale/version.py +1 -1
  32. {anyscale-0.25.1.dist-info → anyscale-0.25.2.dist-info}/METADATA +1 -1
  33. {anyscale-0.25.1.dist-info → anyscale-0.25.2.dist-info}/RECORD +38 -35
  34. anyscale/controllers/service_account_controller.py +0 -168
  35. {anyscale-0.25.1.dist-info → anyscale-0.25.2.dist-info}/LICENSE +0 -0
  36. {anyscale-0.25.1.dist-info → anyscale-0.25.2.dist-info}/NOTICE +0 -0
  37. {anyscale-0.25.1.dist-info → anyscale-0.25.2.dist-info}/WHEEL +0 -0
  38. {anyscale-0.25.1.dist-info → anyscale-0.25.2.dist-info}/entry_points.txt +0 -0
  39. {anyscale-0.25.1.dist-info → anyscale-0.25.2.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: anyscale
3
- Version: 0.25.1
3
+ Version: 0.25.2
4
4
  Summary: Command Line Interface for Anyscale
5
5
  Author: Anyscale Inc.
6
6
  License: AS License
@@ -1,4 +1,4 @@
1
- anyscale/__init__.py,sha256=mNi3XLFzZS4uWzhSxEaN8ji8xc1-69dxob6fs8Bmb8U,8179
1
+ anyscale/__init__.py,sha256=YtAe4ql_2J7SnRMMvJzx1Fdw2ZjtC2VLfZFPSDMdLxA,8595
2
2
  anyscale/anyscale-cloud-setup-gcp-oa.yaml,sha256=R8oCBlHF5ItLVZA8m35Dli9fdWXbadLHiNkWhRdUz9U,2722
3
3
  anyscale/anyscale-cloud-setup-gcp.yaml,sha256=-sNJ45nLW6W1qIu0Kc-d2IkYTTjEVYI65lAxZB4KcO8,3922
4
4
  anyscale/anyscale-cloud-setup-oa.yaml,sha256=MMfjT2UCNQS43I3mGOMoSq1cq1dufxtnXU9Zy260TK8,3192
@@ -26,20 +26,20 @@ anyscale/project_utils.py,sha256=2P7n3K7R3Iy3pZPAevtga4sn1jfdLLwblt2L5MJqUa0,179
26
26
  anyscale/scripts.py,sha256=HR6JOCBVBXMVi1Kz5uJmjsh73t2l1W8UbUge83ofnqk,5474
27
27
  anyscale/snapshot.py,sha256=UGJT5C1s_4xmQxjWODK5DFpGxHRBX5jOCdSCqXESH8E,1685
28
28
  anyscale/tables.py,sha256=TV4F2uLnwehvbkAfaP7iuLlT2wLIo6ORH2LVdRGXW5g,2840
29
- anyscale/util.py,sha256=Rhkz3VLUYAjLNUd1zy3w-9-EjLW2sLYJ3j_LAxj-_lM,40498
30
- anyscale/version.py,sha256=ACu2Z3Q3TFgYpAno_eu9ssJ1QULjNXvjGvyqDSHrQ_o,23
29
+ anyscale/util.py,sha256=Tqb9qWSxQI_PBJVSDxm9RWqFyGJFClgZDPByhb_fhU8,40813
30
+ anyscale/version.py,sha256=NMzPG-AisbqV0qHNDcM-oIMtdXA6rLhjzeATPyNq6Nw,23
31
31
  anyscale/workspace_utils.py,sha256=OViE88CnIF5ruVxd3kazQ0Mf2BxqtMq6wx-XQ5A2cp8,1204
32
32
  anyscale/_private/anyscale_client/README.md,sha256=gk8obk7kqg6VWoUHcqDMwJULh35tYKEZFC0UF_dixGA,718
33
33
  anyscale/_private/anyscale_client/__init__.py,sha256=807Blx3RHQeS8BmKZcsOQQ4dYoKlCnpm6Bdsif2CrHg,337
34
- anyscale/_private/anyscale_client/anyscale_client.py,sha256=CXxFzoSNBJrx4ytuJ_V0ngXNWodRtj0PjdWEBnK6oD4,78439
35
- anyscale/_private/anyscale_client/common.py,sha256=8H6CI4os80Vacy0AzJ4rpXpVZuvKzvwktO5jYLjDMZ8,22682
36
- anyscale/_private/anyscale_client/fake_anyscale_client.py,sha256=c1kcatOIVjACfoObI9Fi9GqWilyfo1IeNzOuiv9WV9I,49753
34
+ anyscale/_private/anyscale_client/anyscale_client.py,sha256=c_aaEKAt3_TlgYPEV0kKfx0JwqJBzhlvyMZ0kiBZ2sI,79466
35
+ anyscale/_private/anyscale_client/common.py,sha256=F0jW__QHrchfo09UwQwhyFnagdawJayt0XGcLylTCZE,23564
36
+ anyscale/_private/anyscale_client/fake_anyscale_client.py,sha256=aH903DEsybqkxqmKN-MfMS17aNBKnCJuHoPqwp5BbCI,52467
37
37
  anyscale/_private/docgen/README.md,sha256=z0tj8Jy0KmxWJBQMHKyzXGX_cYYgI8m5DCD6KCMU8oI,762
38
- anyscale/_private/docgen/__main__.py,sha256=6gl0j7X--e3b69_UC2nzB4Sy9NIWnDNDlhygcdBPVh8,25444
39
- anyscale/_private/docgen/api.md,sha256=bJSK-FvWWpMuxaW0b_YcuAx5exS_5q72CvVpef7XTA4,32123
38
+ anyscale/_private/docgen/__main__.py,sha256=K-U7QHryFUorzh8-Lj_uQYf-XEpvKsDkka3_Kw429t4,25824
39
+ anyscale/_private/docgen/api.md,sha256=SzLoDy6GyriU60l8964CNWz3z_QNEJA7mFHr0FzXyPU,32527
40
40
  anyscale/_private/docgen/generator.py,sha256=dgC3qlqhJrTt0bTl3ExlRFLDwpn_Is2Yv47TJ33jaeE,21711
41
41
  anyscale/_private/docgen/generator_legacy.py,sha256=pss_6ONF55XhARrKGcREDmg0J5plWact6USgb5Tr5mM,3002
42
- anyscale/_private/docgen/models.md,sha256=YDu1CHaZKx6SXmd5ULCLb6XmQ5skE6537oMW4Js65vU,275765
42
+ anyscale/_private/docgen/models.md,sha256=gNokrRui7ea89AfpdMew64sAnZU9X27bSv57-Do93-g,278751
43
43
  anyscale/_private/models/__init__.py,sha256=ZrkdHhJZNeCYiogsHc_po8m7vaVdxEjkNGixNeYdlgs,125
44
44
  anyscale/_private/models/image_uri.py,sha256=CMzHc-MNTBsBXvX0G73bjkiznCbm95DYQusgXJ8drm8,3971
45
45
  anyscale/_private/models/model_base.py,sha256=QdIKiyNpvjyUGqQtL4_J9qpCK6clHdmWiKV4jSFXunU,8217
@@ -98,7 +98,7 @@ anyscale/background/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
98
98
  anyscale/background/job_runner.py,sha256=LTuv9JOahyv6C9i7DLQAONgQF6--FfYZEmJrKy-sUG8,2687
99
99
  anyscale/client/.gitignore,sha256=JZyvYEtT2DCSK9V5Joi6lQofhMik4PXiJRCWsg7SvqI,807
100
100
  anyscale/client/.openapi-generator-ignore,sha256=pu2PTide7pJtJ-DFLzDy0cTYQJRlrB-8RRH3zGLeUds,1040
101
- anyscale/client/README.md,sha256=FiqUisucOVyj16LvdxF4mIpkX_PkpHTBzt6kWDm9FMs,130145
101
+ anyscale/client/README.md,sha256=UeOIy6o4dGZeLzdEBItHCN-LcBJJPCi_M4_5aDbuqMs,130374
102
102
  anyscale/client/git_push.sh,sha256=EDCZOTTiLxbtPHmiU63qC99rGH67B7dhdPZdNUKivF0,1827
103
103
  anyscale/client/requirements.txt,sha256=dkVKYUStC5h_g_87SH7pRdhXCj7ySozAJMGAFEzGgFc,126
104
104
  anyscale/client/setup.cfg,sha256=l7bdKSIedeBhhoDtupsBwx1xPrlBf2yYeTH7a8kMga4,28
@@ -112,7 +112,7 @@ anyscale/client/openapi_client/configuration.py,sha256=Dd5XrlHwv-wxnf0C35PG_-HBQ
112
112
  anyscale/client/openapi_client/exceptions.py,sha256=3egwsXQG2j_vARbqgBxUO1xSltAhpfiHTYVP7VXTvU0,3792
113
113
  anyscale/client/openapi_client/rest.py,sha256=Ehj37v7GHW6SXV067Hze5HE42ayKaGi6a6ZlkR7u3Lg,12501
114
114
  anyscale/client/openapi_client/api/__init__.py,sha256=i8u7BI2xX1GrXTL3hN0pKpYIlnT-D_uDxH2ElOfYG1I,141
115
- anyscale/client/openapi_client/api/default_api.py,sha256=-fOQPOpcAT6oTOwTCJC8Su7r3YV3Ue8VZbLlxuu87nU,2091654
115
+ anyscale/client/openapi_client/api/default_api.py,sha256=3TEUmmwxNs29_vsa22kryKwidpWiKWSEvvhDq3MFiiM,2097381
116
116
  anyscale/client/openapi_client/models/__init__.py,sha256=KGpJj7qOZZv3Y7sWndY2lAW4STE1IELJY-L2DpSQKtE,54042
117
117
  anyscale/client/openapi_client/models/access_config.py,sha256=b2mA0qtuTA5PFbp6C61Jc_T2zUMaojM1v32IhZo0MfY,3648
118
118
  anyscale/client/openapi_client/models/admin_create_user.py,sha256=9DPr8D0lKgoEZ3Z2kGsAd8L7ocFCiP6woOGLVs8SRb8,7251
@@ -169,7 +169,7 @@ anyscale/client/openapi_client/models/aws_region_info.py,sha256=y30HS1AyryxoqIEk
169
169
  anyscale/client/openapi_client/models/awsregionandzones_response.py,sha256=yUmo9cDoDworNZdnd-3F8PzLXWIMzPlxFstvo-p2HZY,3605
170
170
  anyscale/client/openapi_client/models/bank_account_information.py,sha256=500GehjG2BiYBj2VeAHGZ4TAr6_lRrTHYmnJ3aqsv60,8222
171
171
  anyscale/client/openapi_client/models/base_job_status.py,sha256=hQoX9Z6VWkKqPGVwiV7WGcfMgggWlpo8-Ig0lfhc534,3010
172
- anyscale/client/openapi_client/models/baseimagesenum.py,sha256=nnSXITsxfC7ZXQotMY9XvxmA71k83Dx6s8njfEQq-Hw,212372
172
+ anyscale/client/openapi_client/models/baseimagesenum.py,sha256=iaF5u-3Ih4r972CWQ_WuuogroS1LIvThGoH1kq1_t5A,216863
173
173
  anyscale/client/openapi_client/models/batch_response_batched_result_organization_invitation_base.py,sha256=jSabTOT2BCsngQQ9DcOj18Ug2ac1Dqfr4lbnVxTMfNE,3926
174
174
  anyscale/client/openapi_client/models/batched_result_organization_invitation_base.py,sha256=6lpamdA4O_xM3iRt6InZ2q5h0LIab4yx7FfJK-n8kog,5140
175
175
  anyscale/client/openapi_client/models/billing_information.py,sha256=P6U8sjJ_yhJki4XYuW_3m5V2hdwKSKXk8sXFMn8YsZg,6632
@@ -456,7 +456,7 @@ anyscale/client/openapi_client/models/job_submissions_sort_field.py,sha256=y0NH2
456
456
  anyscale/client/openapi_client/models/jobqueue_response.py,sha256=cwvt1GkB2cKOWohhMukTazJGYmat0zBV4b2dvpqixkQ,3506
457
457
  anyscale/client/openapi_client/models/jobs_logs.py,sha256=oGAsEtd7jYx9a8h6d0XUteCckeDujgrTgf-QwJUYVuQ,4576
458
458
  anyscale/client/openapi_client/models/jobs_logs_query_info.py,sha256=rW0zzwJggmaRz2sQoneqQDlU-bueirEHVOjAzHRfeJs,5794
459
- anyscale/client/openapi_client/models/jobs_sort_field.py,sha256=nWLJ9ruTehbT9FB7occ4C6IBJuPlxOXotH9_dZEdAR4,2953
459
+ anyscale/client/openapi_client/models/jobs_sort_field.py,sha256=G5NGcfckLltrUMLhIJsgOjtu9ckBkjyXqOqvb__GNvc,2929
460
460
  anyscale/client/openapi_client/models/jobslogs_response.py,sha256=0wC0BbXsXey1QjDLaNA867W2cSKpw-ShLwZ327ONIWg,3506
461
461
  anyscale/client/openapi_client/models/jobslogsqueryinfo_response.py,sha256=NEI0TbR2WMQWpnUf-DpqpE3LjIkeJXIWTE3UpQ9YrDU,3605
462
462
  anyscale/client/openapi_client/models/json_patch_operation.py,sha256=oHgT9WKmcuAp7fkkvFl0nPhoxdQVmPoxPfF82ivf73k,5419
@@ -663,7 +663,7 @@ anyscale/client/openapi_client/models/sessioncommandid_response.py,sha256=x74buY
663
663
  anyscale/client/openapi_client/models/sessiondescribe_response.py,sha256=Ujer2LG0p_iUY9eBTlUUB99oLB6EGuEq_lEbo950b94,3583
664
664
  anyscale/client/openapi_client/models/sessiondetails_response.py,sha256=Lh-hoiRP3K7OH4sMvIHCJ7VK1JhWdngBy30QP-Z_uto,3572
665
665
  anyscale/client/openapi_client/models/sessionhistoryitem_list_response.py,sha256=H837Bhwhtj9zzzgftglrPVAtkJuCC3bTkpnItPfDMA8,4467
666
- anyscale/client/openapi_client/models/sessions_sort_field.py,sha256=9j_611fWcs61yzEmtV5wUPvSnQ8WrX0J7kfEf7CBbB8,2981
666
+ anyscale/client/openapi_client/models/sessions_sort_field.py,sha256=6C7TSxmnELVnK0l9_g3bSb9nV2fCLQroGdsZlTxymDY,2957
667
667
  anyscale/client/openapi_client/models/sessionsshkey_response.py,sha256=z0YT-uC_DYS6kn1C_2Xs6NHR4eMaOkRg05OUd1w02t0,3561
668
668
  anyscale/client/openapi_client/models/setup_initialize_session_options.py,sha256=6z4dZI7oa_YALBUGk3FVtNR8Kt4Sj8YaUKlcrIDNhZ0,6896
669
669
  anyscale/client/openapi_client/models/show_otp_source_return_api_model.py,sha256=gNK_eO-cTjA-aMCD2-U61psMxVsD4N9DzT6JQlOV1kQ,3642
@@ -683,7 +683,7 @@ anyscale/client/openapi_client/models/stop_session_options.py,sha256=8ulrBPdfMNE
683
683
  anyscale/client/openapi_client/models/stream_publish_request.py,sha256=39FNPmJYIg-nGNbIVyNoYkMlt4OjrVY9nVnqufHA7Ms,7774
684
684
  anyscale/client/openapi_client/models/subnet_id_with_availability_zone_aws.py,sha256=S2pj-e91QvTmbUhT_TBzYr8_ysxwl9uXabNHFDJJRzQ,4754
685
685
  anyscale/client/openapi_client/models/support_requests_query.py,sha256=uSM7EnvidalnDMA5rbu-wGFsP9PX8qdUwc7cABJ6ogw,5496
686
- anyscale/client/openapi_client/models/supportedbaseimagesenum.py,sha256=MjB8ksf_BA6lGpEUIRO_Rir9sVqkdmK4styGDj0KAx0,129377
686
+ anyscale/client/openapi_client/models/supportedbaseimagesenum.py,sha256=zWlyboc4d0_zskjQMKTv8mXFWYuv0jR3kIMdVnXUB2o,133112
687
687
  anyscale/client/openapi_client/models/templatized_compute_configs.py,sha256=PkxHWZl7w0U4jLYmRG303IEfE-B3VI9zdrMCV5CTGJk,6779
688
688
  anyscale/client/openapi_client/models/templatized_decorated_application_templates.py,sha256=a7mIVW12pYxghlud4quzp_w3vRzpW6yMma32zjOkMeI,7163
689
689
  anyscale/client/openapi_client/models/templatizedcomputeconfigs_response.py,sha256=5ZOMoPL77Dq1Ih1doGrshJ_AwKJg4ASefz_MT9HRq5c,3693
@@ -771,7 +771,7 @@ anyscale/cloud/_private/cloud_sdk.py,sha256=kNhDJcbCArmgApATLgZb6b3kZ4YT_uHYCw0u
771
771
  anyscale/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
772
772
  anyscale/commands/aggregated_instance_usage_commands.py,sha256=TRP1X3hdIWbKg9V20VtazlDXsYAeV--M0DH3-Z5tnj4,2293
773
773
  anyscale/commands/auth_commands.py,sha256=X1g6Yu9kqgPb4HLODlZTYEk8G5AVLeyizPIgagWx-p0,1026
774
- anyscale/commands/cloud_commands.py,sha256=4hC-NtyHxTMOFxxtj2wsaCw0Fvmtoa0oEM8tZwX_4sA,37927
774
+ anyscale/commands/cloud_commands.py,sha256=M-O82nzbaFPu6jTHMUR55Q0GoQFYeDHkolRogS_V4fY,38323
775
775
  anyscale/commands/cloud_commands_util.py,sha256=d-6TSZ_syrGkZ3Fc1uRX6jG4dqYMebNkBNpYLojOJFg,247
776
776
  anyscale/commands/cluster_commands.py,sha256=taNcffyFfqJ1MgOQd0cz9kzRXWFTdp-wfLPM4l_2tBc,13487
777
777
  anyscale/commands/cluster_env_commands.py,sha256=KNWylyE8Ew1sDi7yu2Tp4RLcRu2_KJJJIzVGRyPflJo,3899
@@ -792,7 +792,7 @@ anyscale/commands/organization_invitation_commands.py,sha256=L0OEz_mF5Dm02KjVzDu
792
792
  anyscale/commands/project_commands.py,sha256=xVm-W5kKzgfbQjAiHSRhnyMIlYgGji1TUfYAi8QrGBo,7131
793
793
  anyscale/commands/resource_quota_commands.py,sha256=J6r8b6Bo1wMys5pYWieD6F-VsC2OpQZGVLaNFlvAKmI,8536
794
794
  anyscale/commands/schedule_commands.py,sha256=UPJir8mOAYCUhdL4W43n9WAUlWXpjNHyT048ymhyLRQ,14418
795
- anyscale/commands/service_account_commands.py,sha256=mX8qQjJHnqpSM_7acfQ7ofdCL73uJEl7oznRvPMyoVs,2358
795
+ anyscale/commands/service_account_commands.py,sha256=u45N2akHsZxyu5LK03FGEEnZh4dTt4B2Be-dXgbSg3U,3977
796
796
  anyscale/commands/service_commands.py,sha256=5ftZvZnjyTCbndayoO_kM8essL48frCVnmF7XQdb6co,23558
797
797
  anyscale/commands/session_commands_hidden.py,sha256=APEypnUB1yV2Rr6wdSFWy1vQbAnn-lOn0rU2enF5JdM,6200
798
798
  anyscale/commands/user_commands.py,sha256=C-i1dGpdhboywN_2XgPS2BekKx2y6LZq8c8gvS0S-tY,1259
@@ -818,14 +818,14 @@ anyscale/connect_utils/start_interactive_session.py,sha256=NdS5qCnhPNMUA-v_F0l96
818
818
  anyscale/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
819
819
  anyscale/controllers/auth_controller.py,sha256=hDY2sPvUP8pvh8PnlDYH5rCHjQes2v3b_KBVjMbrzeE,5127
820
820
  anyscale/controllers/base_controller.py,sha256=1QFJoScFUV7YTzpKarhwPOc1SvI-xqX3TZmwxKonW6I,1998
821
- anyscale/controllers/cloud_controller.py,sha256=_dYt5Lg47mXclYMuHufTic0ijM3bgstwG2QTCPhifks,156002
821
+ anyscale/controllers/cloud_controller.py,sha256=T1yWSF8m_tyVkoFaSXuAimaEAtt318434Gx5YpP_i8E,156443
822
822
  anyscale/controllers/cloud_functional_verification_controller.py,sha256=gTn0bNB-7zpICDFhttEEu4npoKUaKOX44BpVEpmW1l8,33389
823
- anyscale/controllers/cluster_controller.py,sha256=_P4RYX0Qx0wP2dsoAJvzk1jro2F4OBG5691M5zXfQO0,29464
823
+ anyscale/controllers/cluster_controller.py,sha256=f6Lh1zxZ-rmJrJaxE7SBB0YtFtZCa7qXzgxhRLEmUlQ,29275
824
824
  anyscale/controllers/cluster_env_controller.py,sha256=JalGzcmnFtMHefYL5U6ijMY3nX6W6BsMEfZSMtgBvtU,8048
825
825
  anyscale/controllers/compute_config_controller.py,sha256=GnZAJGrPAmGO6MWvqna-0-DBlwC1y8fnKgwsDVa0eDs,14110
826
826
  anyscale/controllers/config_controller.py,sha256=VsfdARHxo4tMLfeiYkTNOMGW3sIcNhVqYi37-SruKnk,17125
827
827
  anyscale/controllers/experimental_integrations_controller.py,sha256=_22_hAQCJIMg3E10s8xajoFF6Lf1HqVlAdAVt0Rh2DY,3889
828
- anyscale/controllers/job_controller.py,sha256=DMLGWy3XohQU4Cg7gWxSM_xpCmVTvjIjYf0NbYvp-eY,25306
828
+ anyscale/controllers/job_controller.py,sha256=upFMeLmQyXD8FfUdUxt6om9CgLvyqV19HExK6dV2a3Y,25196
829
829
  anyscale/controllers/jobs_bg_controller.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
830
830
  anyscale/controllers/list_controller.py,sha256=oaOS6oo2TKPpXhGjs_laxuIVKinv3FwYfHt1CIzeTuU,11621
831
831
  anyscale/controllers/logs_controller.py,sha256=x5GBUVdPYhbWRA3RfMQZJi3hBS2i35RkgzROfmY47h4,17647
@@ -833,7 +833,6 @@ anyscale/controllers/machine_controller.py,sha256=WauNi7Spzt2TFZrIN4PwULzgJZBVDF
833
833
  anyscale/controllers/machine_pool_controller.py,sha256=zRWDJgnkusLfOKtaOB2c3FSE70e2SaZS0iGwO39Rar8,3574
834
834
  anyscale/controllers/project_controller.py,sha256=kiGYUNCbYvO0MtzT8qUZLo4YBmfLMHObCjyFGWrByM0,11108
835
835
  anyscale/controllers/schedule_controller.py,sha256=4yLsWfRVqAFAkSV-eUnvLHw1732SUY7oWsgjeJrhhL8,11910
836
- anyscale/controllers/service_account_controller.py,sha256=nz9PULXuG72XcdHxOGfa0VlOip9ISOiIFah3mF1wPF0,6357
837
836
  anyscale/controllers/service_controller.py,sha256=RjYVWpGJjFbFDkEDfHpQNINR0tUbGVDkyDg3l-jakeU,16960
838
837
  anyscale/controllers/workspace_controller.py,sha256=LNjLMxQ29vBvYiVVLUWVl3AXTHlRU4Ohao0EgiD4ofI,8449
839
838
  anyscale/controllers/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -874,7 +873,7 @@ anyscale/project/_private/project_sdk.py,sha256=wYVCHpF4kfmI4UTa4-zdCL4m7ip3SqLw
874
873
  anyscale/resource_quota/__init__.py,sha256=UvK9xIuz8DMHqiTC6Eu8Pw-Ly_yXtTMhI88a9Rqu4Uw,2853
875
874
  anyscale/resource_quota/commands.py,sha256=d7J4Aejx_uBrDRVPozqt_DcPVocq0eGWTBAUHXylttU,3683
876
875
  anyscale/resource_quota/models.py,sha256=xbq6Lde63r4SPwHmxIXzpdPX_K7exVippzddJUIw0Zo,10950
877
- anyscale/resource_quota/_private/resource_quota_sdk.py,sha256=NrMoS7JhHS3xrqAgx6C20ddf5lIhLt7S24_ukWcQ4QA,4135
876
+ anyscale/resource_quota/_private/resource_quota_sdk.py,sha256=D5P7fboC4k7XLE6GkKhWgzLzbcvZpbAovgSIACnQDxs,4524
878
877
  anyscale/schedule/__init__.py,sha256=xZ07hHVUBMs_6tkhIJYqdskoDtgAndL7Zb0bMY9fCF8,2867
879
878
  anyscale/schedule/commands.py,sha256=hIWgDRUVOXpQusnxlt7aPgHtmfi6GAr__4kUWRJ6YGo,4511
880
879
  anyscale/schedule/models.py,sha256=l3vVpY6ovr1vAgiwjFjVXyHa2tTJ0cLCR0cFIIpllKg,4561
@@ -886,7 +885,7 @@ anyscale/sdk/anyscale_client/exceptions.py,sha256=A57t810Y_rVxFpbQlfaDhCwOjeFSB6
886
885
  anyscale/sdk/anyscale_client/rest.py,sha256=HVsalJFwXwGTEYgVsLJcsLKUU47wZ5oFSWmOsT2LkMM,12499
887
886
  anyscale/sdk/anyscale_client/sdk.py,sha256=donjqpTmWrGZhQOp5ludnKNBJoIZbMPU5EKTh6QoHW8,27604
888
887
  anyscale/sdk/anyscale_client/api/__init__.py,sha256=aI2dYRCOMQk0Ma2_qiEkpFpQGkEquzKNPGPSErfbhro,142
889
- anyscale/sdk/anyscale_client/api/default_api.py,sha256=_aXHJKt5_jaqJSQqIrVAus6UPrmNSGhHSGxqZSXEgrk,537310
888
+ anyscale/sdk/anyscale_client/api/default_api.py,sha256=LZ80ZUY62CGpOwM5RuMrcOwSXYP0YTcKHWw55CbJhw4,542726
890
889
  anyscale/sdk/anyscale_client/models/__init__.py,sha256=L26W47ClDCFq_5zMCgl6umG0H2BtaX6xu1Qa8ebmzto,15373
891
890
  anyscale/sdk/anyscale_client/models/access_config.py,sha256=FOH_2UU2astWm_ilA1_FpWqKQRxwMYXjGC-UT4Zj65Y,3646
892
891
  anyscale/sdk/anyscale_client/models/app_config.py,sha256=1sWYt1jiljHiXtWCQi7HJw4sBvulaqPV8tmTvNpgZYI,13439
@@ -897,7 +896,7 @@ anyscale/sdk/anyscale_client/models/apply_production_service_v2_model.py,sha256=
897
896
  anyscale/sdk/anyscale_client/models/apply_service_model.py,sha256=ZCOOYhB3WxBlcRH8TdKJyraiTWZl45rF19INfm_XmzE,19551
898
897
  anyscale/sdk/anyscale_client/models/archive_status.py,sha256=C5z72r5glAaa5cOXzwhECfBN3QiVP769B_2_Q9G4znk,2873
899
898
  anyscale/sdk/anyscale_client/models/base_job_status.py,sha256=wW3Cq4H1Bchg1OVf-f0eQyEugMDvM8BgDu6zrAQuYic,3008
900
- anyscale/sdk/anyscale_client/models/baseimagesenum.py,sha256=q5uRJgUVeIobijamM43WN2qH7H4I004lpVztA2lS6DM,212370
899
+ anyscale/sdk/anyscale_client/models/baseimagesenum.py,sha256=5qQr_bH9eoeYksSyHd2oQrhjMacU4OBu4Hwm4-nI8hg,216861
901
900
  anyscale/sdk/anyscale_client/models/build.py,sha256=xiHlZqdnn-jAcbsLp735tjXG4f9TX49ADYqkbL39zLQ,20306
902
901
  anyscale/sdk/anyscale_client/models/build_list_response.py,sha256=TF6awv_aL-Ng2luxUqScxK4goTpYQftyljrMhAGp2B0,4270
903
902
  anyscale/sdk/anyscale_client/models/build_log_response.py,sha256=CzBvxz8Oh3TJ3Kd2BpoSlXfhdiUKCSNp558nHf6PxP0,3529
@@ -991,7 +990,7 @@ anyscale/sdk/anyscale_client/models/job_queue_spec.py,sha256=6rfyCkyYCsLFIaq8m-f
991
990
  anyscale/sdk/anyscale_client/models/job_run_type.py,sha256=t2_LBY7PntZi5_zTEh4_JGH2eyjalGre4RVPG5d6qdc,2888
992
991
  anyscale/sdk/anyscale_client/models/job_status.py,sha256=gUFnvO3SJDTIsfculUWjlcrqDnBgL7zLqp15qyafW6k,2992
993
992
  anyscale/sdk/anyscale_client/models/jobs_query.py,sha256=QC-cZsymG4Hc7CE6atosIsLkuQ9BujtuxtjPTLjVyGY,15582
994
- anyscale/sdk/anyscale_client/models/jobs_sort_field.py,sha256=9DO4p5o4Yi1_6aXv31SPoCH__idqjExEzSRvelJJa-U,2951
993
+ anyscale/sdk/anyscale_client/models/jobs_sort_field.py,sha256=SZTibpFyBhP7wvvsUh7pBOtJYwIQkFOnYwvAZEOMsa8,2927
995
994
  anyscale/sdk/anyscale_client/models/list_response_metadata.py,sha256=gzH9tialntJ3AHSN1RTL1jMVgmgH28Wj7HAxwLi0a2Y,4214
996
995
  anyscale/sdk/anyscale_client/models/list_service_model.py,sha256=fmEvGc9sYpaY42Hru-6tVSr7JLPiD-cEuCljxwifMy4,11220
997
996
  anyscale/sdk/anyscale_client/models/listservicemodel_list_response.py,sha256=BUh7fEjTAo1U-1dPIJWJovetpQj3WL24dWUzi-CzmuY,4435
@@ -1070,7 +1069,7 @@ anyscale/sdk/anyscale_client/models/ssoconfig_response.py,sha256=_ezyQtU4CI25mYs
1070
1069
  anyscale/sdk/anyscale_client/models/start_cluster_options.py,sha256=hlCCHVqxwT70lJVL9mg7XhcoM_6nPcl6LmzMbIuJ-IM,6404
1071
1070
  anyscale/sdk/anyscale_client/models/start_session_options.py,sha256=y6Xa9hGFCMimdzCq-8k9MegI5JHelXoNve_UbGHWI08,6943
1072
1071
  anyscale/sdk/anyscale_client/models/static_sso_config.py,sha256=Bq_Pmc1-DKVKiX-xwm6bOc9hw3400U9YZ4-iN93tTSg,7119
1073
- anyscale/sdk/anyscale_client/models/supportedbaseimagesenum.py,sha256=t4uYVIX85fvGZieeS6TynoD48F1Bj424sHks_lyivgY,129375
1072
+ anyscale/sdk/anyscale_client/models/supportedbaseimagesenum.py,sha256=qZ1HMACAxN3ATh64jrHHSa6z5BOZJ43KM5JlUIKThpY,133110
1074
1073
  anyscale/sdk/anyscale_client/models/terminate_cluster_options.py,sha256=G88vOv_i5E-CXT5IFGjnu0oZ6diycd9UXI-go9o3vLE,3883
1075
1074
  anyscale/sdk/anyscale_client/models/terminate_session_options.py,sha256=eeWuiUVUZnojpojWbnO4VNijiI7y4S8JyW948Eh3quE,6621
1076
1075
  anyscale/sdk/anyscale_client/models/text_query.py,sha256=NVGbkdvoJxTiCtDhbkiwCUGsqHrewENVRvkh_njNGzg,5105
@@ -1091,6 +1090,10 @@ anyscale/service/__init__.py,sha256=TCy-chwvDLzTYd8QoTpVsgSH3opz-VzjRgPNuGCBtTE,
1091
1090
  anyscale/service/commands.py,sha256=_oakFgvMqZzYHfHMTnUAzoQMIuOWyW2N2i9fvIlIp-Q,8946
1092
1091
  anyscale/service/models.py,sha256=-e-V1RKZ34ZXPzEBkvq4vfrvum33E_JTTu6uxmDA1Ak,24038
1093
1092
  anyscale/service/_private/service_sdk.py,sha256=WCXIWwEPnISdRnA6lTGdchKoixkG1G7RYoapuROA1Co,28324
1093
+ anyscale/service_account/__init__.py,sha256=jV1OFo_ZTxU3vuPztO1300TuoMz-Ocudm6_84ZtjPQ4,2764
1094
+ anyscale/service_account/commands.py,sha256=zipHgr0-HtxwpZv_fOU6RKe_l8HFIrUSxvzyikTYhl8,3429
1095
+ anyscale/service_account/models.py,sha256=MhY-Fo5AZQ68brqtolTUMW3WQDrkNyL1udtNg70sNAU,2189
1096
+ anyscale/service_account/_private/service_account_sdk.py,sha256=MGF64copqVjDJgY05rOlKJOQ0KsIE6mjzWuM6XcyvUs,3590
1094
1097
  anyscale/shared_anyscale_utils/__init__.py,sha256=2iCXV0v5drnxM8pyFCGm4cthya6zkw1R5RwqMtNO5a0,80
1095
1098
  anyscale/shared_anyscale_utils/aws.py,sha256=MDWTFNOAD4fwxLWzv1taGhl1qP9u08qdsdbwSRvxbd4,5119
1096
1099
  anyscale/shared_anyscale_utils/bytes_util.py,sha256=6cpIW0LMymqivnww4uxFeWdPuyBxtwLf8Oo8FusMBxg,226
@@ -1098,7 +1101,7 @@ anyscale/shared_anyscale_utils/conf.py,sha256=nn5Uh-Aj8qShfnFBciKDUarnaGUGo1Xptf
1098
1101
  anyscale/shared_anyscale_utils/default_anyscale_aws.yaml,sha256=wU8xPUQ6sMtVB5q3QYYGYlhCKkI5QDtg8LvH53hQ6WE,1650
1099
1102
  anyscale/shared_anyscale_utils/default_anyscale_gcp.yaml,sha256=rmwavzx7aTsSPio-jmYhdvfkHCuu8BOkNOuMSKMgBRE,1817
1100
1103
  anyscale/shared_anyscale_utils/headers.py,sha256=c1PnH7Ag42ESQJkKTWP4ibEujvo9blZcFXEJtQzupUk,1002
1101
- anyscale/shared_anyscale_utils/latest_ray_version.py,sha256=t3SGeFYS5LpzziLtM09l73G1XgfqqJvmtMaFlhtJzZA,110
1104
+ anyscale/shared_anyscale_utils/latest_ray_version.py,sha256=QqsypiiNr-k6c_d4JZTxvbFiUjJJVG4A5m9yG_fbKQA,110
1102
1105
  anyscale/shared_anyscale_utils/project.py,sha256=7gQ6RXWV1bQEWRN5hloj-U3DxmEw6LEEhGoF0oWoAm8,476
1103
1106
  anyscale/shared_anyscale_utils/test_util.py,sha256=bYkCdHV9ZTlFrvHOtub5vivj4TXCct1WECzIPTRMU1I,657
1104
1107
  anyscale/shared_anyscale_utils/util.py,sha256=oT82MhLjJo2-Xb4iLN1_JhGN4rdXWfrkcLe4QDkRx1A,1787
@@ -1109,7 +1112,7 @@ anyscale/shared_anyscale_utils/utils/__init__.py,sha256=M_ebCo5_hZ-aSP8SzcuqKwhC
1109
1112
  anyscale/shared_anyscale_utils/utils/asyncio.py,sha256=aOlH-bw8QJbSIg7-BpbLuy8zBYJqEK56QJD2-DhBEAE,4145
1110
1113
  anyscale/shared_anyscale_utils/utils/byod.py,sha256=yue93FlA9bzlLAtIpSkpVj0-0IWaV8ITgdpkBr3wNvU,1097
1111
1114
  anyscale/shared_anyscale_utils/utils/collections.py,sha256=t_6SZNOskAn7EP0gwgJHRnRxj4ykYj_lxcqwLmUUs08,899
1112
- anyscale/shared_anyscale_utils/utils/id_gen.py,sha256=aUwwG_7Wk7P0le48RHlzQNwcNoSn-41jivcZ1UhN3mo,4730
1115
+ anyscale/shared_anyscale_utils/utils/id_gen.py,sha256=QEAEvQrq5mK0nWBnvEcF5xbmh7NV7Th_paENazX6sLM,4758
1113
1116
  anyscale/shared_anyscale_utils/utils/protected_string.py,sha256=8-T3VC37NrWeAhc7aPjMsUd9zhjcSF1xaGo2GRNjLL4,3166
1114
1117
  anyscale/shared_anyscale_utils/utils/ray_semver.py,sha256=OzIJuawv4Ja-_irSCLUO8e-P1wc-qMvOAJcr689_hn4,2539
1115
1118
  anyscale/user/__init__.py,sha256=mWpx3KTLWGWMB5m6a_GKOaqCOm-sqhBkXYb6iM78OOA,1220
@@ -1151,10 +1154,10 @@ anyscale/workspace/__init__.py,sha256=fIxkn8b_HADCQl5njPAbcJxAf0sajZoc55L_wMvGAx
1151
1154
  anyscale/workspace/commands.py,sha256=21FubFd2wmEwlVbk-ng-adwBm-O4ZPBgEJnoavbfvbU,14035
1152
1155
  anyscale/workspace/models.py,sha256=Ey67KqxdslS51yK7xetbRaFjE8sURAArpf-F38r3cUU,9760
1153
1156
  anyscale/workspace/_private/workspace_sdk.py,sha256=4LOBmMm7kd-O94ii5uP1UDbkWLComh6zI5QmE2lXRTY,26824
1154
- anyscale-0.25.1.dist-info/LICENSE,sha256=UOPu974Wzsna6frFv1mu4VrZgNdZT7lbcNPzo5ue3qs,3494
1155
- anyscale-0.25.1.dist-info/METADATA,sha256=MgHSihInDi_PMND4QVTUqA2jVvlTwXvFunKibxga2Qs,3049
1156
- anyscale-0.25.1.dist-info/NOTICE,sha256=gHqDhSnUYlRXX-mDOL5FtE7774oiKyV_HO80qM3r9Xo,196
1157
- anyscale-0.25.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
1158
- anyscale-0.25.1.dist-info/entry_points.txt,sha256=NqO18sCZn6zG6J0S38itjcN00s7aE3C3v3k5lMAfCLk,51
1159
- anyscale-0.25.1.dist-info/top_level.txt,sha256=g3NVNS8Oh0NZwbFFgeX696C5MZZkS5dqV2NqcsbDRJE,9
1160
- anyscale-0.25.1.dist-info/RECORD,,
1157
+ anyscale-0.25.2.dist-info/LICENSE,sha256=UOPu974Wzsna6frFv1mu4VrZgNdZT7lbcNPzo5ue3qs,3494
1158
+ anyscale-0.25.2.dist-info/METADATA,sha256=Sin3MEnaSX82DjyZ7a4YQ3lEwOHZav7Kac2X8-rqvPk,3049
1159
+ anyscale-0.25.2.dist-info/NOTICE,sha256=gHqDhSnUYlRXX-mDOL5FtE7774oiKyV_HO80qM3r9Xo,196
1160
+ anyscale-0.25.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
1161
+ anyscale-0.25.2.dist-info/entry_points.txt,sha256=NqO18sCZn6zG6J0S38itjcN00s7aE3C3v3k5lMAfCLk,51
1162
+ anyscale-0.25.2.dist-info/top_level.txt,sha256=g3NVNS8Oh0NZwbFFgeX696C5MZZkS5dqV2NqcsbDRJE,9
1163
+ anyscale-0.25.2.dist-info/RECORD,,
@@ -1,168 +0,0 @@
1
- from typing import List, Optional
2
-
3
- import click
4
- from rich import box
5
- from rich.console import Console
6
- from rich.table import Table
7
-
8
- from anyscale.cli_logger import BlockLogger
9
- from anyscale.client.openapi_client.models import (
10
- AnyscaleServiceAccount,
11
- ServerSessionToken,
12
- )
13
- from anyscale.controllers.base_controller import BaseController
14
-
15
-
16
- WARNING_COLOR = "bold red"
17
- DEFAULT_OVERFLOW = "fold"
18
- DEFAULT_COL_WIDTH = 36
19
- ONE_HUNDRED_YEARS_IN_SECONDS = 3153600000
20
-
21
-
22
- class ServiceAccountController(BaseController):
23
- def __init__(self):
24
- super().__init__()
25
- self.log = BlockLogger()
26
- self.console = Console()
27
-
28
- def _get_service_account_identifier(
29
- self, email: Optional[str], name: Optional[str]
30
- ) -> str:
31
- # Logic can be simplified but kept verbose for clarity and typing
32
- if not email and not name:
33
- raise click.ClickException("Either email or name must be provided.")
34
- if email and name:
35
- raise click.ClickException("Only one of email or name can be provided.")
36
- if email:
37
- return email
38
- elif name:
39
- return name
40
-
41
- raise click.ClickException("Internal server error. Please contact support.")
42
-
43
- def _validate_exactly_one_service_account_per_email_or_name(
44
- self, service_accounts: List[AnyscaleServiceAccount], identifier: str,
45
- ):
46
- if len(service_accounts) == 0:
47
- raise click.ClickException(f"No service account {identifier} found.")
48
-
49
- if len(service_accounts) > 1:
50
- raise click.ClickException(
51
- f"Internal server error when fetching service account {identifier}. Please contact support."
52
- )
53
-
54
- def _print_new_api_key(self, api_key: ServerSessionToken):
55
- self.console.print(
56
- "The following API token for the service account will only appear once:\n",
57
- style=WARNING_COLOR,
58
- )
59
- self.console.print(api_key.server_session_id)
60
-
61
- def create_service_account(self, name: str):
62
- service_account = self.api_client.create_service_account_api_v2_users_service_accounts_post(
63
- name=name
64
- ).result
65
- api_key = self.api_client.create_api_key_api_v2_users_create_api_key_post(
66
- api_key_parameters={
67
- "user_id": service_account.user_id,
68
- "duration": ONE_HUNDRED_YEARS_IN_SECONDS,
69
- }
70
- ).result
71
-
72
- self.console.print(f"\nService account {name} created successfully.")
73
- self._print_new_api_key(api_key)
74
-
75
- def create_new_service_account_api_key(
76
- self, email: Optional[str], name: Optional[str]
77
- ):
78
- service_accounts = (
79
- self.api_client.list_organization_collaborators_api_v2_organization_collaborators_get(
80
- is_service_account=True, email=email, name=name
81
- )
82
- ).results
83
- self._validate_exactly_one_service_account_per_email_or_name(
84
- service_accounts, self._get_service_account_identifier(email, name)
85
- )
86
- sa = service_accounts[0]
87
- api_key = self.api_client.create_api_key_api_v2_users_create_api_key_post(
88
- api_key_parameters={
89
- "user_id": sa.user_id,
90
- "duration": ONE_HUNDRED_YEARS_IN_SECONDS,
91
- }
92
- ).result
93
-
94
- self._print_new_api_key(api_key)
95
-
96
- def _print_service_account_table(
97
- self, service_accounts: List[AnyscaleServiceAccount]
98
- ):
99
- table = Table(box=box.MINIMAL, header_style="bright_cyan")
100
- table.add_column("NAME", width=DEFAULT_COL_WIDTH, overflow=DEFAULT_OVERFLOW)
101
- table.add_column(
102
- "CREATED AT",
103
- style="dim",
104
- width=DEFAULT_COL_WIDTH,
105
- overflow=DEFAULT_OVERFLOW,
106
- )
107
- table.add_column(
108
- "ORGANIZATION ROLE", width=DEFAULT_COL_WIDTH, overflow=DEFAULT_OVERFLOW
109
- )
110
- table.add_column("EMAIL", width=80, overflow=DEFAULT_OVERFLOW)
111
- for sa in service_accounts:
112
- table.add_row(
113
- sa.name,
114
- sa.created_at.strftime("%Y/%m/%d"),
115
- sa.permission_level,
116
- sa.email,
117
- )
118
-
119
- self.console.print(table)
120
-
121
- def list_service_accounts(self, max_items: int):
122
- service_accounts = self.api_client.list_organization_collaborators_api_v2_organization_collaborators_get(
123
- is_service_account=True
124
- ).results
125
-
126
- self._print_service_account_table(service_accounts[:max_items])
127
-
128
- def delete_service_account(self, email: Optional[str], name: Optional[str]):
129
- service_accounts = self.api_client.list_organization_collaborators_api_v2_organization_collaborators_get(
130
- is_service_account=True, email=email, name=name
131
- ).results
132
- identifier = self._get_service_account_identifier(email, name)
133
- self._validate_exactly_one_service_account_per_email_or_name(
134
- service_accounts, identifier
135
- )
136
- sa = service_accounts[0]
137
- self.api_client.remove_organization_collaborator_api_v2_organization_collaborators_identity_id_delete(
138
- identity_id=sa.id
139
- )
140
- self.console.print(f"Service account {identifier} deleted successfully.")
141
-
142
- def rotate_service_account_api_keys(
143
- self, email: Optional[str], name: Optional[str]
144
- ):
145
- service_accounts = (
146
- self.api_client.list_organization_collaborators_api_v2_organization_collaborators_get(
147
- is_service_account=True, email=email, name=name
148
- )
149
- ).results
150
-
151
- identifier = self._get_service_account_identifier(email, name)
152
- self._validate_exactly_one_service_account_per_email_or_name(
153
- service_accounts, identifier
154
- )
155
- sa = service_accounts[0]
156
- self.api_client.rotate_api_key_for_user_api_v2_organization_collaborators_rotate_api_key_for_user_user_id_post(
157
- sa.user_id
158
- )
159
- api_key = self.api_client.create_api_key_api_v2_users_create_api_key_post(
160
- api_key_parameters={
161
- "user_id": sa.user_id,
162
- "duration": ONE_HUNDRED_YEARS_IN_SECONDS,
163
- }
164
- ).result
165
- self.console.print(
166
- f"\nAll API keys for service account {identifier} rotated successfully."
167
- )
168
- self._print_new_api_key(api_key)