ceph/docs/_static/create_nodes.py
Zack Cerza b6e6e932c6 Fix a couple bugs and mark down hosts as down
Signed-off-by: Zack Cerza <zack@redhat.com>
2015-03-04 08:48:37 -07:00

65 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python
# A sample script that can be used while setting up a new teuthology lab
# This script will connect to the machines in your lab, and populate a
# paddles instance with their information.
#
# You WILL need to modify it.
import logging
import sys
from teuthology.orchestra.remote import Remote
from teuthology.lock import update_inventory
paddles_url = 'http://paddles.example.com/nodes/'
machine_type = 'typica'
lab_domain = 'example.com'
# Don't change the user. It won't work at this time.
user = 'ubuntu'
# We are populating 'typica003' -> 'typica192'
machine_index_range = range(3, 192)
log = logging.getLogger(sys.argv[0])
logging.getLogger("requests.packages.urllib3.connectionpool").setLevel(
logging.WARNING)
def get_shortname(machine_type, index):
"""
Given a number, return a hostname. Example:
get_shortname('magna', 3) = 'magna003'
Modify to suit your needs.
"""
return machine_type + str(index).rjust(3, '0')
def get_info(user, fqdn):
remote = Remote('@'.join((user, fqdn)))
return remote.inventory_info
def main():
shortnames = [get_shortname(machine_type, i) for i in machine_index_range]
fqdns = ['.'.join((name, lab_domain)) for name in shortnames]
for fqdn in fqdns:
log.info("Creating %s", fqdn)
base_info = dict(
name=fqdn,
locked=True,
locked_by='initial@setup',
machine_type=machine_type,
description="Initial node creation",
)
try:
info = get_info(user, fqdn)
base_info.update(info)
base_info['up'] = True
except Exception as exc:
log.error("{fqdn} is down".format(fqdn=fqdn))
base_info['up'] = False
base_info['description'] = repr(exc)
update_inventory(base_info)
if __name__ == '__main__':
main()