Documentation
¶
Overview ¶
Package datasource pacakge creates means of interacting with the external datasources for blacksmith
Index ¶
- Constants
- type ClasslessRouteOptionPart
- type DataSource
- type EtcdDataSource
- func (ds *EtcdDataSource) ClusterName() string
- func (ds *EtcdDataSource) DeleteClusterVariable(key string) error
- func (ds *EtcdDataSource) EtcdMembers() (string, error)
- func (ds *EtcdDataSource) GetClusterVariable(key string) (string, error)
- func (ds *EtcdDataSource) Instances() ([]InstanceInfo, error)
- func (ds *EtcdDataSource) IsMaster() error
- func (ds *EtcdDataSource) ListClusterVariables() (map[string]string, error)
- func (ds *EtcdDataSource) ListConfigurations() (map[string]string, error)
- func (ds *EtcdDataSource) MachineInterface(mac net.HardwareAddr) MachineInterface
- func (ds *EtcdDataSource) MachineInterfaces() ([]MachineInterface, error)
- func (ds *EtcdDataSource) SelfInfo() InstanceInfo
- func (ds *EtcdDataSource) SetClusterVariable(key string, value string) error
- func (ds *EtcdDataSource) Shutdown() error
- func (ds *EtcdDataSource) WhileMaster() error
- func (ds *EtcdDataSource) WorkspacePath() string
- type File
- type ForTestParams
- type InstanceInfo
- type Machine
- type MachineInterface
- type MachineType
- type NetworkConfiguration
Constants ¶
const ( ActiveMasterUpdateTime = 10 * time.Second StandbyMasterUpdateTime = 15 * time.Second )
const ( // SpecialKeyCoreosVersion is a special key for the coreos version of the machines SpecialKeyCoreosVersion = "coreos-version" // SpecialKeyNetworkConfiguration is a special key for the network of the cluster SpecialKeyNetworkConfiguration = "net-conf" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClasslessRouteOptionPart ¶ added in v0.9.2
type ClasslessRouteOptionPart struct {
Router net.IP `json:"router"`
Size byte `json:"size"`
Destination net.IP `json:"destination"`
}
ClasslessRouteOptionPart is the static route which consists of a destination descriptor and the IP address of the router that should be used to reach that destination. https://tools.ietf.org/html/rfc3442
func (*ClasslessRouteOptionPart) ToBytes ¶ added in v0.9.2
func (c *ClasslessRouteOptionPart) ToBytes() []byte
ToBytes formats the static route according to rfc3442
type DataSource ¶
type DataSource interface {
// SelfInfo return InstanceInfo of this instance of blacksmith
SelfInfo() InstanceInfo
// Instances returns the InstanceInfo of all the present instances of
// blacksmith in our cluster
Instances() ([]InstanceInfo, error)
// IsMaster checks for being master
IsMaster() error
// WhileMaster makes a heartbeat and returns IsMaster()
WhileMaster() error
// Shutdown removes the instance key from the list of instances, used to
// gracefully shutdown the instance
Shutdown() error
// ClusterName returns the name of the ClusterName
ClusterName() string
// WorkspacePath returns the path to the workspace which is used after the
// machines are booted up
WorkspacePath() string
// MachineInterfaces returns all the machines in the cluster, as a slice of
// MachineInterfaces
MachineInterfaces() ([]MachineInterface, error)
// MachineInterface returns the MachineInterface associated with the given
// mac
MachineInterface(mac net.HardwareAddr) MachineInterface
// ListClusterVariables returns the list of all the cluster variables
ListClusterVariables() (map[string]string, error)
// GetClusterVariable returns a cluster variables with the given name
GetClusterVariable(key string) (string, error)
// SetClusterVariable sets a cluster variable
SetClusterVariable(key string, value string) error
// DeleteClusterVariable delete a cluster variable from etcd.
DeleteClusterVariable(key string) error
// EtcdMembers returns a string suitable for `-initial-cluster`
// This is the etcd the Blacksmith instance is using as its datastore
// Smelly function to be here! but it's a lot helpful.
EtcdMembers() (string, error)
}
DataSource provides the interface for querying general information
func ForTest ¶ added in v0.9.3
func ForTest(params *ForTestParams) (DataSource, error)
ForTest constructs a DataSource to be used in tests
func NewEtcdDataSource ¶
func NewEtcdDataSource(kapi etcd.KeysAPI, client etcd.Client, leaseStart net.IP, leaseRange int, clusterName, workspacePath string, defaultNameServers []string, selfInfo InstanceInfo) (DataSource, error)
NewEtcdDataSource gives blacksmith the ability to use an etcd endpoint as a MasterDataSource
type EtcdDataSource ¶
type EtcdDataSource struct {
// contains filtered or unexported fields
}
EtcdDataSource implements MasterDataSource interface using etcd as it's datasource Implements MasterDataSource interface
func (*EtcdDataSource) ClusterName ¶
func (ds *EtcdDataSource) ClusterName() string
ClusterName returns the name of the cluster
func (*EtcdDataSource) DeleteClusterVariable ¶ added in v0.9.2
func (ds *EtcdDataSource) DeleteClusterVariable(key string) error
DeleteClusterVariable deletes a cluster variable
func (*EtcdDataSource) EtcdMembers ¶ added in v0.9.2
func (ds *EtcdDataSource) EtcdMembers() (string, error)
EtcdMembers returns a string suitable for `-initial-cluster` This is the etcd the Blacksmith instance is using as its datastore
func (*EtcdDataSource) GetClusterVariable ¶ added in v0.9.2
func (ds *EtcdDataSource) GetClusterVariable(key string) (string, error)
GetClusterVariable returns a cluster variables with the given name
func (*EtcdDataSource) Instances ¶ added in v0.9.2
func (ds *EtcdDataSource) Instances() ([]InstanceInfo, error)
Instances returns the InstanceInfo of all the present instances of blacksmith in our cluster
func (*EtcdDataSource) IsMaster ¶
func (ds *EtcdDataSource) IsMaster() error
IsMaster checks for being master
func (*EtcdDataSource) ListClusterVariables ¶ added in v0.9.2
func (ds *EtcdDataSource) ListClusterVariables() (map[string]string, error)
ListClusterVariables returns the list of all the cluster variables from etcd
func (*EtcdDataSource) ListConfigurations ¶ added in v0.9.2
func (ds *EtcdDataSource) ListConfigurations() (map[string]string, error)
ListConfigurations returns the list of all the configuration variables from etcd
func (*EtcdDataSource) MachineInterface ¶ added in v0.9.2
func (ds *EtcdDataSource) MachineInterface(mac net.HardwareAddr) MachineInterface
MachineInterface returns the MachineInterface associated with the given mac
func (*EtcdDataSource) MachineInterfaces ¶ added in v0.9.2
func (ds *EtcdDataSource) MachineInterfaces() ([]MachineInterface, error)
MachineInterfaces returns all the machines in the cluster, as a slice of MachineInterfaces
func (*EtcdDataSource) SelfInfo ¶ added in v0.9.2
func (ds *EtcdDataSource) SelfInfo() InstanceInfo
SelfInfo return InstanceInfo of this instance of blacksmith
func (*EtcdDataSource) SetClusterVariable ¶ added in v0.9.2
func (ds *EtcdDataSource) SetClusterVariable(key string, value string) error
SetClusterVariable sets a cluster variable inside etcd
func (*EtcdDataSource) Shutdown ¶ added in v0.9.2
func (ds *EtcdDataSource) Shutdown() error
Shutdown removes the instance key from the list of instances, used to gracefully shutdown the instance
func (*EtcdDataSource) WhileMaster ¶ added in v0.9.2
func (ds *EtcdDataSource) WhileMaster() error
WhileMaster makes a heartbeat and returns IsMaster()
func (*EtcdDataSource) WorkspacePath ¶
func (ds *EtcdDataSource) WorkspacePath() string
WorkspacePath returns the path to the workspace
type File ¶ added in v0.9.2
type File struct {
ID string `json:"id,omitempty"`
Name string `json:"name"`
FromInstance string `json:"fromInstance"`
Location string `json:"location"`
UploadedAt int64 `json:"uploadedAt"` // unix timestamp
Size int64 `json:"size"`
LastModificationDate int64 `json:"lastModifiedDate"`
}
File describes a file located inside our workspace
type ForTestParams ¶ added in v0.9.5
type ForTestParams struct {
// contains filtered or unexported fields
}
ForTestParams is the way to create a customized DataSource to be used in a test. Fields with value=nil will be ignored.
type InstanceInfo ¶ added in v0.9.2
type InstanceInfo struct {
IP net.IP `json:"ip"`
Nic net.HardwareAddr `json:"nic"`
WebPort int `json:"webPort"`
Version string `json:"version"`
Commit string `json:"commit"`
BuildTime string `json:"buildTime"`
ServiceStartTime int64 `json:"serviceStartTime"`
}
InstanceInfo describes an active instance of blacksmith running on some machine
func (*InstanceInfo) String ¶ added in v0.9.2
func (ii *InstanceInfo) String() string
type Machine ¶
type Machine struct {
IP net.IP `json:"ip"`
FirstSeen int64 `json:"first_seen"`
Type MachineType `json:"type"`
}
Machine details
type MachineInterface ¶ added in v0.9.2
type MachineInterface interface {
// Mac returns the hardware address of the associated machine
Mac() net.HardwareAddr
// Hostname returns the mac address formatted as a string suitable for hostname
Hostname() string
// Machine creates a record for the associated mac if needed
// and asked for, and returns a Machine with the stored values.
// If createIfNeeded is true, and there is no machine associated to
// this mac, the machine will be created, stored, and returned.
// In this case, if createWithIP is empty, the IP will be assigned
// automatically, otherwise the given will be used. An error will be
// raised if createWithIP is currently assigned to another mac. Also
// the Type will be automatically set to MTNormal if createWithIP is
// nil, otherwise to MTStatic.
// If createIfNeeded is false, the createWithIP is expected to be nil.
// Note: if the machine exists, createWithIP is ignored. It's possible
// for the returned Machine to have an IP different from createWithIP.
Machine(createIfNeeded bool, createWithIP net.IP) (Machine, error)
// LastSeen returns the last time the machine has been seen
LastSeen() (int64, error)
// DeleteMachine deletes a machine from the store entirely
DeleteMachine() error
// CheckIn updates the _last_seen field of the machine
CheckIn()
// ListVariables returns the list of all the flgas of a machine from Etcd
ListVariables() (map[string]string, error)
// GetVariable Gets a machine's variable, or the global if it was not
// set for the machine
GetVariable(key string) (string, error)
// SetVariable sets the value of the specified key
SetVariable(key string, value string) error
// DeleteVariable erases the entry specified by key
DeleteVariable(key string) error
}
MachineInterface provides the interface for querying/altering Machine entries in the datasource
type MachineType ¶ added in v0.9.2
type MachineType int16
MachineType distinguishes normal servers from static ones, and from the BMC inside those machines
const ( // MTNormal is for the ethernet of a server machine attached to our private // network and its ip is provided by our DHCP MTNormal MachineType = 1 // MTStatic is for the ethernet of a server machine attached to our private // network, but the IP address is forces. Currentl just the Blacksmith // instances are created in this manner. MTStatic MachineType = 2 // MTBMC is for the baseboard management controller embedded on the // motherboard of the server machines MTBMC MachineType = 3 )
type NetworkConfiguration ¶ added in v0.9.2
type NetworkConfiguration struct {
Netmask net.IP `json:"netmask"`
Router net.IP `json:"router"`
ClasslessRouteOption []ClasslessRouteOptionPart `json:"classlessRouteOption"`
}
NetworkConfiguration is used to configure clients through dhcp
func UnmarshalNetworkConfiguration ¶ added in v0.9.2
func UnmarshalNetworkConfiguration(netConfStr string) (*NetworkConfiguration, error)
UnmarshalNetworkConfiguration returns a pointer to a newly constructed NetworkConfiguration from the given string