Skip to main content

Percussive maintenance.

Collection of various tools to keep things ship-shape. Not particularly bright tools, but good for a first-pass.

  1. Neutron resource reaper

neutron-reaper {info, delete} {ip, port} <grace-days> [ --dbversion ocata ]

Reclaims idle floating IPs and cleans up stale ports.

  1. Conflicting Ironic/Neutron MACs

conflict-macs {info, delete} ( --ignore-from-ironic-config <path to ironic.conf> | --ignore-subnet <subnet UUID> )

The Ironic subnet must be provided—directly via ID or determined from a config—otherwise the script would think that they are in conflict.

  1. Undead Instances clinging to nodes

undead-instances {info, delete}

Nova instances that have been put to rest but still cling to Ironic nodes, preventing the next generation from being…ensouled? Checks for the inconsistency and fixed it.

  1. Clean up after IPMI errors

ironic-error-resetter {info, reset}

Resets Ironic nodes in error state with a known, common error. Records those resets on the node metadata (extra field) and refuses after a magic number of attempts.

  1. Update orphaned resource providers

orphan-resource-providers {info, update}

Detects and updates resource providers whose UUID has not been updated to match a recreated Nova compute node.

Common options:

  • --slack <json-options> - if provided, used to post notifications to Slack

  • --osrc <rc-file> - alternate way to feed in the OS authentication vars

Setup/Config

  1. Get code

mkdir -p /root/scripts/hammers
cd /root/scripts/hammers
git clone https://github.com/ChameleonCloud/hammers.git
  1. Create environment

virtualenv /root/scripts/hammers/venv
/root/scripts/hammers/venv/bin/pip install -r /root/scripts/hammers/hammers/requirements.txt
/root/scripts/hammers/venv/bin/pip install -e /root/scripts/hammers/hammers
  1. Set up credentials for OpenStack and Slack

The below cronjob assumes the OS var file is at /root/adminrc and the Slack vars are in /root/scripts/slack.json. The Slack file is a JSON with a root key "webhook" that is a URL to post to (keep secret!) and another root key "hostname_name" that is a mapping of FQDNs to pretty names. Example:

{
    "webhook": "https://hooks.slack.com/services/...super-seekrit...",
    "hostname_names": {
        "m01-07.chameleon.tacc.utexas.edu": "CHI@TACC",
        "m01-03.chameleon.tacc.utexas.edu": "KVM@TACC",
        "admin01.uc.chameleoncloud.org": "CHI@UC"
    }
}
  1. Add cronjob(s) to Puppet:

$slack_json_loc = '/root/scripts/slack.json'
$osrc_loc = '/root/adminrc'
$venv_bin = '/root/scripts/hammers/venv/bin'

cron { 'hammers-neutronreaper-ip':
  command => "$venv_bin/neutron-reaper delete ip 14 --dbversion ocata --slack $slack_json_loc --osrc $osrc_loc 2>&1 | /usr/bin/logger -t hammers-neutronreaper-ip",
  user => 'root',
  hour => 5,
  minute => 20,
}
cron { 'hammers-ironicerrorresetter':
  command => "$venv_bin/ironic-error-resetter info --slack $slack_json_loc --osrc $osrc_loc 2>&1 | /usr/bin/logger -t hammers-ironicerrorresetter",
  user => 'root',
  hour => 5,
  minute => 25,
}
cron { 'hammers-conflictmacs':
  command => "$venv_bin/conflict-macs info --slack $slack_json_loc --osrc $osrc_loc --ignore-from-ironic-conf /etc/ironic/ironic.conf 2>&1 | /usr/bin/logger -t hammers-conflictmacs",
  user => 'root',
  hour => 5,
  minute => 30,
}
cron { 'hammers-undeadinstances':
  command => "$venv_bin/undead-instances info --slack $slack_json_loc --osrc $osrc_loc 2>&1 | /usr/bin/logger -t hammers-undeadinstances",
  user => 'root',
  hour => 5,
  minute => 35,
}
cron { 'hammers-orphanresourceproviders':
  command => "$venv_bin/orphan-resource-providers info --slack $slack_json_loc 2>&1 | /usr/bin/logger -t hammers-orphanresourceproviders",
  user => 'root',
  hour => 5,
  minute => 40,
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hammers-0.1.13.tar.gz (52.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hammers-0.1.13-py2.py3-none-any.whl (67.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file hammers-0.1.13.tar.gz.

File metadata

  • Download URL: hammers-0.1.13.tar.gz
  • Upload date:
  • Size: 52.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for hammers-0.1.13.tar.gz
Algorithm Hash digest
SHA256 ccab91a285a10ee7d18f237d174512b23df7ee18395700ce9855de2d4e9d695f
MD5 e052b178825fd8866c26547d115df8c8
BLAKE2b-256 2f7fbc23ce8cd590fb1799957373799810ce78ddaa141942c0882675a5cd6902

See more details on using hashes here.

File details

Details for the file hammers-0.1.13-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for hammers-0.1.13-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 38b2c0a142b84fb762e4dd5c2f8a5f082dbd373ba53987f8b6442c234dd8d496
MD5 7848fdfdb67c079305557b3b92187263
BLAKE2b-256 36e46c37870633f4a838a5cbc2fd052aa986cfe443866b61ac495328f8c6aaac

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.0

2 files

This release

0.1.13 This release

2 files

0.1.12

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page