# -*- coding: utf-8 -*- # Copyright 2013 Mirantis, 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. from collections import namedtuple def Enum(*values, **kwargs): names = kwargs.get('names') if names: return namedtuple('Enum', names)(*values) return namedtuple('Enum', values)(*values) RELEASE_STATES = Enum( 'available', 'unavailable', 'manageonly' ) RELEASE_OS = Enum( 'Ubuntu', 'CentOS', names=( 'ubuntu', 'centos' ) ) CLUSTER_MODES = Enum( 'multinode', 'ha_full', 'ha_compact' ) CLUSTER_STATUSES = Enum( 'new', 'deployment', 'stopped', 'operational', 'error', 'remove', 'partially_deployed' ) NETWORKS = Enum( # Node networks 'fuelweb_admin', 'storage', 'baremetal', # internal in terms of fuel 'management', 'public', # private in terms of fuel 'fixed', 'private' ) NOVA_NET_MANAGERS = Enum( 'FlatDHCPManager', 'VlanManager' ) CLUSTER_NET_PROVIDERS = Enum( 'nova_network', 'neutron' ) NEUTRON_L23_PROVIDERS = Enum( 'ovs', 'nsx', 'dpdkovs' ) NEUTRON_SEGMENT_TYPES = Enum( 'vlan', 'gre', 'tun' ) BRIDGE_NAME_MAX_LEN = 15 DEFAULT_BRIDGES_NAMES = Enum( 'br-fw-admin', 'br-storage', 'br-mgmt', 'br-prv', 'br-floating', 'br-int', 'br-ex', 'br-mesh', 'br-aux', 'br-baremetal', 'br-ironic', names=( 'br_fw_admin', 'br_storage', 'br_mgmt', 'br_prv', 'br_floating', 'br_int', 'br_ex', 'br_mesh', 'br_aux', 'br_baremetal', 'br_ironic' ) ) NODE_STATUSES = Enum( 'ready', 'discover', 'provisioning', 'provisioned', 'deploying', 'error', 'removing', 'stopped', ) NODE_ERRORS = Enum( 'deploy', 'provision', 'deletion', 'discover', 'stop_deployment' ) NODE_GROUPS = Enum( 'default' ) NODE_VIEW_MODES = Enum( 'standard', 'compact' ) NODE_LIST_FILTERS = Enum( 'cluster', 'roles', 'status', 'manufacturer', 'cores', 'ht_cores', 'hdd', 'disks_amount', 'ram', 'interfaces', 'group_id' ) NODE_ROLE_GROUPS = Enum( 'base', 'compute', 'storage', 'other' ) NETWORK_INTERFACE_TYPES = Enum( 'ether', 'bond' ) NETWORK_VIP_NAMES_V6_1 = Enum( 'haproxy', 'vrouter', ) BOND_MODES = Enum( # same for both OVS and linux 'active-backup', # OVS modes 'balance-slb', 'balance-tcp', 'lacp-balance-tcp', # linux modes 'balance-rr', 'balance-xor', 'broadcast', '802.3ad', 'balance-tlb', 'balance-alb', names=( 'active_backup', 'balance_slb', 'balance_tcp', 'lacp_balance_tcp', 'balance_rr', 'balance_xor', 'broadcast', 'l_802_3ad', 'balance_tlb', 'balance_alb', ) ) BOND_XMIT_HASH_POLICY = Enum( 'layer2', 'layer2+3', 'layer3+4', 'encap2+3', 'encap3+4', names=( 'layer2', 'layer2_3', 'layer3_4', 'encap2_3', 'encap3_4', ) ) BOND_LACP_RATES = Enum( 'slow', 'fast' ) BOND_TYPES = Enum( 'ovs', 'linux', 'dpdkovs', ) TASK_STATUSES = Enum( 'pending', 'ready', 'running', 'error' ) HISTORY_TASK_STATUSES = Enum( 'pending', 'ready', 'running', 'error', 'skipped' ) TASK_NAMES = Enum( 'super', # Cluster changes # For deployment supertask, it contains # two subtasks deployment and provision 'deploy', 'deployment', 'provision', 'stop_deployment', # reset_environment supertask contains three subtasks: # reset_nodes, remove_keys and remove_ironic_bootstrap 'reset_environment', 'reset_nodes', 'remove_keys', 'remove_ironic_bootstrap', 'update', 'spawn_vms', 'node_deletion', 'cluster_deletion', 'remove_images', 'check_before_deployment', # network 'check_networks', 'verify_networks', 'check_dhcp', 'verify_network_connectivity', 'multicast_verification', 'check_repo_availability', 'check_repo_availability_with_setup', 'dry_run_deployment', # dump 'dump', 'capacity_log', # statistics 'create_stats_user', 'remove_stats_user', # setup dhcp via dnsmasq for multi-node-groups 'update_dnsmasq' ) NOTIFICATION_STATUSES = Enum( 'read', 'unread' ) NOTIFICATION_TOPICS = Enum( 'discover', 'done', 'error', 'warning', 'release', ) CLUSTER_CHANGES = Enum( 'networks', 'attributes', 'disks', 'interfaces' ) PROVISION_METHODS = Enum( 'cobbler', 'image' ) STAGES = Enum( 'pre_deployment', 'deploy', 'post_deployment' ) ACTION_TYPES = Enum( 'http_request', 'nailgun_task' ) LOG_CHUNK_SEND_STATUS = Enum( 'ok', 'error' ) LOG_RECORD_SEND_STATUS = Enum( 'added', 'existed', 'failed', 'updated', 'skipped' ) NOVA_SERVICE_TYPE = Enum( 'compute', ) VIRTUAL_NODE_TYPES = Enum( "virt", ) OPENSTACK_IMAGES_SETTINGS = Enum( "OS-EXT-IMG-SIZE:size", "byte", names=( "size_attr_name", "size_unit" ) ) DEPLOY_STRATEGY = Enum( 'parallel', 'one_by_one' ) ORCHESTRATOR_TASK_TYPES = Enum( 'puppet', 'shell', 'sync', 'upload_file', 'group', 'stage', 'skipped', 'reboot', 'copy_files', 'role', 'master_shell', 'move_to_bootstrap', 'erase_node' ) INTERNAL_TASKS = (ORCHESTRATOR_TASK_TYPES.group, ORCHESTRATOR_TASK_TYPES.stage, ORCHESTRATOR_TASK_TYPES.skipped) PLUGIN_PRE_DEPLOYMENT_HOOK = "_plugin_pre_deployment_hook" PLUGIN_POST_DEPLOYMENT_HOOK = "_plugin_post_deployment_hook" # filter for deployment tasks which should be rerun on deployed nodes to make # re-setup of network on nodes TASKS_TO_RERUN_ON_DEPLOY_CHANGES = ['deploy_changes'] TASK_REFRESH_FIELD = 'refresh_on' ROLE_NAME_MAX_SIZE = 64 EXTENSION_NAME_MAX_SIZE = 64 MASTER_NODE_UID = 'master' MASTER_NODE_NAME = 'Fuel master node' # version of Fuel when we added granular deploy support FUEL_GRANULAR_DEPLOY = '6.1' # version of Fuel when we added remote repos FUEL_REMOTE_REPOS = '6.1' # version of Fuel when external mongo was added FUEL_EXTERNAL_MONGO = '6.1' # version of Fuel when classic provisioning is not available anymore. FUEL_IMAGE_BASED_ONLY = '7.0' # version of Fuel when multiple floating IP ranges support is added FUEL_MULTIPLE_FLOATING_IP_RANGES = '8.0' # version of Fuel when LCM was introduced FUEL_LCM_AVAILABLE = '9.0' # version of Fuel when NFV was introduced FUEL_NFV_AVAILABLE_SINCE = '9.0' # version of Fuel when Tags was introduced TAGS_SUPPORT_VERSION = '9.0' # this file is provided by the fuel-release package FUEL_RELEASE_FILE = '/etc/fuel_release' # this file is provided by the fuel-openstack-metadata package FUEL_OPENSTACK_VERSION_FILE = '/etc/fuel_openstack_version' OSWL_RESOURCE_TYPES = Enum( 'vm', 'tenant', 'volume', 'security_group', 'keystone_user', 'flavor', 'cluster_stats', 'image', ) PROTOCOL = Enum( 'http', 'https', ) NETWORK_NOTATION = Enum( "ip_ranges", "cidr", ) # Minimal quantity of IPs to be fetched and checked within one request to DB. MIN_IPS_PER_DB_QUERY = 5 CLOUD_INIT_TEMPLATES = Enum( 'boothook', 'cloud_config', 'meta_data', ) # NOTE(kozhukalov): This constant is used to collect # the information about installed fuel packages (rpm -q). # This information is necessary for fuel-stats. STAT_FUEL_PACKAGES = ( 'fuel-nailgun', ) OPENSTACK_CONFIG_TYPES = Enum( 'cluster', 'role', 'node', ) NODE_RESOLVE_POLICY = Enum( "all", "any" ) TASK_ROLES = Enum( '*', 'master', 'self', names=('all', 'master', 'self') ) OVERRIDE_CONFIG_BASE_PATH = '/etc/hiera/override/configuration/' # Task version from which cross-dependencies is used TASK_CROSS_DEPENDENCY = '2.0.0' # Task version from which lcm supported TASK_LCM_READINESS = '2.1.0' # From which (major) plugins package version task based is strictly required TASK_DEPLOY_STRICT_FROM_VER = '5.0.0' IRONIC_BOOTSTRAP_PKGS = ('openssh-server', 'ntp', 'fuel-agent', 'ubuntu-minimal', 'live-boot', 'wget', 'live-boot-initramfs-tools', 'squashfs-tools', 'linux-firmware', 'msmtp-mta', 'i40e-dkms', 'xz-utils', 'linux-headers-generic') DEPLOYMENT_TASK_DEFAULT_VERSION = '1.0.0' DEFAULT_DEPLOYMENT_GRAPH_TYPE = 'default' # default size for hugepages is 2048 KiB DEFAULT_HUGEPAGE_SIZE = '2048' HUGE_PAGES_SIZE_MAP = [('2048', '2M'), ('1048576', '1G')] DPDK_OVS_CORE_CPUS = 1 # minimal RAM amount for OVS+DPDK in MB MIN_DPDK_HUGEPAGES_MEMORY = 1024 MEMORY_RESERVED_FOR_OPERATING_SYSTEM = 1024 ** 3 # one GiB in bytes HYPERVISORS = Enum( "kvm", "qemu" ) DPDK_DRIVER_IN_SRIOV_CASE = 'vfio-pci'