github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/vsphere/environ_policy.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package vsphere
     5  
     6  import (
     7  	"github.com/juju/utils/arch"
     8  
     9  	"github.com/juju/juju/core/constraints"
    10  	"github.com/juju/juju/environs"
    11  	"github.com/juju/juju/environs/context"
    12  )
    13  
    14  // PrecheckInstance is part of the environs.Environ interface.
    15  func (env *environ) PrecheckInstance(ctx context.ProviderCallContext, args environs.PrecheckInstanceParams) error {
    16  	if args.Placement == "" {
    17  		return nil
    18  	}
    19  	return env.withSession(ctx, func(env *sessionEnviron) error {
    20  		return env.PrecheckInstance(ctx, args)
    21  	})
    22  }
    23  
    24  // PrecheckInstance is part of the environs.Environ interface.
    25  func (env *sessionEnviron) PrecheckInstance(ctx context.ProviderCallContext, args environs.PrecheckInstanceParams) error {
    26  	_, err := env.parsePlacement(ctx, args.Placement)
    27  	return err
    28  }
    29  
    30  var unsupportedConstraints = []string{
    31  	constraints.Tags,
    32  	constraints.VirtType,
    33  }
    34  
    35  // ConstraintsValidator returns a Validator value which is used to
    36  // validate and merge constraints.
    37  func (env *environ) ConstraintsValidator(ctx context.ProviderCallContext) (constraints.Validator, error) {
    38  	validator := constraints.NewValidator()
    39  	validator.RegisterUnsupported(unsupportedConstraints)
    40  	validator.RegisterVocabulary(constraints.Arch, []string{
    41  		arch.AMD64, arch.I386,
    42  	})
    43  	return validator, nil
    44  }