def get_msg(self, message: Any) -> AcsMsgAndTransition: """ Respond with GetParameterValuesRequest Get the values of all parameters defined in the data model. Also check which addable objects are present, and what the values of parameters for those objects are. """ # Get the names of regular parameters names = get_params_to_get( self.acs.device_cfg, self.acs.data_model, self.request_all_params, ) # Generate the request request = models.GetParameterValues() request.ParameterNames = models.ParameterNames() request.ParameterNames.arrayType = 'xsd:string[%d]' \ % len(names) request.ParameterNames.string = [] for name in names: path = self.acs.data_model.get_parameter(name).path request.ParameterNames.string.append(path) return AcsMsgAndTransition(request, self.done_transition)
def get_msg(self, message: Any) -> AcsMsgAndTransition: request = models.GetParameterValues() request.ParameterNames = models.ParameterNames() request.ParameterNames.string = [] for _, tr_param in StatusParameters.STATUS_PARAMETERS.items(): path = tr_param.path request.ParameterNames.string.append(path) request.ParameterNames.arrayType = \ 'xsd:string[%d]' % len(request.ParameterNames.string) return AcsMsgAndTransition(msg=request, next_state=None)
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)
def get_msg(self, message: Any) -> AcsMsgAndTransition: request = models.GetParameterValues() request.ParameterNames = models.ParameterNames() request.ParameterNames.string = [] for name in self.PARAMETERS: # Not all data models have these parameters if self.acs.data_model.is_parameter_present(name): path = self.acs.data_model.get_parameter(name).path request.ParameterNames.string.append(path) request.ParameterNames.arrayType = \ 'xsd:string[%d]' % len(request.ParameterNames.string) return AcsMsgAndTransition(request, self.done_transition)
def get_msg(self, message: Any) -> AcsMsgAndTransition: """ Respond with GetParameterValuesRequest """ names = [ParameterName.PLMN_LIST] # Generate the request request = models.GetParameterValues() request.ParameterNames = models.ParameterNames() request.ParameterNames.arrayType = 'xsd:string[%d]' \ % len(names) request.ParameterNames.string = [] for name in names: path = self.acs.data_model.get_parameter(name).path request.ParameterNames.string.append(path) return AcsMsgAndTransition(request, self.done_transition)
def get_msg(self) -> AcsMsgAndTransition: """ Respond with GetParameterValuesRequest """ names = _get_object_params_to_get(self.acs.device_cfg, self.acs.data_model) # Generate the request request = models.GetParameterValues() request.ParameterNames = models.ParameterNames() request.ParameterNames.arrayType = 'xsd:string[%d]' \ % len(names) request.ParameterNames.string = [] for name in names: path = self.acs.data_model.get_parameter(name).path request.ParameterNames.string.append(path) return AcsMsgAndTransition(request, None)
def get_msg(self, message: Any) -> AcsMsgAndTransition: """ Respond with GetParameterValuesRequest """ names = self.get_params_to_get(self.acs.data_model, ) # Generate the request request = models.GetParameterValues() request.ParameterNames = models.ParameterNames() request.ParameterNames.arrayType = 'xsd:string[%d]' \ % len(names) request.ParameterNames.string = [] for name in names: path = self.acs.data_model.get_parameter(name).path if path is not InvalidTrParamPath: # Only get data elements backed by tr69 path request.ParameterNames.string.append(path) return AcsMsgAndTransition(msg=request, next_state=None)
def test_generate_get_parameter_values_string(self): """ Test that correct string is generated for SetParameterValues ACS->CPE request """ # Example ACS->CPE RPC call. Copied from: # http://djuro82.blogspot.com/2011/05/tr-069-cpe-provisioning.html # Following edits made: # - Change header ID value from 'null0' to 'null', to match magma # default ID expected_acs_string = b''' <soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header> <cwmp:ID soapenv:mustUnderstand="1">null</cwmp:ID> </soapenv:Header> <soapenv:Body> <cwmp:GetParameterValues> <ParameterNames soap:arrayType="xsd:string[1]"> <string>foo</string> </ParameterNames> </cwmp:GetParameterValues> </soapenv:Body> </soapenv:Envelope> ''' names = ['foo'] request = models.GetParameterValues() request.ParameterNames = models.ParameterNames() request.ParameterNames.arrayType = 'xsd:string[%d]' \ % len(names) request.ParameterNames.string = [] for name in names: request.ParameterNames.string.append(name) request.ParameterKey = 'null' def side_effect(*args, **_kwargs): ctx = args[0] ctx.out_header = models.ID(mustUnderstand='1') ctx.out_header.Data = 'null' ctx.descriptor.out_message.Attributes.sub_name = \ request.__class__.__name__ return AutoConfigServer._generate_acs_to_cpe_request_copy(request) self.p.stop() self.p = patch.object(AutoConfigServer, '_handle_tr069_message', side_effect=side_effect) self.p.start() server = ServerBase(self.app) ctx = MethodContext(server, MethodContext.SERVER) ctx.in_string = [b''] ctx, = server.generate_contexts(ctx) server.get_in_object(ctx) if ctx.in_error is not None: raise ctx.in_error server.get_out_object(ctx) if ctx.out_error is not None: raise ctx.out_error server.get_out_string(ctx) xml_tree = XmlTree() match = xml_tree.xml_compare( xml_tree.convert_string_to_tree(b''.join(ctx.out_string)), xml_tree.convert_string_to_tree(expected_acs_string)) self.assertTrue(match)