github.phpd.cn/hashicorp/packer@v1.3.2/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 CreateImageLicenses []string 13 CreateImageZone string 14 CreateImageDisk 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, image_licenses []string) (<-chan *Image, <-chan error) { 86 d.CreateImageName = name 87 d.CreateImageDesc = description 88 d.CreateImageFamily = family 89 d.CreateImageLabels = image_labels 90 d.CreateImageLicenses = image_licenses 91 d.CreateImageZone = zone 92 d.CreateImageDisk = disk 93 if d.CreateImageResultProjectId == "" { 94 d.CreateImageResultProjectId = "test" 95 } 96 if d.CreateImageResultSelfLink == "" { 97 d.CreateImageResultSelfLink = fmt.Sprintf( 98 "http://content.googleapis.com/compute/v1/%s/global/licenses/test", 99 d.CreateImageResultProjectId) 100 } 101 if d.CreateImageResultSizeGb == 0 { 102 d.CreateImageResultSizeGb = 10 103 } 104 105 resultCh := d.CreateImageResultCh 106 if resultCh == nil { 107 ch := make(chan *Image, 1) 108 ch <- &Image{ 109 Labels: d.CreateImageLabels, 110 Licenses: d.CreateImageLicenses, 111 Name: name, 112 ProjectId: d.CreateImageResultProjectId, 113 SelfLink: d.CreateImageResultSelfLink, 114 SizeGb: d.CreateImageResultSizeGb, 115 } 116 close(ch) 117 resultCh = ch 118 } 119 120 errCh := d.CreateImageErrCh 121 if errCh == nil { 122 ch := make(chan error) 123 close(ch) 124 errCh = ch 125 } 126 127 return resultCh, errCh 128 } 129 130 func (d *DriverMock) DeleteImage(name string) <-chan error { 131 d.DeleteImageName = name 132 133 resultCh := d.DeleteImageErrCh 134 if resultCh == nil { 135 ch := make(chan error) 136 close(ch) 137 resultCh = ch 138 } 139 140 return resultCh 141 } 142 143 func (d *DriverMock) DeleteInstance(zone, name string) (<-chan error, error) { 144 d.DeleteInstanceZone = zone 145 d.DeleteInstanceName = name 146 147 resultCh := d.DeleteInstanceErrCh 148 if resultCh == nil { 149 ch := make(chan error) 150 close(ch) 151 resultCh = ch 152 } 153 154 return resultCh, d.DeleteInstanceErr 155 } 156 157 func (d *DriverMock) DeleteDisk(zone, name string) (<-chan error, error) { 158 d.DeleteDiskZone = zone 159 d.DeleteDiskName = name 160 161 resultCh := d.DeleteDiskErrCh 162 if resultCh == nil { 163 ch := make(chan error) 164 close(ch) 165 resultCh = ch 166 } 167 168 return resultCh, d.DeleteDiskErr 169 } 170 171 func (d *DriverMock) GetImage(name string, fromFamily bool) (*Image, error) { 172 d.GetImageName = name 173 d.GetImageFromFamily = fromFamily 174 return d.GetImageResult, d.GetImageErr 175 } 176 177 func (d *DriverMock) GetImageFromProject(project, name string, fromFamily bool) (*Image, error) { 178 d.GetImageFromProjectProject = project 179 d.GetImageFromProjectName = name 180 d.GetImageFromProjectFromFamily = fromFamily 181 return d.GetImageFromProjectResult, d.GetImageFromProjectErr 182 } 183 184 func (d *DriverMock) GetInstanceMetadata(zone, name, key string) (string, error) { 185 d.GetInstanceMetadataZone = zone 186 d.GetInstanceMetadataName = name 187 d.GetInstanceMetadataKey = key 188 return d.GetInstanceMetadataResult, d.GetInstanceMetadataErr 189 } 190 191 func (d *DriverMock) GetNatIP(zone, name string) (string, error) { 192 d.GetNatIPZone = zone 193 d.GetNatIPName = name 194 return d.GetNatIPResult, d.GetNatIPErr 195 } 196 197 func (d *DriverMock) GetInternalIP(zone, name string) (string, error) { 198 d.GetInternalIPZone = zone 199 d.GetInternalIPName = name 200 return d.GetInternalIPResult, d.GetInternalIPErr 201 } 202 203 func (d *DriverMock) GetSerialPortOutput(zone, name string) (string, error) { 204 d.GetSerialPortOutputZone = zone 205 d.GetSerialPortOutputName = name 206 return d.GetSerialPortOutputResult, d.GetSerialPortOutputErr 207 } 208 209 func (d *DriverMock) ImageExists(name string) bool { 210 d.ImageExistsName = name 211 return d.ImageExistsResult 212 } 213 214 func (d *DriverMock) RunInstance(c *InstanceConfig) (<-chan error, error) { 215 d.RunInstanceConfig = c 216 217 resultCh := d.RunInstanceErrCh 218 if resultCh == nil { 219 ch := make(chan error) 220 close(ch) 221 resultCh = ch 222 } 223 224 return resultCh, d.RunInstanceErr 225 } 226 227 func (d *DriverMock) WaitForInstance(state, zone, name string) <-chan error { 228 d.WaitForInstanceState = state 229 d.WaitForInstanceZone = zone 230 d.WaitForInstanceName = name 231 232 resultCh := d.WaitForInstanceErrCh 233 if resultCh == nil { 234 ch := make(chan error) 235 close(ch) 236 resultCh = ch 237 } 238 239 return resultCh 240 } 241 242 func (d *DriverMock) GetWindowsPassword() (string, error) { 243 return "", nil 244 } 245 246 func (d *DriverMock) CreateOrResetWindowsPassword(instance, zone string, c *WindowsPasswordConfig) (<-chan error, error) { 247 248 d.CreateOrResetWindowsPasswordInstance = instance 249 d.CreateOrResetWindowsPasswordZone = zone 250 d.CreateOrResetWindowsPasswordConfig = c 251 252 c.password = "MOCK_PASSWORD" 253 254 resultCh := d.CreateOrResetWindowsPasswordErrCh 255 if resultCh == nil { 256 ch := make(chan error) 257 close(ch) 258 resultCh = ch 259 } 260 261 return resultCh, d.CreateOrResetWindowsPasswordErr 262 }