qontract-reconcile 0.10.1rc910__py3-none-any.whl → 0.10.1rc912__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.10.1rc910
3
+ Version: 0.10.1rc912
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
@@ -113,7 +113,7 @@ reconcile/terraform_cloudflare_dns.py,sha256=NfgUqXL218D9pW6sprtUAJQlMzFHa2FXKp_
113
113
  reconcile/terraform_cloudflare_resources.py,sha256=41Mj1WkuS75slCDpmhG2GGf1nh3BwfxcdNC73-PNadc,15000
114
114
  reconcile/terraform_cloudflare_users.py,sha256=AzIhQwnJtsUh7GlZpvJE0um-_7Q6zYRxzUVJYoSU3dY,13943
115
115
  reconcile/terraform_repo.py,sha256=D6JFKLLJbsMHcIG3--oUNeuQteXqT6E5tJ18qzb9YXM,16218
116
- reconcile/terraform_resources.py,sha256=P2_S0TqkRp4VYf9yoJxt52YFgHJOMqfUYe1GwLzBc7M,19288
116
+ reconcile/terraform_resources.py,sha256=HmTrDTpPbWOvvyPdEM7bXbLPsTS8Tcg1mPu8nZTvAlE,19288
117
117
  reconcile/terraform_tgw_attachments.py,sha256=dhtqrckfB3CN90PnrKAepPFRzFB0Ecoh1vk3IkpZ2uE,18657
118
118
  reconcile/terraform_users.py,sha256=HqSm3ev3b8dZ9J6F_phDZB-FQsnlsdeKp9RPoY1cU94,10188
119
119
  reconcile/terraform_vpc_peerings.py,sha256=WhGvDHwllM36yTJPE5EzQ1Z0Oc-tT9ksXbBn5cpFBBg,27676
@@ -158,7 +158,7 @@ reconcile/aws_version_sync/merge_request_manager/__init__.py,sha256=47DEQpj8HBSa
158
158
  reconcile/aws_version_sync/merge_request_manager/merge_request.py,sha256=2FbqLLdqxycWNvX1eNbwMjWSVBb7q0p-8t5Db0m7b4Q,4842
159
159
  reconcile/aws_version_sync/merge_request_manager/merge_request_manager.py,sha256=3bRpw7DluiYw3daRg0yAyCSGYf39Ru0d8lUjoepDSpU,5525
160
160
  reconcile/change_owners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
161
- reconcile/change_owners/approver.py,sha256=M-qoi8UYkjzdXXF6K2_izuzVE6s0k3sigg6mN0000SY,2202
161
+ reconcile/change_owners/approver.py,sha256=Z3_11vnK2WNOxjEEXVDh0224-_-qbt9d6mBeVE-7fsc,2259
162
162
  reconcile/change_owners/bundle.py,sha256=ZIlXRo6Z2raeWSCUqYsexBdol-q-r9kWJs5O_YPaEYk,5273
163
163
  reconcile/change_owners/change_owners.py,sha256=0HRJhDm0oW3uYJFgzynqA1gA0lbhalhSkmWOiQmr-NM,17062
164
164
  reconcile/change_owners/change_types.py,sha256=PMDEWOAbRKjES3WDPGe_8bcrZgK3efLdVF22WvkUL3A,31938
@@ -166,7 +166,7 @@ reconcile/change_owners/changes.py,sha256=CH38-hyOfbH6xFYWidw_LAniyPisKq9nGRQhUa
166
166
  reconcile/change_owners/decision.py,sha256=iUJcIc_N_RqXIAY8D10RZqPMC2OinsHTMcqI6f6uylE,7606
167
167
  reconcile/change_owners/diff.py,sha256=0vyu29xCL24ZhUa7hqBni0NaxoCYRXLwvA-h8V23YQ4,9009
168
168
  reconcile/change_owners/implicit_ownership.py,sha256=6BehZvx4IjrphmOt_LLLk9_02Fl5BY5jd00Wuz_PBZk,4234
169
- reconcile/change_owners/self_service_roles.py,sha256=bd_T3gUkDtrDjIDv2lq1Rsb0b1uJNCSSoL4wKlz6pwQ,9631
169
+ reconcile/change_owners/self_service_roles.py,sha256=wxCxtROuQ9_0KjLke82ENRzNfVLh93gnXlPRjXahgfA,9683
170
170
  reconcile/change_owners/tester.py,sha256=yY15ABnWx_3g9QeeR38-cQAaql0aq7JIxBv_7KtC91U,8955
171
171
  reconcile/cluster_auth_rhidp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  reconcile/cluster_auth_rhidp/integration.py,sha256=KIAiP_XFjsOA2OE8oFJa8lD0T1a7EwOmhct2xbj7tr8,9560
@@ -227,7 +227,7 @@ reconcile/gql_definitions/aws_version_sync/namespaces.py,sha256=eBLyXlSjWdmEE-jY
227
227
  reconcile/gql_definitions/change_owners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
228
  reconcile/gql_definitions/change_owners/queries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
