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);
}
}