60 lines
2.3 KiB
Go
60 lines
2.3 KiB
Go
/*
|
|
Copyright IBM Corp. 2016 All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package policies
|
|
|
|
import (
|
|
cb "github.com/hyperledger/fabric-protos-go/common"
|
|
"github.com/hyperledger/fabric/protoutil"
|
|
)
|
|
|
|
// ImplicitMetaPolicyWithSubPolicy creates an implicitmeta policy
|
|
func ImplicitMetaPolicyWithSubPolicy(subPolicyName string, rule cb.ImplicitMetaPolicy_Rule) *cb.ConfigPolicy {
|
|
return &cb.ConfigPolicy{
|
|
Policy: &cb.Policy{
|
|
Type: int32(cb.Policy_IMPLICIT_META),
|
|
Value: protoutil.MarshalOrPanic(&cb.ImplicitMetaPolicy{
|
|
Rule: rule,
|
|
SubPolicy: subPolicyName,
|
|
}),
|
|
},
|
|
}
|
|
}
|
|
|
|
// TemplateImplicitMetaPolicy creates a policy at the specified path with the given policyName and subPolicyName
|
|
func TemplateImplicitMetaPolicyWithSubPolicy(path []string, policyName string, subPolicyName string, rule cb.ImplicitMetaPolicy_Rule) *cb.ConfigGroup {
|
|
root := protoutil.NewConfigGroup()
|
|
group := root
|
|
for _, element := range path {
|
|
group.Groups[element] = protoutil.NewConfigGroup()
|
|
group = group.Groups[element]
|
|
}
|
|
|
|
group.Policies[policyName] = ImplicitMetaPolicyWithSubPolicy(subPolicyName, rule)
|
|
return root
|
|
}
|
|
|
|
// TemplateImplicitMetaPolicy creates a policy at the specified path with the given policyName
|
|
// It utilizes the policyName for the subPolicyName as well, as this is the standard usage pattern
|
|
func TemplateImplicitMetaPolicy(path []string, policyName string, rule cb.ImplicitMetaPolicy_Rule) *cb.ConfigGroup {
|
|
return TemplateImplicitMetaPolicyWithSubPolicy(path, policyName, policyName, rule)
|
|
}
|
|
|
|
// TempateImplicitMetaAnyPolicy returns TemplateImplicitMetaPolicy with cb.ImplicitMetaPolicy_ANY as the rule
|
|
func TemplateImplicitMetaAnyPolicy(path []string, policyName string) *cb.ConfigGroup {
|
|
return TemplateImplicitMetaPolicy(path, policyName, cb.ImplicitMetaPolicy_ANY)
|
|
}
|
|
|
|
// TempateImplicitMetaAnyPolicy returns TemplateImplicitMetaPolicy with cb.ImplicitMetaPolicy_ALL as the rule
|
|
func TemplateImplicitMetaAllPolicy(path []string, policyName string) *cb.ConfigGroup {
|
|
return TemplateImplicitMetaPolicy(path, policyName, cb.ImplicitMetaPolicy_ALL)
|
|
}
|
|
|
|
// TempateImplicitMetaAnyPolicy returns TemplateImplicitMetaPolicy with cb.ImplicitMetaPolicy_MAJORITY as the rule
|
|
func TemplateImplicitMetaMajorityPolicy(path []string, policyName string) *cb.ConfigGroup {
|
|
return TemplateImplicitMetaPolicy(path, policyName, cb.ImplicitMetaPolicy_MAJORITY)
|
|
}
|