agilicus 1.267.0__py3-none-any.whl → 1.268.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -77,7 +77,7 @@ class ApiClient(object):
77
77
  self.default_headers[header_name] = header_value
78
78
  self.cookie = cookie
79
79
  # Set default User-Agent.
80
- self.user_agent = 'OpenAPI-Generator/1.267.0/python'
80
+ self.user_agent = 'OpenAPI-Generator/1.268.0/python'
81
81
 
82
82
  def __enter__(self):
83
83
  return self
@@ -387,7 +387,7 @@ class Configuration(object):
387
387
  "OS: {env}\n"\
388
388
  "Python Version: {pyversion}\n"\
389
389
  "Version of the API: 2024.09.24\n"\
390
- "SDK Package Version: 1.267.0".\
390
+ "SDK Package Version: 1.268.0".\
391
391
  format(env=sys.platform, pyversion=sys.version)
392
392
 
393
393
  def get_host_settings(self):
@@ -4,7 +4,7 @@ Agilicus is API-first. Modern software is controlled by other software, is open,
4
4
  The `agilicus_api` package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
5
5
 
6
6
  - API version: 2024.09.24
7
- - Package version: 1.267.0
7
+ - Package version: 1.268.0
8
8
  - Build package: org.openapitools.codegen.languages.PythonClientCodegen
9
9
  For more information, please visit [https://www.agilicus.com/api](https://www.agilicus.com/api)
10
10
 
agilicus/main.py CHANGED
@@ -6029,6 +6029,11 @@ def list_resource_groups(ctx, **kwargs):
6029
6029
  help="A json file that contains the resource's rule configuration.",
6030
6030
  type=click_extension.JSONFile("r"),
6031
6031
  )
6032
+ @click.option(
6033
+ "--roles-config-file",
6034
+ help="A json file that contains the resource's role configuration.",
6035
+ type=click_extension.JSONFile("r"),
6036
+ )
6032
6037
  @click.option("--published", type=click.Choice(["no", "public"]), default=None)
6033
6038
  @click.pass_context
6034
6039
  def update_resource(ctx, id, resource_member, remove_resource_member, **kwargs):
@@ -8135,6 +8140,32 @@ def update_session_challenge(ctx, token, **kwargs):
8135
8140
  output_entry(ctx, result.to_dict())
8136
8141
 
8137
8142
 
8143
+ @cli.command(name="list-org-pops")
8144
+ @click.option("--org-id", default=None)
8145
+ @click.pass_context
8146
+ def list_org_pops(ctx, **kwargs):
8147
+ result = orgs.list_org_pops(ctx, **kwargs)
8148
+ output_entry(ctx, result)
8149
+
8150
+
8151
+ @cli.command(name="add-org-pop")
8152
+ @click.argument("pop")
8153
+ @click.option("--org-id", default=None)
8154
+ @click.pass_context
8155
+ def add_org_pop(ctx, **kwargs):
8156
+ result = orgs.add_org_pop(ctx, **kwargs)
8157
+ output_entry(ctx, result)
8158
+
8159
+
8160
+ @cli.command(name="remove-org-pop")
8161
+ @click.argument("pop")
8162
+ @click.option("--org-id", default=None)
8163
+ @click.pass_context
8164
+ def remove_org_pop(ctx, **kwargs):
8165
+ result = orgs.remove_org_pop(ctx, **kwargs)
8166
+ output_entry(ctx, result)
8167
+
8168
+
8138
8169
  def switch_org(org):
8139
8170
  ctx = click.get_current_context()
8140
8171
  ctx.obj["ORG_ID"] = org.get("id")
agilicus/orgs.py CHANGED
@@ -21,6 +21,7 @@ from .output.table import (
21
21
  )
22
22
  from . import get_many_entries
23
23
  from .input_helpers import strip_none
24
+ from . import pop_utils
24
25
 
25
26
 
26
27
  def get_org_by_dictionary(ctx, org_id):
@@ -533,3 +534,43 @@ def format_reconcile_org_policy_results(ctx, results):
533
534
  column("failure"),
534
535
  ]
535
536
  return format_table(ctx, results.modified, columns)
