* Add Virtual Kubelet provider for VIC Initial virtual kubelet provider for VMware VIC. This provider currently handles creating and starting of a pod VM via the VIC portlayer and persona server. Image store handling via the VIC persona server. This provider currently requires the feature/wolfpack branch of VIC. * Added pod stop and delete. Also added node capacity. Added the ability to stop and delete pod VMs via VIC. Also retrieve node capacity information from the VCH. * Cleanup and readme file Some file clean up and added a Readme.md markdown file for the VIC provider. * Cleaned up errors, added function comments, moved operation code 1. Cleaned up error handling. Set standard for creating errors. 2. Added method prototype comments for all interface functions. 3. Moved PodCreator, PodStarter, PodStopper, and PodDeleter to a new folder. * Add mocking code and unit tests for podcache, podcreator, and podstarter Used the unit test framework used in VIC to handle assertions in the provider's unit test. Mocking code generated using OSS project mockery, which is compatible with the testify assertion framework. * Vendored packages for the VIC provider Requires feature/wolfpack branch of VIC and a few specific commit sha of projects used within VIC. * Implementation of POD Stopper and Deleter unit tests (#4) * Updated files for initial PR
110 lines
3.3 KiB
Go
110 lines
3.3 KiB
Go
package netlabel
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
// Prefix constant marks the reserved label space for libnetwork
|
|
Prefix = "com.docker.network"
|
|
|
|
// DriverPrefix constant marks the reserved label space for libnetwork drivers
|
|
DriverPrefix = Prefix + ".driver"
|
|
|
|
// DriverPrivatePrefix constant marks the reserved label space
|
|
// for internal libnetwork drivers
|
|
DriverPrivatePrefix = DriverPrefix + ".private"
|
|
|
|
// GenericData constant that helps to identify an option as a Generic constant
|
|
GenericData = Prefix + ".generic"
|
|
|
|
// PortMap constant represents Port Mapping
|
|
PortMap = Prefix + ".portmap"
|
|
|
|
// MacAddress constant represents Mac Address config of a Container
|
|
MacAddress = Prefix + ".endpoint.macaddress"
|
|
|
|
// ExposedPorts constant represents the container's Exposed Ports
|
|
ExposedPorts = Prefix + ".endpoint.exposedports"
|
|
|
|
//EnableIPv6 constant represents enabling IPV6 at network level
|
|
EnableIPv6 = Prefix + ".enable_ipv6"
|
|
|
|
// DriverMTU constant represents the MTU size for the network driver
|
|
DriverMTU = DriverPrefix + ".mtu"
|
|
|
|
// OverlayBindInterface constant represents overlay driver bind interface
|
|
OverlayBindInterface = DriverPrefix + ".overlay.bind_interface"
|
|
|
|
// OverlayNeighborIP constant represents overlay driver neighbor IP
|
|
OverlayNeighborIP = DriverPrefix + ".overlay.neighbor_ip"
|
|
|
|
// Gateway represents the gateway for the network
|
|
Gateway = Prefix + ".gateway"
|
|
|
|
// Internal constant represents that the network is internal which disables default gateway service
|
|
Internal = Prefix + ".internal"
|
|
)
|
|
|
|
var (
|
|
// GlobalKVProvider constant represents the KV provider backend
|
|
GlobalKVProvider = MakeKVProvider("global")
|
|
|
|
// GlobalKVProviderURL constant represents the KV provider URL
|
|
GlobalKVProviderURL = MakeKVProviderURL("global")
|
|
|
|
// GlobalKVProviderConfig constant represents the KV provider Config
|
|
GlobalKVProviderConfig = MakeKVProviderConfig("global")
|
|
|
|
// LocalKVProvider constant represents the KV provider backend
|
|
LocalKVProvider = MakeKVProvider("local")
|
|
|
|
// LocalKVProviderURL constant represents the KV provider URL
|
|
LocalKVProviderURL = MakeKVProviderURL("local")
|
|
|
|
// LocalKVProviderConfig constant represents the KV provider Config
|
|
LocalKVProviderConfig = MakeKVProviderConfig("local")
|
|
)
|
|
|
|
// MakeKVProvider returns the kvprovider label for the scope
|
|
func MakeKVProvider(scope string) string {
|
|
return DriverPrivatePrefix + scope + "kv_provider"
|
|
}
|
|
|
|
// MakeKVProviderURL returns the kvprovider url label for the scope
|
|
func MakeKVProviderURL(scope string) string {
|
|
return DriverPrivatePrefix + scope + "kv_provider_url"
|
|
}
|
|
|
|
// MakeKVProviderConfig returns the kvprovider config label for the scope
|
|
func MakeKVProviderConfig(scope string) string {
|
|
return DriverPrivatePrefix + scope + "kv_provider_config"
|
|
}
|
|
|
|
// Key extracts the key portion of the label
|
|
func Key(label string) (key string) {
|
|
if kv := strings.SplitN(label, "=", 2); len(kv) > 0 {
|
|
key = kv[0]
|
|
}
|
|
return
|
|
}
|
|
|
|
// Value extracts the value portion of the label
|
|
func Value(label string) (value string) {
|
|
if kv := strings.SplitN(label, "=", 2); len(kv) > 1 {
|
|
value = kv[1]
|
|
}
|
|
return
|
|
}
|
|
|
|
// KeyValue decomposes the label in the (key,value) pair
|
|
func KeyValue(label string) (key string, value string) {
|
|
if kv := strings.SplitN(label, "=", 2); len(kv) > 0 {
|
|
key = kv[0]
|
|
if len(kv) > 1 {
|
|
value = kv[1]
|
|
}
|
|
}
|
|
return
|
|
}
|