github.com/Cloud-Foundations/Dominator@v0.3.4/lib/slavedriver/smallstack/api.go (about)

     1  package smallstack
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/Cloud-Foundations/Dominator/lib/log"
     7  	"github.com/Cloud-Foundations/Dominator/lib/slavedriver"
     8  	"github.com/Cloud-Foundations/Dominator/lib/srpc"
     9  	hyper_proto "github.com/Cloud-Foundations/Dominator/proto/hypervisor"
    10  )
    11  
    12  type closeRequestMessage struct {
    13  	errorChannel chan<- error
    14  }
    15  
    16  type SlaveTrader struct {
    17  	closeChannel      chan<- closeRequestMessage
    18  	hypervisorChannel <-chan *srpc.Client
    19  	logger            log.DebugLogger
    20  	options           SlaveTraderOptions
    21  }
    22  
    23  type SlaveTraderOptions struct {
    24  	CreateRequest     hyper_proto.CreateVmRequest
    25  	CreateTimeout     time.Duration // Default: 5 minutes.
    26  	DestroyTimeout    time.Duration // Default: 1 minute.
    27  	HypervisorAddress string        // Default: local Hypervisor.
    28  }
    29  
    30  func NewSlaveTrader(createRequest hyper_proto.CreateVmRequest,
    31  	logger log.DebugLogger) (*SlaveTrader, error) {
    32  	return newSlaveTrader(SlaveTraderOptions{CreateRequest: createRequest},
    33  		logger)
    34  }
    35  
    36  func NewSlaveTraderWithOptions(options SlaveTraderOptions,
    37  	logger log.DebugLogger) (*SlaveTrader, error) {
    38  	return newSlaveTrader(options, logger)
    39  }
    40  
    41  func (trader *SlaveTrader) Close() error {
    42  	return trader.close()
    43  }
    44  
    45  func (trader *SlaveTrader) CreateSlave() (slavedriver.SlaveInfo, error) {
    46  	return trader.createSlave(nil)
    47  }
    48  
    49  func (trader *SlaveTrader) CreateSlaveWithAcknowledger(
    50  	acknowledgeChannel <-chan chan<- error) (slavedriver.SlaveInfo, error) {
    51  	return trader.createSlave(acknowledgeChannel)
    52  }
    53  
    54  func (trader *SlaveTrader) DestroySlave(identifier string) error {
    55  	return trader.destroySlave(identifier)
    56  }