Esempio n. 1
0
    def read_msg(self, message: Any) -> Optional[str]:
        """
        In this case, we assume that we already know things such as the
        manufacturer OUI, and also the SW-version of the eNodeB which is
        sending the Inform message, so we don't process the message. We just
        check that we're getting the right message type that we expect.

        Returns:
            InformResponse
        """
        if type(message) == models.Fault:
            raise Tr069Error(
                'ACS in WaitInform state. Received a Fault message. '
                '(faultstring = %s)' % message.FaultString)
        elif not isinstance(message, models.Inform):
            raise ConfigurationError(
                'ACS in WaitInform state. Expected an Inform message. ' +
                'Received a %s message.' % type(message))

        is_correct_event = False
        for event in message.Event.EventStruct:
            logging.debug('Inform event: %s', event.EventCode)
            if event.EventCode == self.INFORM_EVENT_CODE:
                # Mark eNodeB as unconfigured, since some config params
                # are reset on reboot (e.g. perf mgmt enable)
                logging.info('eNodeB booting - reconfig required')
                self.acs.device_cfg = EnodebConfiguration(self.acs.data_model)
                is_correct_event = True
        if not is_correct_event:
            raise Tr069Error('Did not receive 1 BOOT event code in ' 'Inform')
        process_inform_message(message, self.acs.device_name,
                               self.acs.data_model, self.acs.device_cfg)
        return None
Esempio n. 2
0
 def read_msg(self, message: Any) -> AcsReadMsgResult:
     if not isinstance(message, models.Inform):
         return AcsReadMsgResult(False, None)
     process_inform_message(
         message, self.acs.data_model,
         self.acs.device_cfg,
     )
     return AcsReadMsgResult(True, None)
Esempio n. 3
0
 def read_msg(self, message: Any) -> AcsReadMsgResult:
     if not isinstance(message, models.Inform):
         return AcsReadMsgResult(False, None)
     if not does_inform_have_event(message, self.INFORM_EVENT_CODE):
         raise Tr069Error('Did not receive M Reboot event code in '
                          'Inform')
     process_inform_message(message, self.acs.device_name,
                            self.acs.data_model, self.acs.device_cfg)
     return AcsReadMsgResult(True, self.done_transition)
Esempio n. 4
0
 def read_msg(self, message: Any) -> AcsReadMsgResult:
     """
     Args:
         message: models.Inform Tr069 Inform message
     """
     if not isinstance(message, models.Inform):
         return AcsReadMsgResult(False, None)
     process_inform_message(message, self.acs.device_name,
                            self.acs.data_model, self.acs.device_cfg)
     return AcsReadMsgResult(True, None)
Esempio n. 5
0
 def read_msg(self, message: Any) -> AcsReadMsgResult:
     """
     Args:
         message: models.Inform Tr069 Inform message
     """
     if not isinstance(message, models.Inform):
         return AcsReadMsgResult(False, None)
     process_inform_message(message, self.acs.device_name,
                            self.acs.data_model, self.acs.device_cfg)
     if does_inform_have_event(message, '1 BOOT'):
         return AcsReadMsgResult(True, self.boot_transition)
     return AcsReadMsgResult(True, None)
Esempio n. 6
0
 def read_msg(self, message: Any) -> Optional[str]:
     """
     Args:
         message: models.Inform Tr069 Inform message
     """
     if not isinstance(message, models.Inform):
         raise ConfigurationError(
             'ACS in Disconnected state. Expected an Inform message. ' +
             'Received a %s message.' % type(message))
     process_inform_message(message, self.acs.device_name,
                            self.acs.data_model, self.acs.device_cfg)
     return None
Esempio n. 7
0
 def read_msg(self, message: Any) -> AcsReadMsgResult:
     """
     This state can be transitioned into through user command.
     All messages received by enodebd will be ignored in this state.
     """
     if self.prev_msg_was_inform \
             and not isinstance(message, models.DummyInput):
         return AcsReadMsgResult(False, None)
     elif isinstance(message, models.Inform):
         self.prev_msg_was_inform = True
         process_inform_message(message, self.acs.device_name,
                                self.acs.data_model, self.acs.device_cfg)
         return AcsReadMsgResult(True, None)
     self.prev_msg_was_inform = False
     return AcsReadMsgResult(True, None)
Esempio n. 8
0
    def read_msg(self, message: Any) -> AcsReadMsgResult:
        """
        Read incoming message

        Args:
            message (Any): TR069 message

        Returns:
            AcsReadMsgResult
        """
        if not isinstance(message, models.Inform):
            return AcsReadMsgResult(msg_handled=False, next_state=None)
        process_inform_message(
            message, self.acs.data_model,
            self.acs.device_cfg,
        )
        return AcsReadMsgResult(msg_handled=True, next_state=None)
Esempio n. 9
0
    def read_msg(self, message: Any) -> Optional[str]:
        if type(message) == models.Inform:
            is_correct_event = False
            for event in message.Event.EventStruct:
                logging.debug('Inform event: %s', event.EventCode)
                if event.EventCode == self.INFORM_EVENT_CODE:
                    is_correct_event = True
            if not is_correct_event:
                raise Tr069Error('Did not receive M Reboot event code in '
                                 'Inform')
        elif type(message) == models.Fault:
            # eNodeB may send faults for no apparent reason before rebooting
            return None
        else:
            raise Tr069Error('Unexpected response type: %s' % type(message))

        process_inform_message(message, self.acs.device_name,
                               self.acs.data_model, self.acs.device_cfg)
        return self.done_transition
Esempio n. 10
0
    def read_msg(self, message: Any) -> AcsReadMsgResult:
        if type(message) == models.Inform:
            is_correct_event = False
            for event in message.Event.EventStruct:
                logging.debug('Inform event: %s', event.EventCode)
                if event.EventCode == self.INFORM_EVENT_CODE:
                    is_correct_event = True
            if not is_correct_event:
                raise Tr069Error('Did not receive M Reboot event code in '
                                 'Inform')
        elif type(message) == models.Fault:
            # eNodeB may send faults for no apparent reason before rebooting
            return AcsReadMsgResult(True, None)
        else:
            return AcsReadMsgResult(False, None)

        self.received_inform = True
        process_inform_message(message, self.acs.device_name,
                               self.acs.data_model, self.acs.device_cfg)
        return AcsReadMsgResult(True, None)