qontract-reconcile 0.10.2.dev23__py3-none-any.whl → 0.10.2.dev24__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.dev23
3
+ Version: 0.10.2.dev24
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
@@ -191,7 +191,7 @@ reconcile/dynatrace_token_provider/model.py,sha256=gkpqo5rRRueBXnIMjp4EEHqBUBuU6
191
191
  reconcile/dynatrace_token_provider/ocm.py,sha256=MwYCZIxW4f-1jzFTxxN__sity6S8O7bbKUdyTFEVO7U,4325
192
192
  reconcile/dynatrace_token_provider/validate.py,sha256=40_9QmHoB3-KBc0k_0D4QO00PpNNPS-gU9Z6cIcWga8,1920
193
193
  reconcile/endpoints_discovery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
- reconcile/endpoints_discovery/integration.py,sha256=63jAVDOcO1iF8zmH2nCmPxHiUGxs83bFTfKfD9vUlEY,14273
194
+ reconcile/endpoints_discovery/integration.py,sha256=fzy5tv4c_6WoAZGGBNJ276NVNB1OESuSJMhZh4-ZNm8,14711
195
195
  reconcile/endpoints_discovery/merge_request.py,sha256=_yLb4tnvoZMCko8rta2C_CvOInJa9pa3HzSmHNtjgGU,2978
196
196
  reconcile/endpoints_discovery/merge_request_manager.py,sha256=wUMsumxv8RnWaRattax4HfoRlhtVzmgro3GiJJ1C4Vc,6392
197
197
  reconcile/external_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -293,7 +293,7 @@ reconcile/gql_definitions/dynatrace_token_provider/__init__.py,sha256=47DEQpj8HB
293
293
  reconcile/gql_definitions/dynatrace_token_provider/dynatrace_bootstrap_tokens.py,sha256=5gTuAnR2rnx2k6Rn7FMEAzw6GCZ6F5HZbqkmJ9-3NI4,2244
294
294
  reconcile/gql_definitions/dynatrace_token_provider/token_specs.py,sha256=XGsMuB8gowRpqJjkD_KRomx-1OswzyWbF4qjVdhionk,2555
295
295
  reconcile/gql_definitions/endpoints_discovery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
- reconcile/gql_definitions/endpoints_discovery/apps.py,sha256=erQqC1twpa7gwV6HJh8C5mYQehlfbEzsSzFbIj8gtyQ,3036
296
+ reconcile/gql_definitions/endpoints_discovery/apps.py,sha256=aBWRAwDUJQ32ghJS4cPQcR9SNl20Fcwd3pxHDB3YJQY,3172
297
297
  reconcile/gql_definitions/external_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
298
298
  reconcile/gql_definitions/external_resources/aws_accounts.py,sha256=XR69j9dpTQ0gv8y-AZN7AJ0dPvO-wbHscyCDgrax6Bk,2046
299
299
  reconcile/gql_definitions/external_resources/external_resources_modules.py,sha256=cbbvGq1Te9DP8XiFg3bp4Y0q6LxpGYov8ugcROPyPLI,2647
@@ -767,7 +767,7 @@ tools/saas_promotion_state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
767
767
  tools/saas_promotion_state/saas_promotion_state.py,sha256=UfwwRLS5Ya4_Nh1w5n1dvoYtchQvYE9yj1VANt2IKqI,3925
768
768
  tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
769
769
  tools/sre_checkpoints/util.py,sha256=zEDbGr18ZeHNQwW8pUsr2JRjuXIPz--WAGJxZo9sv_Y,894
