Example #1
0
 def _start_thread(self):
     # Create a CPC_UHP node under proper COM port:
     com_port_node = as_node('/interfaces/' + self.com_port)
     self._cpc_uhp_node = CpcNode()
     cd = {'parent': com_port_node, 'name': 'CPC_UHP'}
     self._cpc_uhp_node.configure(cd)
     self._cpc_uhp_node.start()
     # Create Circuits and Racks children:
     ckts_svc_node = CompositeNode()
     cd = {'parent': self, 'name': 'Circuits'}
     ckts_svc_node.configure(cd)
     racks_svc_node = CompositeNode()
     cd = {'parent': self, 'name': 'Racks'}
     racks_svc_node.configure(cd)
     # Force complete autodiscovery to create CPC node subtree:
     start_time = time.time()
     dev_nodes = self._cpc_uhp_node.children_nodes()
     for dev_node in dev_nodes:
         item_type_nodes = dev_node.children_nodes()
         for item_type_node in item_type_nodes:
             item_nodes = item_type_node.children_nodes()
             for item_node in item_nodes:
                 obj_nodes = item_node.children_nodes()
                 for obj_node in obj_nodes:
                     prop_nodes = obj_node.children_nodes()
     self.debug_print(
         '%s: Finished autodiscover of CPC_UHP nodetree' % time.time(), 1)
     # Scan CPC_UHP subnodetree for nodes needed for Vista handler clients:
     self._setup()
     self.debug_print('%s: Finished _setup()' % time.time(), 1)
     ckts_svc_node.start()  # starts all children as well
     racks_svc_node.start()  # starts all children as well
     self.debug_print(
         '%s: Finished starting Circuits and Racks children of vista_cpc node'
         % time.time(), 1)
     ##
     # Create a CpcClient at proper place in nodetree:
     self._setup_alarm_nodes()
     self.debug_print('%s: Finished creating Alarm CpcClient' % time.time(),
                      1)
     self._start_thread_inst = None
     self._ready = 1
     return
Example #2
0
 def _start_thread(self):
    # Create a CPC_UHP node under proper COM port:
    com_port_node = as_node('/interfaces/' + self.com_port)
    self._cpc_uhp_node = CpcNode()
    cd = {'parent':com_port_node,'name':'CPC_UHP'}
    self._cpc_uhp_node.configure(cd)
    self._cpc_uhp_node.start()
    # Create Circuits and Racks children:
    ckts_svc_node = CompositeNode()
    cd = {'parent':self,'name':'Circuits'}
    ckts_svc_node.configure(cd)
    racks_svc_node = CompositeNode()
    cd = {'parent':self,'name':'Racks'}
    racks_svc_node.configure(cd)
    # Force complete autodiscovery to create CPC node subtree:
    start_time = time.time()
    dev_nodes = self._cpc_uhp_node.children_nodes()
    for dev_node in dev_nodes:
       item_type_nodes = dev_node.children_nodes()
       for item_type_node in item_type_nodes:
          item_nodes = item_type_node.children_nodes()
          for item_node in item_nodes:
             obj_nodes = item_node.children_nodes()
             for obj_node in obj_nodes:
                prop_nodes = obj_node.children_nodes()
    self.debug_print('%s: Finished autodiscover of CPC_UHP nodetree' % time.time(), 1)
    # Scan CPC_UHP subnodetree for nodes needed for Vista handler clients:
    self._setup()
    self.debug_print('%s: Finished _setup()' % time.time(),1)
    ckts_svc_node.start() # starts all children as well
    racks_svc_node.start() # starts all children as well
    self.debug_print('%s: Finished starting Circuits and Racks children of vista_cpc node' % time.time(),1)
    ##
    # Create a CpcClient at proper place in nodetree:
    self._setup_alarm_nodes()
    self.debug_print('%s: Finished creating Alarm CpcClient' % time.time(),1)
    self._start_thread_inst = None
    self._ready = 1
    return
