qontract-reconcile 0.10.2.dev46__py3-none-any.whl → 0.10.2.dev48__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.dev46
3
+ Version: 0.10.2.dev48
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
@@ -195,7 +195,7 @@ reconcile/endpoints_discovery/integration.py,sha256=fzy5tv4c_6WoAZGGBNJ276NVNB1O
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
198
- reconcile/external_resources/aws.py,sha256=KAs656zj4oZYpVbgWsDLXnJWJlLOZdR1JnRhikbF4x0,10712
198
+ reconcile/external_resources/aws.py,sha256=wzN3GHxyqVa4Lqqg5HdogqNW2RM532t0ZiKaQeVGOL4,10968
199
199
  reconcile/external_resources/factories.py,sha256=C0QHT0soEv6z99-ELAAE19S5MaMHhV0t1fSiQn0Coc4,5970
200
200
  reconcile/external_resources/integration.py,sha256=JF38M7R0Z4ADUTx57TZqSZH9k_xpPlbAxQAcGyIISuM,6925
201
201
  reconcile/external_resources/integration_secrets_sync.py,sha256=dX09O3r6KURziUYYfiki10orNjOGVma-XojhVqd0ww4,1667
@@ -215,7 +215,7 @@ reconcile/glitchtip_project_alerts/integration.py,sha256=BgMx-NyV9mTuv7Sotb2OioC
215
215
  reconcile/glitchtip_project_dsn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
216
216
  reconcile/glitchtip_project_dsn/integration.py,sha256=2iugub-kHYkHNK33n0v9_TeWonuxCPah_VkoTPvaajE,8077
217
217
  reconcile/gql_definitions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
- reconcile/gql_definitions/introspection.json,sha256=jAWK0rPdJY39eevr2NWgD8lqbJew_m5BIhyEMbb_3lo,2236885
218
+ reconcile/gql_definitions/introspection.json,sha256=p3gP25rfNSUn7J4tzfihZ8yyQQU0yutdB15uP9VLlGg,2239836
219
219
  reconcile/gql_definitions/acs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
220
220
  reconcile/gql_definitions/acs/acs_instances.py,sha256=L91WW9LbhJbBSrECqShQpFtjoBOsmNIYLRpMbx1io5o,2181
221
221
  reconcile/gql_definitions/acs/acs_policies.py,sha256=bN5i4mks10Z23KJSj7jqp966Osq2dps4d-sPH9gjxEA,7008
@@ -304,6 +304,8 @@ reconcile/gql_definitions/external_resources/external_resources_namespaces.py,sh
304
304
  reconcile/gql_definitions/external_resources/external_resources_settings.py,sha256=WBkJqnoyYCe1Vimwbp_Pa0RdyTdmWNf6oEWyA749QzA,3589
305
305
  reconcile/gql_definitions/external_resources/fragments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
306
306
  reconcile/gql_definitions/external_resources/fragments/external_resources_module_overrides.py,sha256=T_qWCRtzU8F9frebBXG9TkeQdrKGt3R9YinSngPoFqM,1262
307
+ reconcile/gql_definitions/fleet_labeler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
308
+ reconcile/gql_definitions/fleet_labeler/fleet_labels.py,sha256=4echDp7gADwyr-c5aJm4SqnUbkjWCEpN430kBHwIr1Q,4168
307
309
  reconcile/gql_definitions/fragments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
308
310
  reconcile/gql_definitions/fragments/aus_organization.py,sha256=uBKbTuBa3CZmTXR5HOcGhRcu2U9kM93KbYmoWTxcpB0,4767
309
311
  reconcile/gql_definitions/fragments/aws_account_common.py,sha256=3-7ZAP6GSff7Z2Syz2VQCLY4IySqBOSVmceaRiVNQpw,2385