229
  reconcile/gql_definitions/change_owners/queries/change_types.py,sha256=9S2YRNnSAvutjzuubZIQQe35yd8V2rGKvWSUI6yl11Q,5017
230
- reconcile/gql_definitions/change_owners/queries/self_service_roles.py,sha256=gU5qQ_zncXqM41WW_c2NYEZBuXlI9Xwm08D9HF6dP7g,4627
230
+ reconcile/gql_definitions/change_owners/queries/self_service_roles.py,sha256=-7f7JO7_iYTQXAgPVwTDpgGi8NG8YR8cGv-wcC-KPVU,4699
231
231
  reconcile/gql_definitions/cluster_auth_rhidp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
232
  reconcile/gql_definitions/cluster_auth_rhidp/clusters.py,sha256=Pp9P3Q30Be3szcVqOEOtPfYUNiGTq1xc5Juz-ApMMw0,3283
233
233
  reconcile/gql_definitions/cna/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -357,7 +357,7 @@ reconcile/gql_definitions/skupper_network/site_controller_template.py,sha256=MFJ
357
357
  reconcile/gql_definitions/skupper_network/skupper_networks.py,sha256=Gfk1YshRj8WSaXgoImBbeXOZz0KXUTKhtf1jiWYEHxY,6037
358
358
  reconcile/gql_definitions/slack_usergroups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
359
359
  reconcile/gql_definitions/slack_usergroups/clusters.py,sha256=HUTPLna1jxCSyDbxG-LNj9QQUl6smiXOsuCuFTItLzk,2119
360
- reconcile/gql_definitions/slack_usergroups/permissions.py,sha256=h-BMSf8HR_XeTAlXJgJwgUxmfZmFYOFeP3YKjH4fSwQ,5459
360
+ reconcile/gql_definitions/slack_usergroups/permissions.py,sha256=BMZDBwaTyyk5t57Z2MhPzVvCgl5GMgGogK43ud8CO1Y,5449
361
361
  reconcile/gql_definitions/slack_usergroups/users.py,sha256=pJtsW8DNUgjSk_XpsuDxq5Nwzrb2QgtWVvCjnGBshb0,2873
362
362
  reconcile/gql_definitions/slo_documents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
363
363
  reconcile/gql_definitions/slo_documents/slo_documents.py,sha256=pOrm9NXAonlo6Lxq6NkD3mHkZ53ZeBnZOZMkDvOEwds,3746
@@ -705,7 +705,7 @@ reconcile/utils/sqs_gateway.py,sha256=RiIfkBuGC15Q2178caG1_5hg53gY6QdRL1tWbK3FOM
705
705
  reconcile/utils/state.py,sha256=sJbfxvSTnHlHfgQRc_vRz-U_9NnVFGq-W8DX3ZHkfeY,16352
706
706
  reconcile/utils/structs.py,sha256=LcbLEg8WxfRqM6nW7NhcWN0YeqF7SQzxOgntmLs1SgY,352
707
707
  reconcile/utils/template.py,sha256=wTvRU4AnAV_o042tD4Mwls2dwWMuk7MKnde3MaCjaYg,331
708
- reconcile/utils/terraform_client.py,sha256=zbx5Ng2Xm7P93qqvFCbR-2FFYUTlmZbLGYNWvpkDtzE,32400
708
+ reconcile/utils/terraform_client.py,sha256=hyMtNVBuDHbqQNSsdG5kTIvJRyOt23tFuWAspPf_Lqo,32161
709
709
  reconcile/utils/terrascript_aws_client.py,sha256=kU--Qk42v7OXbOtBEBhgRPRdSiFcfXOvMS6stHs0r_o,276712
710
710
  reconcile/utils/three_way_diff_strategy.py,sha256=OniTnogBkdgy_7Xg51N1MgjS-Qtk8uM1ccjWaiXxiV8,4895
711
711
  reconcile/utils/throughput.py,sha256=iP4UWAe2LVhDo69mPPmgo9nQ7RxHD6_GS8MZe-aSiuM,344
@@ -844,8 +844,8 @@ tools/test/test_qontract_cli.py,sha256=_D61RFGAN5x44CY1tYbouhlGXXABwYfxKSWSQx3Jr
844
844
  tools/test/test_saas_promotion_state.py,sha256=dy4kkSSAQ7bC0Xp2CociETGN-2aABEfL6FU5D9Jl00Y,6056
845
845
  tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
846
846
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
847
- qontract_reconcile-0.10.1rc910.dist-info/METADATA,sha256=boTuxu6Nk52lbr0BIuxN2q3SC5o3ffs4x7CyScm5GkI,2273
848
- qontract_reconcile-0.10.1rc910.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
849
- qontract_reconcile-0.10.1rc910.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
850
- qontract_reconcile-0.10.1rc910.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
851
- qontract_reconcile-0.10.1rc910.dist-info/RECORD,,
847
+ qontract_reconcile-0.10.1rc912.dist-info/METADATA,sha256=qR2rsUnR1rVDkqgV_iVsHwnqlQxMRMdffVqsdgvoQAQ,2273
848
+ qontract_reconcile-0.10.1rc912.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
849
+ qontract_reconcile-0.10.1rc912.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
850
+ qontract_reconcile-0.10.1rc912.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
851
+ qontract_reconcile-0.10.1rc912.dist-info/RECORD,,
@@ -67,9 +67,10 @@ class ApproverReachability(Protocol):
67
67
  class SlackGroupApproverReachability:
