qontract-reconcile 0.10.1rc853__py3-none-any.whl → 0.10.1rc854__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.1rc853
3
+ Version: 0.10.1rc854
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
@@ -60,7 +60,7 @@ reconcile/ocm_github_idp.py,sha256=glwXMsIBcl38-OmDDQCpe0YoLLXfoRgVQmqwXMEXjds,3
60
60
  reconcile/ocm_groups.py,sha256=CluPyvmwE5JOZS2HQSReC1sD8L1ChhnJlAg8lcwdtxc,3395
61
61
  reconcile/ocm_machine_pools.py,sha256=oY4oLPm5Y_ajBV8KFg2LuBQvsZl-CxTjSxEyxg4b2OI,16634
62
62
  reconcile/ocm_update_recommended_version.py,sha256=IYkfLXIprOW1jguZeELcGP1iBPuj-b53R-FTqKulMl8,4204
63
- reconcile/ocm_upgrade_scheduler_org_updater.py,sha256=49Ss6sp9_n5F9914gXb-uEap4Vm2t-KPTJRFFViJMIo,4184
63
+ reconcile/ocm_upgrade_scheduler_org_updater.py,sha256=sQSicCyU-TPtIBYsSn97qzYiQLFaMmOMSFr1OP6tOck,4308
64
64
  reconcile/openshift_base.py,sha256=mE_NuKgEFsZDeA3kUo4iMsvIF1wN5yemUHeuE0M9fbY,49735
65
65
  reconcile/openshift_cluster_bots.py,sha256=eRPYZqWMKFNxLlSN0QG97V5t1iIESQ0BbGaiaQP5VB0,10940
66
66
  reconcile/openshift_clusterrolebindings.py,sha256=QfSy1Ik8eEY5XObc1Q4xyhqyErZenJmbPv_u9wcDNNo,5864
@@ -204,8 +204,8 @@ reconcile/gql_definitions/acs/acs_instances.py,sha256=L91WW9LbhJbBSrECqShQpFtjoB
204
204
  reconcile/gql_definitions/acs/acs_policies.py,sha256=bN5i4mks10Z23KJSj7jqp966Osq2dps4d-sPH9gjxEA,7008
205
205
  reconcile/gql_definitions/acs/acs_rbac.py,sha256=cZsIlCWliPQdQHgmBsIMx54fJNOtkdRXLzmOKZmJNHk,3009
206
206
  reconcile/gql_definitions/advanced_upgrade_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
207
- reconcile/gql_definitions/advanced_upgrade_service/aus_clusters.py,sha256=JyOmY7EZutEqMM11W9RBbo-lmyhPNQuVMBmUFWUFiRw,4317
208
- reconcile/gql_definitions/advanced_upgrade_service/aus_organization.py,sha256=CAKXTY23_ow7_lz4K3kS1QQMqwjpMLep_L_mOzHi6Ug,3315
207
+ reconcile/gql_definitions/advanced_upgrade_service/aus_clusters.py,sha256=RpOrRYJnC6qgf5AvfB80Knp2Ww9R0viuxYVg_LetglY,4366
208
+ reconcile/gql_definitions/advanced_upgrade_service/aus_organization.py,sha256=zU-WJ9CASV1Ok-1jUro6K426v3ug5YNR1XoXmV7SwQ8,3364
209
209
  reconcile/gql_definitions/app_interface_metrics_exporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
210
  reconcile/gql_definitions/app_interface_metrics_exporter/onboarding_status.py,sha256=uVEEqU6YYmKsNTo6EWlFnoVmqha2rvBDx-wiD64VmG0,1679
211
211
  reconcile/gql_definitions/aws_account_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -277,7 +277,7 @@ reconcile/gql_definitions/external_resources/external_resources_modules.py,sha25
277
277
  reconcile/gql_definitions/external_resources/external_resources_namespaces.py,sha256=UyOAUY1rROenjTz6y-uSEFjrEwhh-lPsIQPbi6EQLFg,40915
