OpenStack Cinder源码分析之八

感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!
如果转载,请保留作者信息。
博客地址:http://blog.csdn.net/gaoxingnengjisuan
邮箱地址:dong.liu@siat.ac.cn


在本篇博客中,我将简单整理一下cinder模块中所定义和使用的的数据库处理相关方法。

#########################

# service服务相关;

#########################

def service_destroy(context, service_id):删除指定的服务;

def service_get(context, service_id):获取指定的服务;

def service_get_by_host_and_topic(context, host, topic):获取指定主机指定topic上的服务;

def service_get_all(context, disabled=None):获取所有服务;

def service_get_all_by_topic(context, topic):对于一个给定的主题(topic),获取所有服务;

def service_get_all_by_host(context, host):获取指定主机上的所有服务;

def service_get_all_volume_sorted(context):获取所有卷的服务,所有的服务根据卷的计数进行了排序;

def service_get_by_args(context, host, binary):通过主机节点名称和binary获取服务的状态信息;

def service_create(context, values):根据values中的值建立服务;

def service_update(context, service_id, values):在服务上设置给定的属性,并进行更新;


#########################

# volume卷相关;

#########################

def iscsi_target_count_by_host(context, host):获取导出设备的数目;

def iscsi_target_create_safe(context, values):根据values的值建立ISCSI目标;

def volume_allocate_iscsi_target(context, volume_id, host):自动从资源池中获取空闲的iscsi_target

def volume_attached(context, volume_id, instance_id, host_name,mountpoint):确认卷已经设置为附加状态;

def volume_create(context, values):根据values的值来建立新卷;

def volume_data_get_for_host(context, host):获取主机的(volume_count,gigabytes)

def volume_data_get_for_project(context, project_id):获取对象的(volume_count,gigabytes)

def finish_volume_migration(context, src_vol_id, dest_vol_id):从目标卷复制所有columns到源卷;在卷的迁移完成后,执行数据库更新操作;

def volume_destroy(context, volume_id):消除卷的数据库中信息;

def volume_detached(context, volume_id):确认卷已经设置为卸载状态;

def volume_get(context, volume_id):根据volume_id获取volume;

def volume_get_all(context, marker, limit, sort_key, sort_dir):获取所有的卷;

def volume_get_all_by_host(context, host):获取所有属于host的volume;

def volume_get_all_by_instance_uuid(context, instance_uuid):获取属于指定实例的所有的卷;

def volume_get_all_by_project(context, project_id, marker, limit,sort_key, sort_dir):获取属于project_id指定对象的所有的卷;

def volume_get_iscsi_target_num(context, volume_id):获取分配给指定卷的target num(tid)

def volume_update(context, volume_id, values):在卷上设置给定的属性,并进行更新;


#########################

# snapshot快照相关;

#########################

def snapshot_create(context, values):根据具体参数实现建立快照;

def snapshot_destroy(context, snapshot_id):在数据库中消除snapshot_id指定的快照的相关数据信息;

def snapshot_get(context, snapshot_id):获取指定卷的快照;

def snapshot_get_all(context):获取所有卷的快照;

def snapshot_get_all_by_project(context, project_id):获取所有属于project_id指定的对象的快照;

def snapshot_get_all_for_volume(context, volume_id):为volume获取所有的快照;

def snapshot_update(context, snapshot_id, values):为一个快照设置给定属性并进行更新;

def snapshot_data_get_for_project(context, project_id, volume_type_id=None):为指定的对象获取用于快照的count和gigabytes;

def snapshot_get_active_by_window(context, begin, end=None,project_id=None):获取window中活跃的快照;


###################################

# snapsho metadatat快照元数据相关;

###################################

def snapshot_metadata_get(context, snapshot_id):获取一个快照的所有元数据;

def snapshot_metadata_delete(context, snapshot_id, key):在数据库中删除给定快照的元数据序列;

def snapshot_metadata_update(context, snapshot_id, metadata, delete):如果指定快照的元数据存在,则进行更新,如果快照的元数据不存在,则建立相应的条目信息;


###################################

# volume metadatat卷元数据相关;

###################################

def volume_metadata_get(context, volume_id):获取指定卷的所有元数据;

def volume_metadata_delete(context, volume_id, key):删除指定卷的元数据序列;

