MCPcopy Create free account
hub / github.com/devnullvoid/pvetui / runGuestsCreateLXC

Function runGuestsCreateLXC

internal/cli/guests.go:971–1083  ·  view source on GitHub ↗
(cmd *cobra.Command, _ []string)

Source from the content-addressed store, hash-verified

969}
970
971func runGuestsCreateLXC(cmd *cobra.Command, _ []string) error {
972 session, err := initCLISession(cmd)
973 if err != nil {
974 return printError(err)
975 }
976 if session == nil {
977 return nil
978 }
979
980 nodeName, _ := cmd.Flags().GetString("node")
981 hostname, _ := cmd.Flags().GetString("hostname")
982 vmid, _ := cmd.Flags().GetInt("vmid")
983 memoryMB, _ := cmd.Flags().GetInt("memory")
984 swapMB, _ := cmd.Flags().GetInt("swap")
985 cores, _ := cmd.Flags().GetInt("cores")
986 rootfsStorage, _ := cmd.Flags().GetString("rootfs-storage")
987 rootfsSize, _ := cmd.Flags().GetInt("rootfs-size")
988 templateArg, _ := cmd.Flags().GetString("template")
989 bridge, _ := cmd.Flags().GetString("bridge")
990 unprivileged, _ := cmd.Flags().GetBool("unprivileged")
991 nesting, _ := cmd.Flags().GetBool("nesting")
992 start, _ := cmd.Flags().GetBool("start")
993
994 if swapMB < 0 {
995 return printError(fmt.Errorf("--swap must be >= 0"))
996 }
997
998 ctx := context.Background()
999
1000 node, err := session.findNodeByName(ctx, nodeName)
1001 if err != nil {
1002 return printError(err)
1003 }
1004 if !node.Online {
1005 return printError(fmt.Errorf("node %q is offline", nodeName))
1006 }
1007
1008 client, err := session.clientForNode(ctx, nodeName)
1009 if err != nil {
1010 return printError(err)
1011 }
1012
1013 // Resolve template to a full storage volid.
1014 // Accepted forms (in priority order):
1015 // "local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst" → full volid, use as-is
1016 // "debian-13-standard_13.1-2_amd64.tar.zst" → filename, prepend storage:vztmpl/
1017 // "debian-13-standard" → package name, search storage content
1018 template := templateArg
1019 switch {
1020 case strings.Contains(templateArg, ":"):
1021 // Already a full volid — use as-is.
1022 case strings.Contains(templateArg, "."):
1023 // Bare filename — prepend the rootfs storage prefix.
1024 template = rootfsStorage + ":vztmpl/" + templateArg
1025 default:
1026 // Package name — search vztmpl content already on the node's storages.
1027 template, err = resolveLXCTemplateFromStorage(client, nodeName, templateArg)
1028 if err != nil {

Callers

nothing calls this directly

Calls 10

initCLISessionFunction · 0.85
printErrorFunction · 0.85
getNoWaitFunction · 0.85
printJSONFunction · 0.85
waitForTaskFunction · 0.85
findNodeByNameMethod · 0.80
clientForNodeMethod · 0.80
CreateLXCMethod · 0.80
GetNextIDMethod · 0.45

Tested by

no test coverage detected