Commit 6c54dbb2 authored by Peter Krempa's avatar Peter Krempa
Browse files

examples: Add 'domstats' example



A simple program which pulls domstats for either one VM or all of them
and outputs all the internal golang structures of the stats as JSON.

Signed-off-by: default avatarPeter Krempa <pkrempa@redhat.com>
parent 3f4f85c6
Loading
Loading
Loading
Loading

examples/domstats.go

0 → 100644
+49 −0
Original line number Diff line number Diff line
package main

import (
	"fmt"
	libvirt "libvirt.org/go/libvirt"
	"os"
	"encoding/json"
)

func main() {
	var uri string

	if len(os.Args) >= 2 {
		uri = os.Args[1]
	}

	conn, err := libvirt.NewConnect(uri)
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	var domains []*libvirt.Domain

	if len(os.Args) >= 3 {
		dom, err := conn.LookupDomainByName(os.Args[2])
		if (err != nil) {
			panic(err)
		}

		domains = make([]*libvirt.Domain, 1)
		domains[0] = dom
	}

	stats, err := conn.GetAllDomainStats(domains, 0, 0)
	if err != nil {
		panic(err)
	}

	for _, st := range stats {
		js, err := json.MarshalIndent(st, "", "  ")
		if err != nil {
			panic(err)
		}

		fmt.Printf("%s\n", js)
	}

}