diff --git a/common/tools/cryptogen/main.go b/common/tools/cryptogen/main.go index 999cc1c63ab..b0bda5991b6 100644 --- a/common/tools/cryptogen/main.go +++ b/common/tools/cryptogen/main.go @@ -21,37 +21,44 @@ import ( "io" "os" "path/filepath" + "strings" "github.com/hyperledger/fabric/common/tools/cryptogen/ca" "github.com/hyperledger/fabric/common/tools/cryptogen/msp" ) const ( - peerOrgBaseName = "peerOrg" - peerBaseName = "Peer" - userBaseName = "User" - adminBaseName = "Admin" - orderOrgBaseName = "ordererOrg" - ordererBaseName = "Orderer" + peerOrgBaseName = "peerOrg" + peerBaseName = "Peer" + userBaseName = "User" + adminBaseName = "Admin" + ordererOrgBaseName = "ordererOrg" + ordererBaseName = "Orderer" + numOrdererOrgs = 1 ) //command line flags var ( numPeerOrgs = flag.Int("peerOrgs", 2, - "number of unique organizations with peers") + "number of unique organizations with peers, used if peerOrgNames is not specified") + peerOrgNames = flag.String("peerOrgNames", "", + "comma-separated list of peer organization names") numPeers = flag.Int("peersPerOrg", 1, "number of peers per organization") numPeerOrgUsers = flag.Int("peerOrgUsers", 1, "number of users per peer organization") + numOrderers = flag.Int("ordererNodes", 1, - "number of ordering service nodes") + "number of ordering service nodes per organization") + ordererOrgName = flag.String("ordererOrgName", "", + "orderer organization name") + baseDir = flag.String("baseDir", ".", "directory in which to place artifacts") ) -var numOrdererOrgs = 1 - func main() { + flag.Parse() if flag.NFlag() == 0 { @@ -61,24 +68,22 @@ func main() { } genDir := filepath.Join(*baseDir, "crypto-config") - if *numPeerOrgs > 0 { + if *peerOrgNames != "" { + generatePeerOrgs(genDir, strings.Split(*peerOrgNames, ",")) + } else if *numPeerOrgs > 0 { fmt.Printf("Generating %d peer organization(s) each with %d peer(s) ...\n", *numPeerOrgs, *numPeers) - - // TODO: add ability to specify peer org names - // for name just use default base name - peerOrgNames := []string{} - for i := 1; i <= *numPeerOrgs; i++ { - peerOrgNames = append(peerOrgNames, fmt.Sprintf("%s%d", peerOrgBaseName, i)) - } - generatePeerOrgs(genDir, peerOrgNames) - + generatePeerOrgs(genDir, getOrgNames(peerOrgBaseName, *numPeerOrgs)) } - if *numOrderers > 0 { + if *ordererOrgName != "" { + fmt.Printf("Generating orderer organization %s with %d ordering node(s) ...\n", + *ordererOrgName, *numOrderers) + generateOrdererOrg(genDir, *ordererOrgName) + } else if numOrdererOrgs > 0 { fmt.Printf("Generating %d orderer organization(s) and %d ordering node(s) ...\n", numOrdererOrgs, *numOrderers) - generateOrdererOrg(genDir, fmt.Sprintf("%s1", orderOrgBaseName)) + generateOrdererOrg(genDir, fmt.Sprintf("%s1", ordererOrgBaseName)) } } @@ -138,6 +143,14 @@ func generatePeerOrgs(baseDir string, orgNames []string) { } } +func getOrgNames(baseName string, count int) []string { + orgNames := []string{} + for i := 1; i <= count; i++ { + orgNames = append(orgNames, fmt.Sprintf("%s%d", baseName, i)) + } + return orgNames +} + func copyAdminCert(usersDir, adminCertsDir, adminUserName string) error { // delete the contents of admincerts err := os.RemoveAll(adminCertsDir)