github.com/angdraug/packer@v1.3.2/builder/oracle/oci/driver_mock.go (about)

     1  package oci
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/oracle/oci-go-sdk/core"
     7  )
     8  
     9  // driverMock implements the Driver interface and communicates with Oracle
    10  // OCI.
    11  type driverMock struct {
    12  	CreateInstanceID  string
    13  	CreateInstanceErr error
    14  
    15  	CreateImageID  string
    16  	CreateImageErr error
    17  
    18  	DeleteImageID  string
    19  	DeleteImageErr error
    20  
    21  	GetInstanceIPErr error
    22  
    23  	TerminateInstanceID  string
    24  	TerminateInstanceErr error
    25  
    26  	WaitForImageCreationErr error
    27  
    28  	WaitForInstanceStateErr error
    29  
    30  	cfg *Config
    31  }
    32  
    33  // CreateInstance creates a new compute instance.
    34  func (d *driverMock) CreateInstance(ctx context.Context, publicKey string) (string, error) {
    35  	if d.CreateInstanceErr != nil {
    36  		return "", d.CreateInstanceErr
    37  	}
    38  
    39  	d.CreateInstanceID = "ocid1..."
    40  
    41  	return d.CreateInstanceID, nil
    42  }
    43  
    44  // CreateImage creates a new custom image.
    45  func (d *driverMock) CreateImage(ctx context.Context, id string) (core.Image, error) {
    46  	if d.CreateImageErr != nil {
    47  		return core.Image{}, d.CreateImageErr
    48  	}
    49  	d.CreateImageID = id
    50  	return core.Image{Id: &id}, nil
    51  }
    52  
    53  // DeleteImage mocks deleting a custom image.
    54  func (d *driverMock) DeleteImage(ctx context.Context, id string) error {
    55  	if d.DeleteImageErr != nil {
    56  		return d.DeleteImageErr
    57  	}
    58  
    59  	d.DeleteImageID = id
    60  
    61  	return nil
    62  }
    63  
    64  // GetInstanceIP returns the public or private IP corresponding to the given instance id.
    65  func (d *driverMock) GetInstanceIP(ctx context.Context, id string) (string, error) {
    66  	if d.GetInstanceIPErr != nil {
    67  		return "", d.GetInstanceIPErr
    68  	}
    69  	if d.cfg.UsePrivateIP {
    70  		return "private_ip", nil
    71  	}
    72  	return "ip", nil
    73  }
    74  
    75  // TerminateInstance terminates a compute instance.
    76  func (d *driverMock) TerminateInstance(ctx context.Context, id string) error {
    77  	if d.TerminateInstanceErr != nil {
    78  		return d.TerminateInstanceErr
    79  	}
    80  
    81  	d.TerminateInstanceID = id
    82  
    83  	return nil
    84  }
    85  
    86  // WaitForImageCreation waits for a provisioning custom image to reach the
    87  // "AVAILABLE" state.
    88  func (d *driverMock) WaitForImageCreation(ctx context.Context, id string) error {
    89  	return d.WaitForImageCreationErr
    90  }
    91  
    92  // WaitForInstanceState waits for an instance to reach the a given terminal
    93  // state.
    94  func (d *driverMock) WaitForInstanceState(ctx context.Context, id string, waitStates []string, terminalState string) error {
    95  	return d.WaitForInstanceStateErr
    96  }