api

package
v0.0.0-...-6337964 Latest Latest
Warning

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

Go to latest
Published: Jun 13, 2014 License: AGPL-3.0 Imports: 42 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var PingPeriod = 1 * time.Minute

PingPeriod defines how often the internal connection health check will run. It's a variable so it can be changed in tests.

Functions

This section is empty.

Types

type AgentStatus

type AgentStatus struct {
	Status  params.Status
	Info    string
	Data    params.StatusData
	Version string
	Life    string
	Err     error
}

AgentStatus holds status info about a machine or unit agent.

type AllWatcher

type AllWatcher struct {
	// contains filtered or unexported fields
}

AllWatcher holds information allowing us to get Deltas describing changes to the entire environment.

func (*AllWatcher) Next

func (watcher *AllWatcher) Next() ([]params.Delta, error)

func (*AllWatcher) Stop

func (watcher *AllWatcher) Stop() error

type CharmInfo

type CharmInfo struct {
	Revision int
	URL      string
	Config   *charm.Config
	Meta     *charm.Meta
}

CharmInfo holds information about a charm.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client represents the client-accessible part of the state.

func (*Client) APIHostPorts

func (c *Client) APIHostPorts() ([][]network.HostPort, error)

APIHostPorts returns a slice of network.HostPort for each API server.

func (*Client) AddCharm

func (c *Client) AddCharm(curl *charm.URL) error

AddCharm adds the given charm URL (which must include revision) to the environment, if it does not exist yet. Local charms are not supported, only charm store URLs. See also AddLocalCharm() in the client-side API.

func (*Client) AddLocalCharm

func (c *Client) AddLocalCharm(curl *charm.URL, ch charm.Charm) (*charm.URL, error)

AddLocalCharm prepares the given charm with a local: schema in its URL, and uploads it via the API server, returning the assigned charm URL. If the API server does not support charm uploads, an error satisfying params.IsCodeNotImplemented() is returned.

func (*Client) AddMachines

func (c *Client) AddMachines(machineParams []params.AddMachineParams) ([]params.AddMachinesResult, error)

AddMachines adds new machines with the supplied parameters.

func (*Client) AddMachines1dot18

func (c *Client) AddMachines1dot18(machineParams []params.AddMachineParams) ([]params.AddMachinesResult, error)

AddMachines1dot18 adds new machines with the supplied parameters.

TODO(axw) 2014-04-11 #XXX This exists for backwards compatibility; remove in 1.21 (client only).

func (*Client) AddRelation

func (c *Client) AddRelation(endpoints ...string) (*params.AddRelationResults, error)

AddRelation adds a relation between the specified endpoints and returns the relation info.

func (*Client) AddServiceUnits

func (c *Client) AddServiceUnits(service string, numUnits int, machineSpec string) ([]string, error)

AddServiceUnits adds a given number of units to a service.

func (*Client) AgentVersion

func (c *Client) AgentVersion() (version.Number, error)

AgentVersion reports the version number of the api server.

func (*Client) CharmInfo

func (c *Client) CharmInfo(charmURL string) (*CharmInfo, error)

CharmInfo returns information about the requested charm.

func (*Client) Close

func (c *Client) Close() error

Close closes the Client's underlying State connection Client is unique among the api.State facades in closing its own State connection, but it is conventional to use a Client object without any access to its underlying state connection.

func (*Client) DestroyEnvironment

func (c *Client) DestroyEnvironment() error

DestroyEnvironment puts the environment into a "dying" state, and removes all non-manager machine instances. DestroyEnvironment will fail if there are any manually-provisioned non-manager machines in state.

func (*Client) DestroyMachines

func (c *Client) DestroyMachines(machines ...string) error

DestroyMachines removes a given set of machines.

func (*Client) DestroyRelation

func (c *Client) DestroyRelation(endpoints ...string) error

DestroyRelation removes the relation between the specified endpoints.

func (*Client) DestroyServiceUnits

func (c *Client) DestroyServiceUnits(unitNames ...string) error

DestroyServiceUnits decreases the number of units dedicated to a service.

func (*Client) EnsureAvailability

func (c *Client) EnsureAvailability(numStateServers int, cons constraints.Value, series string) error

EnsureAvailability ensures the availability of Juju state servers.

func (*Client) EnvironmentGet

func (c *Client) EnvironmentGet() (map[string]interface{}, error)

EnvironmentGet returns all environment settings.

func (*Client) EnvironmentInfo

