Просмотр исходного кода

correct stack name and revision

Mohammed Nafees 3 лет назад
Родитель
Сommit
d4e91daf0c

+ 2 - 1
api/server/handlers/release/upgrade.go

@@ -152,7 +152,8 @@ func (c *UpgradeReleaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
 	for _, stk := range stacks {
 		for _, res := range stk.Revisions[0].Resources {
 			if res.Name == helmRelease.Name {
-				conf.Stack = stk
+				conf.StackName = stk.Name
+				conf.StackRevision = stk.Revisions[0].RevisionNumber + 1
 				break
 			}
 		}

+ 9 - 8
api/server/handlers/stack/add_application.go

@@ -145,14 +145,15 @@ func (p *StackAddApplicationHandler) ServeHTTP(w http.ResponseWriter, r *http.Re
 
 	for _, appResource := range newResources {
 		rel, err := applyAppResource(&applyAppResourceOpts{
-			config:     p.Config(),
-			projectID:  proj.ID,
-			namespace:  namespace,
-			cluster:    cluster,
-			registries: registries,
-			helmAgent:  helmAgent,
-			request:    req,
-			stack:      stack,
+			config:        p.Config(),
+			projectID:     proj.ID,
+			namespace:     namespace,
+			cluster:       cluster,
+			registries:    registries,
+			helmAgent:     helmAgent,
+			request:       req,
+			stackName:     stack.Name,
+			stackRevision: stack.Revisions[0].RevisionNumber,
 		})
 
 		if err != nil {

+ 9 - 8
api/server/handlers/stack/create.go

@@ -191,14 +191,15 @@ func (p *StackCreateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 
 		for _, appResource := range req.AppResources {
 			rel, err := applyAppResource(&applyAppResourceOpts{
-				config:     p.Config(),
-				projectID:  proj.ID,
-				namespace:  namespace,
-				cluster:    cluster,
-				registries: registries,
-				helmAgent:  helmAgent,
-				request:    appResource,
-				stack:      stack,
+				config:        p.Config(),
+				projectID:     proj.ID,
+				namespace:     namespace,
+				cluster:       cluster,
+				registries:    registries,
+				helmAgent:     helmAgent,
+				request:       appResource,
+				stackName:     stack.Name,
+				stackRevision: stack.Revisions[0].RevisionNumber,
 			})
 
 			if err != nil {

+ 14 - 5
api/server/handlers/stack/helpers.go

@@ -17,7 +17,10 @@ type applyAppResourceOpts struct {
 	helmAgent  *helm.Agent
 	request    *types.CreateStackAppResourceRequest
 	registries []*models.Registry
-	stack      *models.Stack
+
+	// stack related info
+	stackName     string
+	stackRevision uint
 }
 
 func applyAppResource(opts *applyAppResourceOpts) (*release.Release, error) {
@@ -47,8 +50,8 @@ func applyAppResource(opts *applyAppResourceOpts) (*release.Release, error) {
 
 	conf.Values["stack"] = map[string]interface{}{
 		"enabled":  true,
-		"name":     opts.stack.Name,
-		"revision": opts.stack.Revisions[0].RevisionNumber,
+		"name":     opts.stackName,
+		"revision": opts.stackRevision,
 	}
 
 	return opts.helmAgent.InstallChart(conf, opts.config.DOConf)
@@ -72,7 +75,10 @@ type updateAppResourceTagOpts struct {
 	namespace  string
 	cluster    *models.Cluster
 	registries []*models.Registry
-	stack      *models.Stack
+
+	// stack related info
+	stackName     string
+	stackRevision uint
 }
 
 func updateAppResourceTag(opts *updateAppResourceTagOpts) error {
@@ -94,7 +100,10 @@ func updateAppResourceTag(opts *updateAppResourceTagOpts) error {
 		Repo:       opts.config.Repo,
 		Registries: opts.registries,
 		Values:     rel.Config,
-		Stack:      opts.stack,
+
+		// stack related info
+		StackName:     opts.stackName,
+		StackRevision: opts.stackRevision,
 	}
 
 	_, err = opts.helmAgent.UpgradeReleaseByValues(conf, opts.config.DOConf)

+ 10 - 9
api/server/handlers/stack/update_source_put.go

@@ -119,15 +119,16 @@ func (p *StackPutSourceConfigHandler) ServeHTTP(w http.ResponseWriter, r *http.R
 		// TODO: case on if image tag is empty
 
 		err = updateAppResourceTag(&updateAppResourceTagOpts{
-			helmAgent:  helmAgent,
-			name:       appResource.Name,
-			tag:        imageTag,
-			config:     p.Config(),
-			projectID:  proj.ID,
-			namespace:  namespace,
-			cluster:    cluster,
-			registries: registries,
-			stack:      stack,
+			helmAgent:     helmAgent,
+			name:          appResource.Name,
+			tag:           imageTag,
+			config:        p.Config(),
+			projectID:     proj.ID,
+			namespace:     namespace,
+			cluster:       cluster,
+			registries:    registries,
+			stackName:     stack.Name,
+			stackRevision: stack.Revisions[0].RevisionNumber,
 		})
 
 		if err != nil {

+ 7 - 4
internal/helm/agent.go

@@ -166,10 +166,13 @@ type UpgradeReleaseConfig struct {
 	Cluster    *models.Cluster
 	Repo       repository.Repository
 	Registries []*models.Registry
-	Stack      *models.Stack
 
 	// Optional, if chart should be overriden
 	Chart *chart.Chart
+
+	// Optional, if chart is part of a Porter Stack
+	StackName     string
+	StackRevision uint
 }
 
 // UpgradeRelease upgrades a specific release with new values.yaml
@@ -223,11 +226,11 @@ func (a *Agent) UpgradeReleaseByValues(
 		return nil, err
 	}
 
-	if conf.Stack != nil {
+	if conf.StackName != "" && conf.StackRevision > 0 {
 		conf.Values["stack"] = map[string]interface{}{
 			"enabled":  true,
-			"name":     conf.Stack.Name,
-			"revision": conf.Stack.Revisions[0].RevisionNumber + 1,
+			"name":     conf.StackName,
+			"revision": conf.StackRevision,
 		}
 	}
 

+ 2 - 1
internal/repository/gorm/stack.go

@@ -53,7 +53,8 @@ func (repo *StackRepository) ListStacks(projectID, clusterID uint, namespace str
 	stack_revisions.id IN (
 	  SELECT s2.id FROM (SELECT MAX(stack_revisions.id) id FROM stack_revisions WHERE stack_revisions.stack_id IN (?) GROUP BY stack_revisions.stack_id) s2
 	)
-  `, stackIDs).Find(&revisions).Error; err != nil {
+  `, stackIDs).
+		Find(&revisions).Error; err != nil {
 		return nil, err
 	}