yoda package

Submodules

yoda.client module

class yoda.client.Client(etcd_cl=None, etcd_port=None, etcd_host=None, etcd_base=None)[source]

Yoda Client that uses etcd API to control the proxy,

discover_node(upstream, node_name, endpoint, ttl=120, meta=None)[source]

Discover nodes for a given upstream

Parameters:
  • upstream (str) – Upstream for the node.
  • node_name (str) – Name of the node to be discovered
  • endpoint (str) – Discover endpoint (host:port)
  • ttl (int) – Time to live for Etcd record
  • meta (dict) – Meta information about the endpoint (Default: None)
Returns:

discover_proxy_node(node_name, host='172.17.42.1', ttl=300)[source]
get_nodes(upstream)[source]

Get nodes for a given upstream :param upstream: Upstream whose nodes needs to be determined. :type upstream: str :return: Dictionary of nodes for the upstream. e.g.: {

‘node1’: ‘host1:port1’, ‘node2’: ‘host2:port1’,

} :rtype: dict

register_upstream(upstream, mode='http', health_uri=None, health_timeout=None, health_interval=None, ttl=3600)[source]

Registers upstream with give name, mode and health check params.

Parameters:
  • upstream (str) – Upstream (backend) that needs to be registered
  • mode (str) – Proxy mode (‘http’ or ‘tcp’). Defaults to ‘http’
  • health_uri (str) – URI to be used for http health check. If None, http health check is not executed.
  • health_timeout (str) – Timeout for healthcheck. (e.g.: ‘5s’). Defaults to None. If None, it uses haproxy’s default timeout for health-check
  • health_interval (str) – Frequency for health check. If None (default) it defaults to value specified in haproxy cfg template.
  • ttl (int) – Time to live for upstream directory.
Returns:

None

remove_node(upstream, node_name)[source]
remove_proxy_node(node_name)[source]
remove_tcp_listener(listener_name)[source]

Deletes listener with listener_name if it exists. Has no effect if listener does not exists. :param listener_name: Unique Name for the listener :type listener_name: str :return: None

remove_upstream(upstream)[source]

Removes upstream with given name if it exists.

Parameters:upstream (str) – Name of upstream (or backend)

:return:None

renew_upstream(upstream, ttl=3600)[source]

Renews the TTL for an existing upstream to ensure that it does not get removed.

Parameters:
  • upstream – Upstream for the node.
  • ttl (int) – Time to live for Etcd record
Returns:

None

unwire_proxy(hostname, upstreams=[])[source]
update_tcp_listener(tcp_listener)[source]

Creates or updates tcp listener for yoda proxy. :param tcp_listener: :type tcp_listener: yoda.model.TcpListener :return: None

wire_proxy(host)[source]

Wires the proxy for all locations of a given host.

Parameters:host (yoda.model.Host) –
Returns:
yoda.client.as_endpoint(backend_host, backend_port)[source]
yoda.client.as_upstream(app_name, private_port, app_version=None)[source]

Creates upstream using application name, private port and version.

Parameters:
  • app_name (str) – Application Name
  • private_port (str or int) – Private port for application (e.g. 8080)
  • app_version (str) – Optional application version to be used for creating upstream. Defaults to None.
Returns:

String representing Upstream for yoda.

Return type:

str

yoda.model module

class yoda.model.Host(hostname, locations, aliases=None)[source]

Model representing Host for yoda proxy.

class yoda.model.Location(upstream, path='/', location_name=None, allowed_acls=None, denied_acls=None, force_ssl=False)[source]

Model representing location for yoda proxy.

class yoda.model.TcpListener(name, bind, upstream=None, allowed_acls=None, denied_acls=None)[source]

Model representing Tcp based listener for yoda proxy.

Module contents

yoda.as_endpoint(backend_host, backend_port)[source]
yoda.as_upstream(app_name, private_port, app_version=None)[source]

Creates upstream using application name, private port and version.

Parameters:
  • app_name (str) – Application Name
  • private_port (str or int) – Private port for application (e.g. 8080)
  • app_version (str) – Optional application version to be used for creating upstream. Defaults to None.
Returns:

String representing Upstream for yoda.

Return type:

str

class yoda.Location(upstream, path='/', location_name=None, allowed_acls=None, denied_acls=None, force_ssl=False)[source]

Model representing location for yoda proxy.

class yoda.Host(hostname, locations, aliases=None)[source]

Model representing Host for yoda proxy.

class yoda.Client(etcd_cl=None, etcd_port=None, etcd_host=None, etcd_base=None)[source]

Yoda Client that uses etcd API to control the proxy,

discover_node(upstream, node_name, endpoint, ttl=120, meta=None)[source]

Discover nodes for a given upstream

Parameters:
  • upstream (str) – Upstream for the node.
  • node_name (str) – Name of the node to be discovered
  • endpoint (str) – Discover endpoint (host:port)
  • ttl (int) – Time to live for Etcd record
  • meta (dict) – Meta information about the endpoint (Default: None)
Returns:

discover_proxy_node(node_name, host='172.17.42.1', ttl=300)[source]
get_nodes(upstream)[source]

Get nodes for a given upstream :param upstream: Upstream whose nodes needs to be determined. :type upstream: str :return: Dictionary of nodes for the upstream. e.g.: {

‘node1’: ‘host1:port1’, ‘node2’: ‘host2:port1’,

} :rtype: dict

register_upstream(upstream, mode='http', health_uri=None, health_timeout=None, health_interval=None, ttl=3600)[source]

Registers upstream with give name, mode and health check params.

Parameters:
  • upstream (str) – Upstream (backend) that needs to be registered
  • mode (str) – Proxy mode (‘http’ or ‘tcp’). Defaults to ‘http’
  • health_uri (str) – URI to be used for http health check. If None, http health check is not executed.
  • health_timeout (str) – Timeout for healthcheck. (e.g.: ‘5s’). Defaults to None. If None, it uses haproxy’s default timeout for health-check
  • health_interval (str) – Frequency for health check. If None (default) it defaults to value specified in haproxy cfg template.
  • ttl (int) – Time to live for upstream directory.
Returns:

None

remove_node(upstream, node_name)[source]
remove_proxy_node(node_name)[source]
remove_tcp_listener(listener_name)[source]

Deletes listener with listener_name if it exists. Has no effect if listener does not exists. :param listener_name: Unique Name for the listener :type listener_name: str :return: None

remove_upstream(upstream)[source]

Removes upstream with given name if it exists.

Parameters:upstream (str) – Name of upstream (or backend)

:return:None

renew_upstream(upstream, ttl=3600)[source]

Renews the TTL for an existing upstream to ensure that it does not get removed.

Parameters:
  • upstream – Upstream for the node.
  • ttl (int) – Time to live for Etcd record
Returns:

None

unwire_proxy(hostname, upstreams=[])[source]
update_tcp_listener(tcp_listener)[source]

Creates or updates tcp listener for yoda proxy. :param tcp_listener: :type tcp_listener: yoda.model.TcpListener :return: None

wire_proxy(host)[source]

Wires the proxy for all locations of a given host.

Parameters:host (yoda.model.Host) –
Returns: