github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/provider/gce/google/conn_disks_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package google_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	"google.golang.org/api/compute/v1"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	"github.com/juju/juju/provider/gce/google"
    12  )
    13  
    14  const fakeVolName = "home-zone--c930380d-8337-4bf5-b07a-9dbb5ae771e4"
    15  
    16  func fakeDiskAndSpec() (google.DiskSpec, *compute.Disk, error) {
    17  	spec := google.DiskSpec{
    18  		Series:             "trusty",
    19  		SizeHintGB:         1,
    20  		Name:               fakeVolName,
    21  		PersistentDiskType: google.DiskPersistentSSD,
    22  	}
    23  	fakeDisk, err := google.NewDetached(spec)
    24  	return spec, fakeDisk, err
    25  }
    26  
    27  func (s *connSuite) TestConnectionCreateDisks(c *gc.C) {
    28  	spec, _, err := fakeDiskAndSpec()
    29  	c.Check(err, jc.ErrorIsNil)
    30  
    31  	disks, err := s.Conn.CreateDisks("home-zone", []google.DiskSpec{spec})
    32  	c.Check(err, jc.ErrorIsNil)
    33  	c.Assert(disks, gc.HasLen, 1)
    34  	c.Assert(disks[0].Name, gc.Equals, fakeVolName)
    35  
    36  	c.Check(s.FakeConn.Calls, gc.HasLen, 1)
    37  	c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "CreateDisk")
    38  	c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam")
    39  	c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone")
    40  	c.Check(s.FakeConn.Calls[0].ComputeDisk.Name, gc.Equals, fakeVolName)
    41  }
    42  
    43  func (s *connSuite) TestConnectionDisks(c *gc.C) {
    44  	_, fakeDisk, err := fakeDiskAndSpec()
    45  	c.Check(err, jc.ErrorIsNil)
    46  	s.FakeConn.Disks = []*compute.Disk{fakeDisk}
    47  
    48  	disks, err := s.Conn.Disks("home-zone")
    49  	c.Check(err, jc.ErrorIsNil)
    50  	c.Assert(disks, gc.HasLen, 1)
    51  	fakeGoogleDisk := google.NewDisk(fakeDisk)
    52  	c.Assert(disks[0], gc.DeepEquals, fakeGoogleDisk)
    53  
    54  	c.Check(s.FakeConn.Calls, gc.HasLen, 1)
    55  	c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "ListDisks")
    56  	c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam")
    57  	c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone")
    58  }
    59  
    60  func (s *connSuite) TestConnectionDisk(c *gc.C) {
    61  	_, fakeDisk, err := fakeDiskAndSpec()
    62  	c.Check(err, jc.ErrorIsNil)
    63  	s.FakeConn.Disk = fakeDisk
    64  	disk, err := s.Conn.Disk("home-zone", fakeVolName)
    65  	c.Check(err, jc.ErrorIsNil)
    66  	fakeGoogleDisk := google.NewDisk(fakeDisk)
    67  	c.Assert(disk, gc.DeepEquals, fakeGoogleDisk)
    68  
    69  	c.Check(s.FakeConn.Calls, gc.HasLen, 1)
    70  	c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetDisk")
    71  	c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam")
    72  	c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone")
    73  }
    74  
    75  func (s *connSuite) TestConnectionAttachDisk(c *gc.C) {
    76  	_, fakeDisk, err := fakeDiskAndSpec()
    77  	c.Check(err, jc.ErrorIsNil)
    78  	s.FakeConn.Disk = fakeDisk
    79  	att, err := s.Conn.AttachDisk("home-zone", fakeVolName, "a-fake-instance", google.ModeRW)
    80  	c.Check(err, jc.ErrorIsNil)
    81  
    82  	c.Check(s.FakeConn.Calls, gc.HasLen, 2)
    83  	c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetDisk")
    84  	c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam")
    85  	c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone")
    86  
    87  	c.Check(s.FakeConn.Calls[1].FuncName, gc.Equals, "AttachDisk")
    88  	c.Check(s.FakeConn.Calls[1].ProjectID, gc.Equals, "spam")
    89  	c.Check(s.FakeConn.Calls[1].ZoneName, gc.Equals, "home-zone")
    90  	c.Check(s.FakeConn.Calls[1].InstanceId, gc.Equals, "a-fake-instance")
    91  	c.Check(s.FakeConn.Calls[1].AttachedDisk.DeviceName, gc.Equals, att.DeviceName)
    92  	c.Check(s.FakeConn.Calls[1].AttachedDisk.Mode, gc.Equals, string(att.Mode))
    93  
    94  }
    95  
    96  func (s *connSuite) TestConnectionDetachDisk(c *gc.C) {
    97  	_, fakeDisk, err := fakeDiskAndSpec()
    98  	c.Check(err, jc.ErrorIsNil)
    99  	s.FakeConn.Disk = fakeDisk
   100  	err = s.Conn.DetachDisk("home-zone", "a-fake-instance", fakeVolName)
   101  	c.Check(err, jc.ErrorIsNil)
   102  
   103  	c.Check(s.FakeConn.Calls, gc.HasLen, 2)
   104  	c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "GetDisk")
   105  	c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam")
   106  	c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone")
   107  
   108  	c.Check(s.FakeConn.Calls[1].FuncName, gc.Equals, "DetachDisk")
   109  	c.Check(s.FakeConn.Calls[1].ProjectID, gc.Equals, "spam")
   110  	c.Check(s.FakeConn.Calls[1].ZoneName, gc.Equals, "home-zone")
   111  	c.Check(s.FakeConn.Calls[1].InstanceId, gc.Equals, "a-fake-instance")
   112  	c.Check(s.FakeConn.Calls[1].DeviceName, gc.Equals, "home-zone-0")
   113  }
   114  
   115  func (s *connSuite) TestConnectionRemoveDisks(c *gc.C) {
   116  	err := s.Conn.RemoveDisk("home-zone", fakeVolName)
   117  	c.Check(err, jc.ErrorIsNil)
   118  
   119  	c.Check(s.FakeConn.Calls, gc.HasLen, 1)
   120  	c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "RemoveDisk")
   121  	c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam")
   122  	c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone")
   123  	c.Check(s.FakeConn.Calls[0].ID, gc.Equals, fakeVolName)
   124  }
   125  
   126  func (s *connSuite) TestConnectionInstanceDisks(c *gc.C) {
   127  	s.FakeConn.AttachedDisks = []*compute.AttachedDisk{{
   128  		Source:     "https://bogus/url/project/aproject/zone/azone/disk/" + fakeVolName,
   129  		DeviceName: "home-zone-0",
   130  		Mode:       string(google.ModeRW),
   131  	}}
   132  	disks, err := s.Conn.InstanceDisks("home-zone", "a-fake-instance")
   133  	c.Check(err, jc.ErrorIsNil)
   134  	c.Assert(disks, gc.HasLen, 1)
   135  	c.Assert(disks[0].VolumeName, gc.Equals, fakeVolName)
   136  	c.Assert(disks[0].DeviceName, gc.Equals, "home-zone-0")
   137  	c.Assert(disks[0].Mode, gc.Equals, google.ModeRW)
   138  
   139  	c.Check(s.FakeConn.Calls, gc.HasLen, 1)
   140  	c.Check(s.FakeConn.Calls[0].FuncName, gc.Equals, "InstanceDisks")
   141  	c.Check(s.FakeConn.Calls[0].ProjectID, gc.Equals, "spam")
   142  	c.Check(s.FakeConn.Calls[0].ZoneName, gc.Equals, "home-zone")
   143  	c.Check(s.FakeConn.Calls[0].InstanceId, gc.Equals, "a-fake-instance")
   144  }