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  }