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  }