def get_corosync_autoconfig(): """ Automatically detect the configuration for corosync. :return: dictionary containing 'result' or 'error'. """ ring0 = get_ring0() if not ring0: return agent_error('Failed to detect ring0 interface') ring1_ipaddr, ring1_prefix = generate_ring1_network(ring0) try: ring1 = detect_ring1(ring0, ring1_ipaddr, ring1_prefix) except RingDetectionError as e: return agent_error(e.message) return agent_result({ 'interfaces': { ring0.name: { 'dedicated': False, 'ipaddr': ring0.ipv4_address, 'prefix': ring0.ipv4_prefixlen }, ring1.name: { 'dedicated': True, 'ipaddr': ring1.ipv4_address, 'prefix': ring1.ipv4_prefixlen } }, 'mcast_port': ring1.mcastport })
def get_corosync_autoconfig(): """ Automatically detect the configuration for corosync. :return: dictionary containing 'result' or 'error'. """ ring0 = get_ring0() if not ring0: return agent_error("Failed to detect ring0 interface") ring1_ipaddr, ring1_prefix = generate_ring1_network(ring0) try: ring1 = detect_ring1(ring0, ring1_ipaddr, ring1_prefix) except RingDetectionError as e: return agent_error(e.message) return agent_result({ "interfaces": { ring0.name: { "dedicated": False, "ipaddr": ring0.ipv4_address, "prefix": ring0.ipv4_prefixlen, }, ring1.name: { "dedicated": True, "ipaddr": ring1.ipv4_address, "prefix": ring1.ipv4_prefixlen, }, }, "mcast_port": ring1.mcastport, })
def test_failed_has_link(self): self.link_patcher.stop() mock.patch( 'chroma_agent.lib.corosync.CorosyncRingInterface.__getattr__', return_value=False).start() import errno def boom(*args): # EMULTIHOP is what gets raised with IB interfaces raise IOError(errno.EMULTIHOP) mock.patch('fcntl.ioctl', side_effect=boom).start() from chroma_agent.lib.corosync import get_ring0 iface = get_ring0() # add shell commands to be expected self.add_commands( CommandCaptureCommand( ('/sbin/ip', 'link', 'set', 'dev', iface.name, 'up')), CommandCaptureCommand( ('/sbin/ip', 'link', 'set', 'dev', iface.name, 'down'))) self.assertFalse(iface.has_link) self.assertRanAllCommandsInOrder()
def test_link_state_unknown(self): with mock.patch("__builtin__.open", mock.mock_open(read_data="unknown")): with mock.patch( "chroma_agent.lib.corosync.CorosyncRingInterface.__getattr__", return_value=False, ): with mock.patch("os.path.exists", return_value=True): self.link_patcher.stop() from chroma_agent.lib.corosync import get_ring0 iface = get_ring0() # add shell commands to be expected self.add_commands( CommandCaptureCommand(("/sbin/ip", "link", "set", "dev", iface.name, "up")), CommandCaptureCommand(("/sbin/ip", "link", "set", "dev", iface.name, "down")), ) self.assertFalse(iface.has_link) self.assertRanAllCommandsInOrder()