278
278
  reconcile/gql_definitions/external_resources/external_resources_settings.py,sha256=989_pG9NWKB5BPvdwqjqZUYp_2qf-xYmJ9c9kq8Kmfw,2886
279
279
  reconcile/gql_definitions/fragments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
280
- reconcile/gql_definitions/fragments/aus_organization.py,sha256=ARI87YAbC0VjFri9eVGYrRPBc4s0kWsa25RR8FFoq7E,4433
280
+ reconcile/gql_definitions/fragments/aus_organization.py,sha256=uBKbTuBa3CZmTXR5HOcGhRcu2U9kM93KbYmoWTxcpB0,4767
281
281
  reconcile/gql_definitions/fragments/aws_account_common.py,sha256=3-7ZAP6GSff7Z2Syz2VQCLY4IySqBOSVmceaRiVNQpw,2385
282
282
  reconcile/gql_definitions/fragments/aws_account_managed.py,sha256=zXbux0Bb7QZ37fU4LLMKB4m0rT3Y8bD10C1TuOsH_ZQ,1470
283
283
  reconcile/gql_definitions/fragments/aws_account_sso.py,sha256=ITR3PLz4Iq1SiWAoYGWPDuHJnAmTyZ0QQqs2Zsi8pxA,979
@@ -754,7 +754,7 @@ reconcile/utils/mr/glitchtip_access_reporter.py,sha256=dTv6FRpLnR2Itxw0oZ-ShKp8h
754
754
  reconcile/utils/mr/labels.py,sha256=9QRTRjZAtq45zELd9SwavaraczMjwjn5no3RK1YxFTg,825
755
755
  reconcile/utils/mr/notificator.py,sha256=2Xyg5Xh3xFQITdTmZ8Nry5qe0uC_w_On4uMPdlN5Bl4,2998
756
756
  reconcile/utils/mr/ocm_update_recommended_version.py,sha256=p_aVP0TGrlKk9WBwgQnYWqUDsED_Hg6G5Bqj0UvtRwA,1536
757
- reconcile/utils/mr/ocm_upgrade_scheduler_org_updates.py,sha256=RzEKRT_BhvB2ud9pyNFZ1cNZFmDGBUah9vjpP0y9f9w,2810
757
+ reconcile/utils/mr/ocm_upgrade_scheduler_org_updates.py,sha256=m2MGZP7OC9cQASZJ5VKfQjkW25kRQNW3ZAfApX7kKkk,2996
758
758
  reconcile/utils/mr/user_maintenance.py,sha256=cHPBn8zrReWLHalyk-EFdkFJe9zjVjRoZhT4t2zZfGE,3956
759
759
  reconcile/utils/ocm/__init__.py,sha256=xv7CJp7K9LCQfa4gL_W0MMCOD1P4qOy8t5aZj1xXNUE,808
760
760
  reconcile/utils/ocm/addons.py,sha256=IHlqOO12TAdYwwU6Oedz3ussF1kELj9EI5GxPP6LKi8,7376
@@ -811,7 +811,7 @@ tools/sd_app_sre_alert_report.py,sha256=e9vAdyenUz2f5c8-z-5WY0wv-SJ9aePKDH2r4IwB
811
811
  tools/template_validation.py,sha256=-U-lTGeLaci8yWPEblCJeev2DOlY1jM9QOOh-O1zts8,3376
812
812
  tools/cli_commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
813
813
  tools/cli_commands/gpg_encrypt.py,sha256=w8hl4jIEWk5wKbEFN6fVEOwUJGmdlvOqYodW3XSN7mU,4978
814
- tools/cli_commands/systems_and_tools.py,sha256=SRMV-VZn2BQ9JeUY_w5O8M_f9eMVxu7LidISUi1cfJQ,15073
814
+ tools/cli_commands/systems_and_tools.py,sha256=CSBxM-rzUn_-RuLJpSqSSd0TsKzrG4OPSRmcwVdA40s,16856
815
815
  tools/cli_commands/cost_report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