def volume_metadata_update(context, volume_id, metadata, delete):如果数据库中指定卷的数据存在,则进行更新,如果数据库中卷的元数据不存在,则建立相应的条目数据;

def volume_admin_metadata_get(context, volume_id):获取卷的所有管理元数据;

def volume_admin_metadata_delete(context, volume_id, key):删除给定卷的元数据项;

def volume_admin_metadata_update(context, volume_id, metadata, delete):如果元数据存在则更新元数据,否则在数据库中新建相应的条目信息;


###############################

# volume type卷类型相关;

###############################

def volume_type_create(context, values):建立一个新的卷的类型;

def volume_type_get_all(context, inactive=False):获取所有卷的类型;

def volume_type_get(context, id, inactive=False):根据id获取卷的类型信息;

def volume_type_get_by_name(context, name):根据名称获取单个卷的类型;

def volume_type_qos_associations_get(context, qos_specs_id,inactive=False):获取与特定的qos功能相关联的卷的类型;

def volume_type_qos_associate(context, type_id, qos_specs_id):关联(映射)卷的类型到特定的qos功能;

def volume_type_qos_disassociate(context, qos_specs_id, type_id):解除卷的类型到特定的qos功能的映射;

def volume_type_qos_disassociate_all(context, qos_specs_id):解除所有卷的类型到特定的qos功能的映射;

def volume_type_qos_specs_get(context, type_id):根据给定的卷类型获取所有QOS功能相关的信息;

def volume_type_destroy(context, id):删除卷的类型;

def volume_get_active_by_window(context, begin, end=None,project_id=None):获取window中的所有的卷;

def volume_type_extra_specs_get(context, volume_type_id):获取指定卷类型的所有额外功能;

def volume_type_extra_specs_delete(context, volume_type_id, key):删除指定卷类型的额外功能序列;

def volume_type_extra_specs_update_or_create(context, volume_type_id,extra_specs):建立或更新指定卷类型的额外功能;


###############################

# volume type卷类型加密相关;

###############################

def volume_type_encryption_get(context, volume_type_id, session=None):验证卷的类型是否是加密的;

def volume_type_encryption_delete(context, volume_type_id):为一个给定的卷类型删除加密功能;

def volume_type_encryption_update_or_create(context, volume_type_id,encryption_specs):为一个已存在的卷类型建立或更新加密功能;

def volume_type_encryption_volume_get(context, volume_type_id,session=None):获取指定卷类型中所有加密的卷的列表;

def volume_encryption_metadata_get(context, volume_id, session=None):获取卷加密元数据;


###################

# qos specs相关;

###################

def qos_specs_create(context, values):建立一个qos_specs

def qos_specs_get(context, qos_specs_id):获取qos_specs_id指定QOS的所有规范信息;

def qos_specs_get_all(context, inactive=False, filters=None):获取所有的qos_specs

def qos_specs_get_by_name(context, name):获取name指定QOS的所有规范信息;

def qos_specs_associations_get(context, qos_specs_id):根据给定的qos_specs的id值获取所有相关的卷的类型信息;

def qos_specs_associate(context, qos_specs_id, type_id):关联卷类型到指定的qos_specs

def qos_specs_disassociate(context, qos_specs_id, type_id):解除关联卷类型到指定的qos_specs

def qos_specs_disassociate_all(context, qos_specs_id):从所有的实体中消除与qos_specs_id相关联的qos_specs;

def qos_specs_delete(context, qos_specs_id):在数据库中实现删除qos_specs的相关数据信息;

def qos_specs_item_delete(context, qos_specs_id, key):删除qos_specs_id指定的QOS功能中的key的值;

def qos_specs_update(context, qos_specs_id, specs):更新数据库中QOS功能的数据信息;


################################################

# volume glance metadata卷glance存储元数据相关;

################################################

def volume_glance_metadata_create(context, volume_id, key, value):为指定的卷更新Glance元数据;

def volume_glance_metadata_get(context, volume_id):获取指定卷的glance中的元数据;

def volume_snapshot_glance_metadata_get(context, snapshot_id):为指定的快照获取glance元数据;

def volume_glance_metadata_copy_to_snapshot(context, snapshot_id,volume_id):通过从原始卷中拷贝所有的key:value对实现为指定快照更新glance元数据;这也是为什么当一个卷通过快照建立之后,还要保留其原始元数据;

