qontract-reconcile 0.9.1rc166__py3-none-any.whl → 0.9.1rc168__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qontract-reconcile
3
- Version: 0.9.1rc166
3
+ Version: 0.9.1rc168
4
4
  Summary: Collection of tools to reconcile services with their desired state as defined in the app-interface DB.
5
5
  Home-page: https://github.com/app-sre/qontract-reconcile
6
6
  Author: Red Hat App-SRE Team
@@ -56,7 +56,7 @@ reconcile/jenkins_webhooks_cleaner.py,sha256=GmOCaFmxF8CYEevMJwgm8KS69oiGG3tXZjL
56
56
  reconcile/jenkins_worker_fleets.py,sha256=nwlsLSly85RukBGCVsEpoc92BVxvCjJetFlpNC5OwPc,5282
57
57
  reconcile/jira_watcher.py,sha256=gus5j2m1mDTsl3CL8bDZ5Lz7KK3INztlrnyJjsjGwv4,3574
58
58
  reconcile/kafka_clusters.py,sha256=k0MkqHDJUH8tp6B46mIYmRgDLtxpp5Zcmf41XLjHFIk,7238
59
- reconcile/ldap_users.py,sha256=1IlMg-FCRzXWbr5eyBi0CLr1XED47XS6Xg6egmJvSnQ,2683
59
+ reconcile/ldap_users.py,sha256=dD7n7JrVQlxqN6gfdqdKpVsyCjTGhRwL0nyA3gsfXxs,2869
60
60
  reconcile/mr_client_gateway.py,sha256=WhjMd-sIXDFCV8-rt8CEjurJ5OYB1pOD0K3o0tZRXQg,1885
61
61
  reconcile/ocm_additional_routers.py,sha256=mtJYVI0HX39fr6hgOyiDaNVuwjTEH5aBbEGYeWfm5-M,3307
62
62
  reconcile/ocm_addons.py,sha256=qqAyqRBRbdZQvAcjb-QlSVyRAyQBZk6iVlgnI4jyi7s,3353
@@ -108,7 +108,7 @@ reconcile/quay_mirror.py,sha256=9pwl1gLzRpsVXF5yPULM4ET_C5F8_xPmH8Mv8AS2AfI,1340
108
108
  reconcile/quay_mirror_org.py,sha256=E1OdRe-ppxTkNCwu20iVRhEdG1fPDBroLY02NgiMN7c,10381
109
109
  reconcile/quay_permissions.py,sha256=_3PCWjNWoU7VHlYgHzUevvL_jJmEMsWfXV_nzjeiyhU,4099
110
110
  reconcile/quay_repos.py,sha256=7609RBVQihis96FNOOe-i9tCTYwcTVy4WpKAL6HpnkU,7031
111
- reconcile/queries.py,sha256=4zHwi06pos4SAgryJCcb0F8zlwjOxhy1y6aG1GbZoUU,57705
111
+ reconcile/queries.py,sha256=FZY4RXV5R4mboRwT8EtbxFnCkE6Mwz4JVL4BLijEPSA,57741
112
112
  reconcile/query_validator.py,sha256=oLEZIAsQCzxmmZ7b9dSw-OKuEjpI1dbVu4XfCfjpmi8,1503
113
113
  reconcile/requests_sender.py,sha256=m00QET0mh6rys5r0y5uurZS7RIylXf04HU1dTdhjt0A,3791
114
114
  reconcile/resource_scraper.py,sha256=vo1N9vLJCYWvXlTwFRIpEuWjx_39ZV9zxJlpoPq4g3U,2330
@@ -454,7 +454,7 @@ reconcile/utils/mr/labels.py,sha256=RKg8_dSQBZBoRbU-a8VH90UTYmwjFH1GodLQDsRrcDE,
454
454
  reconcile/utils/mr/notificator.py,sha256=MbXA7pgaB-CN1R1kY88MNQ27ZMXX56myqJY4jRSqDhQ,2419
455
455
  reconcile/utils/mr/ocm_update_recommended_version.py,sha256=Eb4449dIQbVDyWHbEHXekgyEV3Vq3F4hWkKSrraHKic,1531
456
456
  reconcile/utils/mr/ocm_upgrade_scheduler_org_updates.py,sha256=PDhvitkGtpJ1JYhdk7gOICQCKU3YeYNKjf4XfKxppOo,2737
