def handle_create(self): vip = self._get_first_ip(self.VIP_PORT) ipv4_vip = vip['ip_address'] ipv4_node1_ha = self._get_first_ip(self.NODE1_HA_PORT)['ip_address'] ipv4_node2_ha = self._get_first_ip(self.NODE2_HA_PORT)['ip_address'] ipv4_node1_lan1 = self._get_first_ip( self.NODE1_LAN1_PORT)['ip_address'] ipv4_node2_lan1 = self._get_first_ip( self.NODE2_LAN1_PORT)['ip_address'] subnet = self.client('neutron').show_subnet(vip['subnet_id'])['subnet'] subnet_mask = str(netaddr.IPNetwork(subnet['cidr']).netmask) gateway = subnet['gateway_ip'] vrid = self.properties[self.VIRTUAL_ROUTER_ID] if self.properties[self.UPDATE_ALLOWED_ADDRESS_PAIRS]: resource_utils.fix_ha_ports_mac( self.client('neutron'), {'ipv4': {'address': ipv4_vip}}, vrid, True, (self.properties[self.NODE1_HA_PORT], self.properties[self.NODE2_HA_PORT])) # Wait for node1 WAPI self.wait_for_https(self.properties[self.NODE1_FLOATING_IP]) node1 = self.node(self.properties[self.NODE1_FLOATING_IP], self.properties[self.NODE1_ADMIN], self.properties[self.NODE1_PASSWORD]) ha_pair_config = { 'enable_ha': True, 'router_id': vrid, 'vip_setting': { 'address': ipv4_vip, 'gateway': gateway, 'subnet_mask': subnet_mask }, 'node_info': [ { 'lan_ha_port_setting': { 'ha_ip_address': ipv4_node1_ha, 'mgmt_lan': ipv4_node1_lan1 } }, { 'lan_ha_port_setting': { 'ha_ip_address': ipv4_node2_ha, 'mgmt_lan': ipv4_node2_lan1 } } ] } node1.update_member('infoblox.localdomain', ha_pair_config) # Wait for VIP and node2 WAPI self.wait_for_https(self.properties[self.VIP_FLOATING_IP]) self.wait_for_https(self.properties[self.NODE2_FLOATING_IP]) node2 = self.node(self.properties[self.NODE2_FLOATING_IP], self.properties[self.NODE2_ADMIN], self.properties[self.NODE2_PASSWORD]) # Default grid_name is 'Infoblox' and secret is 'test' # We just created VM so use default values. node2.join_grid('Infoblox', ipv4_vip, 'test') name = self.properties[self.NAME] self.resource_id_set(name)
def handle_create(self): vip = self._get_first_ip(self.VIP_PORT) ipv4_vip = vip['ip_address'] ipv4_node1_ha = self._get_first_ip(self.NODE1_HA_PORT)['ip_address'] ipv4_node2_ha = self._get_first_ip(self.NODE2_HA_PORT)['ip_address'] ipv4_node1_lan1 = self._get_first_ip( self.NODE1_LAN1_PORT)['ip_address'] ipv4_node2_lan1 = self._get_first_ip( self.NODE2_LAN1_PORT)['ip_address'] subnet = self.client('neutron').show_subnet(vip['subnet_id'])['subnet'] subnet_mask = str(netaddr.IPNetwork(subnet['cidr']).netmask) gateway = subnet['gateway_ip'] vrid = self.properties[self.VIRTUAL_ROUTER_ID] if self.properties[self.UPDATE_ALLOWED_ADDRESS_PAIRS]: resource_utils.fix_ha_ports_mac( self.client('neutron'), {'ipv4': { 'address': ipv4_vip }}, vrid, True, (self.properties[self.NODE1_HA_PORT], self.properties[self.NODE2_HA_PORT])) # Wait for node1 WAPI self.wait_for_https(self.properties[self.NODE1_FLOATING_IP]) node1 = self.node(self.properties[self.NODE1_FLOATING_IP], self.properties[self.NODE1_ADMIN], self.properties[self.NODE1_PASSWORD]) ha_pair_config = { 'enable_ha': True, 'router_id': vrid, 'vip_setting': { 'address': ipv4_vip, 'gateway': gateway, 'subnet_mask': subnet_mask }, 'node_info': [{ 'lan_ha_port_setting': { 'ha_ip_address': ipv4_node1_ha, 'mgmt_lan': ipv4_node1_lan1 } }, { 'lan_ha_port_setting': { 'ha_ip_address': ipv4_node2_ha, 'mgmt_lan': ipv4_node2_lan1 } }] } node1.update_member('infoblox.localdomain', ha_pair_config) # Wait for VIP and node2 WAPI self.wait_for_https(self.properties[self.VIP_FLOATING_IP]) self.wait_for_https(self.properties[self.NODE2_FLOATING_IP]) node2 = self.node(self.properties[self.NODE2_FLOATING_IP], self.properties[self.NODE2_ADMIN], self.properties[self.NODE2_PASSWORD]) # Default grid_name is 'Infoblox' and secret is 'test' # We just created VM so use default values. node2.join_grid('Infoblox', ipv4_vip, 'test') name = self.properties[self.NAME] self.resource_id_set(name)
def handle_create(self): mgmt = self._make_port_network_settings(self.MGMT_PORT) lan1 = self._make_port_network_settings(self.LAN1_PORT) lan2 = self._make_port_network_settings(self.LAN2_PORT) name = self.properties[self.NAME] nat = self.properties[self.NAT_IP] ha_pair = self.properties[self.HA_PAIR] if ha_pair: vrid = self.properties[self.VIRTUAL_ROUTER_ID] lan2_vrid = self.properties[self.LAN2_VIRTUAL_ROUTER_ID] vip = self._make_port_network_settings(self.VIP_PORT) node1_ha = self._make_port_network_settings(self.HA_PORT) node2_ha = self._make_port_network_settings(self.NODE2_HA_PORT) node2_lan1 = self._make_port_network_settings(self.NODE2_LAN1_PORT) node2_mgmt = self._make_port_network_settings(self.NODE2_MGMT_PORT) use_ipv4_vip = self.properties[self.USE_IPV4_VIP] config_addr_type = self.properties[self.CONFIG_ADDR_TYPE] if self.properties[self.UPDATE_ALLOWED_ADDRESS_PAIRS]: # Add 'allowed_address_pairs' to HA ports. resource_utils.fix_ha_ports_mac( self.client('neutron'), vip, vrid, use_ipv4_vip, (self.properties[self.HA_PORT], self.properties[self.NODE2_HA_PORT])) # Create infoblox HA pair member self.infoblox().create_member( name=name, config_addr_type=config_addr_type, mgmt=mgmt, vip=vip, lan2=lan2, nat_ip=nat, ha_pair=ha_pair, use_v4_vrrp=use_ipv4_vip, node1_ha=node1_ha, node2_ha=node2_ha, node1_lan1=lan1, node2_lan1=node2_lan1, node2_mgmt=node2_mgmt, vrid=vrid, lan2_vrid=lan2_vrid) else: self.infoblox().create_member(name=name, mgmt=mgmt, vip=lan1, lan2=lan2, nat_ip=nat) self.infoblox().pre_provision_member( name, hwmodel=self.properties[self.MODEL], hwtype='IB-VNIOS', licenses=self.properties[self.LICENSES], ha_pair=ha_pair) dns = self.properties[self.DNS_SETTINGS] if dns: self.infoblox().configure_member_dns( name, enable_dns=dns['enable'] ) self.resource_id_set(name)
def test_fix_ha_ports_mac(self): neutron = mock.MagicMock() vip = { 'ipv4': {'address': '1.1.1.1'}, 'ipv6': {'virtual_ip': '1234:5678:90ab:cdef::1'} } ports = ['port_1', 'port_2'] vrid = 123 mac_addr = '00:00:5E:00:01:7B' resource_utils.fix_ha_ports_mac(neutron, vip, vrid, use_ipv4=True, ports=ports) self.assertEqual( [mock.call( 'port_1', {'port': {'allowed_address_pairs': [{ 'ip_address': vip['ipv4']['address'], 'mac_address': mac_addr}]}}), mock.call( 'port_2', {'port': {'allowed_address_pairs': [{ 'ip_address': vip['ipv4']['address'], 'mac_address': mac_addr}]}}) ], neutron.update_port.call_args_list ) neutron = mock.MagicMock() vrid = 153 mac_addr = '00:00:5E:00:02:99' resource_utils.fix_ha_ports_mac(neutron, vip, vrid, use_ipv4=False, ports=ports) self.assertEqual( [mock.call( 'port_1', {'port': {'allowed_address_pairs': [{ 'ip_address': vip['ipv6']['virtual_ip'], 'mac_address': mac_addr}]}}), mock.call( 'port_2', {'port': {'allowed_address_pairs': [{ 'ip_address': vip['ipv6']['virtual_ip'], 'mac_address': mac_addr}]}}) ], neutron.update_port.call_args_list )
def test_fix_ha_ports_mac(self): neutron = mock.MagicMock() vip = { 'ipv4': { 'address': '1.1.1.1' }, 'ipv6': { 'virtual_ip': '1234:5678:90ab:cdef::1' } } ports = ['port_1', 'port_2'] vrid = 123 mac_addr = '00:00:5E:00:01:7B' resource_utils.fix_ha_ports_mac(neutron, vip, vrid, use_ipv4=True, ports=ports) self.assertEqual([ mock.call( 'port_1', { 'port': { 'allowed_address_pairs': [{ 'ip_address': vip['ipv4']['address'], 'mac_address': mac_addr }] } }), mock.call( 'port_2', { 'port': { 'allowed_address_pairs': [{ 'ip_address': vip['ipv4']['address'], 'mac_address': mac_addr }] } }) ], neutron.update_port.call_args_list) neutron = mock.MagicMock() vrid = 153 mac_addr = '00:00:5E:00:02:99' resource_utils.fix_ha_ports_mac(neutron, vip, vrid, use_ipv4=False, ports=ports) self.assertEqual([ mock.call( 'port_1', { 'port': { 'allowed_address_pairs': [{ 'ip_address': vip['ipv6']['virtual_ip'], 'mac_address': mac_addr }] } }), mock.call( 'port_2', { 'port': { 'allowed_address_pairs': [{ 'ip_address': vip['ipv6']['virtual_ip'], 'mac_address': mac_addr }] } }) ], neutron.update_port.call_args_list)
def handle_create(self): mgmt = self._make_port_network_settings(self.MGMT_PORT) lan1 = self._make_port_network_settings(self.LAN1_PORT) lan2 = self._make_port_network_settings(self.LAN2_PORT) name = self.properties[self.NAME] nat = self.properties[self.NAT_IP] ha_pair = self.properties[self.HA_PAIR] if ha_pair: vrid = self.properties[self.VIRTUAL_ROUTER_ID] lan2_vrid = self.properties[self.LAN2_VIRTUAL_ROUTER_ID] vip = self._make_port_network_settings(self.VIP_PORT) node1_ha = self._make_port_network_settings(self.HA_PORT) node2_ha = self._make_port_network_settings(self.NODE2_HA_PORT) node2_lan1 = self._make_port_network_settings(self.NODE2_LAN1_PORT) node2_mgmt = self._make_port_network_settings(self.NODE2_MGMT_PORT) use_ipv4_vip = self.properties[self.USE_IPV4_VIP] config_addr_type = self.properties[self.CONFIG_ADDR_TYPE] if self.properties[self.UPDATE_ALLOWED_ADDRESS_PAIRS]: # Add 'allowed_address_pairs' to HA ports. resource_utils.fix_ha_ports_mac( self.client('neutron'), vip, vrid, use_ipv4_vip, (self.properties[self.HA_PORT], self.properties[self.NODE2_HA_PORT])) # Create infoblox HA pair member self.infoblox().create_member(name=name, config_addr_type=config_addr_type, mgmt=mgmt, vip=vip, lan2=lan2, nat_ip=nat, ha_pair=ha_pair, use_v4_vrrp=use_ipv4_vip, node1_ha=node1_ha, node2_ha=node2_ha, node1_lan1=lan1, node2_lan1=node2_lan1, node2_mgmt=node2_mgmt, vrid=vrid, lan2_vrid=lan2_vrid) else: self.infoblox().create_member(name=name, mgmt=mgmt, vip=lan1, lan2=lan2, nat_ip=nat) self.infoblox().pre_provision_member( name, hwmodel=self.properties[self.MODEL], hwtype='IB-VNIOS', licenses=self.properties[self.LICENSES], ha_pair=ha_pair) dns = self.properties[self.DNS_SETTINGS] if dns: self.infoblox().configure_member_dns(name, enable_dns=dns['enable']) self.resource_id_set(name)