537
+
538
+
539
+ POP_TAGS_FEATURE_NAME = "pop_tags"
540
+
541
+
542
+ def list_org_pops(ctx, **kwargs):
543
+ org_id = get_org_from_input_or_ctx(ctx, **kwargs)
544
+ org = get_raw(ctx, org_id)
545
+ features = org.feature_flags or []
546
+ feature_obj = find_feature(features, POP_TAGS_FEATURE_NAME)
547
+
548
+ if not feature_obj:
549
+ feature_obj = FeatureFlag(feature=POP_TAGS_FEATURE_NAME, enabled=False)
550
+ return pop_utils.make_feature_pop_result(feature_obj)
551
+
552
+
553
+ def _update_pop_setting(ctx, pop, setting_updater: callable, **kwargs):
554
+ apiclient = context.get_apiclient(ctx)
555
+ org_id = get_org_from_input_or_ctx(ctx, **kwargs)
556
+ org = get_raw(ctx, org_id)
557
+ features = org.feature_flags or []
558
+ feature_obj = find_feature(features, POP_TAGS_FEATURE_NAME)
559
+
560
+ if not feature_obj:
561
+ feature_obj = FeatureFlag(feature=POP_TAGS_FEATURE_NAME, enabled=False)
562
+ features.append(feature_obj)
563
+
564
+ feature_obj.setting = setting_updater(feature_obj.setting, pop)
565
+ feature_obj.enabled = True
566
+ org.feature_flags = features
567
+ apiclient.org_api.replace_org(org_id=org.id, organisation=org)
568
+ return pop_utils.make_feature_pop_result(feature_obj)
569
+
570
+
571
+ def add_org_pop(ctx, pop, **kwargs):
572
+ return _update_pop_setting(ctx, pop, pop_utils.add_pop_to_str, **kwargs)
573
+
574
+
575
+ def remove_org_pop(ctx, pop, **kwargs):
576
+ return _update_pop_setting(ctx, pop, pop_utils.remove_pop_from_str, **kwargs)
agilicus/pop_utils.py ADDED
@@ -0,0 +1,40 @@
1
+ from agilicus.agilicus_api import FeatureFlag
2
+
3
+
4
+ def _make_set(pop_str: str) -> set:
5
+ if pop_str is None:
6
+ pop_str = ""
7
+ return set(sorted([pop.strip() for pop in pop_str.split(",") if pop]))
8
+
9
+
10
+ def _make_str(pop_set: set) -> str:
11
+ return ",".join(sorted(list(pop_set)))
12
+
13
+
14
+ def add_pop_to_str(pop_str: str, pop: str) -> str:
15
+ if pop_str is None:
16
+ pop_str = ""
17
+ if not pop:
18
+ return pop_str
19
+ pop_set = _make_set(pop_str)
20
+ pop_set.add(pop)
21
+ return _make_str(pop_set)
22
+
23
+
24
+ def remove_pop_from_str(pop_str: str, pop: str) -> str:
25
+ if pop_str is None:
26
+ pop_str = ""
27
+ pop_set = set([pop.strip() for pop in pop_str.split(",")])
28
+ if pop in pop_set:
29
+ pop_set.remove(pop)
30
+ return _make_str(pop_set)
31
+
32
+
33
+ def make_feature_pop_result(feature_obj: FeatureFlag) -> dict:
34
+ result = {}
35
+ result["enabled"] = False
36
+ result["pops"] = []
37
+ if feature_obj:
38
+ result["enabled"] = feature_obj.enabled
39
+ result["pops"] = list(_make_set(feature_obj.setting))
40
+ return result
agilicus/resources.py CHANGED
@@ -216,6 +216,7 @@ def update_resource(
216
216
  name=None,
217
217
  org_id=None,
218
218
  rules_config_file=None,
219
+ roles_config_file=None,
219
220
  published=None,
220
221
  **kwargs,
221
222
  ):
