qontract-reconcile 0.10.2.dev205__py3-none-any.whl → 0.10.2.dev207__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.4
2
2
  Name: qontract-reconcile
3
- Version: 0.10.2.dev205
3
+ Version: 0.10.2.dev207
4
4
  Summary: Collection of tools to reconcile services with their desired state as defined in the app-interface DB.
5
5
  Project-URL: homepage, https://github.com/app-sre/qontract-reconcile
6
6
  Project-URL: repository, https://github.com/app-sre/qontract-reconcile
@@ -45,7 +45,7 @@ reconcile/jenkins_roles.py,sha256=HadmoNhgOoKMFZJmCe_Gdg0_a9k_1MuOXidtr801nUU,45
45
45
  reconcile/jenkins_webhooks.py,sha256=dzMT1ywXjeAo5sHj-ittW06Ed3beAUPjnc_oCAtD-Rg,2150
46
46
  reconcile/jenkins_webhooks_cleaner.py,sha256=JsN_NVPfZJwv1JtSzZXDIHUqGiefL-DRffFnDGau9aY,1539
47
47
  reconcile/jenkins_worker_fleets.py,sha256=L2wEXpd4xuEHrXGss4iH788nG8UlLSYduZe1EY2IVw4,5377
48
- reconcile/jira_permissions_validator.py,sha256=5rc4Q2mXGL3HCZmYpZaJkjzBrpCRnlLeCY0Yl2fDOs4,14672
48
+ reconcile/jira_permissions_validator.py,sha256=nVHZg7kNn04Q-ryNM20wthMrhXos28g3O9b0ahzxAKc,14690
49
49
  reconcile/jira_watcher.py,sha256=L_UL2MKm2SoIGNsCLThm28pnqCkoFc154JWsD6bURug,3593
50
50
  reconcile/ldap_users.py,sha256=oP1CAxmgSi3zDJ3vKTPySjap6WmEX1U469FmFrov5l4,4599
51
51
  reconcile/mr_client_gateway.py,sha256=WhjMd-sIXDFCV8-rt8CEjurJ5OYB1pOD0K3o0tZRXQg,1885
@@ -118,7 +118,7 @@ reconcile/terraform_resources.py,sha256=iufjMJs_aSEvmh7Cg11beCxKmV8nrOLOpEtiTryP
118
118
  reconcile/terraform_tgw_attachments.py,sha256=hn_IO-0W_QoDufW6aZRqcruZ7MPGjaLuc0PZ-FApJQA,18810
119
119
  reconcile/terraform_users.py,sha256=rt62m9Yb0mkyhza07t_c6vlrFWF-OeJGJ9oGaCVK72M,10234
120
120
  reconcile/terraform_vpc_peerings.py,sha256=0N7uxG6Afe2oNrUyw-apjV-fX2P9TbI5A3xjXO_83eA,27658
121
- reconcile/vault_replication.py,sha256=YD70ROZXC1dYnUcS3q1WgnAoIDSdoZVdZsUGc5fanNU,17556
121
+ reconcile/vault_replication.py,sha256=2ARkleRg7WE-tNuTadyge8ljZv3wk4gsJFkKEHHksXM,17627
122
122
  reconcile/vpc_peerings_validator.py,sha256=aESqrhm1tpkc2iqSL1UV5to_HjNgjRSffD0crb_q49g,7113
123
123
  reconcile/aus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
124
  reconcile/aus/advanced_upgrade_service.py,sha256=lt684trHbKvVDLwwuNVz3Wu_MnytFSbS_7MZTIITh9k,23969
@@ -223,11 +223,11 @@ reconcile/glitchtip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
223
223
  reconcile/glitchtip/integration.py,sha256=HWc0cz3vNpZg8T5nVMPyD5QnlgsUHwLpJsGRbr_hvIM,7937
224
224
  reconcile/glitchtip/reconciler.py,sha256=nUvDv7qG1ly0cA16MmlL6NV71yl1mJYLT2mui7lmi0Y,12402
225
225
  reconcile/glitchtip_project_alerts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
- reconcile/glitchtip_project_alerts/integration.py,sha256=BgMx-NyV9mTuv7Sotb2OioCO-iwVrN9-HCViVLU771c,13755
226
+ reconcile/glitchtip_project_alerts/integration.py,sha256=d3PMy-mQSbSZdIGAVaZCA2UhrK9LPYlnLtUluLlXej4,13669
227
227
  reconcile/glitchtip_project_dsn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
228
  reconcile/glitchtip_project_dsn/integration.py,sha256=2iugub-kHYkHNK33n0v9_TeWonuxCPah_VkoTPvaajE,8077
229
229
  reconcile/gql_definitions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
