Python API

Spicerack Python API autodoc.

Spicerack package.

class spicerack.Spicerack(*, verbose: bool = False, dry_run: bool = True, cumin_config: str = '/etc/cumin/config.yaml', conftool_config: str = '/etc/conftool/config.yaml', conftool_schema: str = '/etc/conftool/schema.yaml', debmonitor_config: str = '/etc/debmonitor.conf', spicerack_config_dir: str = '/etc/spicerack', http_proxy: str = '')[source]

Bases: object

Spicerack service locator.

Initialize the service locator for the Spicerack library.

Parameters
  • verbose (bool, optional) -- whether to set the verbose mode.

  • dry_run (bool, optional) -- whether this is a DRY-RUN.

  • cumin_config (str, optional) -- the path to Cumin's configuration file.

  • conftool_config (str, optional) -- the path to Conftool's configuration file.

  • conftool_schema (str, optional) -- the path to Conftool's schema file.

  • debmonitor_config (str, optional) --

    the path to Debmonitor's INI configuration file. It must have at least the following schema:

    [DEFAULT]
    server=debmonitor.example.com
    cert=/etc/debmonitor/ssl/cert.pem
    key=/etc/debmonitor/ssl/server.key
    

  • spicerack_config_dir (str, optional) -- the path for the root configuration directory for Spicerack. Module-specific configuration will be loaded from config_dir/module_name/.

  • http_proxy (str, optional) -- the scheme://url:port of the HTTP proxy to use for external calls.

admin_reason(reason: str, task_id: Optional[str] = None)spicerack.administrative.Reason[source]

Get an administrative Reason instance.

Parameters
  • reason (str) -- the reason to use to justify an administrative action. See spicerack.administrative.Reason for all the details.

  • task_id (str, optional) -- the task ID to mention in the reason.

Returns

the administrative Reason instance.

Return type

spicerack.administrative.Reason

confctl(entity_name: str)spicerack.confctl.ConftoolEntity[source]

Access a Conftool specific entity instance.

Parameters

entity_name (str) -- the name of a Conftool entity. Possible values: node, service, discovery, mwconfig.

Returns

the confctl entity instance.

Return type

spicerack.confctl.ConftoolEntity

debmonitor()spicerack.debmonitor.Debmonitor[source]

Get a Debmonitor instance to interact with a Debmonitor website.

Returns

the instance.

Return type

spicerack.debmonitor.Debmonitor

Raises

KeyError -- if any configuration option is missing.

discovery(*records: str)spicerack.dnsdisc.Discovery[source]

Get a Discovery instance.

Parameters

*records (str) -- arbitrary positional arguments, each one must be a Discovery DNS record name.

Returns

the pre-configured Discovery instance for the given records.

Return type

spicerack.dnsdisc.Discovery

dns()wmflib.dns.Dns[source]

Get a Dns instance.

Returns

a Dns instance that will use the operating system default namserver(s).

Return type

wmflib.dns.Dns

elasticsearch_clusters(clustergroup: str, write_queue_datacenters: Sequence[str])spicerack.elasticsearch_cluster.ElasticsearchClusters[source]

Get an ElasticsearchClusters instance.

Parameters
  • clustergroup (str) -- name of cluster group e.g search_eqiad.

  • write_queue_datacenters (Sequence[str]) -- Sequence of which core DCs to query write queues for.

Returns

ElasticsearchClusters instance.

Return type

spicerack.elasticsearch_cluster.ElasticsearchClusters

etcdctl(*, remote_host: spicerack.remote.RemoteHosts)spicerack.toolforge.etcdctl.EtcdctlController[source]

Add etcdctl control capabilities to the given RemoteHost.

Params:
remote_host: Single remote host (that should map one single host)

to add capabilities to.

Returns

A wrapped RemoteHost with the etcdctl control related methods.

ganeti()spicerack.ganeti.Ganeti[source]

Get an instance to interact with Ganeti.

Returns

the instance

Return type

spicerack.ganeti.Ganeti

Raises

KeyError -- If the configuration file does not contain the correct keys.

icinga()spicerack.icinga.Icinga[source]

Get an Icinga instance.

Deprecated since version v0.0.50: use spicerack.Spicerack.icinga_hosts() instead.

Returns

Icinga instance.

Return type

spicerack.icinga.Icinga

icinga_hosts(target_hosts: TypeHosts, *, verbatim_hosts: bool = False)spicerack.icinga.IcingaHosts[source]

Get an IcingaHosts instance.

Parameters
  • target_hosts (spicerack.remote.RemoteHosts, Sequence[str]) -- the target hosts either as a RemoteHosts instance or a sequence of strings.

  • verbatim_hosts (bool, optional) -- if True use the hosts passed verbatim as is, if instead False, the default, consider the given target hosts as FQDNs and extract their hostnames to be used in Icinga.

Returns

IcingaHosts instance.

Return type

spicerack.icinga.IcingaHosts

ipmi(*, cached: bool = False)spicerack.ipmi.Ipmi[source]

Get an Ipmi instance to send remote IPMI commands to management consoles.

Parameters

cached (bool, optional) -- whether to cache the Ipmi instance and allow to re-use it without re-asking the management password. The cached instance will be returned at each future call of this method with the cached parameter set to True.

