分享

OpenStack Cinder源码分析之八

shihailong123 发表于 2014-11-23 13:47:09 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 18654
问题导读

1、cinder模块中所定义和使用的数据库处理相关方法包括些什么
2、volume type卷类型加密相关的定义有哪些?





在本篇博客中,我将简单整理一下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):接收一个卷的转换;



相关文章



OpenStack Cinder源码分析之一
http://www.aboutyun.com/thread-10236-1-1.html


OpenStack Cinder源码分析之二
http://www.aboutyun.com/thread-10242-1-1.html


OpenStack Cinder源码分析之三
http://www.aboutyun.com/thread-10243-1-1.html


OpenStack Cinder源码分析之四
http://www.aboutyun.com/thread-10244-1-1.html

OpenStack Cinder源码分析之五
http://www.aboutyun.com/thread-10245-1-1.html

OpenStack Cinder源码分析之六
http://www.aboutyun.com/thread-10246-1-1.html


OpenStack Cinder源码分析之七
http://www.aboutyun.com/thread-10247-1-1.html







没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条