Przeglądaj źródła

save events so history can be retrieved

Ivan Galakhov 4 lat temu
rodzic
commit
1b9f3a35cb
2 zmienionych plików z 92 dodań i 28 usunięć
  1. 90 7
      cli/cmd/deploy.go
  2. 2 21
      internal/repository/gorm/event.go

+ 90 - 7
cli/cmd/deploy.go

@@ -305,13 +305,13 @@ func updateFull(resp *api.AuthCheckResponse, client *api.Client, args []string)
 		return err
 	}
 
-	err = updatePushWithAgent(updateAgent)
+	err = updatePushWithAgent(updateAgent, client)
 
 	if err != nil {
 		return err
 	}
 
-	err = updateUpgradeWithAgent(updateAgent)
+	err = updateUpgradeWithAgent(updateAgent, client)
 
 	if err != nil {
 		return err
@@ -361,7 +361,7 @@ func updatePush(resp *api.AuthCheckResponse, client *api.Client, args []string)
 		return err
 	}
 
-	return updatePushWithAgent(updateAgent)
+	return updatePushWithAgent(updateAgent, client)
 }
 
 func updateUpgrade(resp *api.AuthCheckResponse, client *api.Client, args []string) error {
@@ -371,7 +371,7 @@ func updateUpgrade(resp *api.AuthCheckResponse, client *api.Client, args []strin
 		return err
 	}
 
-	return updateUpgradeWithAgent(updateAgent)
+	return updateUpgradeWithAgent(updateAgent, client)
 }
 
 // HELPER METHODS
@@ -478,30 +478,113 @@ func updateBuildWithAgent(updateAgent *deploy.DeployAgent, client *api.Client) e
 	return nil
 }
 
-func updatePushWithAgent(updateAgent *deploy.DeployAgent) error {
+func updatePushWithAgent(updateAgent *deploy.DeployAgent, client *api.Client) error {
 	// push the deployment
 	color.New(color.FgGreen).Println("Pushing new image for", app)
 
-	return updateAgent.Push()
+	release, err := client.GetReleaseWebhook(context.Background(), config.Project, config.Cluster, app, namespace)
+
+	if err != nil {
+		return err
+	}
+
+	if stream {
+		updateAgent.StreamEvent(api.Event{
+			ID:     "push",
+			Name:   "Push",
+			Index:  200,
+			Status: api.EventStatusInProgress,
+			Info:   "",
+		}, release.WebhookToken)
+	}
+
+	if err := updateAgent.Push(); err != nil {
+		if stream {
+			updateAgent.StreamEvent(api.Event{
+				ID:     "push",
+				Name:   "Push",
+				Index:  210,
+				Status: api.EventStatusFailed,
+				Info:   err.Error(),
+			}, release.WebhookToken)
+		}
+		return err
+	}
+
+	if stream {
+		updateAgent.StreamEvent(api.Event{
+			ID:     "push",
+			Name:   "Push",
+			Index:  220,
+			Status: api.EventStatusSuccess,
+			Info:   "",
+		}, release.WebhookToken)
+	}
+
+	return nil
 }
 
-func updateUpgradeWithAgent(updateAgent *deploy.DeployAgent) error {
+func updateUpgradeWithAgent(updateAgent *deploy.DeployAgent, client *api.Client) error {
 	// push the deployment
 	color.New(color.FgGreen).Println("Calling webhook for", app)
 
+	release, err := client.GetReleaseWebhook(context.Background(), config.Project, config.Cluster, app, namespace)
+
+	if err != nil {
+		return err
+	}
+
+	if stream {
+		updateAgent.StreamEvent(api.Event{
+			ID:     "upgrade",
+			Name:   "Upgrade",
+			Index:  200,
+			Status: api.EventStatusInProgress,
+			Info:   "",
+		}, release.WebhookToken)
+	}
+
 	// read the values if necessary
 	valuesObj, err := readValuesFile()
 
 	if err != nil {
+		if stream {
+			updateAgent.StreamEvent(api.Event{
+				ID:     "upgrade",
+				Name:   "Upgrade",
+				Index:  210,
+				Status: api.EventStatusFailed,
+				Info:   err.Error(),
+			}, release.WebhookToken)
+		}
 		return err
 	}
 
 	err = updateAgent.UpdateImageAndValues(valuesObj)
 
 	if err != nil {
+		if stream {
+			updateAgent.StreamEvent(api.Event{
+				ID:     "upgrade",
+				Name:   "Upgrade",
+				Index:  220,
+				Status: api.EventStatusFailed,
+				Info:   err.Error(),
+			}, release.WebhookToken)
+		}
 		return err
 	}
 
+	if stream {
+		updateAgent.StreamEvent(api.Event{
+			ID:     "upgrade",
+			Name:   "Upgrade",
+			Index:  230,
+			Status: api.EventStatusSuccess,
+			Info:   err.Error(),
+		}, release.WebhookToken)
+	}
+
 	color.New(color.FgGreen).Println("Successfully updated", app)
 
 	return nil

+ 2 - 21
internal/repository/gorm/event.go

@@ -58,25 +58,6 @@ func (repo EventRepository) ReadSubEvent(id uint) (*models.SubEvent, error) {
 // AppendEvent will check if subevent with same (id, index) already exists
 // if yes, overrite it, otherwise make a new subevent
 func (repo EventRepository) AppendEvent(container *models.EventContainer, event *models.SubEvent) error {
-	subevent := &models.SubEvent{}
-
-	if err := repo.db.Where("event_container_id = ? AND event_id = ? AND index = ?",
-		container.ID,
-		event.EventID,
-		event.Index).First(&subevent).Error; err != nil {
-		if err == gorm.ErrRecordNotFound {
-			if err := repo.db.Create(event).Error; err != nil {
-				return err
-			}
-			return nil
-		} else {
-			return err
-		}
-	}
-
-	subevent.Info = event.Info
-	subevent.Status = event.Status
-	subevent.Name = event.Name
-
-	return repo.db.Save(subevent).Error
+	event.EventContainerID = container.ID
+	return repo.db.Create(event).Error
 }