package fargo
import "github.com/hudl/fargo"
Index ¶
- Constants
- Variables
- type AmazonMetadataType
- type AppNotFoundError
- type Application
- type Config
- type DataCenterInfo
- type EurekaConnection
- func NewConn(address ...string) (e EurekaConnection)
- func NewConnFromConfig(conf Config) (c EurekaConnection)
- func NewConnFromConfigFile(location string) (c EurekaConnection, err error)
- func (e EurekaConnection) AddMetadataString(ins *Instance, key, value string) error
- func (e *EurekaConnection) DeregisterInstance(ins *Instance) error
- func (e *EurekaConnection) GetApp(name string) (*Application, error)
- func (e *EurekaConnection) GetApps() (map[string]*Application, error)
- func (e *EurekaConnection) GetInstance(app, insId string) (*Instance, error)
- func (e *EurekaConnection) HeartBeatInstance(ins *Instance) error
- func (e *EurekaConnection) RegisterInstance(ins *Instance) error
- func (e *EurekaConnection) ReregisterInstance(ins *Instance) error
- func (e *EurekaConnection) SelectServiceURL() string
- func (e *EurekaConnection) UpdateApp(app *Application)
- func (e EurekaConnection) UpdateInstanceStatus(ins *Instance, status StatusType) error
- type GetAppResponseJson
- type GetAppsResponse
- type GetAppsResponseJson
- type Instance
- func (i *Instance) Id() string
- func (ins *Instance) SetMetadataString(key, value string)
- func (i *Instance) UnmarshalJSON(b []byte) error
- type InstanceMetadata
- func (im *InstanceMetadata) GetBool(key string) (b bool, err error)
- func (im *InstanceMetadata) GetFloat32(key string) (f float32, err error)
- func (im *InstanceMetadata) GetFloat64(key string) (f float64, err error)
- func (im *InstanceMetadata) GetInt(key string) (i int, err error)
- func (im *InstanceMetadata) GetMap() map[string]interface{}
- func (im *InstanceMetadata) GetString(key string) (s string, err error)
- func (i *InstanceMetadata) MarshalJSON() ([]byte, error)
- func (i InstanceMetadata) MarshalXML(e *xml.Encoder, start xml.StartElement) error
- func (i *InstanceMetadata) UnmarshalJSON(b []byte) error
- type LeaseInfo
- type Port
- type RegisterInstanceJson
- type StatusType
Constants ¶
const ( Amazon = "Amazon" MyOwn = "MyOwn" )
Datacenter names
Variables ¶
EurekaUrlSlugs is a map of resource names -> eureka URLs
Types ¶
type AmazonMetadataType ¶
type AmazonMetadataType struct { AmiLaunchIndex string `xml:"ami-launch-index" json:"ami-launch-index"` LocalHostname string `xml:"local-hostname" json:"local-hostname"` AvailabilityZone string `xml:"availability-zone" json:"availability-zone"` InstanceID string `xml:"instance-id" json:"instance-id"` PublicIpv4 string `xml:"public-ipv4" json:"public-ipv4"` PublicHostname string `xml:"public-hostname" json:"public-hostname"` AmiManifestPath string `xml:"ami-manifest-path" json:"ami-manifest-path"` LocalIpv4 string `xml:"local-ipv4" json:"local-ipv4"` HostName string `xml:"hostname" json:"hostname"` AmiID string `xml:"ami-id" json:"ami-id"` InstanceType string `xml:"instance-type" json:"instance-type"` }
AmazonMetadataType is information about AZ's, AMI's, and the AWS instance <xsd:complexType name="amazonMetdataType"> from http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/index.html?AESDG-chapter-instancedata.html
type AppNotFoundError ¶
type AppNotFoundError struct {
// contains filtered or unexported fields
}
func (AppNotFoundError) Error ¶
func (e AppNotFoundError) Error() string
type Application ¶
type Application struct { Name string `xml:"name" json:"name"` Instances []*Instance `xml:"instance" json:"instance"` }
Application deserializeable from Eureka XML
func (*Application) ParseAllMetadata ¶
func (a *Application) ParseAllMetadata() error
ParseAllMetadata iterates through all instances in an application
func (*Application) UnmarshalJSON ¶
func (a *Application) UnmarshalJSON(b []byte) error
UnmarshalJSON is a custom JSON unmarshaler for Application to deal with sometimes non-wrapped Instance array when there is only a single Instance item.
type Config ¶
type Config struct { AWS aws Eureka eureka }
Config is a base struct to be read by code.google.com/p/gcfg
func ReadConfig ¶
ReadConfig from a file location. Minimal error handling. Just bails and passes up an error if the file isn't found
type DataCenterInfo ¶
type DataCenterInfo struct { Name string `xml:"name" json:"name"` Metadata AmazonMetadataType `xml:"metadata" json:"metadata"` }
DataCenterInfo is only really useful when running in AWS.
type EurekaConnection ¶
type EurekaConnection struct { ServiceUrls []string ServicePort int Timeout time.Duration PollInterval time.Duration PreferSameZone bool Retries int DNSDiscovery bool DiscoveryZone string UseJson bool // contains filtered or unexported fields }
EurekaConnection is the settings required to make eureka requests
func NewConn ¶
func NewConn(address ...string) (e EurekaConnection)
NewConn is a default connection with just a list of ServiceUrls. Most basic way to make a new connection. Generally only if you know what you're doing and are going to do the configuration yourself some other way.
func NewConnFromConfig ¶
func NewConnFromConfig(conf Config) (c EurekaConnection)
NewConnFromConfig will, given a Config struct, return a connection based on those options
func NewConnFromConfigFile ¶
func NewConnFromConfigFile(location string) (c EurekaConnection, err error)
NewConnFromConfigFile sets up a connection object based on a config in specified path
func (EurekaConnection) AddMetadataString ¶
func (e EurekaConnection) AddMetadataString(ins *Instance, key, value string) error
AddMetadataString to a given instance. Is immediately sent to Eureka server.
func (*EurekaConnection) DeregisterInstance ¶
func (e *EurekaConnection) DeregisterInstance(ins *Instance) error
DeregisterInstance will deregister the given Instance from eureka. This is good practice to do before exiting or otherwise going off line.
func (*EurekaConnection) GetApp ¶
func (e *EurekaConnection) GetApp(name string) (*Application, error)
GetApp returns a single eureka application by name
func (*EurekaConnection) GetApps ¶
func (e *EurekaConnection) GetApps() (map[string]*Application, error)
GetApps returns a map of all Applications
func (*EurekaConnection) GetInstance ¶
func (e *EurekaConnection) GetInstance(app, insId string) (*Instance, error)
GetInstance gets an Instance from eureka given its app and instanceid.
func (*EurekaConnection) HeartBeatInstance ¶
func (e *EurekaConnection) HeartBeatInstance(ins *Instance) error
HeartBeatInstance sends a single eureka heartbeat. Does not continue sending heartbeats. Errors if the response is not 200.
func (*EurekaConnection) RegisterInstance ¶
func (e *EurekaConnection) RegisterInstance(ins *Instance) error
RegisterInstance will register the given Instance with eureka if it is not already registered, but DOES NOT automatically send heartbeats. See HeartBeatInstance for that functionality
func (*EurekaConnection) ReregisterInstance ¶
func (e *EurekaConnection) ReregisterInstance(ins *Instance) error
ReregisterInstance will register the given Instance with eureka but DOES NOT automatically send heartbeats. See HeartBeatInstance for that functionality
func (*EurekaConnection) SelectServiceURL ¶
func (e *EurekaConnection) SelectServiceURL() string
SelectServiceURL gets a eureka instance based on the connection's load balancing scheme. TODO: Make this not just pick a random one.
func (*EurekaConnection) UpdateApp ¶
func (e *EurekaConnection) UpdateApp(app *Application)
UpdateApp creates a goroutine that continues to keep an application updated with its status in Eureka
func (EurekaConnection) UpdateInstanceStatus ¶
func (e EurekaConnection) UpdateInstanceStatus(ins *Instance, status StatusType) error
UpdateInstanceStatus updates the status of a given instance with eureka.
type GetAppResponseJson ¶
type GetAppResponseJson struct { Application Application `json:"application"` }
Application deserializeable from Eureka JSON
type GetAppsResponse ¶
type GetAppsResponse struct { Applications []*Application `xml:"application" json:"application"` AppsHashcode string `xml:"apps__hashcode" json:"apps__hashcode"` VersionsDelta int `xml:"versions__delta" json:"versions__delta"` }
GetAppsResponse lets us deserialize the eureka/v2/apps response XML
func (*GetAppsResponse) UnmarshalJSON ¶
func (r *GetAppsResponse) UnmarshalJSON(b []byte) error
UnmarshalJSON is a custom JSON unmarshaler for GetAppsResponse to deal with sometimes non-wrapped Application arrays when there is only a single Application item.
type GetAppsResponseJson ¶
type GetAppsResponseJson struct { Response *GetAppsResponse `json:"applications"` }
GetAppsResponseJson lets us deserialize the eureka/v2/apps response JSON--a wrapped GetAppsResponse
type Instance ¶
type Instance struct { XMLName struct{} `xml:"instance" json:"-"` HostName string `xml:"hostName" json:"hostName"` App string `xml:"app" json:"app"` IPAddr string `xml:"ipAddr" json:"ipAddr"` VipAddress string `xml:"vipAddress" json:"vipAddress"` SecureVipAddress string `xml:"secureVipAddress" json:"secureVipAddress"` Status StatusType `xml:"status" json:"status"` Overriddenstatus StatusType `xml:"overriddenstatus" json:"overriddenstatus"` Port int `xml:"port" json:"-"` PortJ Port `json:"port" xml:"-"` SecurePort int `xml:"securePort" json:"-"` SecurePortJ Port `json:"securePort" xml:"-"` HomePageUrl string `xml:"homePageUrl" json:"homePageUrl"` StatusPageUrl string `xml:"statusPageUrl" json:"statusPageUrl"` HealthCheckUrl string `xml:"healthCheckUrl" json:"healthCheckUrl"` CountryId int64 `xml:"countryId" json:"countryId"` DataCenterInfo DataCenterInfo `xml:"dataCenterInfo" json:"dataCenterInfo"` LeaseInfo LeaseInfo `xml:"leaseInfo" json:"leaseInfo"` Metadata InstanceMetadata `xml:"metadata" json:"metadata"` UniqueID func(i Instance) string `xml:"-" json:"-"` }
Instance [de]serializeable [to|from] Eureka XML
func (*Instance) Id ¶
func (*Instance) SetMetadataString ¶
SetMetadataString for a given instance before register
func (*Instance) UnmarshalJSON ¶
UnmarshalJSON is a custom JSON unmarshaler for Instance to deal with the different Port encodings between XML and JSON. Here we copy the values from the JSON Port struct into the simple XML int field.
type InstanceMetadata ¶
type InstanceMetadata struct { Raw []byte `xml:",innerxml" json:"-"` // contains filtered or unexported fields }
InstanceMetadata represents the eureka metadata, which is arbitrary XML. See metadata.go for more info.
func (*InstanceMetadata) GetBool ¶
func (im *InstanceMetadata) GetBool(key string) (b bool, err error)
GetBool pulls a value cast as bool. Swallows panics from type assertion and returns false + an error if conversion fails
func (*InstanceMetadata) GetFloat32 ¶
func (im *InstanceMetadata) GetFloat32(key string) (f float32, err error)
GetFloat32 pulls a value cast as float. Swallows panics from type assertion and returns 0.0 + an error if conversion fails
func (*InstanceMetadata) GetFloat64 ¶
func (im *InstanceMetadata) GetFloat64(key string) (f float64, err error)
GetFloat64 pulls a value cast as float. Swallows panics from type assertion and returns 0.0 + an error if conversion fails
func (*InstanceMetadata) GetInt ¶
func (im *InstanceMetadata) GetInt(key string) (i int, err error)
GetInt pulls a value cast as int. Swallows panics from type assertion and returns 0 + an error if conversion fails
func (*InstanceMetadata) GetMap ¶
func (im *InstanceMetadata) GetMap() map[string]interface{}
GetMap returns a map of the metadata parameters for this instance
func (*InstanceMetadata) GetString ¶
func (im *InstanceMetadata) GetString(key string) (s string, err error)
GetString pulls a value cast as a string. Swallows panics from type assertion and returns empty string + an error if conversion fails
func (*InstanceMetadata) MarshalJSON ¶
func (i *InstanceMetadata) MarshalJSON() ([]byte, error)
MarshalJSON is a custom JSON marshaler for InstanceMetadata.
func (InstanceMetadata) MarshalXML ¶
func (i InstanceMetadata) MarshalXML(e *xml.Encoder, start xml.StartElement) error
MarshalXML is a custom XML marshaler for InstanceMetadata.
func (*InstanceMetadata) UnmarshalJSON ¶
func (i *InstanceMetadata) UnmarshalJSON(b []byte) error
UnmarshalJSON is a custom JSON unmarshaler for InstanceMetadata to handle squirreling away the raw JSON for later parsing.
type LeaseInfo ¶
type LeaseInfo struct { RenewalIntervalInSecs int32 `xml:"renewalIntervalInSecs" json:"renewalIntervalInSecs"` DurationInSecs int32 `xml:"durationInSecs" json:"durationInSecs"` RegistrationTimestamp int64 `xml:"registrationTimestamp" json:"registrationTimestamp"` LastRenewalTimestamp int64 `xml:"lastRenewalTimestamp" json:"lastRenewalTimestamp"` EvictionTimestamp int64 `xml:"evictionTimestamp" json:"evictionTimestamp"` ServiceUpTimestamp int64 `xml:"serviceUpTimestamp" json:"serviceUpTimestamp"` }
LeaseInfo tells us about the renewal from Eureka, including how old it is
type Port ¶
Port struct used for JSON [un]marshaling only looks like: "port":{"@enabled":"true", "$":"7101"},
type RegisterInstanceJson ¶
type RegisterInstanceJson struct { Instance *Instance `json:"instance"` }
RegisterInstanceJson lets us serialize the eureka/v2/apps/<ins> request JSON--a wrapped Instance
type StatusType ¶
type StatusType string
StatusType is an enum of the different statuses allowed by Eureka
const ( UP StatusType = "UP" DOWN StatusType = "DOWN" STARTING StatusType = "STARTING" OUTOFSERVICE StatusType = "OUT_OF_SERVICE" UNKNOWN StatusType = "UNKNOWN" )
Supported statuses
Source Files ¶
config.go connection.go dns_discover.go errors.go log.go marshal.go metadata.go net.go rpc.go struct.go
Directories ¶
Path | Synopsis |
---|---|
tests |
- Version
- v1.1.0
- Published
- Feb 26, 2016
- Platform
- js/wasm
- Imports
- 18 packages
- Last checked
- 3 weeks ago –
Tools for package owners.