func (c *Client) EnvironmentInfo() (*EnvironmentInfo, error)

EnvironmentInfo returns details about the Juju environment.

func (*Client) EnvironmentSet

func (c *Client) EnvironmentSet(config map[string]interface{}) error

EnvironmentSet sets the given key-value pairs in the environment.

func (*Client) EnvironmentUnset

func (c *Client) EnvironmentUnset(keys ...string) error

EnvironmentUnset sets the given key-value pairs in the environment.

func (*Client) FindTools

func (c *Client) FindTools(majorVersion, minorVersion int,
	series, arch string) (result params.FindToolsResults, err error)

FindTools returns a List containing all tools matching the specified parameters.

func (*Client) ForceDestroyMachines

func (c *Client) ForceDestroyMachines(machines ...string) error

ForceDestroyMachines removes a given set of machines and all associated units.

func (*Client) GetAnnotations

func (c *Client) GetAnnotations(tag string) (map[string]string, error)

GetAnnotations returns annotations that have been set on the given entity.

func (*Client) GetEnvironmentConstraints

func (c *Client) GetEnvironmentConstraints() (constraints.Value, error)

GetEnvironmentConstraints returns the constraints for the environment.

func (*Client) GetServiceConstraints

func (c *Client) GetServiceConstraints(service string) (constraints.Value, error)

GetServiceConstraints returns the constraints for the given service.

func (*Client) LegacyStatus

func (c *Client) LegacyStatus() (*LegacyStatus, error)

LegacyStatus is a stub version of Status that 1.16 introduced. Should be removed along with structs when api versioning makes it safe to do so.

func (*Client) PrivateAddress

func (c *Client) PrivateAddress(target string) (string, error)

PrivateAddress returns the private address of the specified machine or unit.

func (*Client) ProvisioningScript

func (c *Client) ProvisioningScript(args params.ProvisioningScriptParams) (script string, err error)

ProvisioningScript returns a shell script that, when run, provisions a machine agent on the machine executing the script.

func (*Client) PublicAddress

func (c *Client) PublicAddress(target string) (string, error)

PublicAddress returns the public address of the specified machine or unit.

func (*Client) ResolveCharm

func (c *Client) ResolveCharm(ref charm.Reference) (*charm.URL, error)

ResolveCharm resolves the best available charm URLs with series, for charm locations without a series specified.

func (*Client) Resolved

func (c *Client) Resolved(unit string, retry bool) error

Resolved clears errors on a unit.

func (*Client) RetryProvisioning

func (c *Client) RetryProvisioning(machines ...string) ([]params.ErrorResult, error)

RetryProvisioning updates the provisioning status of a machine allowing the provisioner to retry.

func (*Client) Run

func (c *Client) Run(run params.RunParams) ([]params.RunResult, error)

Run the Commands specified on the machines identified through the ids provided in the machines, services and units slices.

func (*Client) RunOnAllMachines

func (c *Client) RunOnAllMachines(commands string, timeout time.Duration) ([]params.RunResult, error)

RunOnAllMachines runs the command on all the machines with the specified timeout.

func (*Client) ServiceCharmRelations

func (c *Client) ServiceCharmRelations(service string) ([]string, error)

ServiceCharmRelations returns the service's charms relation names.

func (*Client) ServiceDeploy

func (c *Client) ServiceDeploy(charmURL string, serviceName string, numUnits int, configYAML string, cons constraints.Value, toMachineSpec string) error

ServiceDeploy obtains the charm, either locally or from the charm store, and deploys it.

func (*Client) ServiceDeployWithNetworks

func (c *Client) ServiceDeployWithNetworks(charmURL string, serviceName string, numUnits int, configYAML string, cons constraints.Value, toMachineSpec string, networks []string) error

ServiceDeployWithNetworks works exactly like ServiceDeploy, but allows the specification of requested networks that must be present on the machines where the service is deployed. Another way to specify networks to include/exclude is using constraints.

func (*Client) ServiceDestroy

func (c *Client) ServiceDestroy(service string) error

ServiceDestroy destroys a given service.

func (*Client) ServiceExpose

func (c *Client) ServiceExpose(service string) error

ServiceExpose changes the juju-managed firewall to expose any ports that were also explicitly marked by units as open.

func (*Client) ServiceGet

func (c *Client) ServiceGet(service string) (*params.ServiceGetResults, error)

ServiceGet returns the configuration for the named service.

func (*Client) ServiceGetCharmURL

func (c *Client) ServiceGetCharmURL(serviceName string) (*charm.URL, error)