230
- reconcile/gql_definitions/introspection.json,sha256=oYlYgYdUjLtUwu9mJA-bh1y6BTTlWgVhL07N-9_9Du0,2335501
230
+ reconcile/gql_definitions/introspection.json,sha256=Oo__Q1ENvfRSNRcJbojqqWyICHq5mSE_ebhJGqtKCsw,2335890
231
231
  reconcile/gql_definitions/acs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
232
  reconcile/gql_definitions/acs/acs_instances.py,sha256=L91WW9LbhJbBSrECqShQpFtjoBOsmNIYLRpMbx1io5o,2181
233
233
  reconcile/gql_definitions/acs/acs_policies.py,sha256=Ygpfl2-VkYLSlJvHgp_dJBfb66K_Rwfdfpsa18w1v1s,4338
@@ -370,7 +370,7 @@ reconcile/gql_definitions/glitchtip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
370
370
  reconcile/gql_definitions/glitchtip/glitchtip_instance.py,sha256=QUfLhRkdE_-SorWgLBB8LHFD6kihbFwEoVByCLax3yM,2781
371
371
  reconcile/gql_definitions/glitchtip/glitchtip_project.py,sha256=3hS6ZbWr-KMWeVHYbP3HAK7uHd2e6KsXOr87gba7Uqc,6578
372
372
  reconcile/gql_definitions/glitchtip_project_alerts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
373
- reconcile/gql_definitions/glitchtip_project_alerts/glitchtip_project.py,sha256=Pv6RcuIzpNmGc43eEq64nnKG0Dr7H0wjy5Xg1_oRltM,5197
373
+ reconcile/gql_definitions/glitchtip_project_alerts/glitchtip_project.py,sha256=AlnJ1AO4QqF9sU6YxUfgCqBHgcIJmb2bVuq7U_QU3wU,5206
374
374
  reconcile/gql_definitions/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
375
375
  reconcile/gql_definitions/integrations/integrations.py,sha256=IIKNzpgUCe5-lvdhoA4VFiqvtjtjzTndiR5-jKSzgrQ,11667
376
376
  reconcile/gql_definitions/jenkins_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -379,7 +379,7 @@ reconcile/gql_definitions/jenkins_configs/jenkins_instances.py,sha256=b3gYVzQavx
379
379
  reconcile/gql_definitions/jira/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
380
380
  reconcile/gql_definitions/jira/jira_servers.py,sha256=N7mvIdqoXT-90abkiaC2bxz2ZjW3d826qVV5OL8_TAM,2223
381
381
  reconcile/gql_definitions/jira_permissions_validator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
382
- reconcile/gql_definitions/jira_permissions_validator/jira_boards_for_permissions_validator.py,sha256=RqIDe90sKjEfFNEIxtfBg10Bddc11M6I7ae_FqBl3To,4034
382
+ reconcile/gql_definitions/jira_permissions_validator/jira_boards_for_permissions_validator.py,sha256=54WiktlJHGOPheKDCMU_Szn1jQeYeI7vCEd_8OOQ-x8,4043
383
383
  reconcile/gql_definitions/jumphosts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
384
384
  reconcile/gql_definitions/jumphosts/jumphosts.py,sha256=gN595lx7K1XsB2AfxDQ911TBVBbCoxibVeujnsGue_Q,2371
385
385
  reconcile/gql_definitions/ldap_groups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -815,7 +815,7 @@ tools/saas_promotion_state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
815
815
  tools/saas_promotion_state/saas_promotion_state.py,sha256=UfwwRLS5Ya4_Nh1w5n1dvoYtchQvYE9yj1VANt2IKqI,3925
816
816
  tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
817
817
  tools/sre_checkpoints/util.py,sha256=zEDbGr18ZeHNQwW8pUsr2JRjuXIPz--WAGJxZo9sv_Y,894
818
- qontract_reconcile-0.10.2.dev205.dist-info/METADATA,sha256=Nk9aLZ_YnzuvFX0u_RJVWxJUztk3TT6ko7ANo6xbEgo,24555
819
- qontract_reconcile-0.10.2.dev205.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
820
- qontract_reconcile-0.10.2.dev205.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
821
- qontract_reconcile-0.10.2.dev205.dist-info/RECORD,,
818
+ qontract_reconcile-0.10.2.dev207.dist-info/METADATA,sha256=UdoDHkjPDfwtakZqafNuWU01FUq_fUTiiWiCAbpI5P0,24555
819
+ qontract_reconcile-0.10.2.dev207.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
820
+ qontract_reconcile-0.10.2.dev207.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
821
+ qontract_reconcile-0.10.2.dev207.dist-info/RECORD,,
@@ -160,9 +160,7 @@ class GlitchtipProjectAlertsIntegration(
160
160
  continue
161
161
  params = {
162
162
  "labels": alert_labels + (channels.jira_labels or []),
163
- "components": [channels.jira_component]
164
- if channels.jira_component
165
- else [],
163
+ "components": channels.jira_components or [],
166
164
  } | token_params
167
165
  if board.issue_type:
168
166
  params["issue_type"] = board.issue_type
@@ -68,7 +68,7 @@ query GlitchtipProjectsWithAlerts {
68
68
  integrations
69
69
  }
70
70
  }
