Skip to content
Snippets Groups Projects
Select Git revision
  • f2862779300f7b963210a251783c02a47b5c865e
  • master default protected
  • develop
3 results

bootstrap-grid.min.css

Blame
  • vm.go 2.92 KiB
    package vm
    
    import (
        "time"
        "encoding/json"
        "nexus-common/caps"
        "github.com/google/uuid"
    )
    
    type (
        // VM fields to be serialized to disk.
        VMDiskSerialized struct {
            ID uuid.UUID          `json:"id"         validate:"required"`
            Owner string          `json:"owner"      validate:"required,email"`
            Name string           `json:"name"       validate:"required,min=1,max=256"`
            Cpus int              `json:"cpus"       validate:"required,gte=1,lte=32"`
            Ram int               `json:"ram"        validate:"required,gte=128,lte=32768"`  // in MB
            Nic NicType           `json:"nic"        validate:"required"`
            UsbDevs []string      `json:"usbDevs"    validate:"required"`
            TemplateID uuid.UUID  `json:"templateID" validate:"required"`
            Access map[string]caps.Capabilities `json:"access"`
            CreationTime time.Time `json:"creationTime" validate:"required"`
        }
    
        // VM fields to be serialized over the network.
        VMNetworkSerialized struct {
            ID uuid.UUID          `json:"id"         validate:"required"`
            Owner string          `json:"owner"      validate:"required,email"`
            Name string           `json:"name"       validate:"required,min=1,max=256"`
            Cpus int              `json:"cpus"       validate:"required,gte=1,lte=32"`
            Ram int               `json:"ram"        validate:"required,gte=128,lte=32768"`  // in MB
            Nic NicType           `json:"nic"        validate:"required"`
            UsbDevs []string      `json:"usbDevs"    validate:"required"`
            TemplateID uuid.UUID  `json:"templateID" validate:"required"`
            Access map[string]caps.Capabilities `json:"access"`
            CreationTime time.Time `json:"creationTime" validate:"required"`
    
            State VMState          `json:"state"`
            DiskBusy bool          `json:"diskBusy"`  // When true, the disk image must not be modified
            StartTime time.Time    `json:"startTime"`
        }
    
        VMSpiceCredentialsSerialized struct {
            SpicePort int         `json:"spicePort"  validate:"required,gte=1025,lte=65535"`
            SpicePwd string       `json:"spicePwd"   validate:"required,min=16,max=64"`
        }
    
        VMAttachCredentialsSerialized struct {
            ID uuid.UUID          `json:"id"         validate:"required"`
            Name string           `json:"name"       validate:"required,min=1,max=256"`
            Pwd string            `json:"pwd"        validate:"required,min=8,max=64"`
        }
    
        VMState string  // see stateXXX below
        NicType string  // see nicXXX below
    )
    
    const (
        StateStopped VMState = "STOPPED"
        StateRunning VMState = "RUNNING"
    
        NicUser NicType = "user"
        NicNone NicType = "none"
    )
    
    // Converts a VMNetworkSerialized structure into a pretty string.
    func (v *VMNetworkSerialized)String() (string, error) {
        output, err := json.MarshalIndent(v, "", "    ")
        if err != nil {
            return "", err
        }
        return string(output), nil
    }