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', cumin_installer_config: str = '/etc/cumin/config-installer.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 = '', get_cookbook_callback: Optional[Callable[[Spicerack, str, Sequence[str]], Optional[BaseItem]]] = None)[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.
cumin_installer_config (str, optional) -- the path to Cumin's configuration file for the Debian installer.
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.
get_cookbook_callback (callable, optional) -- a callable to retrieve a CookbookItem to execute a cookbook from inside another cookbook.
- admin_reason(reason: str, task_id: Optional[str] = None) spicerack.administrative.Reason [source]¶
Get an administrative Reason instance.
- Parameters
- Returns
the administrative Reason instance.
- Return type
- alerting_hosts(target_hosts: spicerack.typing.TypeHosts, *, verbatim_hosts: bool = False) spicerack.alerting.AlertingHosts [source]¶
Get an AlertingHosts instance.
- Parameters
target_hosts (spicerack.typing.TypeHosts) -- the target hosts either as a NodeSet instance or a sequence of strings.
verbatim_hosts (bool, optional) -- if
True
use the hosts passed verbatim as is, if insteadFalse
, the default, consider the given target hosts as FQDNs and extract their hostnames to be used in Icinga.
- Returns
AlertingHosts instance.
- Return type
- alertmanager_hosts(target_hosts: spicerack.typing.TypeHosts, *, verbatim_hosts: bool = False) spicerack.alertmanager.AlertmanagerHosts [source]¶
Get an AlertmanagerHosts instance.
- Parameters
target_hosts (spicerack.typing.TypeHosts) -- the target hosts either as a NodeSet instance or a sequence of strings.
verbatim_hosts (bool, optional) -- if
True
use the hosts passed verbatim as is, if insteadFalse
, the default, consider the given target hosts as FQDNs and extract their hostnames to be used in Icinga.
- Returns
AlertmanagerHosts instance.
- Return type
- 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
- debmonitor() spicerack.debmonitor.Debmonitor [source]¶
Get a Debmonitor instance to interact with a Debmonitor website.
- Returns
the instance.
- Return type
- Raises
KeyError -- if any configuration option is missing.
- dhcp(remote_hosts: spicerack.remote.RemoteHosts) spicerack.dhcp.DHCP [source]¶
Return a DHCP configuration manager for specified site.
- Parameters
remote_hosts (RemoteHosts instance) -- Hosts to operate on, which are normally install servers with dhcp.
- Returns
A DHCP configuration instance
- Return type
- 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
- dns() wmflib.dns.Dns [source]¶
Get a Dns instance.
- Returns
a Dns instance that will use the operating system default namserver(s).
- Return type
- elasticsearch_clusters(clustergroup: str, write_queue_datacenters: Sequence[str]) spicerack.elasticsearch_cluster.ElasticsearchClusters [source]¶
Get an ElasticsearchClusters instance.
- Parameters
- Returns
ElasticsearchClusters instance.
- Return type
- 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
- Raises
KeyError -- If the configuration file does not contain the correct keys.
- icinga_hosts(target_hosts: spicerack.typing.TypeHosts, *, verbatim_hosts: bool = False) spicerack.icinga.IcingaHosts [source]¶
Get an IcingaHosts instance.
- Parameters
target_hosts (spicerack.typing.TypeHosts) -- the target hosts either as a NodeSet instance or a sequence of strings.
verbatim_hosts (bool, optional) -- if
True
use the hosts passed verbatim as is, if insteadFalse
, the default, consider the given target hosts as FQDNs and extract their hostnames to be used in Icinga.
- Returns
IcingaHosts instance.
- Return type
- ipmi(mgmt_fqdn: str) spicerack.ipmi.Ipmi [source]¶
Get an Ipmi instance to send remote IPMI commands to management consoles.
- Parameters
mgmt_fqdn (str) -- the management console FQDN to target.
- Returns
the instance to run ipmitool commands.
- Return type
- kafka() spicerack.kafka.Kafka [source]¶
Get an instance to interact with Kafka.
- Returns
the instance
- Return type
- Raises
KeyError -- If the configuration file does not contain the correct keys.
- mediawiki() spicerack.mediawiki.MediaWiki [source]¶
Get a MediaWiki instance.
- Returns
the MediaWiki instance.
- Return type
- mysql() spicerack.mysql.Mysql [source]¶
Get a Mysql instance.
- Returns
the Mysql instance.
- Return type
- mysql_legacy() spicerack.mysql_legacy.MysqlLegacy [source]¶
Get a MysqlLegacy instance.
- Returns
the MysqlLegacy instance.
- Return type
- 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
- 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
- Raises
spicerack.netbox.NetboxError -- if unable to find or load the server.
- Returns
the NetboxServer instance.
- Return type
- 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
- prometheus() wmflib.prometheus.Prometheus [source]¶
Get an Prometheus instance.
- Returns
Prometheus instance.
- Return type
- 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
- 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
- redfish(mgmt_fqdn: str, username: str, password: str = '') spicerack.redfish.Redfish [source]¶
Get an instance to talk to the Redfish API of a physical server.
Notes
At the moment only Dell hardware is supported.
- Parameters
mgmt_fqdn (str) -- the management console FQDN to target.
username (str) -- the username for the management console (usually 'root').
password (str, optional) -- the password for the management console for the given user. If empty or not provided would use the production management password and ask the user for it if not already in memory.
- Returns
the instance.
- Return type
- 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
- remote(installer: bool = False) spicerack.remote.Remote [source]¶
Get a Remote instance.
- Parameters
installer (bool, optional) -- whether to use the special configuration to connect to a Debian installer or freshly re-imaged host prior to its first Puppet run.
- Returns
the Remote instance.
- Return type
- reposync(name: str) spicerack.reposync.RepoSync [source]¶
Get a Reposync instance.
- Parameters
name (str) -- the name of the repo to sync.
- Returns
the reposync instance.
- Return type
- requests_session(name: str, **kwargs: Any) 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
- run_cookbook(cookbook: str, args: Sequence[str] = ()) int [source]¶
Run another Cookbook within the current run.
The other Cookbook will be executed with the current setup and will log in the same file of the current Cookbook that is running.
- Parameters
cookbook (str) -- the path to the cookbook to execute, either in Spicerack's dot notation or the relative path to the Python file to execute.
args (sequence, optional) -- an iterable sequence of strings with the Cookbook's argument. The Cookbook will be executed with the same global arguments used for the current run.
- Returns
the exit code of the Cookbook, 0 if successful, non-zero if not.
- Return type
- Raises
spicerack.exceptions.SpicerackError -- if the get_cookbook_callback callback is not set or unable to find the cookbook with the given name.
- property actions: wmflib.actions.ActionsDict¶
Getter for the
actions
property.- Returns
a dictionary to log and record cookbook actions.
- Return type
- property config_dir: pathlib.Path¶
Getter for Spicerack's configuration file directory.
- Returns
a filesystem location of configuration files.
- Return type
- property dry_run: bool¶
Getter for the
dry_run
property.- Returns
True if the DRY-RUN mode is set, False otherwise.
- Return type
- property http_proxy: str¶
Getter for the HTTP PROXY to use for external calls.
- Returns
the scheme://url:port of the proxy.
- Return type
- property icinga_master_host: spicerack.remote.RemoteHosts¶
Getter for the
icinga_master_host
property.- Returns
the instance to execute commands on the Icinga master host.
- Return type
- property irc_logger: logging.Logger¶
Getter for the
irc_logger
property.- Returns
the logger instance to write to IRC.
- Return type
- property management_password: str¶
Getter for the
management_password
property.- Returns
the management password. It will be asked to the user if not already cached by the current instance.
- Return type
- property netbox_master_host: spicerack.remote.RemoteHosts¶
Getter for the
netbox_master_host
property.- Returns
the instance to execute commands on the Netbox master host.
- Return type
- property requests_proxies: Optional[Dict[str, str]]¶
Getter to return the HTTP proxy configuration for the Requests module.
Subpackages and Submodules