github.com/rahart/packer@v0.12.2-0.20161229105310-282bb6ad370f/builder/googlecompute/driver_mock.go (about) 1 package googlecompute 2 3 import "fmt" 4 5 // DriverMock is a Driver implementation that is a mocked out so that 6 // it can be used for tests. 7 type DriverMock struct { 8 CreateImageName string 9 CreateImageDesc string 10 CreateImageFamily string 11 CreateImageZone string 12 CreateImageDisk string 13 CreateImageResultLicenses []string 14 CreateImageResultProjectId string 15 CreateImageResultSelfLink string 16 CreateImageResultSizeGb int64 17 CreateImageErrCh <-chan error 18 CreateImageResultCh <-chan *Image 19 20 DeleteImageName string 21 DeleteImageErrCh <-chan error 22 23 DeleteInstanceZone string 24 DeleteInstanceName string 25 DeleteInstanceErrCh <-chan error 26 DeleteInstanceErr error 27 28 DeleteDiskZone string 29 DeleteDiskName string 30 DeleteDiskErrCh <-chan error 31 DeleteDiskErr error 32 33 GetImageName string 34 GetImageFromFamily bool 35 GetImageResult *Image 36 GetImageErr error 37 38 GetImageFromProjectProject string 39 GetImageFromProjectName string 40 GetImageFromProjectFromFamily bool 41 GetImageFromProjectResult *Image 42 GetImageFromProjectErr error 43 44 GetInstanceMetadataZone string 45 GetInstanceMetadataName string 46 GetInstanceMetadataKey string 47 GetInstanceMetadataResult string 48 GetInstanceMetadataErr error 49 50 GetNatIPZone string 51 GetNatIPName string 52 GetNatIPResult string 53 GetNatIPErr error 54 55 GetInternalIPZone string 56 GetInternalIPName string 57 GetInternalIPResult string 58 GetInternalIPErr error 59 60 GetSerialPortOutputZone string 61 GetSerialPortOutputName string 62 GetSerialPortOutputResult string 63 GetSerialPortOutputErr error 64 65 ImageExistsName string 66 ImageExistsResult bool 67 68 RunInstanceConfig *InstanceConfig 69 RunInstanceErrCh <-chan error 70 RunInstanceErr error 71 72 CreateOrResetWindowsPasswordZone string 73 CreateOrResetWindowsPasswordInstance string 74 CreateOrResetWindowsPasswordConfig *WindowsPasswordConfig 75 CreateOrResetWindowsPasswordErr error 76 CreateOrResetWindowsPasswordErrCh <-chan error 77 78 WaitForInstanceState string 79 WaitForInstanceZone string 80 WaitForInstanceName string 81 WaitForInstanceErrCh <-chan error 82 } 83 84 func (d *DriverMock) CreateImage(name, description, family, zone, disk string) (<-chan *Image, <-chan error) { 85 d.CreateImageName = name 86 d.CreateImageDesc = description 87 d.CreateImageFamily = family 88 d.CreateImageZone = zone 89 d.CreateImageDisk = disk 90 if d.CreateImageResultProjectId == "" { 91 d.CreateImageResultProjectId = "test" 92 } 93 if d.CreateImageResultSelfLink == "" { 94 d.CreateImageResultSelfLink = fmt.Sprintf( 95 "http://content.googleapis.com/compute/v1/%s/global/licenses/test", 96 d.CreateImageResultProjectId) 97 } 98 if d.CreateImageResultSizeGb == 0 { 99 d.CreateImageResultSizeGb = 10 100 } 101 102 resultCh := d.CreateImageResultCh 103 if resultCh == nil { 104 ch := make(chan *Image, 1) 105 ch <- &Image{ 106 Licenses: d.CreateImageResultLicenses, 107 Name: name, 108 ProjectId: d.CreateImageResultProjectId, 109 SelfLink: d.CreateImageResultSelfLink, 110 SizeGb: d.CreateImageResultSizeGb, 111 } 112 close(ch) 113 resultCh = ch 114 } 115 116 errCh := d.CreateImageErrCh 117 if errCh == nil { 118 ch := make(chan error) 119 close(ch) 120 errCh = ch 121 } 122 123 return resultCh, errCh 124 } 125 126 func (d *DriverMock) DeleteImage(name string) <-chan error { 127 d.DeleteImageName = name 128 129 resultCh := d.DeleteImageErrCh 130 if resultCh == nil { 131 ch := make(chan error) 132 close(ch) 133 resultCh = ch 134 } 135 136 return resultCh 137 } 138 139 func (d *DriverMock) DeleteInstance(zone, name string) (<-chan error, error) { 140 d.DeleteInstanceZone = zone 141 d.DeleteInstanceName = name 142 143 resultCh := d.DeleteInstanceErrCh 144 if resultCh == nil { 145 ch := make(chan error) 146 close(ch) 147 resultCh = ch 148 } 149 150 return resultCh, d.DeleteInstanceErr 151 } 152 153 func (d *DriverMock) DeleteDisk(zone, name string) (<-chan error, error) { 154 d.DeleteDiskZone = zone 155 d.DeleteDiskName = name 156 157 resultCh := d.DeleteDiskErrCh 158 if resultCh == nil { 159 ch := make(chan error) 160 close(ch) 161 resultCh = ch 162 } 163 164 return resultCh, d.DeleteDiskErr 165 } 166 167 func (d *DriverMock) GetImage(name string, fromFamily bool) (*Image, error) { 168 d.GetImageName = name 169 d.GetImageFromFamily = fromFamily 170 return d.GetImageResult, d.GetImageErr 171 } 172 173 func (d *DriverMock) GetImageFromProject(project, name string, fromFamily bool) (*Image, error) { 174 d.GetImageFromProjectProject = project 175 d.GetImageFromProjectName = name 176 d.GetImageFromProjectFromFamily = fromFamily 177 return d.GetImageFromProjectResult, d.GetImageFromProjectErr 178 } 179 180 func (d *DriverMock) GetInstanceMetadata(zone, name, key string) (string, error) { 181 d.GetInstanceMetadataZone = zone 182 d.GetInstanceMetadataName = name 183 d.GetInstanceMetadataKey = key 184 return d.GetInstanceMetadataResult, d.GetInstanceMetadataErr 185 } 186 187 func (d *DriverMock) GetNatIP(zone, name string) (string, error) { 188 d.GetNatIPZone = zone 189 d.GetNatIPName = name 190 return d.GetNatIPResult, d.GetNatIPErr 191 } 192 193 func (d *DriverMock) GetInternalIP(zone, name string) (string, error) { 194 d.GetInternalIPZone = zone 195 d.GetInternalIPName = name 196 return d.GetInternalIPResult, d.GetInternalIPErr 197 } 198 199 func (d *DriverMock) GetSerialPortOutput(zone, name string) (string, error) { 200 d.GetSerialPortOutputZone = zone 201 d.GetSerialPortOutputName = name 202 return d.GetSerialPortOutputResult, d.GetSerialPortOutputErr 203 } 204 205 func (d *DriverMock) ImageExists(name string) bool { 206 d.ImageExistsName = name 207 return d.ImageExistsResult 208 } 209 210 func (d *DriverMock) RunInstance(c *InstanceConfig) (<-chan error, error) { 211 d.RunInstanceConfig = c 212 213 resultCh := d.RunInstanceErrCh 214 if resultCh == nil { 215 ch := make(chan error) 216 close(ch) 217 resultCh = ch 218 } 219 220 return resultCh, d.RunInstanceErr 221 } 222 223 func (d *DriverMock) WaitForInstance(state, zone, name string) <-chan error { 224 d.WaitForInstanceState = state 225 d.WaitForInstanceZone = zone 226 d.WaitForInstanceName = name 227 228 resultCh := d.WaitForInstanceErrCh 229 if resultCh == nil { 230 ch := make(chan error) 231 close(ch) 232 resultCh = ch 233 } 234 235 return resultCh 236 } 237 238 func (d *DriverMock) GetWindowsPassword() (string, error) { 239 return "", nil 240 } 241 242 func (d *DriverMock) CreateOrResetWindowsPassword(instance, zone string, c *WindowsPasswordConfig) (<-chan error, error) { 243 244 d.CreateOrResetWindowsPasswordInstance = instance 245 d.CreateOrResetWindowsPasswordZone = zone 246 d.CreateOrResetWindowsPasswordConfig = c 247 248 c.password = "MOCK_PASSWORD" 249 250 resultCh := d.CreateOrResetWindowsPasswordErrCh 251 if resultCh == nil { 252 ch := make(chan error) 253 close(ch) 254 resultCh = ch 255 } 256 257 return resultCh, d.CreateOrResetWindowsPasswordErr 258 }