...

Package localconfig

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

Overview ▾

Constants

Prefix for environment variables.

const Prefix = "ORDERER"

Variables

Defaults carries the default orderer configuration values.

var Defaults = TopLevel{
    General: General{
        LedgerType:     "file",
        ListenAddress:  "127.0.0.1",
        ListenPort:     7050,
        GenesisMethod:  "provisional",
        GenesisProfile: "SampleSingleMSPSolo",
        SystemChannel:  "test-system-channel-name",
        GenesisFile:    "genesisblock",
        Profile: Profile{
            Enabled: false,
            Address: "0.0.0.0:6060",
        },
        Cluster: Cluster{
            ReplicationMaxRetries:                12,
            RPCTimeout:                           time.Second * 7,
            DialTimeout:                          time.Second * 5,
            ReplicationBufferSize:                20971520,
            SendBufferSize:                       10,
            ReplicationBackgroundRefreshInterval: time.Minute * 5,
            ReplicationRetryTimeout:              time.Second * 5,
            ReplicationPullTimeout:               time.Second * 5,
            CertExpirationWarningThreshold:       time.Hour * 24 * 7,
        },
        LocalMSPDir: "msp",
        LocalMSPID:  "SampleOrg",
        BCCSP:       bccsp.GetDefaultOpts(),
        Authentication: Authentication{
            TimeWindow: time.Duration(15 * time.Minute),
        },
    },
    RAMLedger: RAMLedger{
        HistorySize: 10000,
    },
    FileLedger: FileLedger{
        Location: "/var/hyperledger/production/orderer",
        Prefix:   "hyperledger-fabric-ordererledger",
    },
    Kafka: Kafka{
        Retry: Retry{
            ShortInterval: 1 * time.Minute,
            ShortTotal:    10 * time.Minute,
            LongInterval:  10 * time.Minute,
            LongTotal:     12 * time.Hour,
            NetworkTimeouts: NetworkTimeouts{
                DialTimeout:  30 * time.Second,
                ReadTimeout:  30 * time.Second,
                WriteTimeout: 30 * time.Second,
            },
            Metadata: Metadata{
                RetryBackoff: 250 * time.Millisecond,
                RetryMax:     3,
            },
            Producer: Producer{
                RetryBackoff: 100 * time.Millisecond,
                RetryMax:     3,
            },
            Consumer: Consumer{
                RetryBackoff: 2 * time.Second,
            },
        },
        Verbose: false,
        Version: sarama.V0_10_2_0,
        TLS: TLS{
            Enabled: false,
        },
        Topic: Topic{
            ReplicationFactor: 3,
        },
    },
    Debug: Debug{
        BroadcastTraceDir: "",
        DeliverTraceDir:   "",
    },
    Operations: Operations{
        ListenAddress: "127.0.0.1:0",
    },
    Metrics: Metrics{
        Provider: "disabled",
    },
}

type Authentication

Authentication contains configuration parameters related to authenticating client messages.

type Authentication struct {
    TimeWindow         time.Duration
    NoExpirationChecks bool
}

type Cluster

type Cluster struct {
    ListenAddress                        string
    ListenPort                           uint16
    ServerCertificate                    string
    ServerPrivateKey                     string
    ClientCertificate                    string
    ClientPrivateKey                     string
    RootCAs                              []string
    DialTimeout                          time.Duration
    RPCTimeout                           time.Duration
    ReplicationBufferSize                int
    ReplicationPullTimeout               time.Duration
    ReplicationRetryTimeout              time.Duration
    ReplicationBackgroundRefreshInterval time.Duration
    ReplicationMaxRetries                int
    SendBufferSize                       int
    CertExpirationWarningThreshold       time.Duration
    TLSHandshakeTimeShift                time.Duration
}

type Consumer

Consumer contains configuration for the consumer's retries when failing to read from a Kafa partition.

type Consumer struct {
    RetryBackoff time.Duration
}

type Debug

Debug contains configuration for the orderer's debug parameters.

type Debug struct {
    BroadcastTraceDir string
    DeliverTraceDir   string
}

type FileLedger