816
816
  tools/cli_commands/cost_report/aws.py,sha256=bdvbT3bDymBOMx4Ve4kt154MeGiGusTSpOpMMFrQ4SM,5191
817
817
  tools/cli_commands/cost_report/cost_management_api.py,sha256=tFzjaZ3RSVJeAUsfSWXHiQlMVbV8dFcXibK158ODQcA,2549
@@ -834,8 +834,8 @@ tools/test/test_app_interface_metrics_exporter.py,sha256=SX7qL3D1SIRKFo95FoQztvf
834
834
  tools/test/test_qontract_cli.py,sha256=_D61RFGAN5x44CY1tYbouhlGXXABwYfxKSWSQx3Jrss,4941
835
835
  tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
836
836
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
837
- qontract_reconcile-0.10.1rc853.dist-info/METADATA,sha256=W5TRijLMJq6p3otR0e2cFukDGKaXc92OO95yZAQM1Sk,2273
838
- qontract_reconcile-0.10.1rc853.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
839
- qontract_reconcile-0.10.1rc853.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
840
- qontract_reconcile-0.10.1rc853.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
841
- qontract_reconcile-0.10.1rc853.dist-info/RECORD,,
837
+ qontract_reconcile-0.10.1rc854.dist-info/METADATA,sha256=FNdlNh3I5vJN_daQGIkW10vxGmMPVgD7hTkV_V7JCXI,2273
838
+ qontract_reconcile-0.10.1rc854.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
839
+ qontract_reconcile-0.10.1rc854.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
840
+ qontract_reconcile-0.10.1rc854.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
841
+ qontract_reconcile-0.10.1rc854.dist-info/RECORD,,
@@ -24,6 +24,7 @@ from reconcile.gql_definitions.fragments.upgrade_policy import ClusterUpgradePol
24
24
  DEFINITION = """
25
25
  fragment AUSOCMOrganization on OpenShiftClusterManager_v1 {
26
26
  name
27
+ labels
27
28
  environment {
28
29
  ... OCMEnvironment
29
30
  }
@@ -75,6 +76,10 @@ fragment AUSOCMOrganization on OpenShiftClusterManager_v1 {
75
76
  upgradePolicyAllowedWorkloads
76
77
  upgradePolicyClusters {
77
78
  name
79
+ serverUrl
80
+ spec {
81
+ id
82
+ }
78
83
  upgradePolicy {
79
84
  ... ClusterUpgradePolicyV1
80
85
  }
@@ -23,6 +23,7 @@ from reconcile.gql_definitions.fragments.aus_organization import AUSOCMOrganizat
23
23
  DEFINITION = """
