github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/gce/upgrades_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package gce_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/environs" 11 "github.com/juju/juju/provider/gce" 12 "github.com/juju/juju/provider/gce/google" 13 ) 14 15 type environUpgradeSuite struct { 16 gce.BaseSuite 17 } 18 19 var _ = gc.Suite(&environUpgradeSuite{}) 20 21 func (s *environUpgradeSuite) TestEnvironImplementsUpgrader(c *gc.C) { 22 c.Assert(s.Env, gc.Implements, new(environs.Upgrader)) 23 } 24 25 func (s *environUpgradeSuite) TestEnvironUpgradeOperationsInvalidCredentialError(c *gc.C) { 26 s.FakeConn.Err = gce.InvalidCredentialError 27 c.Assert(s.InvalidatedCredentials, jc.IsFalse) 28 ops := s.Env.UpgradeOperations(s.CallCtx, environs.UpgradeOperationsParams{}) 29 err := ops[0].Steps[0].Run(s.CallCtx) 30 c.Assert(err, gc.NotNil) 31 c.Assert(s.InvalidatedCredentials, jc.IsTrue) 32 } 33 34 func (s *environUpgradeSuite) TestEnvironUpgradeOperations(c *gc.C) { 35 ops := s.Env.UpgradeOperations(s.CallCtx, environs.UpgradeOperationsParams{}) 36 c.Assert(ops, gc.HasLen, 1) 37 c.Assert(ops[0].TargetVersion, gc.Equals, 1) 38 c.Assert(ops[0].Steps, gc.HasLen, 1) 39 c.Assert(ops[0].Steps[0].Description(), gc.Equals, "Set disk labels") 40 } 41 42 func (s *environUpgradeSuite) TestEnvironUpgradeOperationSetDiskLabels(c *gc.C) { 43 delete(s.BaseDisk.Labels, "juju-model-uuid") 44 delete(s.BaseDisk.Labels, "juju-controller-uuid") 45 s.FakeConn.GoogleDisks = []*google.Disk{s.BaseDisk} 46 47 op0 := s.Env.UpgradeOperations(s.CallCtx, environs.UpgradeOperationsParams{ 48 ControllerUUID: "yup", 49 })[0] 50 c.Assert(op0.Steps[0].Run(s.CallCtx), jc.ErrorIsNil) 51 52 setDiskLabelsCalled, calls := s.FakeConn.WasCalled("SetDiskLabels") 53 c.Assert(setDiskLabelsCalled, jc.IsTrue) 54 c.Check(calls, gc.HasLen, 1) 55 c.Check(calls[0].ID, gc.Equals, s.BaseDisk.Name) 56 c.Check(calls[0].ZoneName, gc.Equals, "home-zone") 57 c.Check(calls[0].LabelFingerprint, gc.Equals, "foo") 58 c.Check(calls[0].Labels, jc.DeepEquals, map[string]string{ 59 "juju-controller-uuid": "yup", 60 "juju-model-uuid": s.Env.Config().UUID(), 61 "yodel": "eh", 62 }) 63 } 64 65 func (s *environUpgradeSuite) TestEnvironUpgradeOperationSetDiskLabelsNoDescription(c *gc.C) { 66 delete(s.BaseDisk.Labels, "juju-model-uuid") 67 delete(s.BaseDisk.Labels, "juju-controller-uuid") 68 s.BaseDisk.Description = "" 69 s.FakeConn.GoogleDisks = []*google.Disk{s.BaseDisk} 70 71 op0 := s.Env.UpgradeOperations(s.CallCtx, environs.UpgradeOperationsParams{ 72 ControllerUUID: "yup", 73 })[0] 74 c.Assert(op0.Steps[0].Run(s.CallCtx), jc.ErrorIsNil) 75 76 setDiskLabelsCalled, _ := s.FakeConn.WasCalled("SetDiskLabels") 77 c.Assert(setDiskLabelsCalled, jc.IsTrue) 78 } 79 80 func (s *environUpgradeSuite) TestEnvironUpgradeOperationSetDiskLabelsIdempotent(c *gc.C) { 81 // s.BaseDisk is already labelled appropriately, 82 // so we should not see a call to SetDiskLabels. 83 s.FakeConn.GoogleDisks = []*google.Disk{s.BaseDisk} 84 85 op0 := s.Env.UpgradeOperations(s.CallCtx, environs.UpgradeOperationsParams{ 86 ControllerUUID: "yup", 87 })[0] 88 c.Assert(op0.Steps[0].Run(s.CallCtx), jc.ErrorIsNil) 89 90 setDiskLabelsCalled, _ := s.FakeConn.WasCalled("SetDiskLabels") 91 c.Assert(setDiskLabelsCalled, jc.IsFalse) 92 }