def _from_db_object(resource, context, db_resource): if db_resource is None: return None for field in resource.fields: if field == 'data': resource['data'] = [ resource_data.ResourceData._from_db_object( resource_data.ResourceData(context), resd) for resd in db_resource.data ] else: resource[field] = db_resource[field] if resource.properties_data_encrypted and resource.properties_data: properties_data = {} for prop_name, prop_value in resource.properties_data.items(): method, value = prop_value decrypted_value = crypt.decrypt(method, value) prop_string = jsonutils.loads(decrypted_value) properties_data[prop_name] = prop_string resource.properties_data = properties_data resource._context = context resource.obj_reset_changes() return resource
def _from_db_object(resource, context, db_resource, only_fields=None): if db_resource is None: return None for field in resource.fields: if (only_fields is not None and field not in only_fields and field != 'id'): continue if field == 'data': resource['data'] = [ resource_data.ResourceData._from_db_object( resource_data.ResourceData(context), resd) for resd in db_resource.data ] elif field != 'attr_data': resource[field] = db_resource[field] if db_resource['rsrc_prop_data_id'] is not None: if hasattr(db_resource, '__dict__'): rpd_obj = db_resource.__dict__.get('rsrc_prop_data') else: rpd_obj = None if rpd_obj is not None: # Object is already eager loaded rpd_obj = (rpd.ResourcePropertiesData._from_db_object( rpd.ResourcePropertiesData(), context, rpd_obj)) resource._properties_data = rpd_obj.data else: resource._properties_data = {} if db_resource['properties_data']: LOG.error( 'Unexpected condition where resource.rsrc_prop_data ' 'and resource.properties_data are both not null. ' 'rsrc_prop_data.id: %(rsrc_prop_data_id)s, ' 'resource id: %(res_id)s', { 'rsrc_prop_data_id': resource['rsrc_prop_data'].id, 'res_id': resource['id'] }) elif db_resource['properties_data']: # legacy field if db_resource['properties_data_encrypted']: decrypted_data = crypt.decrypted_dict( db_resource['properties_data']) resource._properties_data = decrypted_data else: resource._properties_data = db_resource['properties_data'] else: resource._properties_data = None if db_resource['attr_data'] is not None: resource._attr_data = rpd.ResourcePropertiesData._from_db_object( rpd.ResourcePropertiesData(context), context, db_resource['attr_data']).data else: resource._attr_data = None resource._context = context resource.obj_reset_changes() return resource
def _from_db_object(resource, context, db_resource): if db_resource is None: return None for field in resource.fields: if field == 'data': resource['data'] = map( lambda resd: resource_data.ResourceData._from_db_object( resource_data.ResourceData(context), resd), db_resource.data) else: resource[field] = db_resource[field] resource._context = context resource.obj_reset_changes() return resource
def _from_db_object(resource, context, db_resource): if db_resource is None: return None for field in resource.fields: if field == 'data': resource['data'] = [ resource_data.ResourceData._from_db_object( resource_data.ResourceData(context), resd) for resd in db_resource.data ] else: resource[field] = db_resource[field] if db_resource['rsrc_prop_data'] is not None: resource['rsrc_prop_data'] = \ rpd.ResourcePropertiesData._from_db_object( rpd.ResourcePropertiesData(context), context, db_resource['rsrc_prop_data']) resource._properties_data = resource['rsrc_prop_data'].data if db_resource['properties_data']: LOG.error( 'Unexpected condition where resource.rsrc_prop_data ' 'and resource.properties_data are both not null. ' 'rsrc_prop_data.id: %(rsrc_prop_data_id)s, ' 'resource id: %(res_id)s', { 'rsrc_prop_data_id': resource['rsrc_prop_data'].id, 'res_id': resource['id'] }) elif db_resource['properties_data']: # legacy field if db_resource['properties_data_encrypted']: decrypted_data = crypt.decrypted_dict( db_resource['properties_data']) resource._properties_data = decrypted_data else: resource._properties_data = db_resource['properties_data'] else: resource._properties_data = {} if db_resource['attr_data'] is not None: resource['attr_data'] = \ rpd.ResourcePropertiesData._from_db_object( rpd.ResourcePropertiesData(context), context, db_resource['attr_data']) resource._context = context resource.obj_reset_changes() return resource
def _from_db_object(resource, context, db_resource): if db_resource is None: return None for field in resource.fields: if field == 'data': resource['data'] = [ resource_data.ResourceData._from_db_object( resource_data.ResourceData(context), resd) for resd in db_resource.data ] else: resource[field] = db_resource[field] if resource.properties_data_encrypted and resource.properties_data: decrypted_data = crypt.decrypted_dict(resource.properties_data) resource.properties_data = decrypted_data resource._context = context resource.obj_reset_changes() return resource