def _set_property_value(self, lom_object, property_name, value): verify_object_property(lom_object, property_name) prop = getattr(lom_object, property_name) if property_name in PROPERTY_TYPES.keys(): if not is_lom_object(value, self.lom_classes): raise LomAttributeError('set: no valid object id') if not isinstance(value, PROPERTY_TYPES[property_name]): raise LomAttributeError('set: type mismatch') elif isinstance(prop, (int, bool)): if unicode(value) in (u'True', u'False'): value = int(unicode(value) == u'True') elif not isinstance(value, int): raise LomAttributeError('set: invalid value') elif isinstance(prop, float): if not isinstance(value, (int, float)): raise LomAttributeError('set: type mismatch') value = float(value) elif isinstance(prop, (str, unicode)): if not isinstance(value, (str, unicode, int, float)): raise LomAttributeError('set: type mismatch') value = unicode(value) else: raise LomAttributeError('set: unsupported property type') setattr(lom_object, property_name, value)
def obj_get(self, device_id, object_id, parameters): raise isinstance(parameters, (str, unicode)) or AssertionError current_object = self._get_current_lom_object(device_id, object_id) result_value = None if current_object != None: try: raise parameters.isdigit() and ( is_object_iterable(current_object) or AssertionError) if not int(parameters) in range(len(current_object)): raise AssertionError result_value = current_object[int(parameters)] else: verify_object_property(current_object, parameters) result_value = getattr(current_object, parameters) if isinstance(result_value, ENUM_TYPES): result_value = int(result_value) result = self._str_representation_for_object(result_value) self.manager.send_message(device_id, object_id, 'obj_prop_val', result) except LomAttributeError as e: self._warn(device_id, object_id, e.message) else: self._warn(device_id, object_id, 'get: no valid object set') return
def _object_default_call_handler(self, device_id, object_id, lom_object, parameters): verify_object_property(lom_object, parameters[0]) self._warn_if_using_private_property(device_id, object_id, parameters[0]) function = getattr(lom_object, parameters[0]) result = function(*parameters[1:]) result_str = self._str_representation_for_object(result) self.manager.send_message(device_id, object_id, 'obj_call_result', result_str)
def obj_get(self, device_id, object_id, parameters): raise isinstance(parameters, (str, unicode)) or AssertionError current_object = self._get_current_lom_object(device_id, object_id) result_value = None if current_object != None: try: if not (parameters.isdigit() and is_object_iterable(current_object)): raise AssertionError if not int(parameters) in range(len(current_object)): raise AssertionError result_value = current_object[int(parameters)] else: if not self._warn_if_using_private_property(device_id, object_id, parameters): verify_object_property(current_object, parameters, self.epii_version) result_value = getattr(current_object, parameters) if isinstance(result_value, ENUM_TYPES): result_value = int(result_value) prop_info = get_exposed_property_info(type(current_object), parameters, self.epii_version) result = prop_info and prop_info.to_json and self._str_representation_for_object(prop_info.to_json(current_object)) else: result = self._str_representation_for_object(result_value) self.manager.send_message(device_id, object_id, 'obj_prop_val', result) except LomAttributeError as e: self._warn(device_id, object_id, unicode(e)) else: self._warn(device_id, object_id, 'get: no valid object set')
def _object_default_call_handler(self, device_id, object_id, lom_object, parameters): verify_object_property(lom_object, parameters[0]) function = getattr(lom_object, parameters[0]) result = function(*parameters[1:]) result_str = self._str_representation_for_object(result) self.manager.send_message(device_id, object_id, 'obj_call_result', result_str)
def obj_get(self, device_id, object_id, parameters): raise isinstance(parameters, (str, unicode)) or AssertionError current_object = self._get_current_lom_object(device_id, object_id) result_value = None if current_object != None: try: raise parameters.isdigit() and (is_object_iterable(current_object) or AssertionError) if not int(parameters) in range(len(current_object)): raise AssertionError result_value = current_object[int(parameters)] else: verify_object_property(current_object, parameters) result_value = getattr(current_object, parameters) if isinstance(result_value, ENUM_TYPES): result_value = int(result_value) result = self._str_representation_for_object(result_value) self.manager.send_message(device_id, object_id, 'obj_prop_val', result) except LomAttributeError as e: self._warn(device_id, object_id, e.message) else: self._warn(device_id, object_id, 'get: no valid object set')
def _set_property_value(self, lom_object, property_name, value): verify_object_property(lom_object, property_name, self.epii_version) prop = getattr(lom_object, property_name) prop_info = get_exposed_property_info(type(lom_object), property_name, self.epii_version) if prop_info and prop_info.from_json: value = prop_info.from_json(lom_object, value) if value is None: raise LomAttributeError('set: invalid value') elif property_name in PROPERTY_TYPES.keys(): if not is_lom_object(value, self.lom_classes): raise LomAttributeError('set: no valid object id') if not isinstance(value, PROPERTY_TYPES[property_name]): raise LomAttributeError('set: type mismatch') elif isinstance(prop, (int, bool)): if unicode(value) in (u'True', u'False'): value = int(unicode(value) == u'True') elif not isinstance(value, int): raise LomAttributeError('set: invalid value') elif isinstance(prop, float): if not isinstance(value, (int, float)): raise LomAttributeError('set: type mismatch') value = float(value) elif isinstance(prop, (str, unicode)): if not isinstance(value, (str, unicode, int, float)): raise LomAttributeError('set: type mismatch') value = unicode(value) elif isinstance(prop, tuple): prop_info = get_exposed_property_info(type(lom_object), property_name, self.epii_version) if prop_info and prop_info.format == MFLPropertyFormats.JSON: package = json.loads(value) value = tuple(package[property_name]) else: raise LomAttributeError('set: unsupported property type') else: raise LomAttributeError('set: unsupported property type') setattr(lom_object, property_name, value)