73 lines
1.8 KiB
Go
73 lines
1.8 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package channelconfig
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
cb "github.com/hyperledger/fabric-protos-go/common"
|
|
pb "github.com/hyperledger/fabric-protos-go/peer"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
const (
|
|
// AnchorPeersKey is the key name for the AnchorPeers ConfigValue
|
|
AnchorPeersKey = "AnchorPeers"
|
|
)
|
|
|
|
// ApplicationOrgProtos are deserialized from the config
|
|
type ApplicationOrgProtos struct {
|
|
AnchorPeers *pb.AnchorPeers
|
|
}
|
|
|
|
// ApplicationOrgConfig defines the configuration for an application org
|
|
type ApplicationOrgConfig struct {
|
|
*OrganizationConfig
|
|
protos *ApplicationOrgProtos
|
|
name string
|
|
}
|
|
|
|
// NewApplicationOrgConfig creates a new config for an application org
|
|
func NewApplicationOrgConfig(id string, orgGroup *cb.ConfigGroup, mspConfig *MSPConfigHandler) (*ApplicationOrgConfig, error) {
|
|
if len(orgGroup.Groups) > 0 {
|
|
return nil, fmt.Errorf("ApplicationOrg config does not allow sub-groups")
|
|
}
|
|
|
|
protos := &ApplicationOrgProtos{}
|
|
orgProtos := &OrganizationProtos{}
|
|
|
|
if err := DeserializeProtoValuesFromGroup(orgGroup, protos, orgProtos); err != nil {
|
|
return nil, errors.Wrap(err, "failed to deserialize values")
|
|
}
|
|
|
|
aoc := &ApplicationOrgConfig{
|
|
name: id,
|
|
protos: protos,
|
|
OrganizationConfig: &OrganizationConfig{
|
|
name: id,
|
|
protos: orgProtos,
|
|
mspConfigHandler: mspConfig,
|
|
},
|
|
}
|
|
|
|
if err := aoc.Validate(); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return aoc, nil
|
|
}
|
|
|
|
// AnchorPeers returns the list of anchor peers of this Organization
|
|
func (aog *ApplicationOrgConfig) AnchorPeers() []*pb.AnchorPeer {
|
|
return aog.protos.AnchorPeers.AnchorPeers
|
|
}
|
|
|
|
func (aoc *ApplicationOrgConfig) Validate() error {
|
|
logger.Debugf("Anchor peers for org %s are %v", aoc.name, aoc.protos.AnchorPeers)
|
|
return aoc.OrganizationConfig.Validate()
|
|
}
|