770
- qontract_reconcile-0.10.2.dev23.dist-info/METADATA,sha256=C5EWqnp2RymXK2IG0ug0lH9gvhe8-litZ1nqLs_iwgQ,24665
771
- qontract_reconcile-0.10.2.dev23.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
772
- qontract_reconcile-0.10.2.dev23.dist-info/entry_points.txt,sha256=JniHZPadNOILPyfSl0LF2YSp3Db7K2_W2CN7i9f3Gos,540
773
- qontract_reconcile-0.10.2.dev23.dist-info/RECORD,,
770
+ qontract_reconcile-0.10.2.dev24.dist-info/METADATA,sha256=3PESZ9C6DwAy3yl39ijxJD9JP3-4K2PC0C-yPyZ0MaI,24665
771
+ qontract_reconcile-0.10.2.dev24.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
772
+ qontract_reconcile-0.10.2.dev24.dist-info/entry_points.txt,sha256=JniHZPadNOILPyfSl0LF2YSp3Db7K2_W2CN7i9f3Gos,540
773
+ qontract_reconcile-0.10.2.dev24.dist-info/RECORD,,
@@ -220,6 +220,16 @@ class EndpointsDiscoveryIntegration(
220
220
  ]
221
221
  return endpoints_to_add, endpoints_to_change, endpoints_to_delete
222
222
 
223
+ def filter_ignored_routes(
224
+ self, routes: list[Route], labels: dict[str, str]
225
+ ) -> list[Route]:
226
+ """Filter out the ignored routes."""
227
+ return [
228
+ route
229
+ for route in routes
230
+ if f"{QONTRACT_INTEGRATION}-{route.name}" not in labels
231
+ ]
232
+
223
233
  def process(
224
234
  self,
225
235
  oc_map: OCMap,
@@ -231,6 +241,7 @@ class EndpointsDiscoveryIntegration(
231
241
  apps_with_changes: list[App] = []
232
242
  for app in apps:
233
243
  app_endpoints = App(name=app.name, path=app.path)
244
+
234
245
  for namespace in app.namespaces or []:
235
246
  if not self.is_enabled(namespace, cluster_names=cluster_names):
236
247
  continue
@@ -238,7 +249,11 @@ class EndpointsDiscoveryIntegration(
238
249
  logging.debug(
239
250
  f"Processing namespace {namespace.cluster.name}/{namespace.name}"
240
251
  )
241
- routes = self.get_routes(oc_map, namespace)
252
+
253
+ routes = self.filter_ignored_routes(
254
+ self.get_routes(oc_map, namespace),
255
+ (app.labels or {}) | (namespace.labels or {}),
256
+ )
242
257
  endpoints_to_add, endpoints_to_change, endpoints_to_delete = (
243
258
  self.get_namespace_endpoint_changes(
244
259
  endpoint_prefix=endpoint_prefix(namespace),
@@ -62,12 +62,14 @@ query EndPointsDiscoveryApps {
62
62
  apps: apps_v1 {
63
63
  path
64
64
  name
65
+ labels
65
66
  endPoints {
66
67
  name
67
68
  url
68
69
  }
69
70
  namespaces {
70
71
  name
72
+ labels
71
73
  delete
72
74
  clusterAdmin
73
75
  cluster {
@@ -92,6 +94,7 @@ class AppEndPointsV1(ConfiguredBaseModel):
92
94
 
93
95
  class NamespaceV1(ConfiguredBaseModel):
94
96
  name: str = Field(..., alias="name")
97
+ labels: Optional[Json] = Field(..., alias="labels")
95
98
  delete: Optional[bool] = Field(..., alias="delete")
96
99
  cluster_admin: Optional[bool] = Field(..., alias="clusterAdmin")
97
100
  cluster: OcConnectionCluster = Field(..., alias="cluster")
@@ -100,6 +103,7 @@ class NamespaceV1(ConfiguredBaseModel):
100
103
  class AppV1(ConfiguredBaseModel):
101
104
  path: str = Field(..., alias="path")
102
105
  name: str = Field(..., alias="name")
106
+ labels: Optional[Json] = Field(..., alias="labels")
103
107
  end_points: Optional[list[AppEndPointsV1]] = Field(..., alias="endPoints")
104
108
  namespaces: Optional[list[NamespaceV1]] = Field(..., alias="namespaces")
105
109