71
- jiraComponent
71
+ jiraComponents
72
72
  jiraLabels
73
73
  }
74
74
  }
@@ -127,7 +127,7 @@ class JiraBoardV1(ConfiguredBaseModel):
127
127
 
128
128
  class AppEscalationPolicyChannelsV1(ConfiguredBaseModel):
129
129
  jira_board: list[JiraBoardV1] = Field(..., alias="jiraBoard")
130
- jira_component: Optional[str] = Field(..., alias="jiraComponent")
130
+ jira_components: Optional[list[str]] = Field(..., alias="jiraComponents")
131
131
  jira_labels: Optional[list[str]] = Field(..., alias="jiraLabels")
132
132
 
133
133
 
@@ -18360,13 +18360,21 @@
18360
18360
  "deprecationReason": null
18361
18361
  },
18362
18362
  {
18363
- "name": "jiraComponent",
18363
+ "name": "jiraComponents",
18364
18364
  "description": null,
18365
18365
  "args": [],
18366
18366
  "type": {
18367
- "kind": "SCALAR",
18368
- "name": "String",
18369
- "ofType": null
18367
+ "kind": "LIST",
18368
+ "name": null,
18369
+ "ofType": {
18370
+ "kind": "NON_NULL",
18371
+ "name": null,
18372
+ "ofType": {
18373
+ "kind": "SCALAR",
18374
+ "name": "String",
18375
+ "ofType": null
18376
+ }
18377
+ }
18370
18378
  },
18371
18379
  "isDeprecated": false,
18372
18380
  "deprecationReason": null
@@ -54,7 +54,7 @@ query JiraBoardsForPermissionValidation {
54
54
  escalationPolicies {
55
55
  name
56
56
  channels {
57
- jiraComponent
57
+ jiraComponents
58
58
  }
59
59
  }
60
60
  disable {
@@ -91,7 +91,7 @@ class JiraSeverityPriorityMappingsV1(ConfiguredBaseModel):
91
91
 
92
92
 
93
93
  class AppEscalationPolicyChannelsV1(ConfiguredBaseModel):
94
- jira_component: Optional[str] = Field(..., alias="jiraComponent")
94
+ jira_components: Optional[list[str]] = Field(..., alias="jiraComponents")
95
95
 
96
96
 
97
97
  class AppEscalationPolicyV1(ConfiguredBaseModel):
@@ -105,13 +105,13 @@ def board_is_valid(
105
105
 
106
106
  components = jira.components()
107
107
  for escalation_policy in board.escalation_policies or []:
108
- jira_component = escalation_policy.channels.jira_component
109
- if jira_component and jira_component not in components:
110
- logging.error(
111
- f"[{board.name}] escalation policy '{escalation_policy.name}' references a non existing Jira component "
112
- f"'{jira_component}'. Valid components: {components}"
113
- )
114
- error |= ValidationError.INVALID_COMPONENT
108
+ for jira_component in escalation_policy.channels.jira_components or []:
109
+ if jira_component not in components:
110
+ logging.error(
111
+ f"[{board.name}] escalation policy '{escalation_policy.name}' references a non existing Jira component "
112
+ f"'{jira_component}'. Valid components: {components}"
113
+ )
114
+ error |= ValidationError.INVALID_COMPONENT
115
115
 
116
116
  issue_type = board.issue_type or default_issue_type
117
117
  project_issue_type = jira.get_issue_type(issue_type)
@@ -122,7 +122,12 @@ def copy_vault_secret(
122
122
  except SecretAccessForbidden:
123
123
  # Raise exception if we can't read the secret from the source vault.
124
124
  # This is likely to be related to the approle permissions.
125
- raise SecretAccessForbidden("Cannot read secret from source vault") from None
125
+ logging.error([
126
+ "replicate_vault_secret",
127
+ "Cannot read secret from source vault",
128
+ path,
129
+ ])
130
+ raise
126
131
  except SecretNotFound:
127
132
  # If the secret is present in vault, but there are no versions of it
128
133
  # we want to be aware of it, but not cause a failure of the complete