func addDependencyVolumesAndLinks(deps *definitions.Dependencies, srv *definitions.Service, ops *definitions.Operation) { if deps != nil { for i, dep := range deps.Services { name, internalName, link, mount := util.ParseDependency(dep) ConnectToAService(srv, ops, name, internalName, link, mount) deps.Services[i] = name } for i, dep := range deps.Chains { name, internalName, link, mount := util.ParseDependency(dep) ConnectToAChain(srv, ops, name, internalName, link, mount) deps.Chains[i] = name } } }
func ConnectChainToService(chainFlag, chainNameAndOpts string, srv *definitions.ServiceDefinition) (*definitions.ServiceDefinition, error) { chainName, internalName, link, mount := util.ParseDependency(chainNameAndOpts) if chainFlag != "" { // flag overwrites whatever is in the service definition chainName = chainFlag } else if strings.HasPrefix(srv.Chain, "$chain") { // if there's a $chain and no flag or checked out chain, we err var err error chainName, err = util.GetHead() if chainName == "" || err != nil { return nil, fmt.Errorf("Marmot disapproval face.\nYou tried to start a service which has a `$chain` variable but didn't give us a chain.\nPlease rerun the command either after [eris chains checkout CHAINNAME] *or* with a --chain flag.\n") } } s, err := loaders.ChainsAsAService(chainName, false, srv.Operations.ContainerNumber) if err != nil { return nil, err } // link the service container linked to the chain // XXX: we may have name collision here if we're not careful. loaders.ConnectToAChain(srv.Service, srv.Operations, chainName, internalName, link, mount) return s, nil }