def setUp(self): super(TestRepoAvailability, self).setUp() self.env.create(cluster_kwargs={ 'net_provider': 'neutron', 'net_segment_type': 'gre' }, nodes_kwargs=[{ 'roles': ['controller'] }, { 'roles': ['controller'] }, { 'roles': ['compute'] }, { 'roles': ['compute'], 'online': False }]) self.cluster = self.env.clusters[0] self.public_ng = next(ng for ng in self.cluster.network_groups if ng.name == 'public') self.free_ips = NetworkManager.get_free_ips(self.public_ng, 2) self.repo_urls = objects.Cluster.get_repo_urls(self.cluster) self.controllers = [ n for n in self.cluster.nodes if 'controller' in n.all_roles ] self.online_uids = [n.uid for n in self.cluster.nodes if n.online]
def setUp(self): super(TestRepoAvailability, self).setUp() self.env.create( cluster_kwargs={ 'net_provider': 'neutron', 'net_segment_type': 'gre' }, nodes_kwargs=[{'roles': ['controller']}, {'roles': ['controller']}, {'roles': ['compute']}, {'roles': ['compute'], 'online': False}]) self.cluster = self.env.clusters[0] self.public_ng = next(ng for ng in self.cluster.network_groups if ng.name == 'public') self.free_ips = NetworkManager.get_free_ips(self.public_ng, 2) self.repo_urls = objects.Cluster.get_repo_urls(self.cluster) self.controllers = [n for n in self.cluster.nodes if 'controller' in n.all_roles] self.online_uids = [n.uid for n in self.cluster.nodes if n.online]
def get_config(cls, cluster): urls = objects.Cluster.get_repo_urls(cluster) nodes = [] errors = [] # if there is nothing to verify - just skip this task if not urls: return all_public = \ objects.Cluster.should_assign_public_to_all_nodes(cluster) public_networks = filter( lambda ng: ng.name == 'public', cluster.network_groups) for public in public_networks: # we are not running this verification for nodes not in discover # state nodes_with_public_ip = [] required_ips = 0 group_nodes = objects.NodeCollection.filter_by( None, group_id=public.group_id, status=consts.NODE_STATUSES.discover).all() for node in group_nodes: if not (all_public or objects.Node.should_have_public_with_ip(node)): continue ip = NetworkManager.get_ip_by_network_name(node, public.name) nodes_with_public_ip.append((node, ip)) if ip is None: required_ips += 1 if not nodes_with_public_ip: continue # we are not doing any allocations during verification # just ask for free ips and use them free_ips = iter(NetworkManager.get_free_ips(public, required_ips)) mask = public.cidr.split('/')[1] lacp_modes = ( consts.BOND_MODES.lacp_balance_tcp, consts.BOND_MODES.l_802_3ad) for node, ip in nodes_with_public_ip: if not node.online: continue iface = NetworkManager.find_nic_assoc_with_ng( node, public) if iface.bond and iface.bond.mode in lacp_modes: errors.append( 'Iface {0} on node {1} configured to use ' 'lacp-balance-tcp mode as part of {2}. Repo ' 'availability verification for this node ' 'will be skipped.'.format( iface.name, node.name, iface.bond.name)) continue ip = ip or next(free_ips) node_config = { 'addr': '{0}/{1}'.format(ip, mask), 'gateway': public.gateway, 'vlan': public.vlan_start or 0, 'iface': iface.name, 'urls': urls, 'uid': node.uid} nodes.append(node_config) # if no nodes will be present - we will skip this task return nodes, errors
def get_config(cls, cluster): urls = objects.Cluster.get_repo_urls(cluster) nodes = [] errors = [] # if there is nothing to verify - just skip this task if not urls: return all_public = \ objects.Cluster.should_assign_public_to_all_nodes(cluster) public_networks = filter(lambda ng: ng.name == 'public', cluster.network_groups) for public in public_networks: # we are not running this verification for nodes not in discover # state nodes_with_public_ip = [] required_ips = 0 group_nodes = objects.NodeCollection.filter_by( None, group_id=public.group_id, status=consts.NODE_STATUSES.discover).all() for node in group_nodes: if not (all_public or objects.Node.should_have_public(node)): continue ip = NetworkManager.get_ip_by_network_name(node, public.name) nodes_with_public_ip.append((node, ip)) if ip is None: required_ips += 1 if not nodes_with_public_ip: continue # we are not doing any allocations during verification # just ask for free ips and use them free_ips = iter(NetworkManager.get_free_ips(public, required_ips)) mask = public.cidr.split('/')[1] lacp_modes = (consts.BOND_MODES.lacp_balance_tcp, consts.BOND_MODES.l_802_3ad) for node, ip in nodes_with_public_ip: if not node.online: continue iface = NetworkManager.find_nic_assoc_with_ng(node, public) if iface.bond and iface.bond.mode in lacp_modes: errors.append('Iface {0} on node {1} configured to use ' 'lacp-balance-tcp mode as part of {2}. Repo ' 'availability verification for this node ' 'will be skipped.'.format( iface.name, node.name, iface.bond.name)) continue ip = ip or next(free_ips) node_config = { 'addr': '{0}/{1}'.format(ip, mask), 'gateway': public.gateway, 'vlan': public.vlan_start or 0, 'iface': iface.name, 'urls': urls, 'uid': node.uid } nodes.append(node_config) # if no nodes will be present - we will skip this task return nodes, errors