14
16
"github.com/juju/juju/environs/config"
15
17
"github.com/juju/juju/environs/imagemetadata"
16
18
"github.com/juju/juju/environs/simplestreams"
17
"github.com/juju/juju/environs/storage"
19
"github.com/juju/juju/environs/tags"
18
20
"github.com/juju/juju/instance"
19
21
"github.com/juju/juju/provider/common"
20
22
"github.com/juju/juju/state"
139
136
return env.getSnapshot().ecfg.Config
142
func (env *joyentEnviron) Storage() storage.Storage {
143
return env.getSnapshot().storage
146
139
func (env *joyentEnviron) Bootstrap(ctx environs.BootstrapContext, args environs.BootstrapParams) (*environs.BootstrapResult, error) {
147
140
return common.Bootstrap(ctx, env, args)
150
143
func (env *joyentEnviron) ControllerInstances() ([]instance.Id, error) {
151
return common.ProviderStateInstances(env, env.Storage())
144
instanceIds := []instance.Id{}
146
filter := cloudapi.NewFilter()
147
filter.Set(tagKey("group"), "juju")
148
filter.Set(tagKey("model"), env.Config().Name())
149
filter.Set(tagKey(tags.JujuModel), env.Config().UUID())
150
filter.Set(tagKey(tags.JujuController), "true")
152
machines, err := env.compute.cloudapi.ListMachines(filter)
153
if err != nil || len(machines) == 0 {
154
return nil, environs.ErrNotBootstrapped
157
for _, m := range machines {
158
if strings.EqualFold(m.State, "provisioning") || strings.EqualFold(m.State, "running") {
160
ji := &joyentInstance{machine: ©, env: env}
161
instanceIds = append(instanceIds, ji.Id())
165
return instanceIds, nil
154
168
func (env *joyentEnviron) Destroy() error {
155
if err := common.Destroy(env); err != nil {
156
return errors.Trace(err)
158
return env.Storage().RemoveAll()
169
return errors.Trace(common.Destroy(env))
161
172
func (env *joyentEnviron) Ecfg() *environConfig {