68
68
  slack_group: str
69
69
  workspace: str
70
+ channel: str
70
71
 
71
72
  def render_for_mr_report(self) -> str:
72
- return f"Slack group {self.slack_group}/{self.workspace}"
73
+ return f"Slack group @{self.slack_group} in channel #{self.channel} (workspace {self.workspace})"
73
74
 
74
75
 
75
76
  @dataclass
@@ -238,6 +238,7 @@ def approver_reachability_from_role(role: RoleV1) -> list[ApproverReachability]:
238
238
  SlackGroupApproverReachability(
239
239
  slack_group=permission.handle,
240
240
  workspace=permission.workspace.name,
241
+ channel=permission.channels[0],
241
242
  )
242
243
  )
243
244
  elif isinstance(permission, PermissionGitlabGroupMembershipV1):
@@ -78,6 +78,7 @@ query SelfServiceRolesQuery($name: String) {
78
78
  workspace {
79
79
  name
80
80
  }
81
+ channels
81
82
  }
82
83
  ... on PermissionGitlabGroupMembership_v1 {
83
84
  group
@@ -135,6 +136,7 @@ class SlackWorkspaceV1(ConfiguredBaseModel):
135
136
  class PermissionSlackUsergroupV1(PermissionV1):
136
137
  handle: str = Field(..., alias="handle")
137
138
  workspace: SlackWorkspaceV1 = Field(..., alias="workspace")
139
+ channels: list[str] = Field(..., alias="channels")
138
140
 
139
141
 
140
142
  class PermissionGitlabGroupMembershipV1(PermissionV1):
@@ -161,7 +161,7 @@ class SlackWorkspaceV1(ConfiguredBaseModel):
161
161
 
162
162
  class PermissionSlackUsergroupV1(PermissionV1):
163
163
  name: str = Field(..., alias="name")
164
- channels: Optional[list[str]] = Field(..., alias="channels")
164
+ channels: list[str] = Field(..., alias="channels")
165
165
  description: str = Field(..., alias="description")
166
166
  handle: str = Field(..., alias="handle")
167
167
  owners_from_repos: Optional[list[str]] = Field(..., alias="ownersFromRepos")
@@ -66,7 +66,7 @@ from reconcile.utils.vault import (
66
66
  )
67
67
 
68
68
  QONTRACT_INTEGRATION = "terraform_resources"
69
- QONTRACT_INTEGRATION_VERSION = make_semver(0, 5, 3)
69
+ QONTRACT_INTEGRATION_VERSION = make_semver(0, 5, 4)
70
70
  QONTRACT_TF_PREFIX = "qrtf"
71
71
 
72
72
 
@@ -757,7 +757,6 @@ class TerraformClient: # pylint: disable=too-many-public-methods
757
757
  if after_version == before_version:
758
758
  return
759
759
 
760
- allow_major_version_upgrade = after.get("allow_major_version_upgrade", False)
761
760
  region_name = get_region_from_availability_zone(before["availability_zone"])
762
761
  if self._aws_api is not None:
763
762
  valid_upgrade_target = self._aws_api.get_db_valid_upgrade_target(
@@ -765,13 +764,10 @@ class TerraformClient: # pylint: disable=too-many-public-methods
765
764
  )
766
765
  if not valid_upgrade_target:
767
766
  # valid_upgrade_target can be empty when current version is no longer supported by AWS.
768
- # In this case, we can't validate it, so treat it as major version upgrade for safety.
769
- # Skip validation if allow_major_version_upgrade is enabled.
770
- if not allow_major_version_upgrade:
771
- raise ValueError(
772
- "allow_major_version_upgrade is not enabled for upgrading RDS instance: "
773
- f"{resource_name} to a new version when there is no valid upgrade target available."
774
- )
767
+ # In this case, we can't validate it, so skip.
768
+ logging.warning(
769
+ f"No valid upgrade target available, skip validation for {resource_name}."
770
+ )
775
771
  return
776
772
  target = next(
777
773
  (
@@ -786,6 +782,10 @@ class TerraformClient: # pylint: disable=too-many-public-methods
786
782
  f"Cannot upgrade RDS instance: {resource_name} "
787
783
  f"from {before_version} to {after_version}"
788
784
  )
785
+ allow_major_version_upgrade = after.get(
786
+ "allow_major_version_upgrade",
787
+ False,
788
+ )
789
789
  if target["IsMajorVersionUpgrade"] and not allow_major_version_upgrade:
790
790
  raise ValueError(
791
791
  "allow_major_version_upgrade is not enabled for upgrading RDS instance: "