Permalink
Browse files

Removed storage from joyent.

  • Loading branch information...
1 parent 37b19e6 commit 104e75494e9fc97cb2a0084b4384936abcee9622 @perrito666 perrito666 committed Feb 22, 2016
@@ -119,17 +119,6 @@ func (t configTest) check(c *gc.C) {
c.Check(actual, gc.Equals, expect)
}
- // check storage bucket is configured correctly
- env := e.(*environ)
- c.Assert(env.Storage().(*ec2storage).bucket.Region.Name, gc.Equals, ecfg.region())
-
- expectedStorage := "ebs"
- if t.blockStorageSource != "" {
- expectedStorage = t.blockStorageSource
- }
- storage, ok := ecfg.StorageDefaultBlockSource()
- c.Assert(ok, jc.IsTrue)
- c.Assert(storage, gc.Equals, expectedStorage)
}
var configTests = []configTest{
View
@@ -32,7 +32,6 @@ import (
"github.com/juju/juju/network"
"github.com/juju/juju/provider/common"
"github.com/juju/juju/state"
- "github.com/juju/juju/state/multiwatcher"
"github.com/juju/juju/tools"
)
@@ -188,24 +187,10 @@ func (e *environ) ec2() *ec2.EC2 {
return ec2
}
-func (e *environ) s3() *s3.S3 {
- e.ecfgMutex.Lock()
- s3 := e.s3Unlocked
- e.ecfgMutex.Unlock()
- return s3
-}
-
func (e *environ) Name() string {
return e.name
}
-func (e *environ) Storage() envstorage.Storage {
- e.ecfgMutex.Lock()
- stor := e.storageUnlocked
- e.ecfgMutex.Unlock()
- return stor
-}
-
func (e *environ) Bootstrap(ctx environs.BootstrapContext, args environs.BootstrapParams) (*environs.BootstrapResult, error) {
return common.Bootstrap(ctx, e, args)
}
@@ -218,8 +203,8 @@ func (e *environ) ControllerInstances() ([]instance.Id, error) {
filter := ec2.NewFilter()
filter.Add("instance-state-name", "pending", "running")
- filter.Add(fmt.Sprintf("tag.%s", tags.JujuModel), eUUID)
- filter.Add(fmt.Sprintf("tag.%s", tags.JujuController), "true")
+ filter.Add(fmt.Sprintf("tag:%s", tags.JujuModel), eUUID)
+ filter.Add(fmt.Sprintf("tag:%s", tags.JujuController), "true")
err := e.addGroupFilter(filter)
if err != nil {
if ec2ErrCode(err) == "InvalidGroup.NotFound" {
@@ -685,12 +670,6 @@ func (e *environ) StartInstance(args environs.StartInstanceParams) (_ *environs.
}
}
- if multiwatcher.AnyJobNeedsState(args.InstanceConfig.Jobs...) {
- if err := common.AddStateInstance(e.Storage(), inst.Id()); err != nil {
- return nil, errors.Annotate(err, "recording instance in provider-state")
- }
- }
-
hc := instance.HardwareCharacteristics{
Arch: &spec.Image.Arch,
Mem: &spec.InstanceType.Mem,
@@ -779,10 +758,7 @@ func _runInstances(e *ec2.EC2, ri *ec2.RunInstances) (resp *ec2.RunInstancesResp
}
func (e *environ) StopInstances(ids ...instance.Id) error {
- if err := e.terminateInstances(ids); err != nil {
- return errors.Trace(err)
- }
- return common.RemoveStateInstances(e.Storage(), ids...)
+ return errors.Trace(e.terminateInstances(ids))
}
// groupInfoByName returns information on the security group
@@ -1244,10 +1220,12 @@ func (e *environ) Destroy() error {
if err := common.Destroy(e); err != nil {
return errors.Trace(err)
}
+
if err := e.cleanEnvironmentSecurityGroup(); err != nil {
logger.Warningf("cannot delete default security group: %v", err)
}
- return e.Storage().RemoveAll()
+
+ return nil
}
func portsToIPPerms(ports []network.PortRange) []ec2.IPPerm {
@@ -43,10 +43,6 @@ func EnvironEC2(e environs.Environ) *ec2.EC2 {
return e.(*environ).ec2()
}
-func EnvironS3(e environs.Environ) *s3.S3 {
- return e.(*environ).s3()
-}
-
func InstanceEC2(inst instance.Instance) *ec2.Instance {
return inst.(*ec2Instance).Instance
}
View
@@ -7,7 +7,6 @@ import (
"crypto/rand"
"fmt"
"io"
- "strings"
jc "github.com/juju/testing/checkers"
"github.com/juju/utils/arch"
@@ -139,6 +138,24 @@ func (t *LiveTests) TestStartInstanceConstraints(c *gc.C) {
c.Assert(*hc.CpuPower, gc.Equals, uint64(650))
}
+func (t *LiveTests) TestControllerInstances(c *gc.C) {
+ t.BootstrapOnce(c)
+ allInsts, err := t.Env.AllInstances()
+ c.Assert(err, jc.ErrorIsNil)
+ c.Assert(allInsts, gc.HasLen, 1) // bootstrap instance
+ bootstrapInstId := allInsts[0].Id()
+
+ inst0, _ := testing.AssertStartInstance(c, t.Env, "98")
+ defer t.Env.StopInstances(inst0.Id())
+
+ inst1, _ := testing.AssertStartInstance(c, t.Env, "99")
+ defer t.Env.StopInstances(inst1.Id())
+
+ insts, err := t.Env.ControllerInstances()
+ c.Assert(err, jc.ErrorIsNil)
+ c.Assert(insts, gc.DeepEquals, []instance.Id{bootstrapInstId})
+}
+
func (t *LiveTests) TestInstanceGroups(c *gc.C) {
t.BootstrapOnce(c)
allInsts, err := t.Env.AllInstances()
@@ -350,32 +367,6 @@ func (t *LiveTests) TestStopInstances(c *gc.C) {
}
}
-func (t *LiveTests) TestPutBucketOnlyOnce(c *gc.C) {
- t.PrepareOnce(c)
- s3inst := ec2.EnvironS3(t.Env)
- b, err := s3inst.Bucket("test-once-" + uniqueName)
- c.Assert(err, jc.ErrorIsNil)
- s := ec2.BucketStorage(b)
-
- // Check that we don't do a PutBucket every time by
- // getting it to create the bucket, destroying the bucket behind
- // the scenes, and trying to put another object,
- // which should fail because it doesn't try to do
- // the PutBucket again.
-
- err = s.Put("test-object", strings.NewReader("test"), 4)
- c.Assert(err, jc.ErrorIsNil)
-
- err = s.Remove("test-object")
- c.Assert(err, jc.ErrorIsNil)
-
- err = ec2.DeleteBucket(s)
- c.Assert(err, jc.ErrorIsNil)
-
- err = s.Put("test-object", strings.NewReader("test"), 4)
- c.Assert(err, gc.ErrorMatches, ".*The specified bucket does not exist")
-}
-
// createGroup creates a new EC2 group and returns it. If it already exists,
// it revokes all its permissions and returns the existing group.
func createGroup(c *gc.C, ec2conn *amzec2.EC2, name, descr string) amzec2.SecurityGroup {
View
@@ -5,16 +5,18 @@ package joyent
import (
"fmt"
+ "strings"
"sync"
+ "github.com/joyent/gosdc/cloudapi"
"github.com/juju/errors"
"github.com/juju/juju/constraints"
"github.com/juju/juju/environs"
"github.com/juju/juju/environs/config"
"github.com/juju/juju/environs/imagemetadata"
"github.com/juju/juju/environs/simplestreams"
- "github.com/juju/juju/environs/storage"
+ "github.com/juju/juju/environs/tags"
"github.com/juju/juju/instance"
"github.com/juju/juju/provider/common"
"github.com/juju/juju/state"
@@ -39,7 +41,6 @@ type joyentEnviron struct {
// affected fields.
lock sync.Mutex
ecfg *environConfig
- storage storage.Storage
compute *joyentCompute
}
@@ -54,10 +55,6 @@ func newEnviron(cfg *config.Config) (*joyentEnviron, error) {
}
env.name = cfg.Name()
var err error
- env.storage, err = newStorage(env.ecfg, "")
- if err != nil {
- return nil, err
- }
env.compute, err = newCompute(env.ecfg)
if err != nil {
return nil, err
@@ -139,23 +136,36 @@ func (env *joyentEnviron) Config() *config.Config {
return env.getSnapshot().ecfg.Config
}
-func (env *joyentEnviron) Storage() storage.Storage {
- return env.getSnapshot().storage
-}
-
func (env *joyentEnviron) Bootstrap(ctx environs.BootstrapContext, args environs.BootstrapParams) (*environs.BootstrapResult, error) {
return common.Bootstrap(ctx, env, args)
}
func (env *joyentEnviron) ControllerInstances() ([]instance.Id, error) {
- return common.ProviderStateInstances(env, env.Storage())
+ instanceIds := []instance.Id{}
+
+ filter := cloudapi.NewFilter()
+ filter.Set("tag.group", "juju")
+ filter.Set("tag.env", env.Config().Name())
+ filter.Set(fmt.Sprintf("tag.%s", tags.JujuController), "true")
+
+ machines, err := env.compute.cloudapi.ListMachines(filter)
+ if err != nil || len(machines) == 0 {
+ return nil, environs.ErrNotBootstrapped
+ }
+
+ for _, m := range machines {
+ if strings.EqualFold(m.State, "provisioning") || strings.EqualFold(m.State, "running") {
+ copy := m
+ ji := &joyentInstance{machine: &copy, env: env}
+ instanceIds = append(instanceIds, ji.Id())
+ }
+ }
+
+ return instanceIds, nil
}
func (env *joyentEnviron) Destroy() error {
- if err := common.Destroy(env); err != nil {
- return errors.Trace(err)
- }
- return env.Storage().RemoveAll()
+ return errors.Trace(common.Destroy(env))
}
func (env *joyentEnviron) Ecfg() *environConfig {
@@ -23,8 +23,6 @@ import (
"github.com/juju/juju/environs/imagemetadata"
"github.com/juju/juju/environs/instances"
"github.com/juju/juju/instance"
- "github.com/juju/juju/provider/common"
- "github.com/juju/juju/state/multiwatcher"
"github.com/juju/juju/tools"
)
@@ -179,12 +177,6 @@ func (env *joyentEnviron) StartInstance(args environs.StartInstanceParams) (*env
env: env,
}
- if multiwatcher.AnyJobNeedsState(args.InstanceConfig.Jobs...) {
- if err := common.AddStateInstance(env.Storage(), inst.Id()); err != nil {
- logger.Errorf("could not record instance in provider-state: %v", err)
- }
- }
-
disk64 := uint64(machine.Disk)
hc := instance.HardwareCharacteristics{
Arch: &spec.Image.Arch,
@@ -278,7 +270,7 @@ func (env *joyentEnviron) StopInstances(ids ...instance.Id) error {
return errors.Annotate(err, "cannot stop all instances")
default:
}
- return common.RemoveStateInstances(env.Storage(), ids...)
+ return nil
}
func (env *joyentEnviron) stopInstance(id string) error {
@@ -180,11 +180,6 @@ func FindInstanceSpec(
return
}
-func ControlBucketName(e environs.Environ) string {
- env := e.(*joyentEnviron)
- return env.Storage().(*JoyentStorage).GetContainerName()
-}
-
func CreateContainer(s *JoyentStorage) error {
return s.createContainer()
}

0 comments on commit 104e754

Please sign in to comment.