github.phpd.cn/hashicorp/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 }