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