123 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Package runtime is a service runtime manager
 | |
| package runtime
 | |
| 
 | |
| import (
 | |
| 	"errors"
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	ErrAlreadyExists   = errors.New("already exists")
 | |
| 	ErrInvalidResource = errors.New("invalid resource")
 | |
| 	ErrNotFound        = errors.New("not found")
 | |
| )
 | |
| 
 | |
| // Runtime is a service runtime manager
 | |
| type Runtime interface {
 | |
| 	// Init initializes runtime
 | |
| 	Init(...Option) error
 | |
| 	// Create a resource
 | |
| 	Create(Resource, ...CreateOption) error
 | |
| 	// Read a resource
 | |
| 	Read(...ReadOption) ([]*Service, error)
 | |
| 	// Update a resource
 | |
| 	Update(Resource, ...UpdateOption) error
 | |
| 	// Delete a resource
 | |
| 	Delete(Resource, ...DeleteOption) error
 | |
| 	// Logs returns the logs for a resource
 | |
| 	Logs(Resource, ...LogsOption) (Logs, error)
 | |
| 	// Stop shuts down the runtime
 | |
| 	Stop() error
 | |
| 	// String defines the runtime implementation
 | |
| 	String() string
 | |
| }
 | |
| 
 | |
| // Logs returns a log stream
 | |
| type Logs interface {
 | |
| 	Error() error
 | |
| 	Chan() chan Log
 | |
| 	Stop() error
 | |
| }
 | |
| 
 | |
| // Log is a log message
 | |
| type Log struct {
 | |
| 	Message  string
 | |
| 	Metadata map[string]string
 | |
| }
 | |
| 
 | |
| // EventType defines schedule event
 | |
| type EventType int
 | |
| 
 | |
| const (
 | |
| 	// Create is emitted when a new build has been craeted
 | |
| 	Create EventType = iota
 | |
| 	// Update is emitted when a new update become available
 | |
| 	Update
 | |
| 	// Delete is emitted when a build has been deleted
 | |
| 	Delete
 | |
| )
 | |
| 
 | |
| // String returns human readable event type
 | |
| func (t EventType) String() string {
 | |
| 	switch t {
 | |
| 	case Create:
 | |
| 		return "create"
 | |
| 	case Delete:
 | |
| 		return "delete"
 | |
| 	case Update:
 | |
| 		return "update"
 | |
| 	default:
 | |
| 		return "unknown"
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Event is notification event
 | |
| type Event struct {
 | |
| 	// ID of the event
 | |
| 	ID string
 | |
| 	// Type is event type
 | |
| 	Type EventType
 | |
| 	// Timestamp is event timestamp
 | |
| 	Timestamp time.Time
 | |
| 	// Service the event relates to
 | |
| 	Service *Service
 | |
| 	// Options to use when processing the event
 | |
| 	Options *CreateOptions
 | |
| }
 | |
| 
 | |
| // ServiceStatus defines service statuses
 | |
| type ServiceStatus int
 | |
| 
 | |
| const (
 | |
| 	// Unknown indicates the status of the service is not known
 | |
| 	Unknown ServiceStatus = iota
 | |
| 	// Pending is the initial status of a service
 | |
| 	Pending
 | |
| 	// Building is the status when the service is being built
 | |
| 	Building
 | |
| 	// Starting is the status when the service has been started but is not yet ready to accept traffic
 | |
| 	Starting
 | |
| 	// Running is the status when the service is active and accepting traffic
 | |
| 	Running
 | |
| 	// Stopping is the status when a service is stopping
 | |
| 	Stopping
 | |
| 	// Stopped is the status when a service has been stopped or has completed
 | |
| 	Stopped
 | |
| 	// Error is the status when an error occured, this could be a build error or a run error. The error
 | |
| 	// details can be found within the service's metadata
 | |
| 	Error
 | |
| )
 | |
| 
 | |
| // Resources which are allocated to a serivce
 | |
| type Resources struct {
 | |
| 	// CPU is the maximum amount of CPU the service will be allocated (unit millicpu)
 | |
| 	// e.g. 0.25CPU would be passed as 250
 | |
| 	CPU int
 | |
| 	// Mem is the maximum amount of memory the service will be allocated (unit mebibyte)
 | |
| 	// e.g. 128 MiB of memory would be passed as 128
 | |
| 	Mem int
 | |
| 	// Disk is the maximum amount of disk space the service will be allocated (unit mebibyte)
 | |
| 	// e.g. 128 MiB of memory would be passed as 128
 | |
| 	Disk int
 | |
| }
 |