proxmox

package module
v0.0.0-...-5d037c3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 10, 2025 License: Apache-2.0 Imports: 16 Imported by: 0

README

example

Name

example - prints "example" after a query is handled.

Description

The example plugin prints "example" on every query that got handled by the server. It serves as documentation for writing CoreDNS plugins.

Compilation

This package will always be compiled as part of CoreDNS and not in a standalone way. It will require you to use go get or as a dependency on plugin.cfg.

The manual will have more information about how to configure and extend the server with external plugins.

A simple way to consume this plugin, is by adding the following on plugin.cfg, and recompile it as detailed on coredns.io.

example:github.com/coredns/example

Put this early in the plugin list, so that example is executed before any of the other plugins.

After this you can compile coredns by:

go generate
go build

Or you can instead use make:

make

Syntax

example

Metrics

If monitoring is enabled (via the prometheus directive) the following metric is exported:

  • coredns_example_request_count_total{server} - query count to the example plugin.

The server label indicated which server handled the request, see the metrics plugin for details.

Ready

This plugin reports readiness to the ready plugin. It will be immediately ready.

Examples

In this configuration, we forward all queries to 9.9.9.9 and print "example" whenever we receive a query.

. {
  forward . 9.9.9.9
  example
}

Or without any external connectivity:

. {
  whoami
  example
}

Also See

See the manual.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type NodeInfo

type NodeInfo struct {
	Level          string  `json:"level"`
	Id             string  `json:"id"`
	Maxdisk        int     `json:"maxdisk"`
	Disk           int     `json:"disk"`
	SslFingerPrint string  `json:"sslFingerPrint"`
	NodeType       string  `json:"type"`
	Cpu            float32 `json:"cpu"`
	Mem            int     `json:"mem"`
	Maxcpu         int     `json:"maxcpu"`
	Maxmem         int     `json:"maxmem"`
	Status         string  `json:"status"`
	Uptime         int     `json:"uptime"`
	Node           string  `json:"node"`
}

type NodeResponse

type NodeResponse struct {
	Data []NodeInfo `json:"data"`
}

type Proxmox

type Proxmox struct {
	Backend     string
	TokenId     string
	TokenSecret string
	Next        plugin.Handler
}

func (Proxmox) GetIPs

func (p Proxmox) GetIPs(vmName string) (ips []net.IP, err error)

func (Proxmox) GetIPsById

func (p Proxmox) GetIPsById(node string, vmid int) (ips []net.IP, err error)

func (Proxmox) GetNodes

func (p Proxmox) GetNodes() (info []NodeInfo, err error)

func (Proxmox) GetVMs

func (p Proxmox) GetVMs(nodeName string) (VMs []VMInfo, err error)

func (Proxmox) Name

func (p Proxmox) Name() string

func (Proxmox) Ready

func (p Proxmox) Ready() bool

Ready implements the ready.Readiness interface, once this flips to true CoreDNS assumes this plugin is ready for queries; it is not checked again.

func (Proxmox) ServeDNS

func (p Proxmox) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error)

type VMInfo

type VMInfo struct {
	Disk      int     `json:"disk"`
	Pid       int     `json:"pid"`
	Diskwrite int     `json:"diskwrite"`
	Name      string  `json:"name"`
	Maxmem    int64   `json:"maxmem"`
	Status    string  `json:"status"`
	Serial    int     `json:"serial"`
	Diskread  int     `json:"diskread"`
	Netout    int     `json:"netout"`
	Netin     int64   `json:"netin"`
	Maxdisk   int64   `json:"maxdisk"`
	Vmid      int     `json:"vmid"`
	Cpus      int     `json:"cpus"`
	Cpu       float64 `json:"cpu"`
	Uptime    int     `json:"uptime"`
	Mem       int     `json:"mem"`
}

type VMNetworkInterfaceResult

type VMNetworkInterfaceResult struct {
	Data struct {
		Result []struct {
			HardwareAddress string `json:"hardware-address"`
			Name            string `json:"name"`
			Statistics      struct {
				TxDropped int   `json:"tx-dropped"`
				TxBytes   int64 `json:"tx-bytes"`
				TxPackets int   `json:"tx-packets"`
				RxErrs    int   `json:"rx-errs"`
				TxErrs    int   `json:"tx-errs"`
				RxPackets int   `json:"rx-packets"`
				RxBytes   int64 `json:"rx-bytes"`
				RxDropped int   `json:"rx-dropped"`
			} `json:"statistics"`
			IpAddresses []struct {
				IpAddressType string `json:"ip-address-type"`
				Prefix        int    `json:"prefix"`
				IpAddress     string `json:"ip-address"`
			} `json:"ip-addresses"`
		} `json:"result"`
	} `json:"data"`
}

type VMResponse

type VMResponse struct {
	Data []VMInfo `json:"data"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL