Example #1
0
// GetNodeConfig takes a node name and reads its docker-machine config.
func (g *Google) GetNodeConfig(name string) (*drivers.HostConfig, error) {
	cfg := &drivers.HostConfig{
		Driver: &config{},
	}

	// Parse the config file.
	err := docker.GetHostConfig(name, cfg)
	if err != nil {
		return nil, err
	}

	// We need the just-parsed driver config.
	driverCfg := cfg.Driver.(*config)

	// Lookup the instance, there are a few fields docker-machine does not save.
	instance, err := g.getInstanceDetails(driverCfg.MachineName)
	if err != nil {
		return nil, err
	}

	driverCfg.internalIPAddress = instance.NetworkInterfaces[0].NetworkIP
	driverCfg.link = instance.SelfLink

	// Lookup the forwarding rule.
	rule, err := g.getForwardingRule()
	if err != nil {
		return nil, err
	}
	cfg.Driver.(*config).forwardingRuleAddress = rule.IPAddress

	return cfg, err
}
Example #2
0
// GetNodeConfig takes a node name and reads its docker-machine config.
// The LoadBalancerAddress is looked up and filled in.
func (a *Amazon) GetNodeConfig(name string) (*drivers.HostConfig, error) {
	cfg := &drivers.HostConfig{
		Driver: &config{},
	}

	// Parse the config file.
	err := docker.GetHostConfig(name, cfg)
	if err != nil {
		return nil, err
	}

	// Add the load balancer address.
	dnsName, err := FindCockroachELB(a.region)
	if err != nil || dnsName == "" {
		return nil, util.Errorf("could not find load balancer: %v", err)
	}
	cfg.Driver.(*config).LoadBalancerAddress = dnsName

	return cfg, err
}