本文整理匯總了Golang中github.com/juju/juju/constraints.Parse函數的典型用法代碼示例。如果您正苦於以下問題:Golang Parse函數的具體用法?Golang Parse怎麽用?Golang Parse使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了Parse函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: TestParseConstraints
func (s *ConstraintsSuite) TestParseConstraints(c *gc.C) {
for i, t := range parseConstraintsTests {
c.Logf("test %d: %s", i, t.summary)
cons0, err := constraints.Parse(t.args...)
if t.err == "" {
c.Assert(err, jc.ErrorIsNil)
} else {
c.Assert(err, gc.ErrorMatches, t.err)
continue
}
cons1, err := constraints.Parse(cons0.String())
c.Check(err, jc.ErrorIsNil)
c.Check(cons1, gc.DeepEquals, cons0)
}
}
示例2: GetBundleChanges
// GetBundleChanges returns the list of changes required to deploy the given
// bundle data. The changes are sorted by requirements, so that they can be
// applied in order.
func (c *Client) GetBundleChanges(args params.GetBundleChangesParams) (params.GetBundleChangesResults, error) {
var results params.GetBundleChangesResults
data, err := charm.ReadBundleData(strings.NewReader(args.BundleDataYAML))
if err != nil {
return results, errors.Annotate(err, "cannot read bundle YAML")
}
if err := data.Verify(func(s string) error {
_, err := constraints.Parse(s)
return err
}); err != nil {
if err, ok := err.(*charm.VerificationError); ok {
results.Errors = make([]string, len(err.Errors))
for i, e := range err.Errors {
results.Errors[i] = e.Error()
}
return results, nil
}
// This should never happen as Verify only returns verification errors.
return results, errors.Annotate(err, "cannot verify bundle")
}
changes := bundlechanges.FromData(data)
results.Changes = make([]*params.BundleChangesChange, len(changes))
for i, c := range changes {
results.Changes[i] = ¶ms.BundleChangesChange{
Id: c.Id(),
Method: c.Method(),
Args: c.GUIArgs(),
Requires: c.Requires(),
}
}
return results, nil
}
示例3: Init
func (c *SetConstraintsCommand) Init(args []string) (err error) {
if c.ServiceName != "" && !names.IsValidService(c.ServiceName) {
return fmt.Errorf("invalid service name %q", c.ServiceName)
}
c.Constraints, err = constraints.Parse(args...)
return err
}
示例4: assertSetModelConstraintsBlocked
func (s *clientSuite) assertSetModelConstraintsBlocked(c *gc.C, msg string) {
// Set constraints for the model.
cons, err := constraints.Parse("mem=4096", "cores=2")
c.Assert(err, jc.ErrorIsNil)
err = s.APIState.Client().SetModelConstraints(cons)
s.AssertBlocked(c, err, msg)
}
示例5: TestRoundtripString
func (s *ConstraintsSuite) TestRoundtripString(c *gc.C) {
for _, t := range constraintsRoundtripTests {
c.Logf("test %s", t.Name)
cons, err := constraints.Parse(t.Value.String())
c.Check(err, jc.ErrorIsNil)
c.Check(cons, jc.DeepEquals, t.Value)
}
}
示例6: assertSetModelConstraints
func (s *clientSuite) assertSetModelConstraints(c *gc.C) {
// Set constraints for the model.
cons, err := constraints.Parse("mem=4096", "cores=2")
c.Assert(err, jc.ErrorIsNil)
err = s.APIState.Client().SetModelConstraints(cons)
c.Assert(err, jc.ErrorIsNil)
// Ensure the constraints have been correctly updated.
obtained, err := s.State.ModelConstraints()
c.Assert(err, jc.ErrorIsNil)
c.Assert(obtained, gc.DeepEquals, cons)
}
示例7: TestClientGetModelConstraints
func (s *clientSuite) TestClientGetModelConstraints(c *gc.C) {
// Set constraints for the model.
cons, err := constraints.Parse("mem=4096", "cores=2")
c.Assert(err, jc.ErrorIsNil)
err = s.State.SetModelConstraints(cons)
c.Assert(err, jc.ErrorIsNil)
// Check we can get the constraints.
obtained, err := s.APIState.Client().GetModelConstraints()
c.Assert(err, jc.ErrorIsNil)
c.Assert(obtained, gc.DeepEquals, cons)
}
示例8: addService
// addService deploys or update a service with no units. Service options are
// also set or updated.
func (h *bundleHandler) addService(id string, p bundlechanges.AddServiceParams) error {
h.results[id] = p.Service
ch := resolve(p.Charm, h.results)
// Handle service configuration.
configYAML := ""
if len(p.Options) > 0 {
config, err := yaml.Marshal(map[string]map[string]interface{}{p.Service: p.Options})
if err != nil {
return errors.Annotatef(err, "cannot marshal options for service %q", p.Service)
}
configYAML = string(config)
}
// Handle service constraints.
cons, err := constraints.Parse(p.Constraints)
if err != nil {
// This should never happen, as the bundle is already verified.
return errors.Annotate(err, "invalid constraints for service")
}
// Deploy the service.
numUnits, toMachineSpec := 0, ""
if err := h.client.ServiceDeploy(ch, p.Service, numUnits, configYAML, cons, toMachineSpec); err == nil {
h.log.Infof("service %s deployed (charm: %s)", p.Service, ch)
return nil
} else if !isErrServiceExists(err) {
return errors.Annotatef(err, "cannot deploy service %q", p.Service)
}
// The service is already deployed in the environment: check that its
// charm is compatible with the one declared in the bundle. If it is,
// reuse the existing service or upgrade to a specified revision.
// Exit with an error otherwise.
if err := upgradeCharm(h.client, h.log, p.Service, ch); err != nil {
return errors.Annotatef(err, "cannot upgrade service %q", p.Service)
}
// Update service configuration.
if configYAML != "" {
if err := h.client.ServiceSetYAML(p.Service, configYAML); err != nil {
// This should never happen as possible errors are already returned
// by the ServiceDeploy call above.
return errors.Annotatef(err, "cannot update options for service %q", p.Service)
}
h.log.Infof("configuration updated for service %s", p.Service)
}
// Update service constraints.
if p.Constraints != "" {
if err := h.client.SetServiceConstraints(p.Service, cons); err != nil {
// This should never happen, as the bundle is already verified.
return errors.Annotatef(err, "cannot update constraints for service %q", p.Service)
}
h.log.Infof("constraints applied for service %s", p.Service)
}
return nil
}
示例9: Init
func (c *serviceSetConstraintsCommand) Init(args []string) (err error) {
if len(args) == 0 {
return errors.Errorf("no application name specified")
}
if !names.IsValidApplication(args[0]) {
return errors.Errorf("invalid application name %q", args[0])
}
c.ApplicationName, args = args[0], args[1:]
c.Constraints, err = constraints.Parse(args...)
return err
}
示例10: Init
func (c *serviceSetConstraintsCommand) Init(args []string) (err error) {
if len(args) == 0 {
return fmt.Errorf("no service name specified")
}
if !names.IsValidService(args[0]) {
return fmt.Errorf("invalid service name %q", args[0])
}
c.ServiceName, args = args[0], args[1:]
c.Constraints, err = constraints.Parse(args...)
return err
}
示例11: TestInvalidSpaces
func (s *ConstraintsSuite) TestInvalidSpaces(c *gc.C) {
invalidNames := []string{
"%$pace", "^foo#2", "+", "tcp:ip",
"^^myspace", "^^^^^^^^", "space^x",
"&-foo", "space/3", "^bar=4", "&#!",
}
for _, name := range invalidNames {
con, err := constraints.Parse("spaces=" + name)
expectName := strings.TrimPrefix(name, "^")
expectErr := fmt.Sprintf(`bad "spaces" constraint: %q is not a valid space name`, expectName)
c.Check(err, gc.NotNil)
c.Check(err.Error(), gc.Equals, expectErr)
c.Check(con, jc.DeepEquals, constraints.Value{})
}
}
示例12: TestInvalidNetworks
func (s *ConstraintsSuite) TestInvalidNetworks(c *gc.C) {
invalidNames := []string{
"%ne$t", "^net#2", "+", "tcp:ip",
"^^mynet", "^^^^^^^^", "net^x",
"&-foo", "net/3", "^net=4", "&#!",
}
for _, name := range invalidNames {
con, err := constraints.Parse("networks=" + name)
expectName := strings.TrimPrefix(name, "^")
expectErr := fmt.Sprintf(`bad "networks" constraint: %q is not a valid network name`, expectName)
c.Check(err, gc.NotNil)
c.Check(err.Error(), gc.Equals, expectErr)
c.Check(con, jc.DeepEquals, constraints.Value{})
}
}
示例13: TestDeployBundleMachineAttributes
func (s *deployRepoCharmStoreSuite) TestDeployBundleMachineAttributes(c *gc.C) {
testcharms.UploadCharm(c, s.client, "trusty/django-42", "dummy")
output, err := s.deployBundleYAML(c, `
services:
django:
charm: cs:trusty/django-42
num_units: 2
to:
- 1
- new
machines:
1:
series: trusty
constraints: "cpu-cores=4 mem=4G"
annotations:
foo: bar
`)
c.Assert(err, jc.ErrorIsNil)
expectedOutput := `
added charm cs:trusty/django-42
service django deployed (charm: cs:trusty/django-42)
created new machine 0 for holding django unit
annotations set for machine 0
added django/0 unit to machine 0
created new machine 1 for holding django unit
added django/1 unit to machine 1
deployment of bundle "local:bundle/example-0" completed`
c.Assert(output, gc.Equals, strings.TrimSpace(expectedOutput))
s.assertServicesDeployed(c, map[string]serviceInfo{
"django": {charm: "cs:trusty/django-42"},
})
s.assertRelationsEstablished(c)
s.assertUnitsCreated(c, map[string]string{
"django/0": "0",
"django/1": "1",
})
m, err := s.State.Machine("0")
c.Assert(err, jc.ErrorIsNil)
c.Assert(m.Series(), gc.Equals, "trusty")
cons, err := m.Constraints()
c.Assert(err, jc.ErrorIsNil)
expectedCons, err := constraints.Parse("cpu-cores=4 mem=4G")
c.Assert(err, jc.ErrorIsNil)
c.Assert(cons, jc.DeepEquals, expectedCons)
ann, err := s.State.Annotations(m)
c.Assert(err, jc.ErrorIsNil)
c.Assert(ann, jc.DeepEquals, map[string]string{"foo": "bar"})
}
示例14: TestClientServiceUpdateAllParams
func (s *serviceSuite) TestClientServiceUpdateAllParams(c *gc.C) {
s.deployServiceForUpdateTests(c)
curl, _ := s.UploadCharm(c, "precise/wordpress-3", "wordpress")
err := service.AddCharmWithAuthorization(s.State, params.AddCharmWithAuthorization{URL: curl.String()})
c.Assert(err, jc.ErrorIsNil)
// Update all the service attributes.
minUnits := 3
cons, err := constraints.Parse("mem=4096", "cpu-cores=2")
c.Assert(err, jc.ErrorIsNil)
args := params.ServiceUpdate{
ServiceName: "service",
CharmUrl: curl.String(),
ForceCharmUrl: true,
MinUnits: &minUnits,
SettingsStrings: map[string]string{"blog-title": "string-title"},
SettingsYAML: "service:\n blog-title: yaml-title\n",
Constraints: &cons,
}
err = s.serviceApi.ServiceUpdate(args)
c.Assert(err, jc.ErrorIsNil)
// Ensure the service has been correctly updated.
service, err := s.State.Service("service")
c.Assert(err, jc.ErrorIsNil)
// Check the charm.
ch, force, err := service.Charm()
c.Assert(err, jc.ErrorIsNil)
c.Assert(ch.URL().String(), gc.Equals, curl.String())
c.Assert(force, jc.IsTrue)
// Check the minimum number of units.
c.Assert(service.MinUnits(), gc.Equals, minUnits)
// Check the settings: also ensure the YAML settings take precedence
// over strings ones.
expectedSettings := charm.Settings{"blog-title": "yaml-title"}
obtainedSettings, err := service.ConfigSettings()
c.Assert(err, jc.ErrorIsNil)
c.Assert(obtainedSettings, gc.DeepEquals, expectedSettings)
// Check the constraints.
obtainedConstraints, err := service.Constraints()
c.Assert(err, jc.ErrorIsNil)
c.Assert(obtainedConstraints, gc.DeepEquals, cons)
}
示例15: TestClientServiceUpdateSetConstraints
func (s *serviceSuite) TestClientServiceUpdateSetConstraints(c *gc.C) {
service := s.AddTestingService(c, "dummy", s.AddTestingCharm(c, "dummy"))
// Update constraints for the service.
cons, err := constraints.Parse("mem=4096", "cpu-cores=2")
c.Assert(err, jc.ErrorIsNil)
args := params.ServiceUpdate{
ServiceName: "dummy",
Constraints: &cons,
}
err = s.serviceApi.ServiceUpdate(args)
c.Assert(err, jc.ErrorIsNil)
// Ensure the constraints have been correctly updated.
obtained, err := service.Constraints()
c.Assert(err, jc.ErrorIsNil)
c.Assert(obtained, gc.DeepEquals, cons)
}