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  }