func ChainConnectedToAService(chainName string, srv *definitions.ServiceDefinition) (*definitions.ServiceDefinition, error) { s, err := loaders.ChainsAsAService(chainName, false, srv.Operations.ContainerNumber) if err != nil { return nil, err } loaders.ConnectToAService(srv, chainName) // first make the service container linked to the chain loaders.ConnectToAService(s, srv.Name) // now make the chain container linked to the service container // XXX: we may have name collision here if we're not careful. util.OverWriteOperations(s.Operations, srv.Operations) return s, nil }
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 }