93 lines
2.2 KiB
Go
93 lines
2.2 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package structs
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/consul/acl"
|
|
)
|
|
|
|
type SamenessGroupConfigEntry struct {
|
|
Name string
|
|
IsDefault bool `json:",omitempty" alias:"is_default"`
|
|
Members []SamenessGroupMember
|
|
Meta map[string]string `json:",omitempty"`
|
|
acl.EnterpriseMeta `hcl:",squash" mapstructure:",squash"`
|
|
RaftIndex
|
|
}
|
|
|
|
func (s *SamenessGroupConfigEntry) GetKind() string { return SamenessGroup }
|
|
func (s *SamenessGroupConfigEntry) GetName() string { return s.Name }
|
|
func (s *SamenessGroupConfigEntry) GetMeta() map[string]string { return s.Meta }
|
|
func (s *SamenessGroupConfigEntry) GetCreateIndex() uint64 { return s.CreateIndex }
|
|
func (s *SamenessGroupConfigEntry) GetModifyIndex() uint64 { return s.ModifyIndex }
|
|
|
|
func (s *SamenessGroupConfigEntry) GetRaftIndex() *RaftIndex {
|
|
if s == nil {
|
|
return &RaftIndex{}
|
|
}
|
|
return &s.RaftIndex
|
|
}
|
|
|
|
func (s *SamenessGroupConfigEntry) GetEnterpriseMeta() *acl.EnterpriseMeta {
|
|
if s == nil {
|
|
return nil
|
|
}
|
|
return &s.EnterpriseMeta
|
|
}
|
|
|
|
func (s *SamenessGroupConfigEntry) Normalize() error {
|
|
if s == nil {
|
|
return fmt.Errorf("config entry is nil")
|
|
}
|
|
s.EnterpriseMeta.Normalize()
|
|
return nil
|
|
}
|
|
|
|
func (s *SamenessGroupConfigEntry) CanRead(authz acl.Authorizer) error {
|
|
return nil
|
|
}
|
|
|
|
func (s *SamenessGroupConfigEntry) CanWrite(authz acl.Authorizer) error {
|
|
var authzContext acl.AuthorizerContext
|
|
s.FillAuthzContext(&authzContext)
|
|
return authz.ToAllowAuthorizer().MeshWriteAllowed(&authzContext)
|
|
}
|
|
|
|
func (s *SamenessGroupConfigEntry) MarshalJSON() ([]byte, error) {
|
|
type Alias SamenessGroupConfigEntry
|
|
source := &struct {
|
|
Kind string
|
|
*Alias
|
|
}{
|
|
Kind: SamenessGroup,
|
|
Alias: (*Alias)(s),
|
|
}
|
|
return json.Marshal(source)
|
|
}
|
|
|
|
type SamenessGroupMember struct {
|
|
Partition string
|
|
Peer string
|
|
}
|
|
|
|
func (s *SamenessGroupConfigEntry) ToFailoverTargets() []ServiceResolverFailoverTarget {
|
|
if s == nil {
|
|
return nil
|
|
}
|
|
|
|
var targets []ServiceResolverFailoverTarget
|
|
|
|
for _, m := range s.Members {
|
|
targets = append(targets, ServiceResolverFailoverTarget{
|
|
Peer: m.Peer,
|
|
Partition: m.Partition,
|
|
})
|
|
}
|
|
|
|
return targets
|
|
}
|