mirror of
https://github.com/openziti/zrok.git
synced 2026-09-27 17:55:51 -04:00
98 lines
3.3 KiB
Go
98 lines
3.3 KiB
Go
package automation
|
|
|
|
import (
|
|
"github.com/michaelquigley/df/dl"
|
|
"github.com/openziti/edge-api/rest_management_api_client/service_edge_router_policy"
|
|
"github.com/openziti/edge-api/rest_model"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
type ServiceEdgeRouterPolicyManager struct {
|
|
*BaseResourceManager[rest_model.ServiceEdgeRouterPolicyDetail]
|
|
}
|
|
|
|
func NewServiceEdgeRouterPolicyManager(ziti *ZitiAutomation) *ServiceEdgeRouterPolicyManager {
|
|
return &ServiceEdgeRouterPolicyManager{
|
|
BaseResourceManager: NewBaseResourceManager[rest_model.ServiceEdgeRouterPolicyDetail](ziti),
|
|
}
|
|
}
|
|
|
|
type ServiceEdgeRouterPolicyOptions struct {
|
|
BaseOptions
|
|
ServiceRoles []string
|
|
EdgeRouterRoles []string
|
|
Semantic rest_model.Semantic
|
|
}
|
|
|
|
func (serpm *ServiceEdgeRouterPolicyManager) Create(opts *ServiceEdgeRouterPolicyOptions) (string, error) {
|
|
serp := &rest_model.ServiceEdgeRouterPolicyCreate{
|
|
EdgeRouterRoles: opts.EdgeRouterRoles,
|
|
Name: &opts.Name,
|
|
Semantic: &opts.Semantic,
|
|
ServiceRoles: opts.ServiceRoles,
|
|
Tags: opts.GetTags(),
|
|
}
|
|
|
|
req := &service_edge_router_policy.CreateServiceEdgeRouterPolicyParams{
|
|
Policy: serp,
|
|
Context: serpm.Context(),
|
|
}
|
|
req.SetTimeout(opts.GetTimeout())
|
|
|
|
resp, err := serpm.Edge().ServiceEdgeRouterPolicy.CreateServiceEdgeRouterPolicy(req, nil)
|
|
if err != nil {
|
|
return "", errors.Wrapf(err, "error creating service edge router policy '%s'", opts.Name)
|
|
}
|
|
|
|
dl.Infof("created service edge router policy '%s' with id '%s'", opts.Name, resp.Payload.Data.ID)
|
|
return resp.Payload.Data.ID, nil
|
|
}
|
|
|
|
func (serpm *ServiceEdgeRouterPolicyManager) Delete(id string) error {
|
|
req := &service_edge_router_policy.DeleteServiceEdgeRouterPolicyParams{
|
|
ID: id,
|
|
Context: serpm.Context(),
|
|
}
|
|
req.SetTimeout(DefaultOperationTimeout)
|
|
|
|
_, err := serpm.Edge().ServiceEdgeRouterPolicy.DeleteServiceEdgeRouterPolicy(req, nil)
|
|
if err != nil {
|
|
return errors.Wrapf(err, "error deleting service edge router policy '%s'", id)
|
|
}
|
|
|
|
dl.Infof("deleted service edge router policy '%s'", id)
|
|
return nil
|
|
}
|
|
|
|
func (serpm *ServiceEdgeRouterPolicyManager) Find(opts *FilterOptions) ([]*rest_model.ServiceEdgeRouterPolicyDetail, error) {
|
|
req := &service_edge_router_policy.ListServiceEdgeRouterPoliciesParams{
|
|
Filter: &opts.Filter,
|
|
Limit: &opts.Limit,
|
|
Offset: &opts.Offset,
|
|
Context: serpm.Context(),
|
|
}
|
|
req.SetTimeout(opts.GetTimeout())
|
|
|
|
resp, err := serpm.Edge().ServiceEdgeRouterPolicy.ListServiceEdgeRouterPolicies(req, nil)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "error listing service edge router policies")
|
|
}
|
|
|
|
return resp.Payload.Data, nil
|
|
}
|
|
|
|
func (serpm *ServiceEdgeRouterPolicyManager) GetByID(id string) (*rest_model.ServiceEdgeRouterPolicyDetail, error) {
|
|
return GetByID(serpm.Find, id, "service edge router policy")
|
|
}
|
|
|
|
func (serpm *ServiceEdgeRouterPolicyManager) GetByName(name string) (*rest_model.ServiceEdgeRouterPolicyDetail, error) {
|
|
return GetByName(serpm.Find, name, "service edge router policy")
|
|
}
|
|
|
|
func (serpm *ServiceEdgeRouterPolicyManager) DeleteWithFilter(filter string) error {
|
|
return DeleteWithFilter(serpm.Find, serpm.Delete, filter, "service edge router policy")
|
|
}
|
|
|
|
// ensure ServiceEdgeRouterPolicyManager implements the interface
|
|
var _ IResourceManager[rest_model.ServiceEdgeRouterPolicyDetail, *ServiceEdgeRouterPolicyOptions] = (*ServiceEdgeRouterPolicyManager)(nil)
|