Returns

the instance to run ipmitool commands.

Return type

spicerack.ipmi.Ipmi

management()spicerack.management.Management[source]

Get a Management instance to interact with the management interfaces.

Returns

the instance.

Return type

spicerack.management.Management

mediawiki()spicerack.mediawiki.MediaWiki[source]

Get a MediaWiki instance.

Returns

the MediaWiki instance.

Return type

spicerack.mediawiki.MediaWiki

mysql()spicerack.mysql.Mysql[source]

Get a Mysql instance.

Returns

the Mysql instance.

Return type

spicerack.mysql.Mysql

mysql_legacy()spicerack.mysql_legacy.MysqlLegacy[source]

Get a MysqlLegacy instance.

Returns

the MysqlLegacy instance.

Return type

spicerack.mysql_legacy.MysqlLegacy

netbox(*, read_write: bool = False)spicerack.netbox.Netbox[source]

Get a Netbox instance to interact with Netbox's API.

Parameters

read_write (bool, optional) -- whether to use a read-write token.

Returns

the instance

Return type

spicerack.netbox.Netbox

netbox_server(hostname: str, *, read_write: bool = False)spicerack.netbox.NetboxServer[source]

Get a NetboxServer instance to interact with a server in Netbox, both physical and virtual.

Parameters
  • hostname (str) -- the hostname (not FQDN) of the server to manage.

  • read_write (bool, optional) -- whether to use a read-write token.

Raises

spicerack.netbox.NetboxError -- if unable to find or load the server.

Returns

the NetboxServer instance.

Return type

spicerack.netbox.NetboxServer

phabricator(bot_config_file: str, section: str = 'phabricator_bot')wmflib.phabricator.Phabricator[source]

Get a Phabricator instance to interact with a Phabricator website.

Parameters
  • bot_config_file (str) --

    the path to the configuration file for the Phabricator bot, with the following structure:

    [section_name]
    host = https://phabricator.example.com/api/
    username = phab-bot
    token = api-12345
    

  • section (str, optional) -- the name of the section of the configuration file where to find the required parameters.

Returns

the instance.

Return type

wmflib.phabricator.Phabricator

prometheus()wmflib.prometheus.Prometheus[source]

Get an Prometheus instance.

Returns

Prometheus instance.

Return type

wmflib.prometheus.Prometheus

puppet(remote_hosts: spicerack.remote.RemoteHosts)spicerack.puppet.PuppetHosts[source]

Get a PuppetHosts instance for the given remote hosts.

Parameters

remote_hosts (spicerack.remote.RemoteHosts) -- the instance with the target hosts.

Returns

the instance to manage Puppet on the target hosts.

Return type

spicerack.puppet.PuppetHosts

puppet_master()spicerack.puppet.PuppetMaster[source]

Get a PuppetMaster instance to manage hosts and certificates from a Puppet master.

Returns

the instance to manage Puppet hosts and certificates.

Return type

spicerack.puppet.PuppetMaster

redis_cluster(cluster: str)spicerack.redis_cluster.RedisCluster[source]

Get a RedisCluster instance.

Parameters

cluster (str) -- the name of the cluster.

Returns

the cluster instance.

Return type

spicerack.redis_cluster.RedisCluster

remote()spicerack.remote.Remote[source]

Get a Remote instance.

Returns

the Remote instance.

Return type

spicerack.remote.Remote

requests_session(name: str, *, timeout: float = 5.0, tries: int = 3, backoff: float = 1.0)requests.sessions.Session[source]

Return a new requests Session with timeout and retry logic.

Params:

according to wmflib.requests.http_session().

Returns

the pre-configured session.

Return type

requests.Session

property actions

Getter for the actions property.

Returns

a dictionary to log and record cookbook actions.

Return type

wmflib.actions.ActionsDict

property config_dir

Getter for Spicerack's configuration file directory.

Returns

a filesystem location of configuration files.

Return type

str

property dry_run

Getter for the dry_run property.

Returns

True if the DRY-RUN mode is set, False otherwise.

Return type

bool

property http_proxy

Getter for the HTTP PROXY to use for external calls.

Returns

the scheme://url:port of the proxy.

Return type

str

property icinga_master_host

Getter for the icinga_master_host property.

Returns

the instance to execute commands on the Icinga master host.

Return type

spicerack.remote.RemoteHosts

property irc_logger

Getter for the irc_logger property.

Returns

the logger instance to write to IRC.

Return type

logging.Logger

property netbox_master_host

Getter for the netbox_master_host property.

Returns

the instance to execute commands on the Netbox master host.

Return type

spicerack.remote.RemoteHosts

property requests_proxies

Getter to return the HTTP proxy configuration for the Requests module.

Returns

with the proxies as required by Requests documentation. None: if no HTTP proxy is set.

Return type

dict

property username

Getter for the current username.

Returns

the name of the effective running user.

Return type

str

property verbose

Getter for the verbose property.

Returns

True if the verbose mode is set, False otherwise.

Return type

bool

spicerack.__version__: str = '0.1.dev2+gc0195f6'

the version of the current Spicerack module.

Type

str

Subpackages and Submodules