@@ -240,6 +241,8 @@ def update_resource(
240
241
  resource.spec.name = name
241
242
  if rules_config_file is not None:
242
243
  resource.spec.config.rules_config = rules_config_file
244
+ if roles_config_file is not None:
245
+ resource.spec.config.roles_config = roles_config_file
243
246
  if published is not None:
244
247
  resource.spec.config.published = published
245
248
 
@@ -0,0 +1,23 @@
1
+ from .. import pop_utils
2
+
3
+
4
+ def test_pop_utils_remove():
5
+ assert pop_utils.remove_pop_from_str(None, "") == ""
6
+ assert pop_utils.remove_pop_from_str("", "") == ""
7
+ assert pop_utils.remove_pop_from_str(" ", "") == ""
8
+ assert pop_utils.remove_pop_from_str("foobar", "") == "foobar"
9
+ assert pop_utils.remove_pop_from_str("foobar", "foobar") == ""
10
+ assert pop_utils.remove_pop_from_str("foobar,1,3", "foobar") == "1,3"
11
+ assert pop_utils.remove_pop_from_str("foobar,1,3", "foobar") == "1,3"
12
+ assert pop_utils.remove_pop_from_str("foobar,1,3", "3") == "1,foobar"
13
+ assert pop_utils.remove_pop_from_str("3,2,1", "") == "1,2,3"
14
+ assert pop_utils.remove_pop_from_str("3,2,1", "3") == "1,2"
15
+
16
+
17
+ def test_pop_utils_add():
18
+ assert pop_utils.add_pop_to_str(None, "") == ""
19
+ assert pop_utils.add_pop_to_str("", "") == ""
20
+ assert pop_utils.add_pop_to_str("1,2,3", "") == "1,2,3"
21
+ assert pop_utils.add_pop_to_str("1,2,3", "") == "1,2,3"
22
+ assert pop_utils.add_pop_to_str("1,3", "2") == "1,2,3"
23
+ assert pop_utils.add_pop_to_str("4,3,2,1", "2") == "1,2,3,4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agilicus
3
- Version: 1.267.0
3
+ Version: 1.268.0
4
4
  Summary: Agilicus SDK
5
5
  Home-page: https://www.agilicus.com/
6
6
  License: MIT
@@ -71,9 +71,9 @@ agilicus/agilicus_api/api/users_api.py,sha256=sRY1Ge_aUimbaPHoulwCVT8pSB_hpjYAdw
71
71
  agilicus/agilicus_api/api/users_api_mock.py,sha256=wA_xiqL3Pz3KjljKlsmf5NveLZS1FpbaKJHBp7QvarY,15411
72
72
  agilicus/agilicus_api/api/whoami_api.py,sha256=EuL_UM7R5vey36rjwOPsF8TqNyJKyIH5RN6k05E0jAQ,7941
73
73
  agilicus/agilicus_api/api/whoami_api_mock.py,sha256=rlvZoWnMCqORMZBg7SOv6d3xp52kELdh6wXcCaIZ93w,346
74
- agilicus/agilicus_api/api_client.py,sha256=59DhzMCDeCg2E-byEwsz2-t4SWLQPpzI5hcdo8VDd4k,38845
74
+ agilicus/agilicus_api/api_client.py,sha256=uJRDw4wnhG9_TkfgLzu1O1JktqfitS6QcUlyEGAgi_k,38845
75
75
  agilicus/agilicus_api/apis/__init__.py,sha256=aJZD7x-umdSni6ZBr4XxzpH8pwtU9hA5LlCDxcqa1Q8,2224
76
- agilicus/agilicus_api/configuration.py,sha256=x16ed9kAZiPQyfuviZYvWMG0wZNvLJuf3EsGfodeA20,18447
76
+ agilicus/agilicus_api/configuration.py,sha256=RF3WoCUxli9ELBwkm-yFplBw5LN9rgU7pOytVAEN3jM,18447
77
77
  agilicus/agilicus_api/docs/APIKey.md,sha256=4cKuz4_l9HcEDnUrLwYbEnn9C2WoDayrjfrY1Ixgaf4,1747
78
78
  agilicus/agilicus_api/docs/APIKeyIntrospect.md,sha256=nJ-zkuFm3JMbWFDYYN_vYyQk1snGBtBvIxtCQxamhAU,1019
79
79
  agilicus/agilicus_api/docs/APIKeyIntrospectAuthorizationInfo.md,sha256=7RApOOLjvWQs5sw2jb25g7i3Kta1BiEY-s8VRXfppH8,725
@@ -2529,7 +2529,7 @@ agilicus/agilicus_api/test/test_x509_root_certificate.py,sha256=KigehF3015P8wuGb
2529
2529
  agilicus/agilicus_api/test/test_x509_root_certificate_spec.py,sha256=MwqrYGLWl-hTmuLtE-GZ2_LvFtoHP3Jf0Y2n8O3Q-J8,2832
2530
2530
  agilicus/agilicus_api/test/test_x509_root_certificate_status.py,sha256=93ATew310qaTCB9f6FjFlW3tvjaH2hi98KypBYC5gP4,2846
2531
2531
  agilicus/agilicus_api/test/test_xss_settings.py,sha256=F0VcWfvT8hXcMEWowolRCxnd7Q87mHvXOc-GeS-GpWk,2746
2532
- agilicus/agilicus_api_README.md,sha256=OfRVnfkGWWMWqStgnaPMqz4K-K3Nk71ckQ2VyzP_v_U,162124
2532
+ agilicus/agilicus_api_README.md,sha256=mIhjyfxJG5mfTJQ3CcMLKdl52k4FUpB9iXtd2Ptk5NA,162124
2533
2533
  agilicus/aliases.ini,sha256=MxqiVo2f2xdUDVF1YDkNW36AIqN8hrYjlTVfraEUZXY,455
2534
2534
  agilicus/amq.py,sha256=yxi-YTbJPVl10s78Hlr1dmrQR63iaSIoROGVILzFPmE,1775
2535
2535
  agilicus/apps.py,sha256=ZRPqOq9ecFTqaBce5JQW7e1zekoJbhgYKDDsxyWo5BA,53212
@@ -2579,10 +2579,10 @@ agilicus/labels/labels_main.py,sha256=ptJ34mf-iVaf8ezf3RWLcpeP2O0ntezS4tqJ0ks0el
2579
2579
  agilicus/launchers.py,sha256=r4nctnVtfP-Ho_HXEfAiMaMqJI0u7pbieHSS3Vd0QBE,11361
2580
2580
  agilicus/logs.py,sha256=tS8c_sdre1Dncrl59GVGQ0L3d2jtwlVjvIMl3SHJraY,766
2581
2581
  agilicus/lookups.py,sha256=MNmNsKpP7Fq_poLAnL9xo_iptFilKM9ziGLyIe8VKaw,669
2582
- agilicus/main.py,sha256=r5PTGSGSoqsyrD7A_xNp9j08xX6Haj43FIG5raweA6Q,271531
2582
+ agilicus/main.py,sha256=Q1SyYJfgR7G5Vrm2686FIP1y79ghutO8gu0IsuDqnTY,272355
2583
2583
  agilicus/messages.py,sha256=Ydm-VhAsK23UnYdstv_HsOybBODfui5ubKc7F8R_dsw,5187
2584
2584
  agilicus/metrics.py,sha256=v4rwpvqDzeNG5GKNoZ7t34X5qUgly5IW2s-kXlS2vQM,2315
2585
- agilicus/orgs.py,sha256=ac_Y4qzMtUmQ3tx_SxhwQ6AsbsSkeU6MGdqRhssfZw8,14509
2585
+ agilicus/orgs.py,sha256=S9v1Hnv_qGcJ90uNC3V692srcXTPv6GIHiTF_z5YC90,15902
2586
2586
  agilicus/output/__init__.py,sha256=UKZbHS4t15vazJuN46FN-3HHqkxMXU0p3df2VcsSLcY,110
2587
2587
  agilicus/output/column_builder.py,sha256=TWo4t8ygaTUv7qjD_moDroD1bKzzyTIao0FmLy5gs4o,4284
2588
2588
  agilicus/output/console.py,sha256=xBURxlA7H1kmQ7zIKuifs_aQJq1cvmCJ5CtQVSo3_Ns,400
@@ -2598,12 +2598,13 @@ agilicus/policy/policy_main.py,sha256=W91CxqQP1ye9UjsiMqgZNeULMvrzMB5TiPJZW3hogP
2598
2598
  agilicus/policy/templates.py,sha256=EUvAhOhSjDuLAe2UKIFEzBp5pNpOT5y1r7uyV_GG6uI,5638
2599
2599
  agilicus/policy_config/policy_config.py,sha256=E7ApGqVKwzzf9n2dEz8LdedWhNVJvDmupCmgz66FX88,919
2600
2600
  agilicus/policy_config/policy_config_main.py,sha256=wABOGTFOLyDwZhZpNqo29zjI96FIirOQBLYQc7qowsE,1283
2601
+ agilicus/pop_utils.py,sha256=e_vsdb2eZWvCyZHd6sJNYsyXgntNSJFc78c-wGoWeGE,1036
2601
2602
  agilicus/products/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2602
2603
  agilicus/products/products.py,sha256=he27jN3MUyXBdTdV2HRyvUYb0zD3W1TGsuC7NHLKngQ,5365
2603
2604
  agilicus/products/products_main.py,sha256=saa2-e5oeHW6D5AWPcld99KwgQ9nBY3hoW8Jz_5nfMQ,3421
2604
2605
  agilicus/regions.py,sha256=21SzUJ9_hC8DiWLSLJ-vtSb1tWLhlcPXH9JhmXD_ypU,3343
2605
2606
  agilicus/resource_helpers.py,sha256=fyfqAxjfnIth1KlHNALlLtYYXIZzlWEJmSZNLdj2JV0,380
2606
- agilicus/resources.py,sha256=mtgCjZrEd-oHxgYA-TjbeHX3I8kT1R8DFzNBNAv9EG0,10918
2607
+ agilicus/resources.py,sha256=v5-XtzEv7SaM2snnYV89JONSyUr1Vb5QoZFWYFRFi5U,11046
2607
2608
  agilicus/response.py,sha256=tI2-dAJwhBuuDplSsouuMmCmKHSwR_Mx71af8tgsuYo,468
2608
2609
  agilicus/rules/rules.py,sha256=ixfMro-l30Pt1r_wyypWL8vhSWccdCoRv8mPJynhR2o,24991
2609
2610
  agilicus/rules/rules_main.py,sha256=kQ0g86Xjp5PXERb7AlHWZha4wZGV7pEYGWEIXggH9Kg,13639
@@ -2613,6 +2614,7 @@ agilicus/service_token.py,sha256=YDVFeBe9Yv0qYvfUenwnpGHuj2x1J06YUe5A_C8L6L4,716
2613
2614
  agilicus/ssh.py,sha256=mVqMlDM2zAcUphehyz9djXjrRPSIxR1qJr2Ehvl3Rvw,2925
2614
2615
  agilicus/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2615
2616
  agilicus/tests/keyring_test.py,sha256=Uwp2VS2_NffYBgHAS9bXuXnIxRoK0_VOWaaYCZKv0lg,1452
2617
+ agilicus/tests/test_pop_utils.py,sha256=gdSMOmE0pNSDA0UgUWdbLKpFzUGwfBwkFSrk1p1JdSo,1083
2616
2618
  agilicus/tokens.py,sha256=mwQyxWjynR3SelPJH6ZwMbqdZy7ZiqA4xVD_crlYt_E,18592
2617
2619
  agilicus/transfers.py,sha256=PYr_fW7dyXNUXzi5Wp5mUjZOvU7MbRzoN-D8Omo-YSQ,1523
2618
2620
  agilicus/trusted_certs/trusted_certs.py,sha256=HCAvYxOA3ooaee2_KbYJd6Yt_dxDEn8hjhy1upVJUYE,7951
@@ -2620,8 +2622,8 @@ agilicus/trusted_certs/trusted_certs_main.py,sha256=6dHHWXvNIcUa_nA9ptigL4Vibe4n
2620
2622
  agilicus/users.py,sha256=JT7TIiUOtSFXPOdxmIVFm7ygZTH1FjsIkD9j-vjLuMM,38474
2621
2623
  agilicus/version.py,sha256=G9OFdL1v_4dLDfk6I6taDNypM5bbO-JHAwilsu9LYgg,23
2622
2624
  agilicus/whoami.py,sha256=kqghtWMgZOd2rhKmfguDwCTm6A3gNS8Kj-S2IBxBtl0,206
2623
- agilicus-1.267.0.dist-info/LICENSE.txt,sha256=Zq4tqiCroC2CVrBB_PWjapRdvpae23nljdiaSkOzUho,1061
2624
- agilicus-1.267.0.dist-info/METADATA,sha256=BHrKVpnHuyPvFFJy68VmIbCYOTyrIlqjlu7B4-z4wQM,3873
2625
- agilicus-1.267.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2626
- agilicus-1.267.0.dist-info/entry_points.txt,sha256=a66hGozzLkHu0IewFzIMbSAhMTNTddUaA2T3_16Gb_s,51
2627
- agilicus-1.267.0.dist-info/RECORD,,
2625
+ agilicus-1.268.0.dist-info/LICENSE.txt,sha256=Zq4tqiCroC2CVrBB_PWjapRdvpae23nljdiaSkOzUho,1061
2626
+ agilicus-1.268.0.dist-info/METADATA,sha256=G_urxoVwXsMqV_eHy51yHKjNC9Pbi8EwHXZydO-hfLw,3873
2627
+ agilicus-1.268.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2628
+ agilicus-1.268.0.dist-info/entry_points.txt,sha256=a66hGozzLkHu0IewFzIMbSAhMTNTddUaA2T3_16Gb_s,51
2629
+ agilicus-1.268.0.dist-info/RECORD,,