...

Package localconfig

import "github.com/hyperledger/fabric/common/tools/configtxgen/localconfig"
Overview
Index

Overview ▾

Constants

const (
    // Prefix identifies the prefix for the configtxgen-related ENV vars.
    Prefix string = "CONFIGTX"

    // The type key for etcd based RAFT consensus.
    EtcdRaft = "etcdraft"
    // The type key for BFT Smart consensus
    SmartBFT = "smartbft"
)
const (
    // TestChainID is the channel name used for testing purposes when one is
    // not given
    TestChainID = "testchainid"

    // SampleInsecureSoloProfile references the sample profile which does not
    // include any MSPs and uses solo for ordering.
    SampleInsecureSoloProfile = "SampleInsecureSolo"
    // SampleDevModeSoloProfile references the sample profile which requires
    // only basic membership for admin privileges and uses solo for ordering.
    SampleDevModeSoloProfile = "SampleDevModeSolo"
    // SampleSingleMSPSoloProfile references the sample profile which includes
    // only the sample MSP and uses solo for ordering.
    SampleSingleMSPSoloProfile = "SampleSingleMSPSolo"

    // SampleInsecureKafkaProfile references the sample profile which does not
    // include any MSPs and uses Kafka for ordering.
    SampleInsecureKafkaProfile = "SampleInsecureKafka"
    // SampleDevModeKafkaProfile references the sample profile which requires only
    // basic membership for admin privileges and uses Kafka for ordering.
    SampleDevModeKafkaProfile = "SampleDevModeKafka"
    // SampleSingleMSPKafkaProfile references the sample profile which includes
    // only the sample MSP and uses Kafka for ordering.
    SampleSingleMSPKafkaProfile = "SampleSingleMSPKafka"

    // SampleDevModeEtcdRaftProfile references the sample profile used for testing
    // the etcd/raft-based ordering service.
    SampleDevModeEtcdRaftProfile = "SampleDevModeEtcdRaft"

    // SampleDevModeSmartBFTProfile references the sample profile used for testing
    // the SmartBFT-based ordering service.
    SampleDevModeSmartBFTProfile = "SampleDevModeSmartBFT"

    // SampleSingleMSPChannelProfile references the sample profile which
    // includes only the sample MSP and is used to create a channel
    SampleSingleMSPChannelProfile = "SampleSingleMSPChannel"

    // SampleConsortiumName is the sample consortium from the
    // sample configtx.yaml
    SampleConsortiumName = "SampleConsortium"
    // SampleOrgName is the name of the sample org in the sample profiles
    SampleOrgName = "SampleOrg"

    // AdminRoleAdminPrincipal is set as AdminRole to cause the MSP role of
    // type Admin to be used as the admin principal default
    AdminRoleAdminPrincipal = "Role.ADMIN"
    // MemberRoleAdminPrincipal is set as AdminRole to cause the MSP role of
    // type Member to be used as the admin principal default
    MemberRoleAdminPrincipal = "Role.MEMBER"
)

type AnchorPeer

AnchorPeer encodes the necessary fields to identify an anchor peer.

type AnchorPeer struct {
    Host string `yaml:"Host"`
    Port int    `yaml:"Port"`
}

type Application

Application encodes the application-level configuration needed in config transactions.

type Application struct {
    Organizations []*Organization    `yaml:"Organizations"`
    Capabilities  map[string]bool    `yaml:"Capabilities"`
    Resources     *Resources         `yaml:"Resources"`
    Policies      map[string]*Policy `yaml:"Policies"`
    ACLs          map[string]string  `yaml:"ACLs"`
}

type BatchSize

BatchSize contains configuration affecting the size of batches.

type BatchSize struct {
    MaxMessageCount   uint32 `yaml:"MaxMessageCount"`
    AbsoluteMaxBytes  uint32 `yaml:"AbsoluteMaxBytes"`
    PreferredMaxBytes uint32 `yaml:"PreferredMaxBytes"`
}

type Consortium

