summaryrefslogtreecommitdiff
path: root/libpod
diff options
context:
space:
mode:
authorBrent Baude <bbaude@redhat.com>2021-04-30 09:12:22 -0500
committerBrent Baude <bbaude@redhat.com>2021-04-30 13:11:05 -0500
commitd21c1aafe28cf59143655c7646f6eec7f9496686 (patch)
treed4e4cef44d422f877354f9892873fcfef486f2cd /libpod
parentd6ec38f2eec6c9ac9e11db5cbf949a357fa13f28 (diff)
downloadpodman-d21c1aafe28cf59143655c7646f6eec7f9496686.tar.gz
podman-d21c1aafe28cf59143655c7646f6eec7f9496686.tar.bz2
podman-d21c1aafe28cf59143655c7646f6eec7f9496686.zip
Detect if in podman machine virtual vm
When in podman machine virtual machines, podman needs to be able to detect as such. One implementation for this is when creating networks, the podman-machine cni plugin needs to be added to the configuration. This PR also includes the latest containers-common. [NO TESTS NEEDED] Signed-off-by: Brent Baude <bbaude@redhat.com>
Diffstat (limited to 'libpod')
-rw-r--r--libpod/network/config.go11
-rw-r--r--libpod/network/create.go4
-rw-r--r--libpod/network/netconflist.go9
3 files changed, 24 insertions, 0 deletions
diff --git a/libpod/network/config.go b/libpod/network/config.go
index 294e23509..ac4478602 100644
--- a/libpod/network/config.go
+++ b/libpod/network/config.go
@@ -149,7 +149,18 @@ type DNSNameConfig struct {
Capabilities map[string]bool `json:"capabilities"`
}
+// PodmanMachineConfig enables port handling on the host OS
+type PodmanMachineConfig struct {
+ PluginType string `json:"type"`
+ Capabilities map[string]bool `json:"capabilities"`
+}
+
// Bytes outputs the configuration as []byte
func (d DNSNameConfig) Bytes() ([]byte, error) {
return json.MarshalIndent(d, "", "\t")
}
+
+// Bytes outputs the configuration as []byte
+func (p PodmanMachineConfig) Bytes() ([]byte, error) {
+ return json.MarshalIndent(p, "", "\t")
+}
diff --git a/libpod/network/create.go b/libpod/network/create.go
index 4fe9b445f..aca8150b5 100644
--- a/libpod/network/create.go
+++ b/libpod/network/create.go
@@ -231,6 +231,10 @@ func createBridge(name string, options entities.NetworkCreateOptions, runtimeCon
plugins = append(plugins, NewDNSNamePlugin(DefaultPodmanDomainName))
}
}
+ // Add the podman-machine CNI plugin if we are in a machine
+ if runtimeConfig.MachineEnabled() { // check if we are in a machine vm
+ plugins = append(plugins, NewPodmanMachinePlugin())
+ }
ncList["plugins"] = plugins
b, err := json.MarshalIndent(ncList, "", " ")
if err != nil {
diff --git a/libpod/network/netconflist.go b/libpod/network/netconflist.go
index 08816f2bd..d2031df6d 100644
--- a/libpod/network/netconflist.go
+++ b/libpod/network/netconflist.go
@@ -293,3 +293,12 @@ func getCreatedTimestamp(config *config.Config, netconf *libcni.NetworkConfigLis
created := time.Unix(int64(stat.Ctim.Sec), int64(stat.Ctim.Nsec)) // nolint: unconvert
return &created, nil
}
+
+func NewPodmanMachinePlugin() PodmanMachineConfig {
+ caps := make(map[string]bool, 1)
+ caps["portMappings"] = true
+ return PodmanMachineConfig{
+ PluginType: "podman-machine",
+ Capabilities: caps,
+ }
+}