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  }