Categorygithub.com/768bit/firecracker-go-sdk
modulepackage
0.15.3
Repository: https://github.com/768bit/firecracker-go-sdk.git
Documentation: pkg.go.dev

# README

FORKED A basic Go interface to the Firecracker API

Build status

This package is a Go library to interact with the Firecracker API. It is designed as an abstraction of the OpenAPI-generated client that allows for convenient manipulation of Firecracker VM from Go programs.

There are some Firecracker features that are not yet supported by the SDK. These are tracked as GitHub issues with the firecracker-feature label . Contributions to address missing features are welcomed.

Developing

Please see HACKING

Building

This library requires Go 1.11 and Go modules to build. A Makefile is provided for convenience, but is not required. When using the Makefile, you can pass additional flags to the Go compiler via the EXTRAGOARGS make variable.

Tools

There's a firectl tool that provides a simple command-line interface to launching a firecracker VM. It also serves as an example client of this SDK.

Network configuration

Firecracker, by design, only supports Linux tap devices. The SDK provides facilities to attach a tap device to the Firecracker VM, but the client is responsible for further configuration.

Questions?

Please use GitHub issues to report problems, discuss roadmap items, or make feature requests.

If you've discovered an issue that may have security implications to users or developers of this software, please do not report it using GitHub issues, but instead follow Firecracker's security reporting guidelines.

Other discussion: For general discussion, please join us in the #general channel on the Firecracker Slack.

License

This library is licensed under the Apache 2.0 License.

# Packages

No description provided by the author
No description provided by the author

# Functions

Bool will return a pointer value of the given parameter.
BoolValue will return a boolean value.
Int will return a pointer value of the given parameters.
Int64 will return a pointer value of the given parameter.
Int64Value will return an int64 value.
IntValue will return an int value.
LinkFilesHandler creates a new link files handler that will link files to the rootfs.
NewClient creates a Client.
NewDrivesBuilder will return a new DrivesBuilder with a given rootfs.
NewJailerCommandBuilder will return a new jailer command builder with the proper default value initialized.
NewMachine initializes a new Machine instance and performs validation of the provided Config.
NewNaiveChrootStrategy returns a new NaivceChrootStrategy.
NewRateLimiter will construct a new RateLimiter with given parameters.
NewSetMetadataHandler is a named handler that puts the metadata into the firecracker process.
NewUnixSocketTransport creates a new clientTransport configured at the specified Unix socketPath.
String will return a pointer value of the given parameter.
StringValue will return a string value.
WithClient will use the client in place rather than the client constructed during bootstrapping of the machine.
WithLogger will allow for the Machine to use the provided logger.
WithOpsClient will return a functional option and replace the operations client.
WithProcessRunner will allow for a specific command to be run instead of the default firecracker command.

# Constants

Handler name constants.
Handler name constants.
Handler name constants.
Handler name constants.
Handler name constants.
Handler name constants.
Handler name constants.
Handler name constants.
SeccompLevelAdvanced adds further checks on some of the parameters of the allowed syscalls.
SeccompLevelBasic prohibits syscalls not whitelisted by Firecracker.
SeccompLevelDisable is the default value.
Handler name constants.
Handler name constants.
Handler name constants.
Handler name constants.
Version represents the current version of the SDK.

# Variables

AddVsocksHandler is a named handler that adds vsocks to the firecracker process.
AttachDrivesHandler is a named handler that will attach all drives for the firecracker process.
BootstrapLoggingHandler is a named handler that will set up fifo logging of firecracker process.
ConfigValidationHandler is used to validate that required fields are present.
CreateBootSourceHandler is a named handler that will set up the booting process of the firecracker process.
CreateLogFilesHandler is a named handler that will create the fifo log files.
CreateMachineHandler is a named handler that will "create" the machine and upload any necessary configuration to the firecracker process.
CreateNetworkInterfacesHandler is a named handler that sets up network interfaces to the firecracker process.
ErrAlreadyStarted signifies that the Machine has already started and cannot be started again.
ErrRequiredHandlerMissing occurs when a required handler is not present in the handler list.
JailerConfigValidationHandler is used to validate that required fields are present.
StartVMMHandler is a named handler that will handle starting of the VMM.

# Structs

Client is a client for interacting with the Firecracker API.
Config is a collection of user-configurable VMM settings.
DrivesBuilder is a builder that will build an array of drives used to set up the firecracker microVM.
Handler represents a named handler that contains a name and a function which is used to execute during the initialization process of a machine.
HandlerList represents a list of named handler that can be used to execute a flow of instructions for a given machine.
Handlers is a container that houses categories of handler lists.
JailerCommandBuilder will build a jailer command.
JailerConfig is jailer specific configuration needed to execute the jailer.
Machine is the main object for manipulating Firecracker microVMs.
NaiveChrootStrategy will simply hard link all files, drives and kernel image, to the root drive.
NetworkInterface represents a Firecracker microVM's network interface.
RateLimiterSet represents a pair of RateLimiters (inbound and outbound).
TokenBucketBuilder is a builder that allows of building components of the models.RateLimiter structure.
VMCommandBuilder is a utility for building an exec.Cmd that represents how to start the Firecracker VMM.
VsockDevice represents a vsock connection between the host and the guest microVM.

# Interfaces

HandlersAdapter is an interface used to modify a given set of handlers.
MachineIface can be used for mocking and testing of the Machine.

# Type aliases

ClientOpt is a functional option used to modify the client after construction.
CreateSyncActionOpt is a functional option to be used for the CreateSyncAction API in setting any additional optional fields.
GetMachineConfigurationOpt is a functional option to be used for the GetMachineConfiguration API in setting any additional optional fields.
DriveOpt represents an optional function used to allow for specific customization of the models.Drive structure.
GetMachineConfigurationOpt is a functional option to be used for the GetMachineConfiguration API in setting any additional optional fields.
Opt represents a functional option to help modify functionality of a Machine.
PatchGuestDriveByIDOpt is a functional option to be used for the PutMmds API in setting any additional optional fields.
PatchGuestNetworkInterfaceByIDOpt is a functional option to be used for the PatchGuestNetworkInterfaceByID API in setting any additional optional fields.
PutGuestBootSourceOpt is a functional option to be used for the PutGuestBootSource API in setting any additional optional fields.
PutGuestDriveByIDOpt is a functional option to be used for the PutGuestDriveByID API in setting any additional optional fields.
PutGuestNetworkInterfaceByIDOpt is a functional option to be used for the PutGuestNetworkInterfaceByID API in setting any additional optional fields.
PutGuestVsockByIDOpt is a functional option to be used for the PutGuestVsockByID API in setting any additional optional fields.
PutLoggerOpt is a functional option to be used for the PutLogger API in setting any additional optional fields.
PutMachineConfigurationOpt is a functional option to be used for the PutMachineConfiguration API in setting any additional optional fields.
PutMmdsOpt is a functional option to be used for the PutMmds API in setting any additional optional fields.
RateLimiterOpt represents a functional option for rate limiting construction.
SeccompLevelValue represents a secure computing level type.