tripleo-heat-templates/container_config_scripts/nova_cell_v2_discover_hosts.py

63 lines
1.7 KiB
Python

#!/usr/bin/env python
#
# Copyright 2018 Red Hat Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import logging
import os
import random
import subprocess
import sys
import time
random.seed()
debug = os.getenv('__OS_DEBUG', 'false')
if debug.lower() == 'true':
loglevel = logging.DEBUG
else:
loglevel = logging.INFO
logging.basicConfig(stream=sys.stdout, level=loglevel)
LOG = logging.getLogger('nova_cell_v2_discover_hosts')
iterations = 10
timeout_max = 30
nova_cfg = '/etc/nova/nova.conf'
if __name__ == '__main__':
if not os.path.isfile(nova_cfg):
LOG.error('Nova configuration file %s does not exist', nova_cfg)
sys.exit(1)
for i in range(iterations):
try:
subprocess.check_call([
'/usr/bin/nova-manage',
'cell_v2',
'discover_hosts',
'--by-service',
'--verbose'
])
sys.exit(0)
except subprocess.CalledProcessError as e:
LOG.error('Cell v2 discovery failed with exit code %d, retrying',
e.returncode)
except Exception as e:
LOG.exception('Error during host discovery')
time.sleep(random.randint(1, timeout_max))
sys.exit(1)
# vim: set et ts=4 sw=4 :