ServiceGetCharmURL returns the charm URL the given service is running at present.

func (*Client) ServiceSet

func (c *Client) ServiceSet(service string, options map[string]string) error

ServiceSet sets configuration options on a service.

func (*Client) ServiceSetCharm

func (c *Client) ServiceSetCharm(serviceName string, charmUrl string, force bool) error

ServiceSetCharm sets the charm for a given service.

func (*Client) ServiceSetYAML

func (c *Client) ServiceSetYAML(service string, yaml string) error

ServiceSetYAML sets configuration options on a service given options in YAML format.

func (*Client) ServiceUnexpose

func (c *Client) ServiceUnexpose(service string) error

ServiceUnexpose changes the juju-managed firewall to unexpose any ports that were also explicitly marked by units as open.

func (*Client) ServiceUnset

func (c *Client) ServiceUnset(service string, options []string) error

ServiceUnset resets configuration options on a service.

func (*Client) ServiceUpdate

func (c *Client) ServiceUpdate(args params.ServiceUpdate) error

ServiceUpdate updates the service attributes, including charm URL, minimum number of units, settings and constraints. TODO(frankban) deprecate redundant API calls that this supercedes.

func (*Client) SetAnnotations

func (c *Client) SetAnnotations(tag string, pairs map[string]string) error

SetAnnotations sets the annotation pairs on the given entity. Currently annotations are supported on machines, services, units and the environment itself.

func (*Client) SetEnvironAgentVersion

func (c *Client) SetEnvironAgentVersion(version version.Number) error

SetEnvironAgentVersion sets the environment agent-version setting to the given value.

func (*Client) SetEnvironmentConstraints

func (c *Client) SetEnvironmentConstraints(constraints constraints.Value) error

SetEnvironmentConstraints specifies the constraints for the environment.

func (*Client) SetServiceConstraints

func (c *Client) SetServiceConstraints(service string, constraints constraints.Value) error

SetServiceConstraints specifies the constraints for the given service.

func (*Client) Status

func (c *Client) Status(patterns []string) (*Status, error)

Status returns the status of the juju environment.

func (*Client) UploadTools

func (c *Client) UploadTools(
	toolsFilename string, vers version.Binary, fakeSeries ...string,
) (
	tools *tools.Tools, err error,
)

func (*Client) WatchAll

func (c *Client) WatchAll() (*AllWatcher, error)

WatchAll returns an AllWatcher, from which you can request the Next collection of Deltas.

func (*Client) WatchDebugLog

func (c *Client) WatchDebugLog(args DebugLogParams) (io.ReadCloser, error)

WatchDebugLog returns a ReadCloser that the caller can read the log lines from. Only log lines that match the filtering specified in the DebugLogParams are returned. It returns an error that satisfies errors.IsNotImplemented when the API server does not support the end-point.

TODO(dimitern) We already have errors.IsNotImplemented - why do we need to define a different error for this purpose here?

type DebugLogParams

type DebugLogParams struct {
	// IncludeEntity lists entity tags to include in the response. Tags may
	// finish with a '*' to match a prefix e.g.: unit-mysql-*, machine-2. If
	// none are set, then all lines are considered included.
	IncludeEntity []string
	// IncludeModule lists logging modules to include in the response. If none
	// are set all modules are considered included.  If a module is specified,
	// all the submodules also match.
	IncludeModule []string
	// ExcludeEntity lists entity tags to exclude from the response. As with
	// IncludeEntity the values may finish with a '*'.
	ExcludeEntity []string
	// ExcludeModule lists logging modules to exclude from the resposne. If a
	// module is specified, all the submodules are also excluded.
	ExcludeModule []string
	// Limit defines the maximum number of lines to return. Once this many
	// have been sent, the socket is closed.  If zero, all filtered lines are
	// sent down the connection until the client closes the connection.
	Limit uint
	// Backlog tells the server to try to go back this many lines before
	// starting filtering. If backlog is zero and replay is false, then there
	// may be an initial delay until the next matching log message is written.
	Backlog uint
	// Level specifies the minimum logging level to be sent back in the response.
	Level loggo.Level
	// Replay tells the server to start at the start of the log file rather
	// than the end. If replay is true, backlog is ignored.
	Replay bool
}

DebugLogParams holds parameters for WatchDebugLog that control the filtering of the log messages. If the structure is zero initialized, the entire log file is sent back starting from the end, and until the user closes the connection.

type DialOpts