Example #3
0
class VistaCpcServiceNode(CompositeNode):
    def __init__(self):
        CompositeNode.__init__(self)
        self._cpc_uhp_node = None
        self._cases = []
        self._racks = []
        self.running = 0
        self._start_thread_inst = None
        self._ready = 0
        self.debug_lvl = 1
        return

    def configure(self, cd):
        set_attribute(self, 'com_port', 'com1', cd, str)
        cd['name'] = 'vista_cpc_%s' % self.com_port
        CompositeNode.configure(self, cd)
        return

    def configuration(self):
        cd = CompositeNode.configuration(self)
        get_attribute(self, 'com_port', cd, str)
        return cd

    def start(self):
        self._start_thread_inst = Thread(name='Vista CPC Startup',
                                         target=self._start_thread)
        self._start_thread_inst.start()
        self.running = 1
        return

    def stop(self):
        self.running = 0
        return

    def _start_thread(self):
        # Create a CPC_UHP node under proper COM port:
        com_port_node = as_node('/interfaces/' + self.com_port)
        self._cpc_uhp_node = CpcNode()
        cd = {'parent': com_port_node, 'name': 'CPC_UHP'}
        self._cpc_uhp_node.configure(cd)
        self._cpc_uhp_node.start()
        # Create Circuits and Racks children:
        ckts_svc_node = CompositeNode()
        cd = {'parent': self, 'name': 'Circuits'}
        ckts_svc_node.configure(cd)
        racks_svc_node = CompositeNode()
        cd = {'parent': self, 'name': 'Racks'}
        racks_svc_node.configure(cd)
        # Force complete autodiscovery to create CPC node subtree:
        start_time = time.time()
        dev_nodes = self._cpc_uhp_node.children_nodes()
        for dev_node in dev_nodes:
            item_type_nodes = dev_node.children_nodes()
            for item_type_node in item_type_nodes:
                item_nodes = item_type_node.children_nodes()
                for item_node in item_nodes:
                    obj_nodes = item_node.children_nodes()
                    for obj_node in obj_nodes:
                        prop_nodes = obj_node.children_nodes()
        self.debug_print(
            '%s: Finished autodiscover of CPC_UHP nodetree' % time.time(), 1)
        # Scan CPC_UHP subnodetree for nodes needed for Vista handler clients:
        self._setup()
        self.debug_print('%s: Finished _setup()' % time.time(), 1)
        ckts_svc_node.start()  # starts all children as well
        racks_svc_node.start()  # starts all children as well
        self.debug_print(
            '%s: Finished starting Circuits and Racks children of vista_cpc node'
            % time.time(), 1)
        ##
        # Create a CpcClient at proper place in nodetree:
        self._setup_alarm_nodes()
        self.debug_print('%s: Finished creating Alarm CpcClient' % time.time(),
                         1)
        self._start_thread_inst = None
        self._ready = 1
        return

    ##
    # is_ready(): Called by any entity interested in calling get_XXX() methods,
    # and getting non-error values.
    # @return 1: CPC node tree is ready, 0: CPC node tree is not yet ready
    def is_ready(self):
        return self._ready

    def get_case_temps(self):
        return self._cases

    ##
    # get_cases(): Called by Vista handlers to get CaseTemp data. Handlers
    # display this data to user to allow user to associate CaseTemps with widgets.
    # @return List of lists: [[<ckt_name>,<case_temp_idx>,<temp_url>,<stat_url>,<desc_url>],...]
    def get_cases(self):
        return self._cases

    ##
    # get_racks(): Called by Vista handlers to get Rack data. Handlers
    # display this data to user to allow user to associate Racks with widgets.
    # @return List of lists: [[<rack_name>,<stat_url>],...]
    def get_racks(self):
        return self._racks

    ##
    # _setup(): Called by self._start_thread(), to scan existing CPC_UHP subtrees,
    # and to use the garnered info to create appropriate child nodes. These
    # children aggregate Rack and Case statuses for easy monitoring by Vista.
    def _setup(self):
        ckts_svc_node = self.get_child('Circuits')
        racks_svc_node = self.get_child('Racks')
        dev_nodes = self._cpc_uhp_node.children_nodes()
        has_CircuitStatus_node = 0
        for dev_node in dev_nodes:
            ckt_svc_nodes = []
            if dev_node.has_child('Circuit'):
                ckts_dev_node = dev_node.get_child('Circuit')
                ckt_dev_nodes = ckts_dev_node.children_nodes()
                for ckt_dev_node in ckt_dev_nodes:
                    ckt_name = ckt_dev_node.get_child('Name').get()
                    ckt_svc_node = CktStatusXltrNode(ckt_dev_node)
                    cd = {'parent': ckts_svc_node, 'name': ckt_dev_node.name}
                    ckt_svc_node.configure(cd)
                    ckt_svc_nodes.append(ckt_svc_node)
                    num_temps_node = ckt_dev_node.get_child(
                        'NumberOfTempSensors')
                    num_temps = num_temps_node.get()
                    if (num_temps is None) or isinstance(num_temps, Exception):
                        num_temps = 6
                    for i in range(num_temps):
                        case_temp_dev_node = ckt_dev_node.get_child(
                            'CaseTemps' + str(i))
                        case_temp_svc_node = CompositeNode()
                        cd = {
                            'parent': ckt_svc_node,
                            'name': str(case_temp_dev_node._obj_inst_num)
                        }
                        case_temp_svc_node.configure(cd)
                        status_svc_node = CktCaseTempsStatusXltrNode(
                            ckt_svc_node, case_temp_dev_node)
                        cd = {'parent': case_temp_svc_node, 'name': 'Status'}
                        status_svc_node.configure(cd)
                        descr_svc_node = SingleAttrNode('Not initialized')
                        cd = {
                            'parent': case_temp_svc_node,
                            'name': 'Description'
                        }
                        descr_svc_node.configure(cd)
                        self._cases.append([ckt_name, \
                                                 case_temp_dev_node._obj_inst_num, \
                                                 as_node_url(case_temp_dev_node), \
                                                 as_node_url(status_svc_node),
                                                 as_node_url(descr_svc_node)],)
            rack_svc_node = CompositeNode()
            cd = {'parent': racks_svc_node, 'name': dev_node.name}
            rack_svc_node.configure(cd)
            rack_status_node = RackStatusXltrNode(dev_node, ckt_svc_nodes)
            cd = {'parent': rack_svc_node, 'name': 'Status'}
            rack_status_node.configure(cd)
            dev_name = dev_node._dev.get_name()
            self._racks.append([dev_name, as_node_url(rack_status_node)])
        return

    def _setup_alarm_nodes(self):
        services = as_node('/services')
        if not services.has_child('External Alarms'):
            alarms_node = CompositeNode()
            alarms_node.configure({
                'name': 'External Alarms',
                'parent': services
            })
        alarms_node = as_node('/services/External Alarms')
        alarm_node = alarms.Manager()
        alarm_node.configure({'name': 'CPC Alarm', 'parent': alarms_node})
        cpc_client_node = cpc_client.CpcClient(self._cpc_uhp_node)
        cpc_client_node.configure({
            'name': 'CPC Client',
            'parent': alarm_node,
            'node': ''
        })
        ewebconnect_client_node = ewebconnect.EWebConnectAlarmClient()
        ewebconnect_client_node.configure({
            'name': 'eWebConnect Alarm Client',
            'parent': alarm_node,
            'host': '10.0.1.88',  #'mother.envenergy.com',
            'port': 16161,
            'enabled': 1,
        })
        alarms_node.start()
        return

    def debug_print(self, msg, msg_lvl):
        if msg_lvl < self.debug_lvl:
            if isinstance(msg, array.ArrayType):
                utils.print_array_as_hex(msg, 16)
            else:
                print 'opt.trane.vista.cpc.VistaCpcServiceNode: ' + msg
        return
