records

package
v0.5.2 Latest Latest
Warning

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

Go to latest
Published: Mar 5, 2016 License: Apache-2.0 Imports: 19 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

View Source
const (
	// A record types
	A rrsKind = "A"
	// SRV record types
	SRV = "SRV"
)

Variables

This section is empty.

Functions

func GetLocalDNS

func GetLocalDNS() []string

GetLocalDNS returns the first nameserver in /etc/resolv.conf Used for non-Mesos queries.

Types

type Config

type Config struct {
	// Refresh frequency: the frequency in seconds of regenerating records (default 60)
	RefreshSeconds int
	// Resolver port: port used to listen for slave requests (default 53)
	Port int
	// Timeout is the default connect/read/write timeout for outbound
	// queries
	Timeout int
	// Timeout in seconds waiting for the master to return data from StateJson
	StateTimeoutSeconds int
	// Zookeeper Detection Timeout: how long in seconds to wait for Zookeeper to
	// be initially responsive. Default is 30 and 0 means no timeout.
	ZkDetectionTimeout int
	// NOTE(tsenart): HTTPPort, DNSOn and HTTPOn have defined JSON keys for
	// backwards compatibility with external API clients.
	HTTPPort int `json:"HttpPort"`
	// TTL: the TTL value used for SRV and A records (default 60)
	TTL int32
	// SOA record fields (see http://tools.ietf.org/html/rfc1035#page-18)
	SOASerial  uint32 // initial version number (incremented on refresh)
	SOARefresh uint32 // refresh interval
	SOARetry   uint32 // retry interval
	SOAExpire  uint32 // expiration time
	SOAMinttl  uint32 // minimum TTL
	SOAMname   string // primary name server
	SOARname   string // email of admin esponsible
	// Mesos master(s): a list of IP:port pairs for one or more Mesos masters
	Masters []string
	// DNS server: IP address of the DNS server for forwarded accesses
	Resolvers []string
	// IPSources is the prioritized list of task IP sources
	IPSources []string // e.g. ["host", "docker", "mesos", "rkt"]
	// Zookeeper: a single Zk url
	Zk string
	//  Domain: name of the domain used (default "mesos", ie .mesos domain)
	Domain string
	// File is the location of the config.json file
	File string
	// ListenAddr is the server listener address
	Listener string
	// Value of RecursionAvailable for responses in Mesos domain
	RecurseOn bool
	// Enable serving DSN and HTTP requests
	DNSOn  bool `json:"DnsOn"`
	HTTPOn bool `json:"HttpOn"`
	// Enable replies for external requests
	ExternalOn bool
	// EnforceRFC952 will enforce an older, more strict set of rules for DNS labels
	EnforceRFC952 bool
	// Enumeration enabled via the API enumeration endpoint
	EnumerationOn bool
}

Config holds mesos dns configuration

func NewConfig added in v0.2.0

func NewConfig() Config

NewConfig return the default config of the resolver

func SetConfig

func SetConfig(cjson string) Config

SetConfig instantiates a Config struct read in from config.json

type EnumerableFramework added in v0.5.2

type EnumerableFramework struct {
	Tasks []*EnumerableTask `json:"tasks"`
	Name  string            `json:"name"`
}

EnumerableFramework is consistent of enumerable tasks, and include the name of the framework

type EnumerableRecord added in v0.5.2

type EnumerableRecord struct {
	Name  string `json:"name"`
	Host  string `json:"host"`
	Rtype string `json:"rtype"`
}

EnumerableRecord is the lowest level object, and should map 1:1 with DNS records

type EnumerableTask added in v0.5.2

type EnumerableTask struct {
	Name    string             `json:"name"`
	ID      string             `json:"id"`
	Records []EnumerableRecord `json:"records"`
}

EnumerableTask consists of the records derived from a task

type EnumerationData added in v0.5.2

type EnumerationData struct {
	Frameworks []*EnumerableFramework `json:"frameworks"`
}

EnumerationData is the top level container pointing to the enumerable frameworks containing enumerable tasks

type RecordGenerator

type RecordGenerator struct {
	As       rrs
	SRVs     rrs
	SlaveIPs map[string]string
	EnumData EnumerationData
	// contains filtered or unexported fields
}

RecordGenerator contains DNS records and methods to access and manipulate them. TODO(kozyraki): Refactor when discovery id is available.

func NewRecordGenerator added in v0.5.0

func NewRecordGenerator(httpTimeout time.Duration) *RecordGenerator

NewRecordGenerator returns a RecordGenerator that's been configured with a timeout.

func (*RecordGenerator) InsertState

func (rg *RecordGenerator) InsertState(sj state.State, domain, ns, listener string, masters, ipSources []string, spec labels.Func) error

InsertState transforms a StateJSON into RecordGenerator RRs

func (*RecordGenerator) ParseState

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

ParseState retrieves and parses the Mesos master /state.json and converts it into DNS records.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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