24
24
  fragment AUSOCMOrganization on OpenShiftClusterManager_v1 {
25
25
  name
26
+ labels
26
27
  environment {
27
28
  ... OCMEnvironment
28
29
  }
@@ -74,6 +75,10 @@ fragment AUSOCMOrganization on OpenShiftClusterManager_v1 {
74
75
  upgradePolicyAllowedWorkloads
75
76
  upgradePolicyClusters {
76
77
  name
78
+ serverUrl
79
+ spec {
80
+ id
81
+ }
77
82
  upgradePolicy {
78
83
  ... ClusterUpgradePolicyV1
79
84
  }
@@ -70,8 +70,14 @@ class OpenShiftClusterManagerSectorV1(ConfiguredBaseModel):
70
70
  dependencies: Optional[list[OpenShiftClusterManagerSectorDependenciesV1]] = Field(..., alias="dependencies")
71
71
 
72
72
 
73
+ class OpenShiftClusterManagerUpgradePolicyClusterSpecV1(ConfiguredBaseModel):
74
+ q_id: str = Field(..., alias="id")
75
+
76
+
73
77
  class OpenShiftClusterManagerUpgradePolicyClusterV1(ConfiguredBaseModel):
74
78
  name: str = Field(..., alias="name")
79
+ server_url: Optional[str] = Field(..., alias="serverUrl")
80
+ spec: Optional[OpenShiftClusterManagerUpgradePolicyClusterSpecV1] = Field(..., alias="spec")
75
81
  upgrade_policy: ClusterUpgradePolicyV1 = Field(..., alias="upgradePolicy")
76
82
 
77
83
 
@@ -82,6 +88,7 @@ class AusClusterHealthCheckV1(ConfiguredBaseModel):
82
88
 
83
89
  class AUSOCMOrganization(ConfiguredBaseModel):
84
90
  name: str = Field(..., alias="name")
91
+ labels: Optional[Json] = Field(..., alias="labels")
85
92
  environment: OCMEnvironment = Field(..., alias="environment")
86
93
  org_id: str = Field(..., alias="orgId")
87
94
  access_token_client_id: Optional[str] = Field(..., alias="accessTokenClientId")
@@ -90,6 +90,8 @@ def run(dry_run, gitlab_project_id):
90
90
  item = {
91
91
  "action": "add",
92
92
  "cluster": ocm_cluster_name,
93
+ "url": ocm_cluster_spec.server_url,
94
+ "id": ocm_cluster_spec.spec.id,
93
95
  "policy": policy,
94
96
  }
95
97
  updates.append(item)
@@ -37,6 +37,8 @@ class CreateOCMUpgradeSchedulerOrgUpdates(MergeRequestBase):
37
37
  for update in self.updates_info["updates"]:
38
38
  action = update["action"]
39
39
  cluster_name = update["cluster"]
40
+ cluster_id = update["id"]
41
+ cluster_server_url = update["url"]
40
42
  upgrade_policy = update.get("policy")
41
43
 
42
44
  if action == "add":
@@ -47,6 +49,8 @@ class CreateOCMUpgradeSchedulerOrgUpdates(MergeRequestBase):
47
49
  continue
48
50
  item = {
49
51
  "name": cluster_name,
52
+ "serverUrl": cluster_server_url,
53
+ "spec": {"id": cluster_id},
50
54
  "upgradePolicy": upgrade_policy,
51
55
  }
52
56
  upgrade_policy_clusters.append(item)
@@ -3,11 +3,16 @@
3
3
 
4
4
  from typing import (
5
5
  Any,
6
+ Optional,
6
7
  Self,
7
8
  )
8
9
 
9
10
  from pydantic import BaseModel
10
11
 
12
+ from reconcile.aus.base import get_orgs_for_environment
13
+ from reconcile.gql_definitions.advanced_upgrade_service.aus_organization import (
14
+ DEFINITION as AUS_ORGANIZATION_DEFINITION,
15
+ )
11
16
  from reconcile.gql_definitions.common.app_code_component_repos import (
12
17
  DEFINITION as CODE_COMPONENTS_DEFINITION,
13
18
  )
@@ -47,6 +52,9 @@ from reconcile.gql_definitions.dynatrace_token_provider.dynatrace_bootstrap_toke
47
52
  from reconcile.gql_definitions.dynatrace_token_provider.dynatrace_bootstrap_tokens import (
48
53
  DynatraceEnvironmentV1,
49
54
  )
55
+ from reconcile.gql_definitions.fragments.aus_organization import (
56
+ OpenShiftClusterManagerUpgradePolicyClusterV1,
57
+ )
50
58
  from reconcile.gql_definitions.fragments.ocm_environment import OCMEnvironment
51
59
  from reconcile.gql_definitions.gitlab_members.gitlab_instances import (
52
60
  DEFINITION as GITLAB_INSTANCES_DEFINITION,
@@ -136,7 +144,9 @@ class SystemTool(BaseModel):
136
144
  enumeration: str
137
145
 
138
146
  @classmethod
139
- def init_from_model(cls, model: Any, enumeration: Any) -> Self:
147
+ def init_from_model(
148
+ cls, model: Any, enumeration: Any, parent: Optional[str] = None
149
+ ) -> Self:
140
150
  match model:
141
151
  case GitlabInstanceV1():
142
152
  return cls.init_from_gitlab(model, enumeration)
@@ -154,6 +164,10 @@ class SystemTool(BaseModel):
154
164
  return cls.init_from_jira_server(model, enumeration)
155
165
  case OCMEnvironment():
156
166
  return cls.init_from_ocm_environment(model, enumeration)
167
+ case OpenShiftClusterManagerUpgradePolicyClusterV1():
168
+ return cls.init_from_ocm_org_upgrade_policy_cluster(
169
+ model, enumeration, parent
170
+ )
157
171
  case PagerDutyInstanceV1():
158
172
  return cls.init_from_pagerduty_instance(model, enumeration)
159
173
  case QuayInstanceV1():
@@ -265,6 +279,24 @@ class SystemTool(BaseModel):
265
279
  enumeration=enumeration,
266
280
  )
267
281
 
282
+ @classmethod
283
+ def init_from_ocm_org_upgrade_policy_cluster(
284
+ cls,
285
+ c: OpenShiftClusterManagerUpgradePolicyClusterV1,
286
+ enumeration: Any,
287
+ parent: Optional[str] = None,
288
+ ) -> Self:
289
+ return cls(
290
+ system_type="openshift",
291
+ system_id=c.spec.q_id if c.spec else "",
292
+ name=c.name,
293
+ url=c.server_url,
294
+ description=f"cluster {c.name} in organization {parent}"
295
+ if parent
296
+ else c.name,
297
+ enumeration=enumeration,
298
+ )
299
+
268
300
  @classmethod
269
301
  def init_from_pagerduty_instance(
270
302
  cls, p: PagerDutyInstanceV1, enumeration: Any
@@ -362,12 +394,18 @@ class SystemToolInventory:
362
394
  def __init__(self) -> None:
363
395
  self.systems_and_tools: list[SystemTool] = []
364
396
 
365
- def append(self, model: Any, enumeration: Any) -> None:
366
- self.systems_and_tools.append(SystemTool.init_from_model(model, enumeration))
397
+ def append(
398
+ self, model: Any, enumeration: Any, parent: Optional[str] = None
399
+ ) -> None:
400
+ self.systems_and_tools.append(
401
+ SystemTool.init_from_model(model, enumeration, parent=parent)
402
+ )
367
403
 
368
- def update(self, models: list[Any], enumeration: Any) -> None:
404
+ def update(
405
+ self, models: list[Any], enumeration: Any, parent: Optional[str] = None
406
+ ) -> None:
369
407
  for m in models:
370
- self.append(m, enumeration)
408
+ self.append(m, enumeration, parent=parent)
371
409
 
372
410
  @property
373
411
  def data(self) -> list[dict[str, Any]]:
@@ -408,7 +446,20 @@ def get_systems_and_tools_inventory() -> SystemToolInventory:
408
446
  inventory.update(get_dynatrace_environments(), DYNATRACE_ENVIRONMENTS_DEFINITION)
409
447
  inventory.update(get_glitchtip_instances(), GLITCHTIP_INSTANCES_DEFINITION)
410
448
  inventory.update(get_jira_servers(), JIRA_SERVERS_DEFINITION)
411
- inventory.update(get_ocm_environments(), OCM_ENVIRONMENTS_DEFINITION)
449
+ ocm_environments = get_ocm_environments()
450
+ inventory.update(ocm_environments, OCM_ENVIRONMENTS_DEFINITION)
451
+ for ocm_env in ocm_environments:
452
+ ocm_env_orgs = get_orgs_for_environment(
453
+ "", ocm_env.name, query_func=gql_api.query
454
+ )
455
+ for ocm_org in ocm_env_orgs:
456
+ if ocm_org.labels and "systems_and_tools_report" in ocm_org.labels:
457
+ inventory.update(
458
+ ocm_org.upgrade_policy_clusters or [],
459
+ AUS_ORGANIZATION_DEFINITION,
460
+ parent=f"{ocm_org.name} ({ocm_env.name})",
461
+ )
462
+
412
463
  inventory.update(
413
464
  get_pagerduty_instances(gql_api.query), PAGERDUTY_INSTANCES_DEFINITION
414
465
  )