""" Copyright (c) 2015-2016 Wind River Systems, Inc. SPDX-License-Identifier: Apache-2.0 """ from six.moves import configparser import re import six from netaddr import IPNetwork from netaddr import IPAddress from netaddr import AddrFormatError from netaddr import valid_ipv4 from netaddr import valid_ipv6 from configutilities.common.exceptions import ValidateFail EXPECTED_SERVICE_NAME_AND_TYPE = ( {"KEYSTONE_SERVICE_NAME": "keystone", "KEYSTONE_SERVICE_TYPE": "identity", "SYSINV_SERVICE_NAME": "sysinv", "SYSINV_SERVICE_TYPE": "platform", "PATCHING_SERVICE_NAME": "patching", "PATCHING_SERVICE_TYPE": "patching", "NFV_SERVICE_NAME": "vim", "NFV_SERVICE_TYPE": "nfv", "FM_SERVICE_NAME": "fm", "FM_SERVICE_TYPE": "faultmanagement", "BARBICAN_SERVICE_NAME": "barbican", "BARBICAN_SERVICE_TYPE": "key-manager", }) def is_valid_vlan(vlan): """Determine whether vlan is valid.""" try: if 0 < int(vlan) < 4095: return True else: return False except (ValueError, TypeError): return False def is_mtu_valid(mtu): """Determine whether a mtu is valid.""" try: if int(mtu) < 576: return False elif int(mtu) > 9216: return False else: return True except (ValueError, TypeError): return False def is_valid_hostname(hostname): """Determine whether a hostname is valid as per RFC 1123.""" # Maximum length of 255 if not hostname or len(hostname) > 255: return False # Allow a single dot on the right hand side if hostname[-1] == ".": hostname = hostname[:-1] # Create a regex to ensure: # - hostname does not begin or end with a dash # - each segment is 1 to 63 characters long # - valid characters are A-Z (any case) and 0-9 valid_re = re.compile("(?!-)[A-Z\d-]{1,63}(?