add new
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"main/db"
|
||||
"net/http"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -214,6 +215,33 @@ func CreateClusterHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
}
|
||||
|
||||
func Deletecluster(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
clusterName := r.URL.Query().Get("Name")
|
||||
if clusterName == "" {
|
||||
http.Error(w, "Invalid input", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
err := argohandler.DeleteApp(clusterName)
|
||||
if err != nil {
|
||||
http.Error(w, "File to delete "+clusterName, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
res, err := db.Vclusters_details.DeleteOne(context.TODO(), bson.M{"name": clusterName})
|
||||
if err != nil {
|
||||
http.Error(w, `{"message": "Could not delete cluster"}`, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
if res.DeletedCount == 0 {
|
||||
http.Error(w, `{"message": "No cluster found to delete"}`, http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func getClientset(w http.ResponseWriter, clustername string) (*kubernetes.Clientset, *rest.Config, error) {
|
||||
|
||||
kubeconfig, err := getClusterConfig(clustername)
|
||||
@@ -820,6 +848,15 @@ func Pod_exec(w http.ResponseWriter, r *http.Request) {
|
||||
podName := r.URL.Query().Get("Pod")
|
||||
command := r.URL.Query().Get("Command")
|
||||
|
||||
//var cmd []string
|
||||
parsed, err := strconv.Unquote(command)
|
||||
if err != nil {
|
||||
http.Error(w, "Invalid command string: "+err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
// cmd = strings.Fields(parsed)
|
||||
cmd := []string{"sh", "-c", parsed}
|
||||
|
||||
if clustername == "" || namespace == "" || podName == "" {
|
||||
http.Error(w, "Missing required parameters (Name, Namespace, Pod)", http.StatusBadRequest)
|
||||
return
|
||||
@@ -831,8 +868,6 @@ func Pod_exec(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
cmd := []string{command}
|
||||
|
||||
req := clientset.CoreV1().RESTClient().
|
||||
Post().
|
||||
Resource("pods").
|
||||
@@ -874,3 +909,237 @@ func Pod_exec(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(output)
|
||||
}
|
||||
|
||||
func Pod_delete(w http.ResponseWriter, r *http.Request) {
|
||||
clustername := r.URL.Query().Get("Name")
|
||||
namespace := r.URL.Query().Get("Namespace")
|
||||
podName := r.URL.Query().Get("Pod")
|
||||
|
||||
if clustername == "" || namespace == "" || podName == "" {
|
||||
http.Error(w, "Missing required parameters (Name, Namespace, Pod)", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
clientset, _, err := getClientset(w, clustername)
|
||||
if err != nil {
|
||||
http.Error(w, "Error getting Kubernetes clientset", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
err = clientset.CoreV1().Pods(namespace).Delete(context.TODO(), podName, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
http.Error(w, "Error deleting pod", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(podName + " Has been deleted")
|
||||
}
|
||||
|
||||
func Service_delete(w http.ResponseWriter, r *http.Request) {
|
||||
clustername := r.URL.Query().Get("Name")
|
||||
namespace := r.URL.Query().Get("Namespace")
|
||||
serviceName := r.URL.Query().Get("serviceName")
|
||||
|
||||
if clustername == "" || namespace == "" || serviceName == "" {
|
||||
http.Error(w, "Missing required parameters (Name, Namespace, Pod)", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
clientset, _, err := getClientset(w, clustername)
|
||||
if err != nil {
|
||||
http.Error(w, "Error getting Kubernetes clientset", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
err = clientset.CoreV1().Services(namespace).Delete(context.TODO(), serviceName, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
http.Error(w, "Error deleting service", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(serviceName + " Has been deleted")
|
||||
}
|
||||
|
||||
func Deployment_delete(w http.ResponseWriter, r *http.Request) {
|
||||
clustername := r.URL.Query().Get("Name")
|
||||
namespace := r.URL.Query().Get("Namespace")
|
||||
deploymenteName := r.URL.Query().Get("deploymenteName")
|
||||
|
||||
if clustername == "" || namespace == "" || deploymenteName == "" {
|
||||
http.Error(w, "Missing required parameters (Name, Namespace, Pod)", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
clientset, _, err := getClientset(w, clustername)
|
||||
if err != nil {
|
||||
http.Error(w, "Error getting Kubernetes clientset", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
err = clientset.AppsV1().Deployments(namespace).Delete(context.TODO(), deploymenteName, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
http.Error(w, "Error deleting deploymente", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(deploymenteName + " Has been deleted")
|
||||
}
|
||||
|
||||
func StatefulSet_delete(w http.ResponseWriter, r *http.Request) {
|
||||
clustername := r.URL.Query().Get("Name")
|
||||
namespace := r.URL.Query().Get("Namespace")
|
||||
statefulSetName := r.URL.Query().Get("statefulSetName")
|
||||
|
||||
if clustername == "" || namespace == "" || statefulSetName == "" {
|
||||
http.Error(w, "Missing required parameters (Name, Namespace, Pod)", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
clientset, _, err := getClientset(w, clustername)
|
||||
if err != nil {
|
||||
http.Error(w, "Error getting Kubernetes clientset", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
err = clientset.AppsV1().StatefulSets(namespace).Delete(context.TODO(), statefulSetName, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
http.Error(w, "Error deleting statefulSet", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(statefulSetName + " Has been deleted")
|
||||
}
|
||||
|
||||
func Daemonsets_delete(w http.ResponseWriter, r *http.Request) {
|
||||
clustername := r.URL.Query().Get("Name")
|
||||
namespace := r.URL.Query().Get("Namespace")
|
||||
daemonsetsName := r.URL.Query().Get("daemonsetsName")
|
||||
|
||||
if clustername == "" || namespace == "" || daemonsetsName == "" {
|
||||
http.Error(w, "Missing required parameters (Name, Namespace, Pod)", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
clientset, _, err := getClientset(w, clustername)
|
||||
if err != nil {
|
||||
http.Error(w, "Error getting Kubernetes clientset", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
err = clientset.AppsV1().DaemonSets(namespace).Delete(context.TODO(), daemonsetsName, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
http.Error(w, "Error deleting daemonsets"+err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(daemonsetsName + " Has been deleted")
|
||||
}
|
||||
|
||||
func JobsName_delete(w http.ResponseWriter, r *http.Request) {
|
||||
clustername := r.URL.Query().Get("Name")
|
||||
namespace := r.URL.Query().Get("Namespace")
|
||||
jobsName := r.URL.Query().Get("jobsName")
|
||||
|
||||
if clustername == "" || namespace == "" || jobsName == "" {
|
||||
http.Error(w, "Missing required parameters (Name, Namespace, Pod)", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
clientset, _, err := getClientset(w, clustername)
|
||||
if err != nil {
|
||||
http.Error(w, "Error getting Kubernetes clientset", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
err = clientset.BatchV1().Jobs(namespace).Delete(context.TODO(), jobsName, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
http.Error(w, "Error deleting Jobs", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(jobsName + " Has been deleted")
|
||||
}
|
||||
|
||||
func Replicaset_delete(w http.ResponseWriter, r *http.Request) {
|
||||
clustername := r.URL.Query().Get("Name")
|
||||
namespace := r.URL.Query().Get("Namespace")
|
||||
replicasetName := r.URL.Query().Get("replicasetName")
|
||||
|
||||
if clustername == "" || namespace == "" || replicasetName == "" {
|
||||
http.Error(w, "Missing required parameters (Name, Namespace, Pod)", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
clientset, _, err := getClientset(w, clustername)
|
||||
if err != nil {
|
||||
http.Error(w, "Error getting Kubernetes clientset", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
err = clientset.AppsV1().ReplicaSets(namespace).Delete(context.TODO(), replicasetName, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
http.Error(w, "Error deleting ReplicaSets", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(replicasetName + " Has been deleted")
|
||||
}
|
||||
|
||||
func Replicationcontroller_delete(w http.ResponseWriter, r *http.Request) {
|
||||
clustername := r.URL.Query().Get("Name")
|
||||
namespace := r.URL.Query().Get("Namespace")
|
||||
replicationcontrollerName := r.URL.Query().Get("replicationcontrollerName")
|
||||
|
||||
if clustername == "" || namespace == "" || replicationcontrollerName == "" {
|
||||
http.Error(w, "Missing required parameters (Name, Namespace, Pod)", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
clientset, _, err := getClientset(w, clustername)
|
||||
if err != nil {
|
||||
http.Error(w, "Error getting Kubernetes clientset", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
err = clientset.CoreV1().ReplicationControllers(namespace).Delete(context.TODO(), replicationcontrollerName, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
http.Error(w, "Error deleting ReplicationControllers", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(replicationcontrollerName + " Has been deleted")
|
||||
}
|
||||
|
||||
func Cronjob_delete(w http.ResponseWriter, r *http.Request) {
|
||||
clustername := r.URL.Query().Get("Name")
|
||||
namespace := r.URL.Query().Get("Namespace")
|
||||
cronjobName := r.URL.Query().Get("cronjobName")
|
||||
|
||||
if clustername == "" || namespace == "" || cronjobName == "" {
|
||||
http.Error(w, "Missing required parameters (Name, Namespace, Pod)", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
clientset, _, err := getClientset(w, clustername)
|
||||
if err != nil {
|
||||
http.Error(w, "Error getting Kubernetes clientset", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
err = clientset.BatchV1().CronJobs(namespace).Delete(context.TODO(), cronjobName, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
http.Error(w, "Error deleting CronJobs", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(cronjobName + " Has been deleted")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user