neutron/neutron/plugins/nicira/check_nvp_config.py

114 lines
4.4 KiB
Python

# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2013 Nicira, Inc.
# All Rights Reserved
#
# 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.
#
#
# @author: Aaron Rosen, VMware
import sys
from oslo.config import cfg
from neutron.common import config
from neutron.plugins.nicira.common import config as nvp_cfg # noqa
from neutron.plugins.nicira import NeutronPlugin
from neutron.plugins.nicira import nvplib
config.setup_logging(cfg.CONF)
def help(name):
print "Usage: %s path/to/nvp.ini" % name
sys.exit(1)
def get_gateway_services(cluster):
ret_gw_services = {"L2GatewayServiceConfig": [],
"L3GatewayServiceConfig": []}
gw_services = nvplib.get_gateway_services(cluster).get('results', [])
for gw_service in gw_services:
ret_gw_services[gw_service['type']].append(gw_service['uuid'])
return ret_gw_services
def get_transport_zones(cluster):
transport_zones = nvplib.get_transport_zones(cluster).get('results')
return [transport_zone['uuid'] for transport_zone in transport_zones]
def main(argv):
if len(argv) != 2:
help(argv[0])
args = ['--config-file']
args.append(argv[1])
config.parse(args)
print "------------------------ Database Options ------------------------"
print "\tconnection: %s" % cfg.CONF.database.connection
print "\tretry_interval: %d" % cfg.CONF.database.retry_interval
print "\tmax_retries: %d" % cfg.CONF.database.max_retries
print "------------------------ NVP Options ------------------------"
print "\tNVP Generation Timeout %d" % cfg.CONF.NVP.nvp_gen_timeout
print ("\tNumber of concurrent connections to each controller %d" %
cfg.CONF.NVP.concurrent_connections)
print "\tmax_lp_per_bridged_ls: %s" % cfg.CONF.NVP.max_lp_per_bridged_ls
print "\tmax_lp_per_overlay_ls: %s" % cfg.CONF.NVP.max_lp_per_overlay_ls
print "------------------------ Cluster Options ------------------------"
print "\trequested_timeout: %s" % cfg.CONF.req_timeout
print "\tretries: %s" % cfg.CONF.retries
print "\tredirects: %s" % cfg.CONF.redirects
print "\thttp_timeout: %s" % cfg.CONF.http_timeout
cluster = NeutronPlugin.create_nvp_cluster(
cfg.CONF,
cfg.CONF.NVP.concurrent_connections,
cfg.CONF.NVP.nvp_gen_timeout)
num_controllers = len(cluster.nvp_controllers)
print "Number of controllers found: %s" % num_controllers
if num_controllers == 0:
print "You must specify at least one controller!"
sys.exit(1)
for controller in cluster.nvp_controllers:
print "\tController endpoint: %s" % controller
nvplib.check_cluster_connectivity(cluster)
gateway_services = get_gateway_services(cluster)
default_gateways = {
"L2GatewayServiceConfig": cfg.CONF.default_l2_gw_service_uuid,
"L3GatewayServiceConfig": cfg.CONF.default_l3_gw_service_uuid}
errors = 0
for svc_type in default_gateways.keys():
for uuid in gateway_services[svc_type]:
print "\t\tGateway(%s) uuid: %s" % (svc_type, uuid)
if (default_gateways[svc_type] and
default_gateways[svc_type] not in gateway_services):
print ("\t\t\tError: specified default %s gateway (%s) is "
"missing from NVP Gateway Services!" % (svc_type,
default_gateways[svc_type]))
errors += 1
transport_zones = get_transport_zones(cluster)
print "\tTransport zones: %s" % transport_zones
if cfg.CONF.default_tz_uuid not in transport_zones:
print ("\t\tError: specified default transport zone "
"(%s) is missing from NVP transport zones!"
% cfg.CONF.default_tz_uuid)
errors += 1
if errors:
print ("\nThere are %d errors with your configuration. "
" Please, revise!" % errors)
sys.exit(1)
else:
print "Done."