type DialOpts struct {
	// DialAddressInterval is the amount of time to wait
	// before starting to dial another address.
	DialAddressInterval time.Duration

	// Timeout is the amount of time to wait contacting
	// a state server.
	Timeout time.Duration

	// RetryDelay is the amount of time to wait between
	// unsucssful connection attempts.
	RetryDelay time.Duration
}

DialOpts holds configuration parameters that control the Dialing behavior when connecting to a state server.

func DefaultDialOpts

func DefaultDialOpts() DialOpts

DefaultDialOpts returns a DialOpts representing the default parameters for contacting a state server.

type EndpointStatus

type EndpointStatus struct {
	ServiceName string
	Name        string
	Role        charm.RelationRole
	Subordinate bool
}

EndpointStatus holds status info about a single endpoint

func (*EndpointStatus) String

func (epStatus *EndpointStatus) String() string

type EnvironmentInfo

type EnvironmentInfo struct {
	DefaultSeries string
	ProviderType  string
	Name          string
	UUID          string
}

EnvironmentInfo holds information about the Juju environment.

type Info

type Info struct {
	// Addrs holds the addresses of the state servers.
	Addrs []string

	// CACert holds the CA certificate that will be used
	// to validate the state server's certificate, in PEM format.
	CACert string

	// Tag holds the name of the entity that is connecting.
	// If this and the password are empty, no login attempt will be made
	// (this is to allow tests to access the API to check that operations
	// fail when not logged in).
	Tag string

	// Password holds the password for the administrator or connecting entity.
	Password string

	// Nonce holds the nonce used when provisioning the machine. Used
	// only by the machine agent.
	Nonce string `yaml:",omitempty"`

	// Environ holds the environ tag for the environment we are trying to
	// connect to.
	EnvironTag string
}

Info encapsulates information about a server holding juju state and can be used to make a connection to it.

type LegacyMachineStatus

type LegacyMachineStatus struct {
	InstanceId string // Not type instance.Id just to match original api.
}

LegacyMachineStatus holds just the instance-id of a machine.

type LegacyStatus

type LegacyStatus struct {
	Machines map[string]LegacyMachineStatus
}

LegacyStatus holds minimal information on the status of a juju environment.

type MachineStatus

type MachineStatus struct {
	Agent AgentStatus

	// The following fields mirror fields in AgentStatus (introduced
	// in 1.19.x). The old fields below are being kept for
	// compatibility with old clients. They can be removed once API
	// versioning lands or for 1.21, whichever comes first.
	AgentState     params.Status
	AgentStateInfo string
	AgentVersion   string
	Life           string
	Err            error

	DNSName       string
	InstanceId    instance.Id
	InstanceState string
	Series        string
	Id            string
	Containers    map[string]MachineStatus
	Hardware      string
	Jobs          []params.MachineJob
	HasVote       bool
	WantsVote     bool
}

MachineStatus holds status info about a machine.

type NetworkStatus

type NetworkStatus struct {
	Err        error
	ProviderId network.Id
	CIDR       string
	VLANTag    int
}

NetworkStatus holds status info about a network.

type NetworksSpecification

type NetworksSpecification struct {
	Enabled  []string
	Disabled []string
}

NetworksSpecification holds the enabled and disabled networks for a service.

type RelationStatus

type RelationStatus struct {
	Id        int
	Key       string
	Interface string
	Scope     charm.RelationScope
	Endpoints []EndpointStatus
}

RelationStatus holds status info about a relation.

type ServiceStatus

type ServiceStatus struct {
	Err           error
	Charm         string
	Exposed       bool
	Life          string
	Relations     map[string][]string
	Networks      NetworksSpecification
	CanUpgradeTo  string
	SubordinateTo []string
	Units         map[string]UnitStatus
}

ServiceStatus holds status info about a service.

type State

type State struct {
	// contains filtered or unexported fields
}

func Open

func Open(info *Info, opts DialOpts) (*State, error)

func (*State) APIHostPorts

func (s *State) APIHostPorts() [][]network.HostPort

APIHostPorts returns addresses that may be used to connect to the API server, including the address used to connect.

The addresses are scoped (public, cloud-internal, etc.), so the client may choose which addresses to attempt. For the Juju CLI, all addresses must be attempted, as the CLI may be invoked both within and outside the environment (think private clouds).

func (*State) Addr

func (s *State) Addr() string

Addr returns the address used to connect to the API server.

func (*State) Agent

func (st *State) Agent() *agent.State