Example #4
0
class VistaCpcServiceNode(CompositeNode):
   def __init__(self):
      CompositeNode.__init__(self)
      self._cpc_uhp_node = None
      self._cases = []
      self._racks = []
      self.running = 0
      self._start_thread_inst = None
      self._ready = 0
      self.debug_lvl = 1
      return
   def configure(self, cd):
      set_attribute(self, 'com_port', 'com1', cd, str)
      cd['name'] = 'vista_cpc_%s' % self.com_port
      CompositeNode.configure(self, cd)
      return
   def configuration(self):
      cd = CompositeNode.configuration(self)
      get_attribute(self, 'com_port', cd, str)
      return cd
   def start(self):
      self._start_thread_inst = Thread(name='Vista CPC Startup',target=self._start_thread)
      self._start_thread_inst.start()
      self.running = 1
      return
   def stop(self):
      self.running = 0
      return
   def _start_thread(self):
      # Create a CPC_UHP node under proper COM port:
      com_port_node = as_node('/interfaces/' + self.com_port)
      self._cpc_uhp_node = CpcNode()
      cd = {'parent':com_port_node,'name':'CPC_UHP'}
      self._cpc_uhp_node.configure(cd)
      self._cpc_uhp_node.start()
      # Create Circuits and Racks children:
      ckts_svc_node = CompositeNode()
      cd = {'parent':self,'name':'Circuits'}
      ckts_svc_node.configure(cd)
      racks_svc_node = CompositeNode()
      cd = {'parent':self,'name':'Racks'}
      racks_svc_node.configure(cd)
      # Force complete autodiscovery to create CPC node subtree:
      start_time = time.time()
      dev_nodes = self._cpc_uhp_node.children_nodes()
      for dev_node in dev_nodes:
         item_type_nodes = dev_node.children_nodes()
         for item_type_node in item_type_nodes:
            item_nodes = item_type_node.children_nodes()
            for item_node in item_nodes:
               obj_nodes = item_node.children_nodes()
               for obj_node in obj_nodes:
                  prop_nodes = obj_node.children_nodes()
      self.debug_print('%s: Finished autodiscover of CPC_UHP nodetree' % time.time(), 1)
      # Scan CPC_UHP subnodetree for nodes needed for Vista handler clients:
      self._setup()
      self.debug_print('%s: Finished _setup()' % time.time(),1)
      ckts_svc_node.start() # starts all children as well
      racks_svc_node.start() # starts all children as well
      self.debug_print('%s: Finished starting Circuits and Racks children of vista_cpc node' % time.time(),1)
      ##
      # Create a CpcClient at proper place in nodetree:
      self._setup_alarm_nodes()
      self.debug_print('%s: Finished creating Alarm CpcClient' % time.time(),1)
      self._start_thread_inst = None
      self._ready = 1
      return
   ##
   # is_ready(): Called by any entity interested in calling get_XXX() methods,
   # and getting non-error values.
   # @return 1: CPC node tree is ready, 0: CPC node tree is not yet ready
   def is_ready(self):
      return self._ready
   def get_case_temps(self):
      return self._cases
   ##
   # get_cases(): Called by Vista handlers to get CaseTemp data. Handlers
   # display this data to user to allow user to associate CaseTemps with widgets.
   # @return List of lists: [[<ckt_name>,<case_temp_idx>,<temp_url>,<stat_url>,<desc_url>],...]
   def get_cases(self):
      return self._cases
   ##
   # get_racks(): Called by Vista handlers to get Rack data. Handlers
   # display this data to user to allow user to associate Racks with widgets.
   # @return List of lists: [[<rack_name>,<stat_url>],...]
   def get_racks(self):
      return self._racks
   ##
   # _setup(): Called by self._start_thread(), to scan existing CPC_UHP subtrees,
   # and to use the garnered info to create appropriate child nodes. These
   # children aggregate Rack and Case statuses for easy monitoring by Vista.
   def _setup(self):
      ckts_svc_node = self.get_child('Circuits')
      racks_svc_node = self.get_child('Racks')
      dev_nodes = self._cpc_uhp_node.children_nodes()
      has_CircuitStatus_node = 0
      for dev_node in dev_nodes:
         ckt_svc_nodes = []
         if dev_node.has_child('Circuit'):
            ckts_dev_node = dev_node.get_child('Circuit')
            ckt_dev_nodes = ckts_dev_node.children_nodes()
            for ckt_dev_node in ckt_dev_nodes:
               ckt_name = ckt_dev_node.get_child('Name').get()
               ckt_svc_node = CktStatusXltrNode(ckt_dev_node)
               cd = {'parent':ckts_svc_node,'name':ckt_dev_node.name}
               ckt_svc_node.configure(cd)
               ckt_svc_nodes.append(ckt_svc_node)
               num_temps_node = ckt_dev_node.get_child('NumberOfTempSensors')
               num_temps = num_temps_node.get()
               if (num_temps is None) or isinstance(num_temps,Exception):
                  num_temps = 6
               for i in range(num_temps):
                  case_temp_dev_node = ckt_dev_node.get_child('CaseTemps' + str(i))
                  case_temp_svc_node = CompositeNode()
                  cd = {'parent':ckt_svc_node,'name':str(case_temp_dev_node._obj_inst_num)}
                  case_temp_svc_node.configure(cd)
                  status_svc_node = CktCaseTempsStatusXltrNode(ckt_svc_node,case_temp_dev_node)
                  cd = {'parent':case_temp_svc_node,'name':'Status'} 
                  status_svc_node.configure(cd)
                  descr_svc_node = SingleAttrNode('Not initialized')
                  cd = {'parent':case_temp_svc_node,'name':'Description'} 
                  descr_svc_node.configure(cd)
                  self._cases.append([ckt_name, \
                                           case_temp_dev_node._obj_inst_num, \
                                           as_node_url(case_temp_dev_node), \
                                           as_node_url(status_svc_node),
                                           as_node_url(descr_svc_node)],)
         rack_svc_node = CompositeNode()
         cd = {'parent':racks_svc_node,'name':dev_node.name}
         rack_svc_node.configure(cd)
         rack_status_node = RackStatusXltrNode(dev_node,ckt_svc_nodes)
         cd = {'parent':rack_svc_node,'name':'Status'} 
         rack_status_node.configure(cd)
         dev_name = dev_node._dev.get_name()
         self._racks.append([dev_name, as_node_url(rack_status_node)])
      return
   def _setup_alarm_nodes(self):
      services = as_node('/services')
      if not services.has_child('External Alarms'):
         alarms_node = CompositeNode()
         alarms_node.configure({'name':'External Alarms','parent':services})
      alarms_node = as_node('/services/External Alarms')
      alarm_node = alarms.Manager()
      alarm_node.configure({'name':'CPC Alarm','parent':alarms_node})
      cpc_client_node = cpc_client.CpcClient(self._cpc_uhp_node)
      cpc_client_node.configure({'name':'CPC Client',
                              'parent':alarm_node,'node':''})
      ewebconnect_client_node = ewebconnect.EWebConnectAlarmClient()
      ewebconnect_client_node.configure({
         'name':'eWebConnect Alarm Client',
         'parent':alarm_node,
         'host':'10.0.1.88', #'mother.envenergy.com',
         'port':16161,
         'enabled':1,
         })
      alarms_node.start()
      return
   def debug_print(self, msg, msg_lvl):
      if msg_lvl < self.debug_lvl:
         if isinstance(msg, array.ArrayType):
            utils.print_array_as_hex(msg, 16)
         else:
            print 'opt.trane.vista.cpc.VistaCpcServiceNode: ' + msg
      return