Skip to content

Commit

Permalink
Adding support for extensions v1 v1beta1
Browse files Browse the repository at this point in the history
  • Loading branch information
wilmer05 committed Jul 12, 2023
1 parent 2f10460 commit ccfdeac
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 8 deletions.
16 changes: 15 additions & 1 deletion paasta_tools/kubernetes_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
from kubernetes.client import models
from kubernetes.client import V1Affinity
from kubernetes.client import V1AWSElasticBlockStoreVolumeSource
from kubernetes.client import V1Beta1CustomResourceDefinition
from kubernetes.client import V1beta1PodDisruptionBudget
from kubernetes.client import V1beta1PodDisruptionBudgetSpec
from kubernetes.client import V1Capabilities
Expand Down Expand Up @@ -539,6 +540,17 @@ def __init__(
self.jsonify = self.api_client.sanitize_for_serialization


class KubeClientV1Beta1(KubeClient):
def __init__(
self,
component: Optional[str] = None,
config_file: Optional[str] = None,
context: Optional[str] = None,
) -> None:
super().__init__(self, component, config_file, context)
self.apiextensions = kube_client.ApiextensionsV1Beta1Api(self.api_client)


def allowlist_denylist_to_requirements(
allowlist: DeployWhitelist, denylist: DeployBlacklist
) -> List[Tuple[str, str, List[str]]]:
Expand Down Expand Up @@ -3800,7 +3812,9 @@ def mode_to_int(mode: Optional[Union[str, int]]) -> Optional[int]:

def update_crds(
kube_client: KubeClient,
desired_crds: Collection[V1CustomResourceDefinition],
desired_crds: Collection[
V1CustomResourceDefinition | V1Beta1CustomResourceDefinition
],
existing_crds: V1CustomResourceDefinitionList,
) -> bool:
success = True
Expand Down
28 changes: 22 additions & 6 deletions paasta_tools/setup_kubernetes_crd.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,11 @@
from typing import Sequence

import service_configuration_lib
from kubernetes.client import V1Beta1CustomResourceDefinition
from kubernetes.client import V1CustomResourceDefinition

from paasta_tools.kubernetes_tools import KubeClient
from paasta_tools.kubernetes_tools import KubeClientV1Beta1
from paasta_tools.kubernetes_tools import paasta_prefixed
from paasta_tools.kubernetes_tools import update_crds
from paasta_tools.utils import DEFAULT_SOA_DIR
Expand Down Expand Up @@ -84,12 +86,18 @@ def main() -> None:
cluster = system_paasta_config.get_cluster()

kube_client = KubeClient()
kube_client_v1_beta1 = KubeClientV1Beta1()

success = setup_kube_crd(
kube_client=kube_client,
cluster=cluster,
services=args.service_list,
soa_dir=soa_dir,
) or setup_kube_crd(
kube_client=kube_client_v1_beta1,
cluster=cluster,
services=args.service_list,
soa_dir=soa_dir,
)
sys.exit(0 if success else 1)

Expand Down Expand Up @@ -118,12 +126,20 @@ def setup_kube_crd(
metadata["labels"] = {}
metadata["labels"]["yelp.com/paasta_service"] = service
metadata["labels"][paasta_prefixed("service")] = service
desired_crd = V1CustomResourceDefinition(
api_version=crd_config.get("apiVersion"),
kind=crd_config.get("kind"),
metadata=metadata,
spec=crd_config.get("spec"),
)
if isinstance(kube_client, KubeClientV1Beta1):
desired_crd = V1Beta1CustomResourceDefinition(
api_version=crd_config.get("apiVersion"),
kind=crd_config.get("kind"),
metadata=metadata,
spec=crd_config.get("spec"),
)
else:
desired_crd = V1CustomResourceDefinition(
api_version=crd_config.get("apiVersion"),
kind=crd_config.get("kind"),
metadata=metadata,
spec=crd_config.get("spec"),
)
desired_crds.append(desired_crd)

return update_crds(
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jmespath==0.9.3
jsonref==0.1
jsonschema==2.5.1
kazoo==2.8.0
kubernetes==24.2.0
kubernetes==21.7.0
ldap3==2.6
manhole==1.5.0
marathon==0.12.0
Expand Down

0 comments on commit ccfdeac

Please sign in to comment.