Agent returns a version of the state that provides functionality required by the agent code.

func (*State) Broken

func (s *State) Broken() <-chan struct{}

Broken returns a channel that's closed when the connection is broken.

func (*State) Call

func (s *State) Call(objType, id, request string, args, response interface{}) error

Call invokes a low-level RPC method of the given objType, id, and request, passing the given parameters and filling in the response results. This should not be used directly by clients. TODO (dimitern) Add tests for all client-facing objects to verify we return the correct error when invoking Call("Object", "non-empty-id",...)

func (*State) CharmRevisionUpdater

func (st *State) CharmRevisionUpdater() *charmrevisionupdater.State

CharmRevisionUpdater returns access to the CharmRevisionUpdater API

func (*State) Client

func (st *State) Client() *Client

Client returns an object that can be used to access client-specific functionality.

func (*State) Close

func (s *State) Close() error

func (*State) Deployer

func (st *State) Deployer() *deployer.State

Deployer returns access to the Deployer API

func (*State) EnvironTag

func (s *State) EnvironTag() string

EnvironTag returns the Environment Tag describing the environment we are connected to.

func (*State) Environment

func (st *State) Environment() *environment.Facade

Environment returns access to the Environment API

func (*State) Firewaller

func (st *State) Firewaller() *firewaller.State

Firewaller returns a version of the state that provides functionality required by the firewaller worker.

func (*State) KeyUpdater

func (st *State) KeyUpdater() *keyupdater.State

KeyUpdater returns access to the KeyUpdater API

func (*State) Logger

func (st *State) Logger() *apilogger.State

Logger returns access to the Logger API

func (*State) Login

func (st *State) Login(tag, password, nonce string) error

Login authenticates as the entity with the given name and password. Subsequent requests on the state will act as that entity. This method is usually called automatically by Open. The machine nonce should be empty unless logging in as a machine agent.

func (*State) Machiner

func (st *State) Machiner() *machiner.State

Machiner returns a version of the state that provides functionality required by the machiner worker.

func (*State) Networker

func (st *State) Networker() *networker.State

Networker returns a version of the state that provides functionality required by the networker worker.

func (*State) Ping

func (s *State) Ping() error

func (*State) Provisioner

func (st *State) Provisioner() *provisioner.State

Provisioner returns a version of the state that provides functionality required by the provisioner worker.

func (*State) RPCClient

func (s *State) RPCClient() *rpc.Conn

RPCClient returns the RPC client for the state, so that testing functions can tickle parts of the API that the conventional entry points don't reach. This is exported for testing purposes only.

func (*State) Rsyslog

func (st *State) Rsyslog() *rsyslog.State

Rsyslog returns access to the Rsyslog API

func (*State) Uniter

func (st *State) Uniter() *uniter.State

Uniter returns a version of the state that provides functionality required by the uniter worker.

func (*State) Upgrader

func (st *State) Upgrader() *upgrader.State

Upgrader returns access to the Upgrader API

type Status

type Status struct {
	EnvironmentName string
	Machines        map[string]MachineStatus
	Services        map[string]ServiceStatus
	Networks        map[string]NetworkStatus
	Relations       []RelationStatus
}

Status holds information about the status of a juju environment.

type UnitStatus

type UnitStatus struct {
	Agent AgentStatus

	// See the comment in MachineStatus regarding these fields.
	AgentState     params.Status
	AgentStateInfo string
	AgentVersion   string
	Life           string
	Err            error

	Machine       string
	OpenedPorts   []string
	PublicAddress string
	Charm         string
	Subordinates  map[string]UnitStatus
}

UnitStatus holds status info about a unit.

type WatchAll

type WatchAll struct {
	AllWatcherId string
}

WatchAll holds the id of the newly-created AllWatcher.

Notes

Bugs

  • 2013-12-17 bug #1261780 Due to issues with go 1.1.2, fixed later, we cannot use a regular TLS client with the CACert here, because we get "x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs". Once we use a later go version, this should be changed to connect to the API server with a regular HTTP+TLS enabled client, using the CACert (possily cached, like the tag and password) passed in api.Open()'s info argument.

  • 2013-12-17 bug #1261780 Due to issues with go 1.1.2, fixed later, we cannot use a regular TLS client with the CACert here, because we get "x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs". Once we use a later go version, this should be changed to connect to the API server with a regular HTTP+TLS enabled client, using the CACert (possily cached, like the tag and password) passed in api.Open()'s info argument.

Jump to

Keyboard shortcuts

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