457
- reconcile/utils/mr/user_maintenance.py,sha256=-JQHNiTzmHO9Jfqzfeiuw_qN9kUBspcHy3T6IWrQBcg,3030
457
+ reconcile/utils/mr/user_maintenance.py,sha256=_4VwAMJsBxD7maM7AZsMl_GjYRgQtZb_rlFXR-0U0v0,3890
458
458
  reconcile/utils/runtime/__init__.py,sha256=l9o8APZxyED5Q6ylGoLIESksQF4f3O8cdke3IdMFOTQ,108
459
459
  reconcile/utils/runtime/desired_state_diff.py,sha256=AQhJmq3CP2YOWP-KpmVtYKnhZ46sxERfbk_R6PHO-zc,8272
460
460
  reconcile/utils/runtime/environment.py,sha256=cJgCMRBeschdeKJuk_N6BhDWaOCZbo-41i2a9L9DpBE,1328
@@ -474,7 +474,7 @@ release/test_version.py,sha256=jOMn3Qx-mZC5pnJR0LU9ieIdNaYZSmr1kQ6aCkPngAU,2053
474
474
  release/version.py,sha256=Ud36t9FxGHLubMrE2o5aaaZRGB9_9hU_z0RN9go0TQM,3876
475
475
  tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
476
476
  tools/app_interface_reporter.py,sha256=k3KsYVzBWCxqK8GazjoiaPJGi4f1pMhBtZEoVyIm26s,21850
477
- tools/qontract_cli.py,sha256=udyupqX725d9-9qJUjQN7cBozJ0CJUrJCnIpARNqbe0,82984
477
+ tools/qontract_cli.py,sha256=Pq8lRctOj9J2I25vVjprRi62NAzwIsR-FjBD9gVY36s,83150
478
478
  tools/cli_commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
479
479
  tools/cli_commands/gpg_encrypt.py,sha256=JryinrDdvztN931enUY3FuDeLVnfs6y58mnK7itNK6Y,4940
480
480
  tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
@@ -482,8 +482,8 @@ tools/sre_checkpoints/util.py,sha256=zEDbGr18ZeHNQwW8pUsr2JRjuXIPz--WAGJxZo9sv_Y
482
482
  tools/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
483
483
  tools/test/test_qontract_cli.py,sha256=awwTHEc2DWlykuqGIYM0WOBoSL0KRnOraCLk3C7izis,1401
484
484
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
485
- qontract_reconcile-0.9.1rc166.dist-info/METADATA,sha256=Yk4kfUrXS1qlLDkA69VKwdgtCgczRZ0rV8bcf63BVGU,2259
486
- qontract_reconcile-0.9.1rc166.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
487
- qontract_reconcile-0.9.1rc166.dist-info/entry_points.txt,sha256=3BPvsRryM1C4S_mb5kXmP5AVv-wJBzVCrOJyv6qUmc0,195
488
- qontract_reconcile-0.9.1rc166.dist-info/top_level.txt,sha256=j0CHPIc8TsVRB50wOz_jhxjjaRyCJB3NOQeXhuHS67c,34
489
- qontract_reconcile-0.9.1rc166.dist-info/RECORD,,
485
+ qontract_reconcile-0.9.1rc168.dist-info/METADATA,sha256=_ZKhFyndKSjoIxv1YYH6lXkgeiaxfHNeySbVQZD73pY,2259
486
+ qontract_reconcile-0.9.1rc168.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
487
+ qontract_reconcile-0.9.1rc168.dist-info/entry_points.txt,sha256=3BPvsRryM1C4S_mb5kXmP5AVv-wJBzVCrOJyv6qUmc0,195
488
+ qontract_reconcile-0.9.1rc168.dist-info/top_level.txt,sha256=j0CHPIc8TsVRB50wOz_jhxjjaRyCJB3NOQeXhuHS67c,34
489
+ qontract_reconcile-0.9.1rc168.dist-info/RECORD,,
reconcile/ldap_users.py CHANGED
@@ -16,7 +16,7 @@ from reconcile.utils.mr.user_maintenance import PathTypes
16
16
  QONTRACT_INTEGRATION = "ldap-users"
17
17
 
18
18
 
19
- def init_users():
19
+ def init_users() -> list[dict[str, list]]:
20
20
  app_int_users = queries.get_users(refs=True)
21
21
 
22
22
  users = defaultdict(list)
@@ -33,6 +33,9 @@ def init_users():
33
33
  for g in user.get("gabi_instances"):
34
34
  item = {"type": PathTypes.GABI, "path": "data" + g["path"]}
35
35
  users[u].append(item)
36
+ for a in user.get("aws_accounts", []):
37
+ item = {"type": PathTypes.AWS_ACCOUNTS, "path": "data" + a["path"]}
38
+ users[u].append(item)
36
39
 
