mirror of
https://github.com/containers/podman
synced 2024-10-20 17:23:30 +00:00
c18ad2bfd9
the podman generate systemd command will generate a systemd unit file based on the attributes of an existing container and user inputs. the command outputs the unit file to stdout for the user to copy or redirect. it is enabled for the remote client as well. users can set a restart policy as well as define a stop timeout override for the container. Signed-off-by: baude <bbaude@redhat.com>
53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
// +build varlink
|
|
|
|
package varlinkapi
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/containers/libpod/cmd/podman/shared"
|
|
iopodman "github.com/containers/libpod/cmd/podman/varlink"
|
|
"github.com/containers/libpod/pkg/systemdgen"
|
|
)
|
|
|
|
// GenerateKube ...
|
|
func (i *LibpodAPI) GenerateKube(call iopodman.VarlinkCall, name string, service bool) error {
|
|
pod, serv, err := shared.GenerateKube(name, service, i.Runtime)
|
|
if err != nil {
|
|
return call.ReplyErrorOccurred(err.Error())
|
|
}
|
|
podB, err := json.Marshal(pod)
|
|
if err != nil {
|
|
return call.ReplyErrorOccurred(err.Error())
|
|
}
|
|
servB, err := json.Marshal(serv)
|
|
if err != nil {
|
|
return call.ReplyErrorOccurred(err.Error())
|
|
}
|
|
|
|
return call.ReplyGenerateKube(iopodman.KubePodService{
|
|
Pod: string(podB),
|
|
Service: string(servB),
|
|
})
|
|
}
|
|
|
|
// GenerateSystemd ...
|
|
func (i *LibpodAPI) GenerateSystemd(call iopodman.VarlinkCall, nameOrID, restart string, stopTimeout int64, useName bool) error {
|
|
ctr, err := i.Runtime.LookupContainer(nameOrID)
|
|
if err != nil {
|
|
return call.ReplyErrorOccurred(err.Error())
|
|
}
|
|
timeout := int(ctr.StopTimeout())
|
|
if stopTimeout >= 0 {
|
|
timeout = int(stopTimeout)
|
|
}
|
|
name := ctr.ID()
|
|
if useName {
|
|
name = ctr.Name()
|
|
}
|
|
unit, err := systemdgen.CreateSystemdUnitAsString(name, ctr.ID(), restart, ctr.Config().StaticDir, timeout)
|
|
if err != nil {
|
|
return call.ReplyErrorOccurred(err.Error())
|
|
}
|
|
return call.ReplyGenerateSystemd(unit)
|
|
}
|