Consortium represents a group of organizations which may create channels with each other

type Consortium struct {
    Organizations []*Organization `yaml:"Organizations"`
}

type Kafka

Kafka contains configuration for the Kafka-based orderer.

type Kafka struct {
    Brokers []string `yaml:"Brokers"`
}

type Orderer

Orderer contains configuration which is used for the bootstrapping of an orderer by the provisional bootstrapper.

type Orderer struct {
    OrdererType   string                   `yaml:"OrdererType"`
    Addresses     []string                 `yaml:"Addresses"`
    BatchTimeout  time.Duration            `yaml:"BatchTimeout"`
    BatchSize     BatchSize                `yaml:"BatchSize"`
    Kafka         Kafka                    `yaml:"Kafka"`
    EtcdRaft      *etcdraft.ConfigMetadata `yaml:"EtcdRaft"`
    SmartBFT      *smartbft.ConfigMetadata `yaml:"SmartBFT"`
    Organizations []*Organization          `yaml:"Organizations"`
    MaxChannels   uint64                   `yaml:"MaxChannels"`
    Capabilities  map[string]bool          `yaml:"Capabilities"`
    Policies      map[string]*Policy       `yaml:"Policies"`
}

type Organization

Organization encodes the organization-level configuration needed in config transactions.

type Organization struct {
    Name     string             `yaml:"Name"`
    ID       string             `yaml:"ID"`
    MSPDir   string             `yaml:"MSPDir"`
    MSPType  string             `yaml:"MSPType"`
    Policies map[string]*Policy `yaml:"Policies"`

    // Note: Viper deserialization does not seem to care for
    // embedding of types, so we use one organization struct
    // for both orderers and applications.
    AnchorPeers      []*AnchorPeer `yaml:"AnchorPeers"`
    OrdererEndpoints []string      `yaml:"OrdererEndpoints"`

    // AdminPrincipal is deprecated and may be removed in a future release
    // it was used for modifying the default policy generation, but policies
    // may now be specified explicitly so it is redundant and unnecessary
    AdminPrincipal string `yaml:"AdminPrincipal"`
}

type Policy

Policy encodes a channel config policy

type Policy struct {
    Type string `yaml:"Type"`
    Rule string `yaml:"Rule"`
}

type Profile

Profile encodes orderer/application configuration combinations for the configtxgen tool.

type Profile struct {
    Consortium   string                 `yaml:"Consortium"`
    Application  *Application           `yaml:"Application"`
    Orderer      *Orderer               `yaml:"Orderer"`
    Consortiums  map[string]*Consortium `yaml:"Consortiums"`
    Capabilities map[string]bool        `yaml:"Capabilities"`
    Policies     map[string]*Policy     `yaml:"Policies"`
}

func Load

func Load(profile string, configPaths ...string) *Profile

Load returns the orderer/application config combination that corresponds to a given profile. Config paths may optionally be provided and will be used in place of the FABRIC_CFG_PATH env variable.

type Resources

Resources encodes the application-level resources configuration needed to seed the resource tree

type Resources struct {
    DefaultModPolicy string
}

type TopLevel

TopLevel consists of the structs used by the configtxgen tool.

type TopLevel struct {
    Profiles      map[string]*Profile        `yaml:"Profiles"`
    Organizations []*Organization            `yaml:"Organizations"`
    Channel       *Profile                   `yaml:"Channel"`
    Application   *Application               `yaml:"Application"`
    Orderer       *Orderer                   `yaml:"Orderer"`
    Capabilities  map[string]map[string]bool `yaml:"Capabilities"`
    Resources     *Resources                 `yaml:"Resources"`
}

func LoadTopLevel

func LoadTopLevel(configPaths ...string) *TopLevel

LoadTopLevel simply loads the configtx.yaml file into the structs above and completes their initialization. Config paths may optionally be provided and will be used in place of the FABRIC_CFG_PATH env variable.

Note, for environment overrides to work properly within a profile, Load should be used instead.