Browse Source

unify cron jobs and jobs

Alexander Belanger 5 years ago
parent
commit
6a1eaf1887

+ 43 - 11
dashboard/src/main/home/cluster-dashboard/expanded-chart/ExpandedJobChart.tsx

@@ -83,7 +83,7 @@ export default class ExpandedJobChart extends Component<PropsType, StateType> {
       )
       .then((res) => {
         let image = res.data?.config?.image?.repository;
-        if (image === "porterdev/hello-porter-job" && !this.state.newestImage) {
+        if ((image === "porterdev/hello-porter-job" || image === "public.ecr.aws/o1j4x7p4/hello-porter-job") && !this.state.newestImage) {
           this.setState(
             {
               currentChart: res.data,
@@ -172,6 +172,43 @@ export default class ExpandedJobChart extends Component<PropsType, StateType> {
     return ws;
   };
 
+  setupCronJobWebsocket = (chart: ChartType) => {
+    // let chartVersion = `${chart.chart.metadata.name}-${chart.chart.metadata.version}`;
+
+    let { currentCluster, currentProject } = this.context;
+    let protocol = process.env.NODE_ENV == "production" ? "wss" : "ws";
+    let ws = new WebSocket(
+      `${protocol}://${process.env.API_SERVER}/api/projects/${currentProject.id}/k8s/cronjob/status?cluster_id=${currentCluster.id}`
+    );
+    ws.onopen = () => {
+      console.log("connected to websocket");
+    };
+
+    ws.onmessage = (evt: MessageEvent) => {
+      let event = JSON.parse(evt.data);
+      let object = event.Object;
+      object.metadata.kind = event.Kind;
+
+      // if imageIsPlaceholder is true, update the newestImage and imageIsPlaceholder fields
+      if ((event.event_type == "ADD" || event.event_type == "UPDATE") && this.state.imageIsPlaceholder) {
+        let newestImage = event.Object?.spec?.jobTemplate?.spec?.template?.spec?.containers[0]?.image;
+
+        this.setState({ newestImage, imageIsPlaceholder: false })
+      }
+    };
+
+    ws.onclose = () => {
+      console.log("closing websocket");
+    };
+
+    ws.onerror = (err: ErrorEvent) => {
+      console.log(err);
+      ws.close();
+    };
+
+    return ws;
+  }
+
   handleSaveValues = (config?: any) => {
     let { currentCluster, setCurrentError, currentProject } = this.context;
     this.setState({ saveValuesStatus: "loading" });
@@ -290,7 +327,9 @@ export default class ExpandedJobChart extends Component<PropsType, StateType> {
     if (
       newestImage &&
       newestImage !== "porterdev/hello-porter-job" &&
-      newestImage !== "porterdev/hello-porter-job:latest"
+      newestImage !== "porterdev/hello-porter-job:latest" &&
+      newestImage !== "public.ecr.aws/o1j4x7p4/hello-porter-job" &&
+      newestImage !== "public.ecr.aws/o1j4x7p4/hello-porter-job:latest"
     ) {
       this.setState({ jobs, newestImage, imageIsPlaceholder: false });
     } else {
@@ -345,15 +384,7 @@ export default class ExpandedJobChart extends Component<PropsType, StateType> {
       this.setState(
         {
           formData,
-        },
-        () =>
-          this.setState({
-            // TODO: handle passing in override values at same time as formData
-            valuesToOverride: {
-              showCronToggle: { value: false },
-            },
-          })
-      );
+        });
     }
     let tabOptions = [] as any[];
 
@@ -410,6 +441,7 @@ export default class ExpandedJobChart extends Component<PropsType, StateType> {
     this.getChartData(currentChart);
     this.getJobs(currentChart);
     this.setupJobWebsocket(currentChart);
+    this.setupCronJobWebsocket(currentChart);
   }
 
   handleUninstallChart = () => {

+ 2 - 2
dashboard/src/main/home/launch/expanded-template/LaunchTemplate.tsx

@@ -211,10 +211,10 @@ class LaunchTemplate extends Component<PropsType, StateType> {
 
     if (this.state.sourceType === "repo") {
       if (this.props.currentTemplate?.name == "job") {
-        imageUrl = "porterdev/hello-porter-job";
+        imageUrl = "public.ecr.aws/o1j4x7p4/hello-porter-job";
         tag = "latest";
       } else {
-        imageUrl = "porterdev/hello-porter";
+        imageUrl = "public.ecr.aws/o1j4x7p4/hello-porter";
         tag = "latest";
       }
     }

+ 1 - 27
go.mod

@@ -94,30 +94,4 @@ require (
 	rsc.io/letsencrypt v0.0.3 // indirect
 	sigs.k8s.io/aws-iam-authenticator v0.5.2
 	sigs.k8s.io/yaml v1.2.0
-)
-
-// Used to pin the k8s library versions regardless of what other dependencies enforce
-// replace (
-// 	k8s.io/api => k8s.io/api v0.18.8
-// 	k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.18.8
-// 	k8s.io/apimachinery => k8s.io/apimachinery v0.18.8
-// 	k8s.io/apiserver => k8s.io/apiserver v0.18.8
-// 	k8s.io/cli-runtime => k8s.io/cli-runtime v0.18.8
-// 	k8s.io/client-go => k8s.io/client-go v0.18.8
-// 	k8s.io/cloud-provider => k8s.io/cloud-provider v0.18.8
-// 	k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.18.8
-// 	k8s.io/code-generator => k8s.io/code-generator v0.18.8
-// 	k8s.io/component-base => k8s.io/component-base v0.18.8
-// 	k8s.io/cri-api => k8s.io/cri-api v0.18.8
-// 	k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.18.8
-// 	k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.18.8
-// 	k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.18.8
-// 	k8s.io/kube-proxy => k8s.io/kube-proxy v0.18.8
-// 	k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.18.8
-// 	k8s.io/kubectl => k8s.io/kubectl v0.18.8
-// 	k8s.io/kubelet => k8s.io/kubelet v0.18.8
-// 	k8s.io/kubernetes => k8s.io/kubernetes v1.16.8
-// 	k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.18.8
-// 	k8s.io/metrics => k8s.io/metrics v0.18.8
-// 	k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.18.8
-// )
+)

File diff suppressed because it is too large
+ 249 - 70
go.sum


+ 0 - 3
internal/helm/postrenderer.go

@@ -2,7 +2,6 @@ package helm
 
 import (
 	"bytes"
-	"fmt"
 	"io"
 	"net/url"
 	"regexp"
@@ -164,8 +163,6 @@ func (d *DockerSecretsPostRenderer) Run(
 				data["manifest"] = string(newData.Bytes())
 
 				d.resources[i] = res
-
-				fmt.Println("RES IS", res, d.resources[i])
 			}
 		}
 	}

+ 3 - 0
internal/kubernetes/agent.go

@@ -485,6 +485,7 @@ func (a *Agent) StreamControllerStatus(conn *websocket.Conn, kind string) error
 		a.Clientset,
 		0,
 	)
+
 	var informer cache.SharedInformer
 
 	// Spins up an informer depending on kind. Convert to lowercase for robustness
@@ -499,6 +500,8 @@ func (a *Agent) StreamControllerStatus(conn *websocket.Conn, kind string) error
 		informer = factory.Apps().V1().DaemonSets().Informer()
 	case "job":
 		informer = factory.Batch().V1().Jobs().Informer()
+	case "cronjob":
+		informer = factory.Batch().V1beta1().CronJobs().Informer()
 	}
 
 	stopper := make(chan struct{})

+ 2 - 2
server/api/release_handler.go

@@ -828,9 +828,9 @@ func (app *App) HandleReleaseDeployWebhook(w http.ResponseWriter, r *http.Reques
 
 	gitAction := release.GitActionConfig
 
-	if gitAction.ID != 0 && repository == "porterdev/hello-porter" {
+	if gitAction.ID != 0 && (repository == "porterdev/hello-porter" || repository == "public.ecr.aws/o1j4x7p4/hello-porter") {
 		repository = gitAction.ImageRepoURI
-	} else if gitAction.ID != 0 && repository == "porterdev/hello-porter-job" {
+	} else if gitAction.ID != 0 && (repository == "porterdev/hello-porter-job" || repository == "public.ecr.aws/o1j4x7p4/hello-porter-job") {
 		repository = gitAction.ImageRepoURI
 	}
 

Some files were not shown because too many files changed in this diff