@@ -524,6 +526,7 @@ reconcile/typed_queries/dynatrace.py,sha256=8vXDXDIDf9_vN_efYwysDr4gLN7SCx4I2bOo
524
526
  reconcile/typed_queries/dynatrace_environments.py,sha256=jnW1GwIopNjvssEkQMYB1pJR9moYe9hUo6SAGk_-tVA,404
525
527
  reconcile/typed_queries/dynatrace_token_provider_token_specs.py,sha256=51kbjfVwzz3n7zTLFi6Lrvotl_iRYKq21tREWTVUIXM,424
526
528
  reconcile/typed_queries/external_resources.py,sha256=AT5md8nH5gX56UrdWnU4T3_aVF_FanHorXNFkU6s6KY,1573
529
+ reconcile/typed_queries/fleet_labels.py,sha256=1gTJPHywuRo6R4xZVzAKKvsYvyXlTIP7qhgw_DSjOyc,345
527
530
  reconcile/typed_queries/get_state_aws_account.py,sha256=CSJjVPWsUZ2rkGIt8ehoQt7hokFqrUDgG9HFlg2lVD8,492
528
531
  reconcile/typed_queries/github_orgs.py,sha256=UZhoPl8qvA_tcO7CZlN8GuMKckt3ywd47Suu61rgHsc,258
529
532
  reconcile/typed_queries/gitlab_instances.py,sha256=ZVQHy2W9xIp53f5qYkjKLHLHgOVtQpxTfcmM1C2046g,291
@@ -775,7 +778,7 @@ tools/saas_promotion_state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
775
778
  tools/saas_promotion_state/saas_promotion_state.py,sha256=UfwwRLS5Ya4_Nh1w5n1dvoYtchQvYE9yj1VANt2IKqI,3925
776
779
  tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
777
780
  tools/sre_checkpoints/util.py,sha256=zEDbGr18ZeHNQwW8pUsr2JRjuXIPz--WAGJxZo9sv_Y,894
778
- qontract_reconcile-0.10.2.dev46.dist-info/METADATA,sha256=C5aPbZDbkFrj5j4y25HOkeCX-7xvvhvxDFYG1ymRabE,24665
779
- qontract_reconcile-0.10.2.dev46.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
780
- qontract_reconcile-0.10.2.dev46.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
781
- qontract_reconcile-0.10.2.dev46.dist-info/RECORD,,
781
+ qontract_reconcile-0.10.2.dev48.dist-info/METADATA,sha256=v2cRkK9cInmcsq0dcaSRCoH1sne86X3HH4xgLjipM_E,24665
782
+ qontract_reconcile-0.10.2.dev48.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
783
+ qontract_reconcile-0.10.2.dev48.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
784
+ qontract_reconcile-0.10.2.dev48.dist-info/RECORD,,
@@ -122,7 +122,8 @@ class AWSElasticacheFactory(AWSDefaultResourceFactory):
122
122
 
123
123
 
124
124
  class AWSRdsFactory(AWSDefaultResourceFactory):
125
- TIMEOUT_RE = re.compile(r"^\d+m$")
125
+ TIMEOUT_RE = re.compile(r"^(?:(\d+)h)?\s*(?:(\d+)m)?$")
126
+ TIMEOUT_UNITS = units = {"h": "hours", "m": "minutes"}
126
127
 
127
128
  def _get_source_db_spec(
128
129
  self, provisioner: str, identifier: str
@@ -188,11 +189,14 @@ class AWSRdsFactory(AWSDefaultResourceFactory):
188
189
  self,
189
190
  timeout: str,
190
191
  ) -> int:
191
- if not re.match(AWSRdsFactory.TIMEOUT_RE, timeout):
192
+ if not (match := re.fullmatch(AWSRdsFactory.TIMEOUT_RE, timeout)):
192
193
  raise ValueError(
193
- f"Invalid RDS instance timeout format: {timeout}. Specify timeout in minutes(m)."
194
+ f"Invalid RDS instance timeout format: {timeout}. Specify a duration using 'h' and 'm' only. E.g. 2h30m"
194
195
  )
