initial strategy-based unshare handler (#99)

This commit is contained in:
Michael Quigley 2022-11-21 15:11:35 -05:00
parent 38c86aea82
commit 5d60b5831d
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
2 changed files with 42 additions and 21 deletions

View File

@ -14,8 +14,7 @@ import (
"time"
)
type unshareHandler struct {
}
type unshareHandler struct{}
func newUnshareHandler() *unshareHandler {
return &unshareHandler{}
@ -76,24 +75,15 @@ func (h *unshareHandler) Handle(params service.UnshareParams, principal *rest_mo
return service.NewUnshareInternalServerError()
}
if err := deleteServiceEdgeRouterPolicy(senv.ZId, svcName, edge); err != nil {
logrus.Error(err)
return service.NewUnshareInternalServerError()
}
if err := deleteServicePolicyDial(senv.ZId, svcName, edge); err != nil {
logrus.Error(err)
return service.NewUnshareInternalServerError()
}
if err := deleteServicePolicyBind(senv.ZId, svcName, edge); err != nil {
logrus.Error(err)
return service.NewUnshareInternalServerError()
}
if err := deleteConfig(senv.ZId, svcName, edge); err != nil {
logrus.Error(err)
return service.NewUnshareInternalServerError()
}
if err := deleteService(senv.ZId, svcZId, edge); err != nil {
logrus.Error(err)
switch ssvc.ShareMode {
case "public":
if err := newUnsharePublicHandler().Handle(senv, ssvc, svcName, svcZId, edge); err != nil {
logrus.Errorf("error unsharing ziti resources for '%v': %v", ssvc, err)
return service.NewUnshareInternalServerError()
}
default:
logrus.Errorf("unknown share mode '%v'", ssvc.ShareMode)
return service.NewUnshareInternalServerError()
}
@ -104,7 +94,7 @@ func (h *unshareHandler) Handle(params service.UnshareParams, principal *rest_mo
return service.NewUnshareInternalServerError()
}
if err := tx.Commit(); err != nil {
logrus.Errorf("error committing: %v", err)
logrus.Errorf("error committing transaction for '%v': %v", svcZId, err)
return service.NewUnshareInternalServerError()
}

View File

@ -0,0 +1,31 @@
package controller
import (
"github.com/openziti-test-kitchen/zrok/controller/store"
"github.com/openziti/edge/rest_management_api_client"
)
type unsharePublicHandler struct{}
func newUnsharePublicHandler() *unsharePublicHandler {
return &unsharePublicHandler{}
}
func (h *unsharePublicHandler) Handle(senv *store.Environment, ssvc *store.Service, svcName, svcZId string, edge *rest_management_api_client.ZitiEdgeManagement) error {
if err := deleteServiceEdgeRouterPolicy(senv.ZId, svcName, edge); err != nil {
return err
}
if err := deleteServicePolicyDial(senv.ZId, svcName, edge); err != nil {
return err
}
if err := deleteServicePolicyBind(senv.ZId, svcName, edge); err != nil {
return err
}
if err := deleteConfig(senv.ZId, svcName, edge); err != nil {
return err
}
if err := deleteService(senv.ZId, svcZId, edge); err != nil {
return err
}
return nil
}