// constructImageConstraint returns model-specific criteria used to look for image metadata. func (p *ProvisionerAPI) constructImageConstraint(m *state.Machine) (*imagemetadata.ImageConstraint, environs.Environ, error) { // If we can determine current region, // we want only metadata specific to this region. cloud, env, err := p.obtainEnvCloudConfig() if err != nil { return nil, nil, errors.Trace(err) } lookup := simplestreams.LookupParams{ Series: []string{m.Series()}, Stream: env.Config().ImageStream(), } mcons, err := m.Constraints() if err != nil { return nil, nil, errors.Annotatef(err, "cannot get machine constraints for machine %v", m.MachineTag().Id()) } if mcons.Arch != nil { lookup.Arches = []string{*mcons.Arch} } if cloud != nil { lookup.CloudSpec = *cloud } return imagemetadata.NewImageConstraint(lookup), env, nil }