func GetChaincodePackageBytes(pr *platforms.Registry, spec *pb.ChaincodeSpec) ([]byte, error)
GetChaincodePackageBytes creates bytes for docker container generation using the supplied chaincode specification
type Builder interface { Build() (io.Reader, error) }
ExitedFunc is the prototype for the function called when a container exits.
type ExitedFunc func(exitCode int, err error)
PlatformBuilder implements the Build interface using the platforms package GenerateDockerBuild function. XXX This is a pretty awkward spot for the builder, it should really probably be pushed into the dockercontroller, as it only builds docker images, but, doing so would require contaminating the dockercontroller package with the CDS, which is also undesirable.
type PlatformBuilder struct { Type string Path string Name string Version string CodePackage []byte PlatformRegistry *platforms.Registry }
func (b *PlatformBuilder) Build() (io.Reader, error)
Build a tar stream based on the CDS
StartContainerReq - properties for starting a container.
type StartContainerReq struct { ccintf.CCID Builder Builder Args []string Env []string FilesToUpload map[string][]byte }
func (si StartContainerReq) Do(v VM) error
func (si StartContainerReq) GetCCID() ccintf.CCID
StopContainerReq - properties for stopping a container.
type StopContainerReq struct { ccintf.CCID Timeout uint //by default we will kill the container after stopping Dontkill bool //by default we will remove the container after killing Dontremove bool }
func (si StopContainerReq) Do(v VM) error
func (si StopContainerReq) GetCCID() ccintf.CCID
VM is an abstract virtual image for supporting arbitrary virtual machines
type VM interface { Start(ccid ccintf.CCID, args []string, env []string, filesToUpload map[string][]byte, builder Builder) error Stop(ccid ccintf.CCID, timeout uint, dontkill bool, dontremove bool) error Wait(ccid ccintf.CCID) (int, error) HealthCheck(context.Context) error }
VMCReq - all requests should implement this interface. The context should be passed and tested at each layer till we stop note that we'd stop on the first method on the stack that does not take context
type VMCReq interface { Do(v VM) error GetCCID() ccintf.CCID }
VMController - manages VMs
. abstract construction of different types of VMs (we only care about Docker for now) . manage lifecycle of VM (start with build, start, stop ... eventually probably need fine grained management)
type VMController struct { sync.RWMutex // contains filtered or unexported fields }
func NewVMController(vmProviders map[string]VMProvider) *VMController
NewVMController creates a new instance of VMController
func (vmc *VMController) Process(vmtype string, req VMCReq) error
type VMProvider interface { NewVM() VM }
WaitContainerReq provides the chaincode ID of the container to wait on and a callback to call upon chaincode termination.
type WaitContainerReq struct { CCID ccintf.CCID Exited ExitedFunc }
func (w WaitContainerReq) Do(v VM) error
func (w WaitContainerReq) GetCCID() ccintf.CCID
Name | Synopsis |
---|---|
.. | |
ccintf | |
dockercontroller | |
mock | Code generated by counterfeiter. |
inproccontroller | |
mock | Code generated by counterfeiter. |
util |