more zrokEdgeSdk lint and consolidation (#112)

This commit is contained in:
Michael Quigley 2022-12-14 15:47:14 -05:00
parent 8e56117c51
commit d9148490a3
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
6 changed files with 66 additions and 65 deletions

View File

@ -1,19 +1,13 @@
package controller
import (
"context"
"fmt"
"github.com/go-openapi/runtime/middleware"
"github.com/openziti-test-kitchen/zrok/controller/store"
"github.com/openziti-test-kitchen/zrok/controller/zrokEdgeSdk"
"github.com/openziti-test-kitchen/zrok/rest_model_zrok"
"github.com/openziti-test-kitchen/zrok/rest_server_zrok/operations/service"
"github.com/openziti/edge/rest_management_api_client"
"github.com/openziti/edge/rest_management_api_client/service_policy"
"github.com/openziti/edge/rest_model"
rest_model_edge "github.com/openziti/edge/rest_model"
"github.com/sirupsen/logrus"
"time"
)
type accessHandler struct{}
@ -82,7 +76,7 @@ func (h *accessHandler) Handle(params service.AccessParams, principal *rest_mode
"zrokEnvironmentZId": envZId,
"zrokFrontendToken": feToken,
}}
if err := createServicePolicyDialForEnvironment(envZId, ssvc.Token, ssvc.ZId, edge, extraTags); err != nil {
if err := zrokEdgeSdk.CreateServicePolicyDialForEnvironment(envZId, ssvc.Token, ssvc.ZId, edge, extraTags); err != nil {
logrus.Errorf("unable to create dial policy: %v", err)
return service.NewAccessInternalServerError()
}
@ -94,39 +88,3 @@ func (h *accessHandler) Handle(params service.AccessParams, principal *rest_mode
return service.NewAccessCreated().WithPayload(&rest_model_zrok.AccessResponse{FrontendToken: feToken})
}
func createServicePolicyDialForEnvironment(envZId, svcToken, svcZId string, edge *rest_management_api_client.ZitiEdgeManagement, tags ...*rest_model.Tags) error {
allTags := zrokEdgeSdk.ZrokServiceTags(svcToken)
for _, t := range tags {
for k, v := range t.SubTags {
allTags.SubTags[k] = v
}
}
identityRoles := []string{"@" + envZId}
name := fmt.Sprintf("%v-%v-dial", envZId, svcToken)
var postureCheckRoles []string
semantic := rest_model.SemanticAllOf
serviceRoles := []string{fmt.Sprintf("@%v", svcZId)}
dialBind := rest_model.DialBindDial
svcp := &rest_model.ServicePolicyCreate{
IdentityRoles: identityRoles,
Name: &name,
PostureCheckRoles: postureCheckRoles,
Semantic: &semantic,
ServiceRoles: serviceRoles,
Type: &dialBind,
Tags: allTags,
}
req := &service_policy.CreateServicePolicyParams{
Policy: svcp,
Context: context.Background(),
}
req.SetTimeout(30 * time.Second)
resp, err := edge.ServicePolicy.CreateServicePolicy(req, nil)
if err != nil {
return err
}
logrus.Infof("created dial service policy '%v' for service '%v' for environment '%v'", resp.Payload.Data.ID, svcZId, envZId)
return nil
}

View File

@ -18,12 +18,12 @@ func (a *privateResourceAllocator) allocate(envZId, svcToken string, params serv
for _, authUser := range params.Body.AuthUsers {
authUsers = append(authUsers, &model.AuthUser{authUser.Username, authUser.Password})
}
cfgId, err := zrokEdgeSdk.CreateConfig(zrokProxyConfigId, envZId, svcToken, params.Body.AuthScheme, authUsers, edge)
cfgZId, err := zrokEdgeSdk.CreateConfig(zrokProxyConfigId, envZId, svcToken, params.Body.AuthScheme, authUsers, edge)
if err != nil {
return "", nil, err
}
svcZId, err = zrokEdgeSdk.CreateShareService(envZId, svcToken, cfgId, edge)
svcZId, err = zrokEdgeSdk.CreateShareService(envZId, svcToken, cfgZId, edge)
if err != nil {
return "", nil, err
}

View File

@ -12,13 +12,13 @@ import (
"time"
)
func CreateEnvironmentIdentity(accountEmail, envDescription string, client *rest_management_api_client.ZitiEdgeManagement) (*identity.CreateIdentityCreated, error) {
func CreateEnvironmentIdentity(accountEmail, envDescription string, edge *rest_management_api_client.ZitiEdgeManagement) (*identity.CreateIdentityCreated, error) {
identityType := rest_model_edge.IdentityTypeUser
moreTags := map[string]interface{}{"zrokEmail": accountEmail}
return CreateIdentity(envDescription, identityType, moreTags, client)
return CreateIdentity(envDescription, identityType, moreTags, edge)
}
func CreateIdentity(name string, identityType rest_model_edge.IdentityType, addlTags map[string]interface{}, client *rest_management_api_client.ZitiEdgeManagement) (*identity.CreateIdentityCreated, error) {
func CreateIdentity(name string, identityType rest_model_edge.IdentityType, addlTags map[string]interface{}, edge *rest_management_api_client.ZitiEdgeManagement) (*identity.CreateIdentityCreated, error) {
isAdmin := false
tags := ZrokTags()
for k, v := range addlTags {
@ -35,14 +35,14 @@ func CreateIdentity(name string, identityType rest_model_edge.IdentityType, addl
Type: &identityType,
}
req.SetTimeout(30 * time.Second)
resp, err := client.Identity.CreateIdentity(req, nil)
resp, err := edge.Identity.CreateIdentity(req, nil)
if err != nil {
return nil, err
}
return resp, nil
}
func GetIdentityByZId(zId string, client *rest_management_api_client.ZitiEdgeManagement) (*identity.ListIdentitiesOK, error) {
func GetIdentityByZId(zId string, edge *rest_management_api_client.ZitiEdgeManagement) (*identity.ListIdentitiesOK, error) {
filter := fmt.Sprintf("id=\"%v\"", zId)
limit := int64(0)
offset := int64(0)
@ -53,20 +53,20 @@ func GetIdentityByZId(zId string, client *rest_management_api_client.ZitiEdgeMan
Context: context.Background(),
}
req.SetTimeout(30 * time.Second)
resp, err := client.Identity.ListIdentities(req, nil)
resp, err := edge.Identity.ListIdentities(req, nil)
if err != nil {
return nil, err
}
return resp, nil
}
func EnrollIdentity(zId string, client *rest_management_api_client.ZitiEdgeManagement) (*config.Config, error) {
func EnrollIdentity(zId string, edge *rest_management_api_client.ZitiEdgeManagement) (*config.Config, error) {
p := &identity.DetailIdentityParams{
Context: context.Background(),
ID: zId,
}
p.SetTimeout(30 * time.Second)
resp, err := client.Identity.DetailIdentity(p, nil)
resp, err := edge.Identity.DetailIdentity(p, nil)
if err != nil {
return nil, err
}

View File

@ -10,10 +10,9 @@ import (
"time"
)
func CreateShareService(envZId, svcToken, cfgId string, edge *rest_management_api_client.ZitiEdgeManagement) (svcZId string, err error) {
configs := []string{cfgId}
tags := ZrokServiceTags(svcToken)
svcZId, err = CreateService(svcToken, configs, tags.SubTags, edge)
func CreateShareService(envZId, svcToken, cfgZId string, edge *rest_management_api_client.ZitiEdgeManagement) (svcZId string, err error) {
cfgZIds := []string{cfgZId}
svcZId, err = CreateService(svcToken, cfgZIds, map[string]interface{}{"zrokServiceToken": svcToken}, edge)
if err != nil {
return "", errors.Wrapf(err, "error creating service '%v'", svcToken)
}
@ -21,20 +20,16 @@ func CreateShareService(envZId, svcToken, cfgId string, edge *rest_management_ap
return svcZId, nil
}
func CreateService(name string, cfgIds []string, moreTags map[string]interface{}, edge *rest_management_api_client.ZitiEdgeManagement) (svcZId string, err error) {
func CreateService(name string, cfgZIds []string, addlTags map[string]interface{}, edge *rest_management_api_client.ZitiEdgeManagement) (svcZId string, err error) {
encryptionRequired := true
svc := &rest_model.ServiceCreate{
EncryptionRequired: &encryptionRequired,
Name: &name,
Tags: MergeTags(ZrokTags(), addlTags),
}
if cfgIds != nil {
svc.Configs = cfgIds
if cfgZIds != nil {
svc.Configs = cfgZIds
}
tags := ZrokTags()
for k, v := range moreTags {
tags.SubTags[k] = v
}
svc.Tags = tags
req := &edge_service.CreateServiceParams{
Service: svc,
Context: context.Background(),

View File

@ -10,6 +10,11 @@ import (
"time"
)
const (
ServicePolicyBind = 1
ServicePolicyDial = 2
)
func CreateServicePolicyBind(envZId, svcToken, svcZId string, edge *rest_management_api_client.ZitiEdgeManagement) error {
semantic := rest_model.SemanticAllOf
identityRoles := []string{fmt.Sprintf("@%v", envZId)}
@ -186,3 +191,39 @@ func DeleteServicePolicy(envZId, filter string, edge *rest_management_api_client
}
return nil
}
func CreateServicePolicyDialForEnvironment(envZId, svcToken, svcZId string, edge *rest_management_api_client.ZitiEdgeManagement, tags ...*rest_model.Tags) error {
allTags := ZrokServiceTags(svcToken)
for _, t := range tags {
for k, v := range t.SubTags {
allTags.SubTags[k] = v
}
}
identityRoles := []string{"@" + envZId}
name := fmt.Sprintf("%v-%v-dial", envZId, svcToken)
var postureCheckRoles []string
semantic := rest_model.SemanticAllOf
serviceRoles := []string{fmt.Sprintf("@%v", svcZId)}
dialBind := rest_model.DialBindDial
svcp := &rest_model.ServicePolicyCreate{
IdentityRoles: identityRoles,
Name: &name,
PostureCheckRoles: postureCheckRoles,
Semantic: &semantic,
ServiceRoles: serviceRoles,
Type: &dialBind,
Tags: allTags,
}
req := &service_policy.CreateServicePolicyParams{
Policy: svcp,
Context: context.Background(),
}
req.SetTimeout(30 * time.Second)
resp, err := edge.ServicePolicy.CreateServicePolicy(req, nil)
if err != nil {
return err
}
logrus.Infof("created dial service policy '%v' for service '%v' for environment '%v'", resp.Payload.Data.ID, svcZId, envZId)
return nil
}

View File

@ -18,3 +18,10 @@ func ZrokServiceTags(svcToken string) *rest_model.Tags {
tags.SubTags["zrokServiceToken"] = svcToken
return tags
}
func MergeTags(tags *rest_model.Tags, addl map[string]interface{}) *rest_model.Tags {
for k, v := range addl {
tags.SubTags[k] = v
}
return tags
}