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