// ServiceGet returns the configuration for a service. func (c *Client) ServiceGet(args params.ServiceGet) (params.ServiceGetResults, error) { service, err := c.api.state.Service(args.ServiceName) if err != nil { return params.ServiceGetResults{}, err } settings, err := service.ConfigSettings() if err != nil { return params.ServiceGetResults{}, err } charm, _, err := service.Charm() if err != nil { return params.ServiceGetResults{}, err } configInfo := describe(settings, charm.Config()) var constraints constraints.Value if service.IsPrincipal() { constraints, err = service.Constraints() if err != nil { return params.ServiceGetResults{}, err } } return params.ServiceGetResults{ Service: args.ServiceName, Charm: charm.Meta().Name, Config: configInfo, Constraints: constraints, }, nil }
// CharmInfo returns information about the requested charm. func (c *Client) CharmInfo(args params.CharmInfo) (api.CharmInfo, error) { curl, err := charm.ParseURL(args.CharmURL) if err != nil { return api.CharmInfo{}, err } charm, err := c.api.state.Charm(curl) if err != nil { return api.CharmInfo{}, err } info := api.CharmInfo{ Revision: charm.Revision(), URL: curl.String(), Config: charm.Config(), Meta: charm.Meta(), } return info, nil }