def volume_glance_metadata_copy_to_volume(context, volume_id,snapshot_id):通过从原始快照中拷贝所有key:value对实现为指定卷更新glance元数据;这也是为什么原始卷的元数据要保留的原因;

def volume_glance_metadata_delete_by_volume(context, volume_id):为一个给定的卷删除glance元数据;

def volume_glance_metadata_delete_by_snapshot(context, snapshot_id):为快照删除glance中对应的元数据;

def volume_glance_metadata_copy_from_volume_to_volume(context,src_volume_id, volume_id):通过从原始卷中拷贝所有的key:value对实现为指定卷更新glance元数据;这也是为什么当一个卷通过卷(拷贝)建立之后,还要保留其原始元数据;


############################

# quota资源配额信息相关;

############################

def quota_create(context, project_id, resource, limit):为给定对象和资源建立资源配额相关数据信息;

def quota_get(context, project_id, resource):获取配额信息;

def quota_get_all_by_project(context, project_id):根据project_id检索所有相关的配额信息;

def quota_update(context, project_id, resource, limit):更新指定对象和资源的资源配额信息;

def quota_destroy(context, project_id, resource):删除指定对象和资源的资源配额信息;

def quota_class_create(context, class_name, resource, limit):为给定的名称和资源建立一个资源配额类;

def quota_class_get(context, class_name, resource):根据给定的配额类class_name,获取指定的资源配额信息;

def quota_class_get_default(context):获取所有默认的配额信息;

def quota_class_get_all_by_name(context, class_name):根据指定的配额类获取所有相关的资源配额信息;

def quota_class_update(context, class_name, resource, limit):更新指定资源的配额类;

def quota_class_destroy(context, class_name, resource):删除指定资源的配额类;

def quota_class_destroy_all_by_name(context, class_name):删除给定配额类的所有相关联的配额信息;


####################################

# quota usage资源配额使用率信息相关;

####################################

def quota_usage_create(context, project_id, resource, in_use,reserved, until_refresh):为给定的对象和资源建立配额使用率数据信息;

def quota_usage_get(context, project_id, resource):为给定的对象和资源检索配额使用率信息;

def quota_usage_get_all_by_project(context, project_id):根据project_id为给定的资源获取所有相关配额的使用率信息;


########################################

# reservation对象和资源的保留数据相关;

########################################

def reservation_create(context, uuid, usage, project_id, resource,delta, expire):为给定的对象和资源建立保留数据信息;

def reservation_get(context, uuid):为给定的uuid回复资源保留数据信息;

def reservation_get_all_by_project(context, project_id):为给定的对象恢复所有相关联的资源保留数据信息;

def reservation_destroy(context, uuid):为给定的uuid删除资源保留数据信息;

def quota_reserve(context, resources, quotas, deltas, expire, until_refresh,max_age, project_id=None):检测配额信息并建立相应的资源配额预留信息;

def reservation_commit(context, reservations, project_id=None):提交资源配额的预留信息;

def reservation_rollback(context, reservations, project_id=None):回调配额预留资源;

def quota_destroy_all_by_project(context, project_id):删除与指定对象相关的所有的配额、利用率和预留资源信息;

def reservation_expire(context):实现了预约(资源配额)到期的处理;


#######################

# backup数据备份相关;

#######################

def backup_get(context, backup_id):根据backup_id获取backup;

def backup_get_all(context):获取所有备份;

def backup_get_all_by_host(context, host):获取所有属于host的备份;

def backup_create(context, values):根据给定的values参数信息建立备份的数据库信息;

def backup_get_all_by_project(context, project_id):获取所有属于指定对象的备份;

def backup_update(context, backup_id, values):在备份上设置给定的属性并进行更新;

def backup_destroy(context, backup_id):在数据库中删除指定备份的相关数据;


#####################################

# transfer卷的所有权转换信息相关;

#####################################

def transfer_get(context, transfer_id):获取卷所有权的转换记录;

def transfer_get_all(context):获取所有卷的转换记录;

def transfer_get_all_by_project(context, project_id):获取在所有的卷的转换记录中指定对象的转换记录;

def transfer_create(context, values):根据values信息在卷的转换数据库表中建立相应的条目;

def transfer_destroy(context, transfer_id):删除卷中的所有权转换记录数据表;

def transfer_accept(context, transfer_id, user_id, project_id):接收一个卷的转换;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值