func (api *MachinerAPI) getOneMachineProviderNetworkConfig(m *state.Machine) ([]params.NetworkConfig, error) { instId, err := m.InstanceId() if err != nil { return nil, errors.Trace(err) } netEnviron, err := networkingcommon.NetworkingEnvironFromModelConfig( stateenvirons.EnvironConfigGetter{api.st}, ) if errors.IsNotSupported(err) { logger.Infof("not updating provider network config: %v", err) return nil, nil } else if err != nil { return nil, errors.Annotate(err, "cannot get provider network config") } interfaceInfos, err := netEnviron.NetworkInterfaces(instId) if err != nil { return nil, errors.Annotatef(err, "cannot get network interfaces of %q", instId) } if len(interfaceInfos) == 0 { logger.Infof("not updating provider network config: no interfaces returned") return nil, nil } providerConfig := networkingcommon.NetworkConfigFromInterfaceInfo(interfaceInfos) logger.Tracef("provider network config instance %q: %+v", instId, providerConfig) return providerConfig, nil }
// prepareContainerAccessEnvironment retrieves the environment, host machine, and access // for working with containers. func (p *ProvisionerAPI) prepareContainerAccessEnvironment() (environs.NetworkingEnviron, *state.Machine, common.AuthFunc, error) { netEnviron, err := networkingcommon.NetworkingEnvironFromModelConfig(p.configGetter) if err != nil { return nil, nil, nil, errors.Trace(err) } canAccess, err := p.getAuthFunc() if err != nil { return nil, nil, nil, errors.Annotate(err, "cannot authenticate request") } hostAuthTag := p.authorizer.GetAuthTag() if hostAuthTag == nil { return nil, nil, nil, errors.Errorf("authenticated entity tag is nil") } hostTag, err := names.ParseMachineTag(hostAuthTag.String()) if err != nil { return nil, nil, nil, errors.Trace(err) } host, err := p.getMachine(canAccess, hostTag) if err != nil { return nil, nil, nil, errors.Trace(err) } return netEnviron, host, canAccess, nil }