FileLedger contains configuration for the file-based ledger.

type FileLedger struct {
    Location string
    Prefix   string
}

type General

General contains config which should be common among all orderer types.

type General struct {
    LedgerType        string
    ListenAddress     string
    ListenPort        uint16
    TLS               TLS
    Cluster           Cluster
    Keepalive         Keepalive
    ConnectionTimeout time.Duration
    GenesisMethod     string
    GenesisProfile    string
    SystemChannel     string
    GenesisFile       string
    Profile           Profile
    LocalMSPDir       string
    LocalMSPID        string
    BCCSP             *bccsp.FactoryOpts
    Authentication    Authentication
}

type Kafka

Kafka contains configuration for the Kafka-based orderer.

type Kafka struct {
    Retry     Retry
    Verbose   bool
    Version   sarama.KafkaVersion // TODO Move this to global config
    TLS       TLS
    SASLPlain SASLPlain
    Topic     Topic
}

type Keepalive

Keepalive contains configuration for gRPC servers.

type Keepalive struct {
    ServerMinInterval time.Duration
    ServerInterval    time.Duration
    ServerTimeout     time.Duration
}

type Metadata

Metadata contains configuration for the metadata requests to the Kafka cluster.

type Metadata struct {
    RetryMax     int
    RetryBackoff time.Duration
}

type Metrics

Operations confiures the metrics provider for the orderer.

type Metrics struct {
    Provider string
    Statsd   Statsd
}

type NetworkTimeouts

NetworkTimeouts contains the socket timeouts for network requests to the Kafka cluster.

type NetworkTimeouts struct {
    DialTimeout  time.Duration
    ReadTimeout  time.Duration
    WriteTimeout time.Duration
}

type Operations

Operations configures the operations endpont for the orderer.

type Operations struct {
    ListenAddress string
    TLS           TLS
}

type Producer

Producer contains configuration for the producer's retries when failing to post a message to a Kafka partition.

type Producer struct {
    RetryMax     int
    RetryBackoff time.Duration
}

type Profile

Profile contains configuration for Go pprof profiling.

type Profile struct {
    Enabled bool
    Address string
}

type RAMLedger

RAMLedger contains configuration for the RAM ledger.

type RAMLedger struct {
    HistorySize uint
}

type Retry

Retry contains configuration related to retries and timeouts when the connection to the Kafka cluster cannot be established, or when Metadata requests needs to be repeated (because the cluster is in the middle of a leader election).

type Retry struct {
    ShortInterval   time.Duration
    ShortTotal      time.Duration
    LongInterval    time.Duration
    LongTotal       time.Duration
    NetworkTimeouts NetworkTimeouts
    Metadata        Metadata
    Producer        Producer
    Consumer        Consumer
}

type SASLPlain

SASLPlain contains configuration for SASL/PLAIN authentication

type SASLPlain struct {
    Enabled  bool
    User     string
    Password string
}

type Statsd

Statsd provides the configuration required to emit statsd metrics from the orderer.

type Statsd struct {
    Network       string
    Address       string
    WriteInterval time.Duration
    Prefix        string
}

type TLS

TLS contains configuration for TLS connections.

type TLS struct {
    Enabled            bool
    PrivateKey         string
    Certificate        string
    RootCAs            []string
    ClientAuthRequired bool
    ClientRootCAs      []string
}

type TopLevel

TopLevel directly corresponds to the orderer config YAML. Note, for non 1-1 mappings, you may append something like `mapstructure:"weirdFoRMat"` to modify the default mapping, see the "Unmarshal" section of https://github.com/spf13/viper for more info.

type TopLevel struct {
    General    General
    FileLedger FileLedger
    RAMLedger  RAMLedger
    Kafka      Kafka
    Debug      Debug
    Consensus  interface{}
    Operations Operations
    Metrics    Metrics
}

func Load

func Load() (*TopLevel, error)

Load parses the orderer YAML file and environment, producing a struct suitable for config use, returning error on failure.

type Topic

Topic contains the settings to use when creating Kafka topics

type Topic struct {
    ReplicationFactor int16
}