public void applyYaml()

in ozhera-webhook/ozhera-webhook-server/src/main/java/org/apache/ozhera/webhook/common/K8sUtilBean.java [46:167]


    public void applyYaml(String yaml, String namespace, String action) {
        log.warn("applyYaml action:{}, ply yaml:{}", action, yaml);
        try (InputStream inputStream = new ByteArrayInputStream(yaml.getBytes("UTF-8"))) {
            ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable<HasMetadata> metaDataes = kubernetesClient.load(inputStream);
            List<HasMetadata> hasMetadataList = metaDataes.get();

            for (HasMetadata hasMetadata : hasMetadataList) {
                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.Service heraService) {
                    if ("delete".equals(action)) {
                        kubernetesClient.services().inNamespace(namespace).delete(heraService);
                    } else {
                        kubernetesClient.services().inNamespace(namespace).createOrReplace(heraService);
                    }
                    continue;
                }

                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.PersistentVolume heraPv) {
                    if ("delete".equals(action)) {
                        kubernetesClient.persistentVolumes().delete(heraPv);
                    } else {
                        kubernetesClient.persistentVolumes().createOrReplace(heraPv);
                    }
                    continue;
                }

                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.storage.StorageClass heraStorageClass) {
                    if ("delete".equals(action)) {
                        kubernetesClient.storage().storageClasses().delete(heraStorageClass);
                    } else {
                        kubernetesClient.storage().storageClasses().createOrReplace(heraStorageClass);
                    }
                    continue;
                }

                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.PersistentVolumeClaim heraPvc) {
                    if ("delete".equals(action)) {
                        kubernetesClient.persistentVolumeClaims().inNamespace(namespace).delete(heraPvc);
                    } else {
                        kubernetesClient.persistentVolumeClaims().inNamespace(namespace).createOrReplace(heraPvc);
                    }
                    continue;
                }


                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.rbac.ClusterRoleBinding heraClusterRoleBinding) {
                    if ("delete".equals(action)) {
                        kubernetesClient.rbac().clusterRoleBindings().delete(heraClusterRoleBinding);
                    } else {
                        kubernetesClient.rbac().clusterRoleBindings().createOrReplace(heraClusterRoleBinding);
                    }
                    continue;
                }

                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.rbac.ClusterRole heraClusterRole) {
                    if ("delete".equals(action)) {
                        kubernetesClient.rbac().clusterRoles().delete(heraClusterRole);
                    } else {
                        kubernetesClient.rbac().clusterRoles().createOrReplace(heraClusterRole);
                    }
                    continue;
                }

                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.ServiceAccount heraServiceAccount) {
                    if ("delete".equals(action)) {
                        kubernetesClient.serviceAccounts().delete(heraServiceAccount);
                    } else {
                        kubernetesClient.serviceAccounts().createOrReplace(heraServiceAccount);
                    }
                    continue;
                }

                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.ConfigMap heraConfigMap) {
                    if ("delete".equals(action)) {
                        kubernetesClient.configMaps().inNamespace(namespace).delete(heraConfigMap);
                    } else {
                        kubernetesClient.configMaps().inNamespace(namespace).createOrReplace(heraConfigMap);
                    }
                    continue;
                }

                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.apps.DaemonSet heraDaemonSet) {
                    if ("delete".equals(action)) {
                        kubernetesClient.apps().daemonSets().delete(heraDaemonSet);
                    } else {
                        kubernetesClient.apps().daemonSets().createOrReplace(heraDaemonSet);
                    }
                    continue;
                }

                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.apps.StatefulSet heraStatefulSet) {
                    if ("delete".equals(action)) {
                        kubernetesClient.apps().statefulSets().delete(heraStatefulSet);
                    } else {
                        kubernetesClient.apps().statefulSets().createOrReplace(heraStatefulSet);
                    }
                    continue;
                }

                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.certificates.v1.CertificateSigningRequest heraCertificateSigningRequest) {
                    if ("delete".equals(action)) {
                        kubernetesClient.certificates().v1().certificateSigningRequests().delete(heraCertificateSigningRequest);
                    } else {
                        kubernetesClient.certificates().v1().certificateSigningRequests().createOrReplace(heraCertificateSigningRequest);
                    }
                    continue;
                }

                if (hasMetadata instanceof io.fabric8.kubernetes.api.model.admissionregistration.v1.MutatingWebhookConfiguration heraMutatingWebhookConfiguration) {
                    if ("delete".equals(action)) {
                        kubernetesClient.admissionRegistration().v1().mutatingWebhookConfigurations().delete(heraMutatingWebhookConfiguration);
                    } else {
                        kubernetesClient.admissionRegistration().v1().mutatingWebhookConfigurations().createOrReplace(heraMutatingWebhookConfiguration);
                    }
                    continue;
                }

                log.warn("not support k8s kind:{}, yaml:{}", hasMetadata.getKind(), gson.toJson(hasMetadata.getMetadata()));
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }