Esempio n. 1
0
    def read_msg(self, message: Any) -> AcsReadMsgResult:
        """ Process either GetParameterValuesResponse or a Fault """
        if type(message) == models.Fault:
            self.acs.data_model.set_parameter_presence(
                self.optional_param,
                False,
            )
        elif type(message) == models.GetParameterValuesResponse:
            name_to_val = parse_get_parameter_values_response(
                self.acs.data_model,
                message,
            )
            logger.debug(
                'Received CPE parameter values: %s',
                str(name_to_val),
            )
            for name, val in name_to_val.items():
                self.acs.data_model.set_parameter_presence(
                    self.optional_param,
                    True,
                )
                magma_val = self.acs.data_model.transform_for_magma(name, val)
                self.acs.device_cfg.set_parameter(name, magma_val)
        else:
            return AcsReadMsgResult(False, None)

        if get_optional_param_to_check(self.acs.data_model) is not None:
            return AcsReadMsgResult(True, None)
        return AcsReadMsgResult(True, self.done_transition)
Esempio n. 2
0
 def get_msg(self, message: Any) -> AcsMsgAndTransition:
     self.optional_param = get_optional_param_to_check(self.acs.data_model)
     if self.optional_param is None:
         raise Tr069Error('Invalid State')
     # Generate the request
     request = models.GetParameterValues()
     request.ParameterNames = models.ParameterNames()
     request.ParameterNames.arrayType = 'xsd:string[1]'
     request.ParameterNames.string = []
     path = self.acs.data_model.get_parameter(self.optional_param).path
     request.ParameterNames.string.append(path)
     return AcsMsgAndTransition(request, None)
Esempio n. 3
0
 def read_msg(self, message: Any) -> AcsReadMsgResult:
     """
     It's expected that we transition into this state right after receiving
     an Inform message and replying with an InformResponse. At that point,
     the eNB sends an empty HTTP request (aka DummyInput) to initiate the
     rest of the provisioning process
     """
     if not isinstance(message, models.DummyInput):
         return AcsReadMsgResult(False, None)
     if get_optional_param_to_check(self.acs.data_model) is None:
         return AcsReadMsgResult(True, self.done_transition)
     return AcsReadMsgResult(True, self.unknown_param_transition)
Esempio n. 4
0
 def read_msg(self, message: Any) -> AcsReadMsgResult:
     """
     It's expected that we transition into this state right after receiving
     an Inform message and replying with an InformResponse. At that point,
     the eNB sends an empty HTTP request (aka DummyInput) to initiate the
     rest of the provisioning process
     """
     if not isinstance(message, models.DummyInput):
         logger.debug("Ignoring message %s", str(type(message)))
         return AcsReadMsgResult(msg_handled=False, next_state=None)
     if self.unknown_param_transition:
         if get_optional_param_to_check(self.acs.data_model):
             return AcsReadMsgResult(
                 msg_handled=True,
                 next_state=self.unknown_param_transition,
             )
     return AcsReadMsgResult(
         msg_handled=True,
         next_state=self.done_transition,
     )
Esempio n. 5
0
    def read_msg(self, message: Any) -> Optional[str]:
        """ Process either GetParameterValuesResponse or a Fault """
        if type(message) == models.Fault:
            self.acs.data_model.set_parameter_presence(self.optional_param,
                                                       False)
        elif type(message) == models.GetParameterValuesResponse:
            name_to_val = parse_get_parameter_values_response(
                self.acs.data_model,
                message,
            )
            logging.debug('Received CPE parameter values: %s',
                          str(name_to_val))
            for name, val in name_to_val.items():
                self.acs.data_model.set_parameter_presence(
                    self.optional_param, True)
                magma_val = self.acs.data_model.transform_for_magma(name, val)
                self.acs.device_cfg.set_parameter(name, magma_val)
        else:
            raise Tr069Error('Unexpected response type: %s' % type(message))

        if get_optional_param_to_check(self.acs.data_model) is not None:
            return None
        return self.done_transition