// serviceSetSettingsYAML updates the settings for the given service, // taking the configuration from a YAML string. func serviceSetSettingsYAML(service *state.Service, settings string) error { b := []byte(settings) var all map[string]interface{} if err := goyaml.Unmarshal(b, &all); err != nil { return errors.Annotate(err, "parsing settings data") } // The file is already in the right format. if _, ok := all[service.Name()]; !ok { changes, err := settingsFromGetYaml(all) if err != nil { return errors.Annotate(err, "processing YAML generated by get") } return errors.Annotate(service.UpdateConfigSettings(changes), "updating settings with service YAML") } ch, _, err := service.Charm() if err != nil { return errors.Annotate(err, "obtaining charm for this service") } changes, err := ch.Config().ParseSettingsYAML(b, service.Name()) if err != nil { return errors.Annotate(err, "creating config from YAML") } return errors.Annotate(service.UpdateConfigSettings(changes), "updating settings") }
func (s *BaseUpgradeCharmSuite) assertUpgraded(c *gc.C, riak *state.Service, revision int, forced bool) *charm.URL { err := riak.Refresh() c.Assert(err, jc.ErrorIsNil) ch, force, err := riak.Charm() c.Assert(err, jc.ErrorIsNil) c.Assert(ch.Revision(), gc.Equals, revision) c.Assert(force, gc.Equals, forced) return ch.URL() }
// serviceSetSettingsYAML updates the settings for the given service, // taking the configuration from a YAML string. func serviceSetSettingsYAML(service *state.Service, settings string) error { ch, _, err := service.Charm() if err != nil { return err } changes, err := ch.Config().ParseSettingsYAML([]byte(settings), service.Name()) if err != nil { return err } return service.UpdateConfigSettings(changes) }
// ServiceSetSettingsStrings updates the settings for the given service, // taking the configuration from a map of strings. func ServiceSetSettingsStrings(service *state.Service, settings map[string]string) error { ch, _, err := service.Charm() if err != nil { return errors.Trace(err) } // Parse config in a compatible way (see function comment). changes, err := parseSettingsCompatible(ch, settings) if err != nil { return errors.Trace(err) } return service.UpdateConfigSettings(changes) }
// newServiceSetSettingsStringsForClientAPI updates the settings for the given // service, taking the configuration from a map of strings. // // TODO(Nate): replace serviceSetSettingsStrings with this onces the GUI no // longer expects to be able to unset values by sending an empty string. func newServiceSetSettingsStringsForClientAPI(service *state.Service, settings map[string]string) error { ch, _, err := service.Charm() if err != nil { return err } // Validate the settings. changes, err := ch.Config().ParseSettingsStrings(settings) if err != nil { return err } return service.UpdateConfigSettings(changes) }