/
policy.go
90 lines (77 loc) · 2.61 KB
/
policy.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Copyright 2014 Canonical Ltd.
// Licensed under the AGPLv3, see LICENCE file for details.
package testing
import (
"github.com/juju/errors"
"github.com/juju/schema"
"gopkg.in/juju/environschema.v1"
"github.com/juju/juju/core/constraints"
"github.com/juju/juju/environs"
"github.com/juju/juju/environs/config"
"github.com/juju/juju/environs/context"
"github.com/juju/juju/storage"
)
type MockPolicy struct {
GetPrechecker func() (environs.InstancePrechecker, error)
GetConfigValidator func() (config.Validator, error)
GetProviderConfigSchemaSource func(cloudName string) (config.ConfigSchemaSource, error)
GetConstraintsValidator func() (constraints.Validator, error)
GetInstanceDistributor func() (context.Distributor, error)
GetStorageProviderRegistry func() (storage.ProviderRegistry, error)
}
func (p *MockPolicy) Prechecker() (environs.InstancePrechecker, error) {
if p.GetPrechecker != nil {
return p.GetPrechecker()
}
return nil, errors.NotImplementedf("Prechecker")
}
func (p *MockPolicy) ConfigValidator() (config.Validator, error) {
if p.GetConfigValidator != nil {
return p.GetConfigValidator()
}
return nil, errors.NotImplementedf("ConfigValidator")
}
func (p *MockPolicy) ConstraintsValidator(ctx context.ProviderCallContext) (constraints.Validator, error) {
if p.GetConstraintsValidator != nil {
return p.GetConstraintsValidator()
}
return nil, errors.NotImplementedf("ConstraintsValidator")
}
func (p *MockPolicy) InstanceDistributor() (context.Distributor, error) {
if p.GetInstanceDistributor != nil {
return p.GetInstanceDistributor()
}
return nil, errors.NotImplementedf("InstanceDistributor")
}
func (p *MockPolicy) StorageProviderRegistry() (storage.ProviderRegistry, error) {
if p.GetStorageProviderRegistry != nil {
return p.GetStorageProviderRegistry()
}
return nil, errors.NotImplementedf("StorageProviderRegistry")
}
func (p *MockPolicy) ProviderConfigSchemaSource(cloudName string) (config.ConfigSchemaSource, error) {
if p.GetProviderConfigSchemaSource != nil {
return p.GetProviderConfigSchemaSource(cloudName)
}
return nil, errors.NotImplementedf("ProviderConfigSchemaSource")
}
type MockConfigSchemaSource struct {
CloudName string
}
func (m *MockConfigSchemaSource) ConfigSchema() schema.Fields {
configSchema := environschema.Fields{
"providerAttr" + m.CloudName: {
Type: environschema.Tstring,
},
}
fs, _, err := configSchema.ValidationSchema()
if err != nil {
panic(err)
}
return fs
}
func (m *MockConfigSchemaSource) ConfigDefaults() schema.Defaults {
return schema.Defaults{
"providerAttr" + m.CloudName: "vulch",
}
}