kubernator 1.0.23.dev20251008231728__py3-none-any.whl → 1.0.23.dev20251010010455__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.
Potentially problematic release.
This version of kubernator might be problematic. Click here for more details.
- kubernator/__init__.py +1 -1
- kubernator/plugins/k8s.py +28 -15
- {kubernator-1.0.23.dev20251008231728.dist-info → kubernator-1.0.23.dev20251010010455.dist-info}/METADATA +1 -1
- {kubernator-1.0.23.dev20251008231728.dist-info → kubernator-1.0.23.dev20251010010455.dist-info}/RECORD +9 -9
- {kubernator-1.0.23.dev20251008231728.dist-info → kubernator-1.0.23.dev20251010010455.dist-info}/WHEEL +0 -0
- {kubernator-1.0.23.dev20251008231728.dist-info → kubernator-1.0.23.dev20251010010455.dist-info}/entry_points.txt +0 -0
- {kubernator-1.0.23.dev20251008231728.dist-info → kubernator-1.0.23.dev20251010010455.dist-info}/namespace_packages.txt +0 -0
- {kubernator-1.0.23.dev20251008231728.dist-info → kubernator-1.0.23.dev20251010010455.dist-info}/top_level.txt +0 -0
- {kubernator-1.0.23.dev20251008231728.dist-info → kubernator-1.0.23.dev20251010010455.dist-info}/zip-safe +0 -0
kubernator/__init__.py
CHANGED
kubernator/plugins/k8s.py
CHANGED
|
@@ -39,7 +39,8 @@ from kubernator.api import (KubernatorPlugin,
|
|
|
39
39
|
load_remote_file,
|
|
40
40
|
StripNL,
|
|
41
41
|
install_python_k8s_client,
|
|
42
|
-
TemplateEngine
|
|
42
|
+
TemplateEngine,
|
|
43
|
+
sleep)
|
|
43
44
|
from kubernator.merge import extract_merge_instructions, apply_merge_instructions
|
|
44
45
|
from kubernator.plugins.k8s_api import (K8SResourcePluginMixin,
|
|
45
46
|
K8SResource,
|
|
@@ -120,6 +121,7 @@ class KubernetesPlugin(KubernatorPlugin, K8SResourcePluginMixin):
|
|
|
120
121
|
("apps", "StatefulSet"): K8SPropagationPolicy.ORPHAN,
|
|
121
122
|
("apps", "Deployment"): K8SPropagationPolicy.ORPHAN,
|
|
122
123
|
("storage.k8s.io", "StorageClass"): K8SPropagationPolicy.ORPHAN,
|
|
124
|
+
(None, "Pod"): K8SPropagationPolicy.BACKGROUND,
|
|
123
125
|
},
|
|
124
126
|
default_includes=Globs(["*.yaml", "*.yml"], True),
|
|
125
127
|
default_excludes=Globs([".*"], True),
|
|
@@ -137,6 +139,7 @@ class KubernetesPlugin(KubernatorPlugin, K8SResourcePluginMixin):
|
|
|
137
139
|
field_validation=field_validation,
|
|
138
140
|
field_validation_warn_fatal=field_validation_warn_fatal,
|
|
139
141
|
field_validation_warnings=0,
|
|
142
|
+
conflict_retry_delay=0.3,
|
|
140
143
|
_k8s=self,
|
|
141
144
|
)
|
|
142
145
|
context.k8s = dict(default_includes=Globs(context.globals.k8s.default_includes),
|
|
@@ -199,7 +202,7 @@ class KubernetesPlugin(KubernatorPlugin, K8SResourcePluginMixin):
|
|
|
199
202
|
|
|
200
203
|
k8s.client = self._setup_k8s_client()
|
|
201
204
|
version = client.VersionApi(k8s.client).get_code()
|
|
202
|
-
if "-eks-" in version.git_version:
|
|
205
|
+
if "-eks-" or "-gke" in version.git_version:
|
|
203
206
|
git_version = version.git_version.split("-")[0]
|
|
204
207
|
else:
|
|
205
208
|
git_version = version.git_version
|
|
@@ -425,18 +428,26 @@ class KubernetesPlugin(KubernatorPlugin, K8SResourcePluginMixin):
|
|
|
425
428
|
resource, resource.source, status["message"])
|
|
426
429
|
raise e from None
|
|
427
430
|
|
|
428
|
-
def create(exists_ok=False):
|
|
431
|
+
def create(exists_ok=False, wait_for_delete=False):
|
|
429
432
|
logger.info("Creating resource %s%s%s", resource, status_msg,
|
|
430
433
|
" (ignoring existing)" if exists_ok else "")
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
if status
|
|
438
|
-
|
|
439
|
-
|
|
434
|
+
while True:
|
|
435
|
+
try:
|
|
436
|
+
create_func()
|
|
437
|
+
return
|
|
438
|
+
except ApiException as e:
|
|
439
|
+
if exists_ok or wait_for_delete:
|
|
440
|
+
if e.status == 409:
|
|
441
|
+
status = json.loads(e.body)
|
|
442
|
+
if status["reason"] == "AlreadyExists":
|
|
443
|
+
if wait_for_delete:
|
|
444
|
+
sleep(self.context.k8s.conflict_retry_delay)
|
|
445
|
+
logger.info("Retry creating resource %s%s%s", resource, status_msg,
|
|
446
|
+
" (ignoring existing)" if exists_ok else "")
|
|
447
|
+
continue
|
|
448
|
+
else:
|
|
449
|
+
return
|
|
450
|
+
raise
|
|
440
451
|
|
|
441
452
|
merge_instrs, normalized_manifest = extract_merge_instructions(resource.manifest, resource)
|
|
442
453
|
if merge_instrs:
|
|
@@ -471,7 +482,7 @@ class KubernetesPlugin(KubernatorPlugin, K8SResourcePluginMixin):
|
|
|
471
482
|
if e.status == 422:
|
|
472
483
|
status = json.loads(e.body)
|
|
473
484
|
details = status["details"]
|
|
474
|
-
immutable_key = details
|
|
485
|
+
immutable_key = details.get("group"), details["kind"]
|
|
475
486
|
|
|
476
487
|
try:
|
|
477
488
|
propagation_policy = self.context.k8s.immutable_changes[immutable_key]
|
|
@@ -484,13 +495,15 @@ class KubernetesPlugin(KubernatorPlugin, K8SResourcePluginMixin):
|
|
|
484
495
|
"field is immutable" in cause["message"]
|
|
485
496
|
or
|
|
486
497
|
cause["reason"] == "FieldValueForbidden" and
|
|
487
|
-
"Forbidden: updates to" in cause["message"]
|
|
498
|
+
("Forbidden: updates to" in cause["message"]
|
|
499
|
+
or
|
|
500
|
+
"Forbidden: pod updates" in cause["message"])
|
|
488
501
|
):
|
|
489
502
|
logger.info("Deleting resource %s (cascade %s)%s", resource,
|
|
490
503
|
propagation_policy.policy,
|
|
491
504
|
status_msg)
|
|
492
505
|
delete_func(propagation_policy=propagation_policy)
|
|
493
|
-
create(exists_ok=dry_run)
|
|
506
|
+
create(exists_ok=dry_run, wait_for_delete=not dry_run)
|
|
494
507
|
return 1, 0, 1
|
|
495
508
|
raise
|
|
496
509
|
else:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kubernator
|
|
3
|
-
Version: 1.0.23.
|
|
3
|
+
Version: 1.0.23.dev20251010010455
|
|
4
4
|
Summary: Kubernator is the a pluggable framework for K8S provisioning
|
|
5
5
|
Home-page: https://github.com/karellen/kubernator
|
|
6
6
|
Author: Express Systems USA, Inc.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
kubernator/LICENSE,sha256=wKKdOCMTCPQRV5gDkVLAsXX8qSnRJ5owk7yWPO1KZNo,11387
|
|
2
|
-
kubernator/__init__.py,sha256=
|
|
2
|
+
kubernator/__init__.py,sha256=FzbtCh5XegjNjaDe91xX09kYGd2bMEThMPsx_8OBoQY,933
|
|
3
3
|
kubernator/__main__.py,sha256=f0S60wgpLu--1UlOhzfWail-xt8zyIuODodX98_yPN0,707
|
|
4
4
|
kubernator/_json_path.py,sha256=pjQKXxgbpQWETYBIrIuJZHgugF92IbEAM19AC7JUmAQ,3162
|
|
5
5
|
kubernator/_k8s_client_patches.py,sha256=PEeWPInnW38NDyK7G24_Dmw-x7xHpN3vJWZeckdqgK0,76892
|
|
@@ -13,7 +13,7 @@ kubernator/plugins/eks.py,sha256=xe7vyPHNwuP8gEYDSzPyBkm-RkAtP64wCOqs9U5I7xI,227
|
|
|
13
13
|
kubernator/plugins/gke.py,sha256=HZc-Bu2W8MvF50EgoAcZ8W-CAVEWJ4y8f4yG_3s8C1w,3429
|
|
14
14
|
kubernator/plugins/helm.py,sha256=2563hLr0uJucw0xo9JLfbCtpGPRZ5e5gYTnapQrqy3w,12036
|
|
15
15
|
kubernator/plugins/istio.py,sha256=1dHjD9r6Kk2-tw6OFMOfBpksnqGMguTyyF1FwwWEtI8,14977
|
|
16
|
-
kubernator/plugins/k8s.py,sha256=
|
|
16
|
+
kubernator/plugins/k8s.py,sha256=fvmkVaBz9CuGKmu_w6S1X0tWzSQvV6S6jx8c-X_ZIXI,25673
|
|
17
17
|
kubernator/plugins/k8s_api.py,sha256=PDa7MB9q3WMm_9tr8T6LY_ojrHpyGYiNTlvBZinbgFY,27379
|
|
18
18
|
kubernator/plugins/kops.py,sha256=-yhpEjydz9E7Ep24WtEs93rLTXtw4yakdgVqXlIj1ww,9688
|
|
19
19
|
kubernator/plugins/kubeconfig.py,sha256=uwtHmF2I6LiTPrC3M88G5SfYxDWtuh0MqcMfrHHoNRA,2178
|
|
@@ -22,10 +22,10 @@ kubernator/plugins/minikube.py,sha256=zbboER1VsCvIsh-yUE3_XpzPNcT4c6vh1LigDonEm3
|
|
|
22
22
|
kubernator/plugins/template.py,sha256=542nyS4ZNgdwJHEoIA5aLP1d4C312ydd7sPM9ZFbHuI,8357
|
|
23
23
|
kubernator/plugins/terraform.py,sha256=a1MPl9G8Rznjd28uMRdYWrjpFDLlFAVmLFH4hFEsMsQ,5285
|
|
24
24
|
kubernator/plugins/terragrunt.py,sha256=-qN8tTqPUXJ9O7CEiJVUB0GSUQU3DUTkv-aWdIIsm7Q,5051
|
|
25
|
-
kubernator-1.0.23.
|
|
26
|
-
kubernator-1.0.23.
|
|
27
|
-
kubernator-1.0.23.
|
|
28
|
-
kubernator-1.0.23.
|
|
29
|
-
kubernator-1.0.23.
|
|
30
|
-
kubernator-1.0.23.
|
|
31
|
-
kubernator-1.0.23.
|
|
25
|
+
kubernator-1.0.23.dev20251010010455.dist-info/METADATA,sha256=XN7fMdues-A_taikGGhY-goi9SIng_5XrqyFscMzP5g,10840
|
|
26
|
+
kubernator-1.0.23.dev20251010010455.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
27
|
+
kubernator-1.0.23.dev20251010010455.dist-info/entry_points.txt,sha256=IWDtHzyTleRqDSuVRXEr5GImrI7z_kh21t5DWZ8ldcQ,47
|
|
28
|
+
kubernator-1.0.23.dev20251010010455.dist-info/namespace_packages.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
29
|
+
kubernator-1.0.23.dev20251010010455.dist-info/top_level.txt,sha256=_z1CxWeKMI55ckf2vC8HqjbCn_E2Y_P5RdrhE_QWcIs,11
|
|
30
|
+
kubernator-1.0.23.dev20251010010455.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
31
|
+
kubernator-1.0.23.dev20251010010455.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|