records

package
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2015 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

package records contains functions to generate resource records from mesos master states to serve through a dns server

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetLocalDNS

func GetLocalDNS() []string

Returns the first nameserver in /etc/resolv.conf used for non-Mesos queries

Types

type Config

type Config struct {

	// Mesos master(s): a list of IP:port pairs for one or more Mesos masters
	Masters []string

	// Zookeeper: a single Zk url
	Zk string

	// Refresh frequency: the frequency in seconds of regenerating records (default 60)
	RefreshSeconds int

	// TTL: the TTL value used for SRV and A records (default 60)
	TTL int32

	// Resolver port: port used to listen for slave requests (default 53)
	Port int

	//  Domain: name of the domain used (default "mesos", ie .mesos domain)
	Domain string

	// DNS server: IP address of the DNS server for forwarded accesses
	Resolvers []string

	// Timeout is the default connect/read/write timeout for outbound
	// queries
	Timeout int

	// File is the location of the config.json file
	File string

	// SOA record fields (see http://tools.ietf.org/html/rfc1035#page-18)
	SOAMname   string // primary name server
	SOARname   string // email of admin esponsible
	SOASerial  uint32 // initial version number (incremented on refresh)
	SOARefresh uint32 // refresh interval
	SOARetry   uint32 // retry interval
	SOAExpire  uint32 // expiration time
	SOAMinttl  uint32 // minimum TTL

	// Value of RecursionAvailable for responses in Mesos domain
	RecurseOn bool

	// ListenAddr is the server listener address
	Listener string

	// Http port
	HttpPort int

	// Enable serving DSN and HTTP requests
	DnsOn  bool
	HttpOn bool

	// Enable replies for external requests
	ExternalOn bool
}

Config holds mesos dns configuration

func SetConfig

func SetConfig(cjson string) (c Config)

SetConfig instantiates a Config struct read in from config.json

type Frameworks

type Frameworks []struct {
	Tasks `json:"tasks"`
	Name  string `json:"name"`
}

Frameworks holds mesos frameworks information read in from state.json

type RecordGenerator

type RecordGenerator struct {
	As     rrs
	SRVs   rrs
	Slaves map[string]string
}

Mesos-DNS state Refactor when discovery id is available

func (*RecordGenerator) InsertState

func (rg *RecordGenerator) InsertState(sj StateJSON, domain string, ns string,
	listener string, masters []string) error

InsertState transforms a StateJSON into RecordGenerator RRs

func (*RecordGenerator) ParseState

func (rg *RecordGenerator) ParseState(leader string, c Config) error

Finds the master and inserts DNS state

type Resources

type Resources struct {
	Ports string `json:"ports"`
}

The following types help parse state.json Resources holds our SRV ports

type Slaves

type Slaves []slave

type StateJSON

type StateJSON struct {
	Frameworks `json:"frameworks"`
	Slaves     `json:"slaves"`
	Leader     string `json:"leader"`
}

StateJSON is a representation of mesos master state.json

type Tasks

type Tasks []struct {
	FrameworkId string `json:"framework_id"`
	Id          string `json:"id"`
	Name        string `json:"name"`
	SlaveId     string `json:"slave_id"`
	State       string `json:"state"`
	Resources   `json:"resources"`
}

Tasks holds mesos task information read in from state.json

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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