195
- return int(timeout[:-1])
196
+
197
+ hours = int(match.group(1)) if match.group(1) else 0
198
+ minutes = int(match.group(2)) if match.group(2) else 0
199
+ return hours * 60 + minutes
196
200
 
197
201
  def _validate_timeouts(
198
202
  self,
@@ -218,7 +222,7 @@ class AWSRdsFactory(AWSDefaultResourceFactory):
218
222
  timeout_minutes = self._get_timeout_minutes(timeout)
219
223
  if timeout_minutes >= module_conf.reconcile_timeout_minutes:
220
224
  raise ValueError(
221
- f"RDS instance {option} timeout value {timeout_minutes} must be lower than the module reconcile_timeout_minutes value {module_conf.reconcile_timeout_minutes}."
225
+ f"RDS instance {option} timeout value {timeout_minutes} (minutes) must be lower than the module reconcile_timeout_minutes value {module_conf.reconcile_timeout_minutes}."
222
226
  )
223
227
 
224
228
  def validate(
File without changes
@@ -0,0 +1,135 @@
1
+ """
2
+ Generated by qenerate plugin=pydantic_v1. DO NOT MODIFY MANUALLY!
3
+ """
4
+ from collections.abc import Callable # noqa: F401 # pylint: disable=W0611
5
+ from datetime import datetime # noqa: F401 # pylint: disable=W0611
6
+ from enum import Enum # noqa: F401 # pylint: disable=W0611
7
+ from typing import ( # noqa: F401 # pylint: disable=W0611
8
+ Any,
9
+ Optional,
10
+ Union,
11
+ )
12
+
13
+ from pydantic import ( # noqa: F401 # pylint: disable=W0611
14
+ BaseModel,
15
+ Extra,
16
+ Field,
17
+ Json,
18
+ )
19
+
20
+ from reconcile.gql_definitions.fragments.vault_secret import VaultSecret
21
+
22
+
23
+ DEFINITION = """
24
+ fragment VaultSecret on VaultSecret_v1 {
25
+ path
26
+ field
27
+ version
28
+ format
29
+ }
30
+
31
+ query FleetLabels {
32
+ fleet_labels: fleet_labels_v1 {
33
+ name
34
+ managedSubscriptionLabelPrefix
35
+ ocms {
36
+ environment {
37
+ url
38
+ }
39
+ accessTokenClientId
40
+ accessTokenClientSecret {
41
+ ... VaultSecret
42
+ }
43
+ accessTokenUrl
44
+ }
45
+ labelDefaults {
46
+ name
47
+ matchSubscriptionLabels
48
+ subscriptionLabelTemplate {
49
+ path {
50
+ content
51
+ }
52
+ type
53
+ variables
54
+ }
55
+ }
56
+ clusters {
57
+ name
58
+ serverUrl
59
+ clusterId
60
+ subscriptionLabels
61
+ }
62
+ }
63
+ }
64
+ """
65
+
66
+
67
+ class ConfiguredBaseModel(BaseModel):
68
+ class Config:
69
+ smart_union=True
70
+ extra=Extra.forbid
71
+
72
+
73
+ class OpenShiftClusterManagerEnvironmentV1(ConfiguredBaseModel):
74
+ url: str = Field(..., alias="url")
75
+
76
+
77
+ class OpenShiftClusterManagerV1(ConfiguredBaseModel):
78
+ environment: OpenShiftClusterManagerEnvironmentV1 = Field(..., alias="environment")
79
+ access_token_client_id: Optional[str] = Field(..., alias="accessTokenClientId")
80
+ access_token_client_secret: Optional[VaultSecret] = Field(..., alias="accessTokenClientSecret")
81
+ access_token_url: Optional[str] = Field(..., alias="accessTokenUrl")
82
+
83
+
84
+ class ResourceV1(ConfiguredBaseModel):
85
+ content: str = Field(..., alias="content")
86
+
87
+
88
+ class FleetSubscriptionLabelTemplateV1(ConfiguredBaseModel):
89
+ path: Optional[ResourceV1] = Field(..., alias="path")
90
+ q_type: Optional[str] = Field(..., alias="type")
91
+ variables: Optional[Json] = Field(..., alias="variables")
92
+
93
+
94
+ class FleetLabelDefaultV1(ConfiguredBaseModel):
95
+ name: str = Field(..., alias="name")
96
+ match_subscription_labels: Json = Field(..., alias="matchSubscriptionLabels")
97
+ subscription_label_template: FleetSubscriptionLabelTemplateV1 = Field(..., alias="subscriptionLabelTemplate")
98
+
99
+
100
+ class FleetClusterV1(ConfiguredBaseModel):
101
+ name: str = Field(..., alias="name")
102
+ server_url: str = Field(..., alias="serverUrl")
103
+ cluster_id: str = Field(..., alias="clusterId")
104
+ subscription_labels: Json = Field(..., alias="subscriptionLabels")
105
+
106
+
107
+ class FleetLabelsV1(ConfiguredBaseModel):
108
+ name: str = Field(..., alias="name")
109
+ managed_subscription_label_prefix: str = Field(..., alias="managedSubscriptionLabelPrefix")
110
+ ocms: list[OpenShiftClusterManagerV1] = Field(..., alias="ocms")
111
+ label_defaults: list[FleetLabelDefaultV1] = Field(..., alias="labelDefaults")
112
+ clusters: list[FleetClusterV1] = Field(..., alias="clusters")
113
+
114
+
115
+ class FleetLabelsQueryData(ConfiguredBaseModel):
116
+ fleet_labels: Optional[list[FleetLabelsV1]] = Field(..., alias="fleet_labels")
117
+
118
+
119
+ def query(query_func: Callable, **kwargs: Any) -> FleetLabelsQueryData:
120
+ """
121
+ This is a convenience function which queries and parses the data into
122
+ concrete types. It should be compatible with most GQL clients.
123
+ You do not have to use it to consume the generated data classes.
124
+ Alternatively, you can also mime and alternate the behavior
125
+ of this function in the caller.
126
+
127
+ Parameters:
128
+ query_func (Callable): Function which queries your GQL Server
129
+ kwargs: optional arguments that will be passed to the query function
130
+
131
+ Returns:
132
+ FleetLabelsQueryData: queried data parsed into generated classes
133
+ """
134
+ raw_data: dict[Any, Any] = query_func(DEFINITION, **kwargs)
135
+ return FleetLabelsQueryData(**raw_data)
@@ -3757,7 +3757,7 @@
3757
3757
  "deprecationReason": null
3758
3758
  },
3759
3759
  {
3760
- "name": "managed_dynatrace_token_provider_labels_v1",
3760
+ "name": "fleet_labels_v1",
3761
3761
  "description": null,
3762
3762
  "args": [
3763
3763
  {
@@ -3799,7 +3799,7 @@
3799
3799
  "name": null,
3800
3800
  "ofType": {
3801
3801
  "kind": "OBJECT",
3802
- "name": "ManagedDynatraceTokenProviderLabels_v1",
3802
+ "name": "FleetLabels_v1",
3803
3803
  "ofType": null
3804
3804
  }
3805
3805
  }
@@ -5621,7 +5621,7 @@
5621
5621
  },
5622
5622
  {
5623
5623
  "kind": "OBJECT",
5624
- "name": "ManagedDynatraceTokenProviderLabels_v1",
5624
+ "name": "FleetLabels_v1",
5625
5625
  "ofType": null
5626
5626
  },
5627
5627
  {
@@ -33880,6 +33880,22 @@
33880
33880
  "isDeprecated": false,
33881
33881
  "deprecationReason": null
33882
33882
  },
33883
+ {
33884
+ "name": "module_default_resources",
33885
+ "description": null,
33886
+ "args": [],
33887
+ "type": {
33888
+ "kind": "NON_NULL",
33889
+ "name": null,
33890
+ "ofType": {
33891
+ "kind": "OBJECT",
33892
+ "name": "DeployResources_v1",
33893
+ "ofType": null
33894
+ }
33895
+ },
33896
+ "isDeprecated": false,
33897
+ "deprecationReason": null
33898
+ },
33883
33899
  {
33884
33900
  "name": "module_default_resources",
33885
33901
  "description": null,
@@ -34097,6 +34113,18 @@
34097
34113
  "isDeprecated": false,
34098
34114
  "deprecationReason": null
34099
34115
  },
34116
+ {
34117
+ "name": "resources",
34118
+ "description": null,
34119
+ "args": [],
34120
+ "type": {
34121
+ "kind": "OBJECT",
34122
+ "name": "DeployResources_v1",
34123
+ "ofType": null
34124
+ },
34125
+ "isDeprecated": false,
34126
+ "deprecationReason": null
34127
+ },
34100
34128
  {
34101
34129
  "name": "resources",
34102
34130
  "description": null,
@@ -34310,7 +34338,7 @@
34310
34338
  },
34311
34339
  {
34312
34340
  "kind": "OBJECT",
34313
- "name": "ManagedDynatraceTokenProviderLabels_v1",
34341
+ "name": "FleetLabels_v1",
34314
34342
  "description": null,
34315
34343
  "fields": [
34316
34344
  {
@@ -34374,15 +34402,39 @@
34374
34402
  "deprecationReason": null
34375
34403
  },
34376
34404
  {
34377
- "name": "ocm",
34405
+ "name": "ocms",
34378
34406
  "description": null,
34379
34407
  "args": [],
34380
34408
  "type": {
34381
34409
  "kind": "NON_NULL",
34382
34410
  "name": null,
34383
34411
  "ofType": {
34384
- "kind": "OBJECT",
34385
- "name": "OpenShiftClusterManager_v1",
34412
+ "kind": "LIST",
34413
+ "name": null,
34414
+ "ofType": {
34415
+ "kind": "NON_NULL",
34416
+ "name": null,
34417
+ "ofType": {
34418
+ "kind": "OBJECT",
34419
+ "name": "OpenShiftClusterManager_v1",
34420
+ "ofType": null
34421
+ }
34422
+ }
34423
+ }
34424
+ },
34425
+ "isDeprecated": false,
34426
+ "deprecationReason": null
34427
+ },
34428
+ {
34429
+ "name": "managedSubscriptionLabelPrefix",
34430
+ "description": null,
34431
+ "args": [],
34432
+ "type": {
34433
+ "kind": "NON_NULL",
34434
+ "name": null,
34435
+ "ofType": {
34436
+ "kind": "SCALAR",
34437
+ "name": "String",
34386
34438
  "ofType": null
34387
34439
  }
34388
34440
  },
@@ -34404,7 +34456,7 @@
34404
34456
  "name": null,
34405
34457
  "ofType": {
34406
34458
  "kind": "OBJECT",
34407
- "name": "DynatraceTokenProviderLabelDefault_v1",
34459
+ "name": "FleetLabelDefault_v1",
34408
34460
  "ofType": null
34409
34461
  }
34410
34462
  }
@@ -34428,7 +34480,7 @@
34428
34480
  "name": null,
34429
34481
  "ofType": {
34430
34482
  "kind": "OBJECT",
34431
- "name": "OpenShiftClusterManagerUpgradePolicyCluster_v1",
34483
+ "name": "FleetCluster_v1",
34432
34484
  "ofType": null
34433
34485
  }
34434
34486
  }
@@ -34451,7 +34503,7 @@
34451
34503
  },
34452
34504
  {
34453
34505
  "kind": "OBJECT",
34454
- "name": "DynatraceTokenProviderLabelDefault_v1",
34506
+ "name": "FleetLabelDefault_v1",
34455
34507
  "description": null,
34456
34508
  "fields": [
34457
34509
  {
@@ -34471,7 +34523,7 @@
34471
34523
  "deprecationReason": null
34472
34524
  },
34473
34525
  {
34474
- "name": "matchLabels",
34526
+ "name": "matchSubscriptionLabels",
34475
34527
  "description": null,
34476
34528
  "args": [],
34477
34529
  "type": {
@@ -34487,13 +34539,17 @@
34487
34539
  "deprecationReason": null
34488
34540
  },
34489
34541
  {
34490
- "name": "labelTemplate",
34542
+ "name": "subscriptionLabelTemplate",
34491
34543
  "description": null,
34492
34544
  "args": [],
34493
34545
  "type": {
34494
- "kind": "OBJECT",
34495
- "name": "DynatraceTokenProviderLabelTemplate_v1",
34496
- "ofType": null
34546
+ "kind": "NON_NULL",
34547
+ "name": null,
34548
+ "ofType": {
34549
+ "kind": "OBJECT",
34550
+ "name": "FleetSubscriptionLabelTemplate_v1",
34551
+ "ofType": null
34552
+ }
34497
34553
  },
34498
34554
  "isDeprecated": false,
34499
34555
  "deprecationReason": null
@@ -34506,7 +34562,7 @@
34506
34562
  },
34507
34563
  {
34508
34564
  "kind": "OBJECT",
34509
- "name": "DynatraceTokenProviderLabelTemplate_v1",
34565
+ "name": "FleetSubscriptionLabelTemplate_v1",
34510
34566
  "description": null,
34511
34567
  "fields": [
34512
34568
  {
@@ -34551,6 +34607,81 @@
34551
34607
  "enumValues": null,
34552
34608
  "possibleTypes": null
34553
34609
  },
34610
+ {
34611
+ "kind": "OBJECT",
34612
+ "name": "FleetCluster_v1",
34613
+ "description": null,
34614
+ "fields": [
34615
+ {
34616
+ "name": "name",
34617
+ "description": null,
34618
+ "args": [],
34619
+ "type": {
34620
+ "kind": "NON_NULL",
34621
+ "name": null,
34622
+ "ofType": {
34623
+ "kind": "SCALAR",
34624
+ "name": "String",
34625
+ "ofType": null
34626
+ }
34627
+ },
34628
+ "isDeprecated": false,
34629
+ "deprecationReason": null
34630
+ },
34631
+ {
34632
+ "name": "serverUrl",
34633
+ "description": null,
34634
+ "args": [],
34635
+ "type": {
34636
+ "kind": "NON_NULL",
34637
+ "name": null,
34638
+ "ofType": {
34639
+ "kind": "SCALAR",
34640
+ "name": "String",
34641
+ "ofType": null
34642
+ }
34643
+ },
34644
+ "isDeprecated": false,
34645
+ "deprecationReason": null
34646
+ },
34647
+ {
34648
+ "name": "clusterId",
34649
+ "description": null,
34650
+ "args": [],
34651
+ "type": {
34652
+ "kind": "NON_NULL",
34653
+ "name": null,
34654
+ "ofType": {
34655
+ "kind": "SCALAR",
34656
+ "name": "String",
34657
+ "ofType": null
34658
+ }
34659
+ },
34660
+ "isDeprecated": false,
34661
+ "deprecationReason": null
34662
+ },
34663
+ {
34664
+ "name": "subscriptionLabels",
34665
+ "description": null,
34666
+ "args": [],
34667
+ "type": {
34668
+ "kind": "NON_NULL",
34669
+ "name": null,
34670
+ "ofType": {
34671
+ "kind": "SCALAR",
34672
+ "name": "JSON",
34673
+ "ofType": null
34674
+ }
34675
+ },
34676
+ "isDeprecated": false,
34677
+ "deprecationReason": null
34678
+ }
34679
+ ],
34680
+ "inputFields": null,
34681
+ "interfaces": [],
34682
+ "enumValues": null,
34683
+ "possibleTypes": null
34684
+ },
34554
34685
  {
34555
34686
  "kind": "OBJECT",
34556
34687
  "name": "__Schema",
@@ -38876,81 +39007,6 @@
38876
39007
  "enumValues": null,
38877
39008
  "possibleTypes": null
38878
39009
  },
38879
- {
38880
- "kind": "OBJECT",
38881
- "name": "DynatraceTokenProviderCluster_v1",
38882
- "description": null,
38883
- "fields": [
38884
- {
38885
- "name": "name",
38886
- "description": null,
38887
- "args": [],
38888
- "type": {
38889
- "kind": "NON_NULL",
38890
- "name": null,
38891
- "ofType": {
38892
- "kind": "SCALAR",
38893
- "name": "String",
38894
- "ofType": null
38895
- }
38896
- },
38897
- "isDeprecated": false,
38898
- "deprecationReason": null
38899
- },
38900
- {
38901
- "name": "serverUrl",
38902
- "description": null,
38903
- "args": [],
38904
- "type": {
38905
- "kind": "NON_NULL",
38906
- "name": null,
38907
- "ofType": {
38908
- "kind": "SCALAR",
38909
- "name": "String",
38910
- "ofType": null
38911
- }
38912
- },
38913
- "isDeprecated": false,
38914
- "deprecationReason": null
38915
- },
38916
- {
38917
- "name": "serverId",
38918
- "description": null,
38919
- "args": [],
38920
- "type": {
38921
- "kind": "NON_NULL",
38922
- "name": null,
38923
- "ofType": {
38924
- "kind": "SCALAR",
38925
- "name": "String",
38926
- "ofType": null
38927
- }
38928
- },
38929
- "isDeprecated": false,
38930
- "deprecationReason": null
38931
- },
38932
- {
38933
- "name": "labels",
38934
- "description": null,
38935
- "args": [],
38936
- "type": {
38937
- "kind": "NON_NULL",
38938
- "name": null,
38939
- "ofType": {
38940
- "kind": "SCALAR",
38941
- "name": "JSON",
38942
- "ofType": null
38943
- }
38944
- },
38945
- "isDeprecated": false,
38946
- "deprecationReason": null
38947
- }
38948
- ],
38949
- "inputFields": null,
38950
- "interfaces": [],
38951
- "enumValues": null,
38952
- "possibleTypes": null
38953
- },
38954
39010
  {
38955
39011
  "kind": "OBJECT",
38956
39012
  "name": "NamespaceCNAsset_v1",
@@ -43350,6 +43406,18 @@
43350
43406
  "isDeprecated": false,
43351
43407
  "deprecationReason": null
43352
43408
  },
43409
+ {
43410
+ "name": "resources",
43411
+ "description": null,
43412
+ "args": [],
43413
+ "type": {
43414
+ "kind": "OBJECT",
43415
+ "name": "DeployResources_v1",
43416
+ "ofType": null
43417
+ },
43418
+ "isDeprecated": false,
43419
+ "deprecationReason": null
43420
+ },
43353
43421
  {
43354
43422
  "name": "resources",
43355
43423
  "description": null,
@@ -0,0 +1,14 @@
1
+ from reconcile.gql_definitions.fleet_labeler.fleet_labels import (
2
+ FleetLabelsV1,
3
+ query,
4
+ )
5
+ from reconcile.utils import gql
6
+ from reconcile.utils.gql import GqlApi
7
+
8
+
9
+ def get_fleet_labels(
10
+ api: GqlApi | None = None,
11
+ ) -> list[FleetLabelsV1]:
12
+ api = api or gql.get_api()
13
+ data = query(api.query)
14
+ return data.fleet_labels or []