|
|
@@ -1,7 +1,6 @@
|
|
|
package release
|
|
|
|
|
|
import (
|
|
|
- "fmt"
|
|
|
"net/http"
|
|
|
|
|
|
"github.com/porter-dev/porter/api/server/authz"
|
|
|
@@ -34,16 +33,13 @@ func (c *UpdateReleaseTagsHandler) ServeHTTP(w http.ResponseWriter, r *http.Requ
|
|
|
name, _ := requestutils.GetURLParamString(r, types.URLParamReleaseName)
|
|
|
namespace, _ := requestutils.GetURLParamString(r, types.URLParamNamespace)
|
|
|
cluster, _ := r.Context().Value(types.ClusterScope).(*models.Cluster)
|
|
|
- fmt.Println("FIRST CHECKPOINT")
|
|
|
+
|
|
|
request := &types.PatchUpdateReleaseTags{}
|
|
|
|
|
|
if ok := c.DecodeAndValidate(w, r, request); !ok {
|
|
|
return
|
|
|
}
|
|
|
- fmt.Println("SECOND CHECKPOINT")
|
|
|
- fmt.Println(cluster.ID)
|
|
|
- fmt.Println(name)
|
|
|
- fmt.Println(namespace)
|
|
|
+
|
|
|
release, err := c.Config().Repo.Release().ReadRelease(cluster.ID, name, namespace)
|
|
|
|
|
|
if err != nil {
|
|
|
@@ -51,14 +47,36 @@ func (c *UpdateReleaseTagsHandler) ServeHTTP(w http.ResponseWriter, r *http.Requ
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- fmt.Println("THIRD CHECKPOINT")
|
|
|
+ tagsToDelete := difference(release.ToReleaseType().Tags, request.Tags)
|
|
|
+
|
|
|
+ err = c.Config().Repo.Tag().UnlinkTagsFromRelease(tagsToDelete, release)
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
release, err = LinkTagsToRelease(c.Config(), request.Tags, release)
|
|
|
|
|
|
if err != nil {
|
|
|
c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
return
|
|
|
}
|
|
|
- fmt.Println("FOURTH CHECKPOINT")
|
|
|
+
|
|
|
w.WriteHeader(http.StatusCreated)
|
|
|
c.WriteResult(w, r, release)
|
|
|
}
|
|
|
+
|
|
|
+func difference(a, b []string) []string {
|
|
|
+ mb := make(map[string]struct{}, len(b))
|
|
|
+ for _, x := range b {
|
|
|
+ mb[x] = struct{}{}
|
|
|
+ }
|
|
|
+ var diff []string
|
|
|
+ for _, x := range a {
|
|
|
+ if _, found := mb[x]; !found {
|
|
|
+ diff = append(diff, x)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return diff
|
|
|
+}
|