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  }