package schema

import "google.golang.org/protobuf/types/known/timestamppb"

/*
/domain/{domain_id}
*/
// Schema dans le store
type Domain struct {
	Type   string `json:"type"`   // Qemu seulement pour le moment
	Config string `json:"config"` // La configuration xml libvirt
}

/*
/domain/{domain_id}/node
*/
type DomainNode struct {
	NodeId string `json:"nodeID"` // NodeID Owner
}

/*
/domain/{domain_id}/agent
*/
type DomainAgent struct {
	// A définir
}

/*
/etc/libvirt/{type}/{node_id}/{domain_id}
*/
type DomainAttachment struct {
	State  int                    `json:"state"`  // Son etat réel
	Expiry *timestamppb.Timestamp `json:"expiry"` // Date d'expiration du verouillage
}

// Other
type DomainToNode struct {
	State int `json:"state"`
}

type DomainXML struct {
	Metadata MetadataXML `xml:"metadata"`
}

type MetadataXML struct {
	DeevirtInstance InstanceXML `xml:"instance"`
}

type InstanceXML struct {
	DeevirtCompanyID    string `xml:"company_id"`
	DeevirtDatacenterID string `xml:"datacenter_id"`
}

// JSON SCHEMA for AMQP
type DomainStateAMQP struct {
	CompanyID    string `json:"company_id"`
	DatacenterID string `json:"datacenter_id"`
	DomainID     string `json:"domain_id"`
	State        int64  `json:"state"`
}