summaryrefslogtreecommitdiff
path: root/start.go
blob: 19f83ce3dd878a3b9cf16cae1e7f6b095676f935 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright 2024 WIT.COM Inc Licensed GPL 3.0

package main

import (
	"errors"

	pb "go.wit.com/lib/protobuf/virtbuf"
	"go.wit.com/lib/virtigolib"
	"go.wit.com/log"
	"libvirt.org/go/libvirtxml"
)

func newStart(start string, d *pb.Droplet) error {
	if d == nil {
		log.Info("log.Info: droplet is unknown:", start)
		return errors.New("droplet is unknown: " + start)
	}
	log.Info("start droplet here:", d.Hostname)
	domcfg := &libvirtxml.Domain{}

	mergeXML(domcfg, "standard.x86")
	// ignore spice if it's not set
	if d.SpicePort == 0 {
		log.Info("spice port was not set. spice disabled")
	} else {
		mergeXML(domcfg, "spice")
		if err := virtigolib.SetSpicePort(d, domcfg); err != nil {
			return err
		}
	}
	mergeXML(domcfg, "qcow")

	return virtigolib.GenerateDropletXml(me.dirs, d, domcfg, start)
}

func mergeXML(domcfg *libvirtxml.Domain, filename string) error {
	fullname := "resources/xml/" + filename + ".xml"
	pfile, err := resources.ReadFile(fullname)
	if err != nil {
		log.Println("ERROR:", err)
		return err
	}

	return virtigolib.AddDefaultXml(domcfg, string(pfile))
}