From 5d60b5831d736ed34fc8b793ef69152017896d5e Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 21 Nov 2022 15:11:35 -0500 Subject: [PATCH] initial strategy-based unshare handler (#99) --- controller/unshare.go | 32 +++++++++++--------------------- controller/unshare_public.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 21 deletions(-) create mode 100644 controller/unshare_public.go diff --git a/controller/unshare.go b/controller/unshare.go index 1712d98b..e2d1816a 100644 --- a/controller/unshare.go +++ b/controller/unshare.go @@ -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() } diff --git a/controller/unshare_public.go b/controller/unshare_public.go new file mode 100644 index 00000000..ef475be2 --- /dev/null +++ b/controller/unshare_public.go @@ -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 +}