def add_node(p_pyhouse_obj, p_message_obj): """ Add node (or update if alreeady present). @param p_message_obj: is a decoded json message containing node information """ l_nodes = p_pyhouse_obj.Computer.Nodes l_uuid = p_message_obj['UUID'] l_name = p_message_obj['Name'] l_now = datetime.datetime.now() if l_uuid in l_nodes: LOG.info('Node already present {} '.format(l_name)) p_pyhouse_obj.Computer.Nodes[l_uuid].LastUpdate = l_now else: LOG.info('Node not present - Adding. {} {}'.format( l_uuid, l_name)) l_obj = NodeData() l_obj.Name = l_name l_obj.Key = l_uuid l_obj.Active = p_message_obj['Active'] l_obj.Comment = p_message_obj['Comment'] l_obj.ConnectionAddr_IPv4 = p_message_obj['ConnectionAddr_IPv4'] l_obj.ConnectionAddr_IPv6 = p_message_obj['ConnectionAddr_IPv6'] l_obj.ControllerCount = p_message_obj['ControllerCount'] l_obj.ControllerTypes = p_message_obj['ControllerTypes'] l_obj.NodeId = p_message_obj['NodeId'] l_obj.NodeRole = p_message_obj['NodeRole'] l_obj.LastUpdate = l_now l_obj.UUID = l_uuid p_pyhouse_obj.Computer.Nodes[l_uuid] = l_obj LOG.info('Contains {} Nodes'.format(len(p_pyhouse_obj.Computer.Nodes)))
def _get_node_base(p_pyhouse_obj): l_node = NodeData() l_node.Name = platform.node() l_node.Key = 0 l_node.Active = True l_node.UUID = p_pyhouse_obj.Computer.UUID return l_node
def doPyHouseLogin(self, p_client, p_pyhouse_obj): """Login to PyHouse via MQTT """ self.m_client = p_client l_name = p_pyhouse_obj.Computer.Name try: l_node = copy.deepcopy(p_pyhouse_obj.Computer.Nodes[l_name]) except (KeyError, TypeError): l_node = NodeData() l_node.NodeInterfaces = {}
def send_who_is_there(p_pyhouse_obj): l_topic = "computer/node/whoisthere" l_uuid = p_pyhouse_obj.Computer.UUID try: l_node = p_pyhouse_obj.Computer.Nodes[l_uuid] except KeyError as e_err: LOG.error('No such node {}'.format(e_err)) l_node = NodeData() l_node.NodeInterfaces = None p_pyhouse_obj.APIs.Computer.MqttAPI.MqttPublish( l_topic, l_node) # /computer/node/whoisthere _l_runID = p_pyhouse_obj.Twisted.Reactor.callLater( REPEAT_DELAY, Util.send_who_is_there, p_pyhouse_obj)
def _extract_node(self, p_message): l_node = NodeData() l_node.Name = self._get_field(p_message, 'Name') l_node.Key = l_node.Name l_node.Active = True l_node.Comment = '' l_node.ConnectionAddr_IPv4 = self._get_field(p_message, 'ConnectionAddr_IPv4') l_node.ConnectionAddr_IPv6 = self._get_field(p_message, 'ConnectionAddr_IPv6') l_node.ControllerCount = self._get_field(p_message, 'ControllerCount') l_node.ControllerTypes = self._get_field(p_message, 'ControllerTypes') l_node.NodeId = self._get_field(p_message, 'NodeId') l_node.NodeRole = self._get_field(p_message, 'NodeRole')
def setUp(self): self.m_pyhouse_obj.Xml.XmlRoot = ET.fromstring(xml_data.XML_LONG) self.m_pyhouse_obj.Services = CoreServicesInformation() self.m_pyhouse_obj.Computer.Nodes[self.m_pyhouse_obj.Computer.Name] = NodeData() self.m_api = node_local.API()
def setUp(self): SetupMixin.setUp(self, ET.fromstring(XML_LONG)) self.m_interface_obj = NodeInterfaceData() self.m_node_obj = NodeData()
def test_05_AllInterfaces(self): l_node = NodeData() l_if, _l_v4, _l_v6 = Interfaces._get_all_interfaces() l_node.NodeInterfaces = l_if
def setUp(self): SetupMixin.setUp(self, ET.fromstring(xml_data.XML_LONG)) self.m_pyhouse_obj.Computer.Nodes = nodes_xml.Xml.read_all_nodes_xml(self.m_pyhouse_obj) self.m_node = NodeData() self.m_iface_api = Interfaces()