37
40
  return [{"username": username, "paths": paths} for username, paths in users.items()]
38
41
 
reconcile/queries.py CHANGED
@@ -1805,6 +1805,9 @@ USERS_QUERY = """
1805
1805
  pagerduty_username
1806
1806
  public_gpg_key
1807
1807
  {% if refs %}
1808
+ aws_accounts {
1809
+ path
1810
+ }
1808
1811
  requests {
1809
1812
  path
1810
1813
  }
@@ -9,6 +9,7 @@ class PathTypes:
9
9
  REQUEST = 1
10
10
  QUERY = 2
11
11
  GABI = 3
12
+ AWS_ACCOUNTS = 4
12
13
 
13
14
 
14
15
  class CreateDeleteUserAppInterface(MergeRequestBase):
@@ -53,6 +54,20 @@ class CreateDeleteUserAppInterface(MergeRequestBase):
53
54
  commit_message=self.title,
54
55
  content=new_content,
55
56
  )
57
+ elif path_type == PathTypes.AWS_ACCOUNTS:
58
+ raw_file = gitlab_cli.project.files.get(file_path=path, ref=self.branch)
59
+ content = yaml.load(raw_file.decode(), Loader=yaml.RoundTripLoader)
60
+ for reset_record in content["resetPasswords"]:
61
+ if self.username in reset_record["user"]["$ref"]:
62
+ content["resetPasswords"].remove(reset_record)
63
+ new_content = "---\n"
64
+ new_content += yaml.dump(content, Dumper=yaml.RoundTripDumper)
65
+ gitlab_cli.update_file(
66
+ branch_name=self.branch,
67
+ file_path=path,
68
+ commit_message=self.title,
69
+ content=new_content,
70
+ )
56
71
 
57
72
 
58
73
  class CreateDeleteUserInfra(MergeRequestBase):
tools/qontract_cli.py CHANGED
@@ -29,7 +29,10 @@ from reconcile.change_owners.change_owners import (
29
29
  fetch_self_service_roles,
30
30
  )
31
31
  from reconcile.checkpoint import report_invalid_metadata
32
- from reconcile.cli import config_file
32
+ from reconcile.cli import (
33
+ config_file,
34
+ use_jump_host,
35
+ )
33
36
  from reconcile.jenkins_job_builder import init_jjb
34
37
  from reconcile.prometheus_rules_tester import get_data_from_jinja_test_template
35
38
  from reconcile.slack_base import slackapi_from_queries
@@ -1805,8 +1808,9 @@ def app_interface_merge_history(ctx):
1805
1808
  short_help="obtain a list of all resources that are managed "
1806
1809
  "on a customer cluster via a Hive SelectorSyncSet."
1807
1810
  )
1811
+ @use_jump_host()
1808
1812
  @click.pass_context
1809
- def selectorsyncset_managed_resources(ctx):
1813
+ def selectorsyncset_managed_resources(ctx, use_jump_host):
1810
1814
  vault_settings = get_app_interface_vault_settings()
1811
1815
  secret_reader = create_secret_reader(use_vault=vault_settings.vault)
1812
1816
  clusters = get_clusters()
@@ -1816,6 +1820,7 @@ def selectorsyncset_managed_resources(ctx):
1816
1820
  integration="qontract-cli",
1817
1821
  thread_pool_size=1,
1818
1822
  init_api_resources=True,
1823
+ use_jump_host=use_jump_host,
1819
1824
  )
1820
1825
  columns = [
1821
1826
  "cluster",
@@ -1861,8 +1866,9 @@ def selectorsyncset_managed_resources(ctx):
1861
1866
  short_help="obtain a list of all resources that are managed "
1862
1867
  "on a customer cluster via an ACM Policy via a Hive SelectorSyncSet."
1863
1868
  )
1869
+ @use_jump_host()
1864
1870
  @click.pass_context
1865
- def selectorsyncset_managed_hypershift_resources(ctx):
1871
+ def selectorsyncset_managed_hypershift_resources(ctx, use_jump_host):
1866
1872
  vault_settings = get_app_interface_vault_settings()
1867
1873
  secret_reader = create_secret_reader(use_vault=vault_settings.vault)
1868
1874
  clusters = get_clusters()
@@ -1872,6 +1878,7 @@ def selectorsyncset_managed_hypershift_resources(ctx):
1872
1878
  integration="qontract-cli",
1873
1879
  thread_pool_size=1,
1874
1880
  init_api_resources=True,
1881
+ use_jump_host=use_jump_host,
1875
1882
  )
1876
1883
  columns = [
1877
1884
  "cluster",