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

Method QueueCreateGuest

pkg/mockpve/state.go:680–747  ·  view source on GitHub ↗
(node, vmType string, params map[string]interface{}, isRestore bool)

Source from the content-addressed store, hash-verified

678}
679
680func (s *MockState) QueueCreateGuest(node, vmType string, params map[string]interface{}, isRestore bool) (string, error) {
681 s.mu.RLock()
682 hasNode := false
683 for _, n := range s.Nodes {
684 if n.Name == node {
685 hasNode = true
686 break
687 }
688 }
689 s.mu.RUnlock()
690 if !hasNode {
691 return "", fmt.Errorf("node not found")
692 }
693
694 requestedVMID := getIntParam(params, "vmid", 0)
695 forceRestore := isRestore && getBoolParam(params, "force", false)
696
697 vmid := requestedVMID
698 var err error
699 if forceRestore && requestedVMID > 0 {
700 s.mu.RLock()
701 _, exists := s.VMs[strconv.Itoa(requestedVMID)]
702 s.mu.RUnlock()
703 if !exists {
704 vmid, err = s.GetNextID(requestedVMID)
705 }
706 } else {
707 vmid, err = s.GetNextID(requestedVMID)
708 }
709 if err != nil {
710 return "", err
711 }
712
713 vm, volumes, err := buildGuest(s, node, vmType, vmid, params)
714 if err != nil {
715 return "", err
716 }
717
718 taskType := map[string]string{
719 guestTypeQEMU: "qmcreate",
720 guestTypeLXC: "vzcreate",
721 }[vmType]
722 if isRestore {
723 taskType = map[string]string{
724 guestTypeQEMU: "qmrestore",
725 guestTypeLXC: "vzrestore",
726 }[vmType]
727 }
728
729 upid := s.createTaskWithCompletion(node, taskType, strconv.Itoa(vmid), "root@pam", func() {
730 s.mu.Lock()
731 defer s.mu.Unlock()
732
733 if forceRestore {
734 s.deleteGuestVolumesLocked(vmid)
735 }
736 s.VMs[strconv.Itoa(vmid)] = vm
737 for _, volume := range volumes {

Callers 1

HandleGuestCreateFunction · 0.80

Calls 8

GetNextIDMethod · 0.95
getIntParamFunction · 0.85
getBoolParamFunction · 0.85
buildGuestFunction · 0.85

Tested by

no test coverage detected