func setChainDefaults(chain *definitions.Chain) error { cfg, err := config.LoadViperConfig(path.Join(ChainsPath), "default", "chain") if err != nil { return err } if err := cfg.Marshal(chain); err != nil { return err } logger.Debugf("Chain Defaults Set. Image =>\t%s\n", chain.Service.Image) return nil }
func EditChain(do *definitions.Do) error { chainConf, err := config.LoadViperConfig(path.Join(BlockchainsPath), do.Name, "chain") if err != nil { return err } if err := util.Edit(chainConf, do.Args); err != nil { return err } var chain definitions.Chain loaders.MarshalChainDefinition(chainConf, &chain) return WriteChainDefinitionFile(&chain, chainConf.ConfigFileUsed()) }
func setChainDefaults(chain *definitions.Chain) error { cfg, err := config.LoadViperConfig(filepath.Join(ChainsPath), "default", "chain") if err != nil { return err } if err := cfg.Unmarshal(chain); err != nil { return err } log.WithField("image", chain.Service.Image).Debug("Chain defaults set") return nil }
// viper read config file, marshal to definition struct, // load service, validate name and data container func LoadChainDefinition(chainName string, newCont bool, cNum ...int) (*definitions.Chain, error) { if len(cNum) == 0 { cNum = append(cNum, 0) } if cNum[0] == 0 { cNum[0] = util.AutoMagic(0, definitions.TypeChain, newCont) log.WithField("=>", fmt.Sprintf("%s:%d", chainName, cNum[0])).Debug("Loading chain definition (autoassigned)") } else { log.WithField("=>", fmt.Sprintf("%s:%d", chainName, cNum[0])).Debug("Loading chain definition") } chain := definitions.BlankChain() chain.Name = chainName chain.Operations.ContainerNumber = cNum[0] chain.Operations.ContainerType = definitions.TypeChain chain.Operations.Labels = util.Labels(chain.Name, chain.Operations) if err := setChainDefaults(chain); err != nil { return nil, err } chainConf, err := config.LoadViperConfig(filepath.Join(ChainsPath), chainName, "chain") if err != nil { return nil, err } // marshal chain and always reset the operational requirements // this will make sure to sync with docker so that if changes // have occured in the interim they are caught. if err = MarshalChainDefinition(chainConf, chain); err != nil { return nil, err } // Docker 1.6 (which eris doesn't support) had different linking mechanism. if ver, _ := util.DockerClientVersion(); ver >= version.DVER_MIN { if chain.Dependencies != nil { addDependencyVolumesAndLinks(chain.Dependencies, chain.Service, chain.Operations) } } checkChainNames(chain) log.WithFields(log.Fields{ "container number": chain.Operations.ContainerNumber, "environment": chain.Service.Environment, "entrypoint": chain.Service.EntryPoint, "cmd": chain.Service.Command, }).Debug("Chain definition loaded") return chain, nil }
// viper read config file, marshal to definition struct, // load service, validate name and data container func LoadChainDefinition(chainName string, newCont bool, cNum ...int) (*definitions.Chain, error) { if len(cNum) == 0 { cNum = append(cNum, 0) } if cNum[0] == 0 { cNum[0] = util.AutoMagic(0, "chain", newCont) logger.Debugf("Loading Chain Definition =>\t%s:%d (autoassigned)\n", chainName, cNum[0]) } else { logger.Debugf("Loading Chain Definition =>\t%s:%d\n", chainName, cNum[0]) } chain := definitions.BlankChain() chain.Name = chainName chain.Operations.ContainerNumber = cNum[0] if err := setChainDefaults(chain); err != nil { return nil, err } chainConf, err := config.LoadViperConfig(path.Join(BlockchainsPath), chainName, "chain") if err != nil { return nil, err } // marshal chain and always reset the operational requirements // this will make sure to sync with docker so that if changes // have occured in the interim they are caught. if err = MarshalChainDefinition(chainConf, chain); err != nil { return nil, err } // Docker 1.6 (which eris doesn't support) had different linking mechanism. if ver, _ := util.DockerClientVersion(); ver >= 1.7 { if chain.Dependencies != nil { addDependencyVolumesAndLinks(chain.Dependencies, chain.Service, chain.Operations) } } checkChainNames(chain) logger.Debugf("Chain Loader. ContNumber =>\t%d\n", chain.Operations.ContainerNumber) logger.Debugf("\twith Environment =>\t%v\n", chain.Service.Environment) logger.Debugf("\tBooting =>\t\t%v:%v\n", chain.Service.EntryPoint, chain.Service.Command) return chain, nil }
func loadServiceDefinition(servName string) (*viper.Viper, error) { return config.LoadViperConfig(path.Join(ServicesPath), servName, "service") }
// read the config file into viper func loadContractPackage(path string) (*viper.Viper, error) { return config.LoadViperConfig(path, "package", "contracts") }