一种基于heat的新增组件服务方法

文档序号:10724614阅读:221来源:国知局
一种基于heat的新增组件服务方法
【专利摘要】本发明涉及云计算技术领域,特别是一种基于heat的新增组件服务方法。本发明所述方法包括:在heat的db包中设计新增服务的数据库ORM,在heat的api包下定义新增服务包,在heat的common包wsgi模块下新增服务相关字典配置,对新增服务设置paste deploy,将新增服务配置成类似systemd系统服务。采用本发明提供的方法可以在heat上快速创建新的组件服务,以扩展heat对云平台应用的管理;用于heat的新增组件服务。
【专利说明】
一种基于heat的新増组件服务方法
技术领域
[0001]本发明涉及云计算技术领域,特别是一种基于heat的新增组件服务方法。
【背景技术】
[0002] Openstack和heat
[0003] Heat是OpenStack的负责编排计划的主要项目。它可以基于模板来实现云环境中 资源的初始化,依赖关系处理,部署等基本操作;也可以解决自动收缩,负载均衡等高级特 性。在模板文件中可以定义应用需要的资源,资源可以包括多种类型(CFN以及HOT支持的资 源类型可能会存在一定的差别)例如IP,网络,镜像,用户,实例等。定义资源的同时也可以 指定资源之间的依赖关系,例如使用云硬盘创建一个实例时,可以指定在创建实例时必须 要创建云硬盘。
[0004] Heat以模板的形式提供了基本的应用管理功能,但是openstack原生的heat项目 并不适合于生产环境,云平台开发者需要对heat进行二次开发;例如对模板管理的外部封 装,新增模板服务等。另外heat组件涉及面比较广,功能较复杂,所以开发者在对其进行二 次开发的过程中,需要找到一种通用、简单快速的方法来增加新服务。

【发明内容】

[0005] 本发明解决的技术问题在于提出了一种基于heat的新增组件服务方法,实现简单 快速新增heat组件服务,保证云平台开发者可以快速实现自定义扩展服务。
[0006] 本发明解决上述技术问题的技术方案是:
[0007] 所述的方法包括:
[0008] 在heat的db包中设计新增服务的数据库0RM;
[0009] 在heat的api包下定义新增服务包;
[00? 0]在heat的common包wsgi模块下新增服务相关字典配置;
[0011] 对新增服务设置paste deploy;
[0012]将新增服务配置成类似systemd系统服务。
[0013]所述的在heat的db包中设计新增服务的数据库0RM进一步包括:
[0014] 在sqlalchemy包下的modules包中定义新增服务的数据库表的实体类;
[0015] 在vers ions包中定义新增服务的数据库表设计文件;
[0016] 所述的0RM是指对象关系映射,实现将数据库表直接映射到编程语言对象,一个表 对应一个实体类;
[0017] 所述的数据库设计文件是一个带有版本系列号的.py文件,用于对现有heat的数 据库进行版本升级,以便支持新增服务。
[0018] 所述的在heat的api包下定义新增服务包进一步包括:
[0019] 定义新增服务的controller类;
[0020]定义新增服务的业务处理类;
[0021]设置新增服务api的URL映射;
[0022 ]所述的contro 11 er类被URL映射所调用,用于实现各种ap i接口调用后的入口控 制;controller类继续调用业务处理类,完成接口的业务实现,包括数据的数据库保存。 [0023]所述的新增服务相关字典配置是指服务所必须的一些参数设置,包括服务启动主 机地址bind_host,服务启动端口号bind_port。
[0024]所述的heat是开源云平台openstack的一个负责编排计划的组件,其主要功能是 实现对云平台的上层应用进行模板化管理;所述的模板化管理是指heat根据模板内容来进 行应用的自动部署;所述的模板是指一个类似于任务计划表的指定格式文件,该格式文件 被heat所识别;所述的应用部署过程包括了基本的虚拟机创建和上层应用程序的安装配 置;
[0025]所述的db包是指heat项目下一个包含了__init__.py文件的文件夹,所述的包是 python语言的通用称呼;所述的api包定义与db包定义一致;所述的模块是python语言的一 个通用称呼,特指一个.py文件;
[0026] 所述的paste deploy是python的一个开源插件,用于实现wsgi服务的启动配置, 利用其可以实现新增服务的启动加载;
[0027]所述的systemd是linux系统的一个系统服务管理模块,用于在进程启动过程中更 有效地引导加载服务。
[0028]本发明方案的有益效果如下:
[0029] 1、提供一种方法让云平台开发者可以快速实现基于heat的自定义扩展组件服务 的创建。
[0030] 2、本发明方法实现起来简单方便,且具有通用性。
【附图说明】
[0031] 下面结合附图对本发明进一步说明:
[0032] 图1为本发明的流程图。
【具体实施方式】
[0033]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出实质性创造的方案,都属于本发明保 护的范围。
[0034]请参见图1,为本发明实施例提供的一种基于heat的新增组件服务方法的流程示 意图,本实施类以新增一份模板管理的服务为例进行描述,其他新增服务类似。所述方法包 括:
[0035]在heat/db/sqlalchemy/modules.py文件中定义模板管理服务的数据库表的实体 类:

[0038]继续在 heat/db/sqlalchemy/migrate_repo/versions 包中定义新增服务的数据 库表设计文件,例如〇47_gcloud_templates.py。其中047代表的是heat数据库表设计文件 递增序号,该文件主要定义upgrade函数和downgrade函数,分别用于升级和降级数据库。 [0039] 在heat/api包目录下新增gcloud_template/vl子包,该子包里面主要用来设计新 增模板服务的api接口相关,如定义URL映射的class API,定义接口处理类 TemplateControl ler,定义接口业务处理、数据存储类Template_inst以及接口数据验证相 关。其中URL映射设计如下:

[0042] 如上定义了模板管理服务的所有接口,并统一调用template_resource = template · create_resource(conf)创建的TemplateController 类实例 template_resource 作为接 口控制,其中了611^)1&七6(]〇111:1'〇1161'定义了1]1^映射指定的(^6&七6八611^)1&七6_(3011111:/ get_template_contents/delete/index/show/direct_add 等方法,在这些方法中又进一步 调用了业务数据管理相关的Templatejnst类实例方法。这样新增的模板服务主要的业务 流程已经实现。
[0043] 在heat的common包wsgi模块下新增服务相关字典配置,对于模板管理服务主要包 括服务启动节点bind_host和服务启动端口 bind_port等,如下:

[0046]经过如上步骤,我们已经完成了模板管理服务的主流程,下面只需要将服务进行 部署,并配置成系统服务即可。
[0047]这里我们使用paste deploy部署新增服务,主要过程是在heat启动配置文件/ usr/share/heat/api-paste-dist · ini 中定义如下配置:
[0048] [pipeline :gcloud-template_api]
[0049] pipel ine = request_id faul twrap ssl versionnegotiation authurl authtoken context gcloud-templatevlapp
[0050] [app:gcloud-templatevlapp]
[0051 ] paste .app-factory = heat · common.wsgi :app-factory
[0052] heat .app_factory = heat .api . gcloud-template. vl :API
[0053] 继续将模板服务设计成系统systemd服务,只需要在/usr/lib/systemd/system/ 下面增加模板服务文件gcloud-template-api . service即可,内容如下:
[0054] [rootOcontroller~]#cat/usr/1ib/systemd/system/gcloud-template-api .service
[0055] [Unit]
[0056] Descript ion = 0penStack Heat API Service
[0057] After = syslog.target network.target
[0058] [Service]
[0059] Type = s imp 1 e
[0060] User = heat
[0061 ] ExecStart = /usr/bin/gcloud-template-api-logfile/var/log/heat/gcloud-template-api .log
[0062] [Install]
[0063] WantedBy=multi-user. target 〇
【主权项】
1. 一种基于heat的新增组件服务方法,其特征在于,所述的方法包括: 在heat的db包中设计新增服务的数据库ORM; 在heat的api包下定义新增服务包; 在heat的common包wsgi模块下新增服务相关字典配置; 对新增服务设置paste deploy; 将新增服务配置成类似systemd系统服务。2. 根据权利要求1所述的新增组件服务方法,其特征在于,所述的在heat的db包中设计 新增服务的数据库0RM进一步包括: 在sqlalchemy包下的modules包中定义新增服务的数据库表的实体类; 在versions包中定义新增服务的数据库表设计文件; 所述的0RM是指对象关系映射,实现将数据库表直接映射到编程语言对象,一个表对应 一个实体类; 所述的数据库设计文件是一个带有版本系列号的.py文件,用于对现有heat的数据库 进行版本升级,以便支持新增服务。3. 根据权利要求1所述的新增组件服务方法,其特征在于,所述的在heat的api包下定 义新增服务包进一步包括: 定义新增服务的controller类; 定义新增服务的业务处理类; 设置新增服务api的URL映射; 所述的controller类被URL映射所调用,用于实现各种api接口调用后的入口控制; controller类继续调用业务处理类,完成接口的业务实现,包括数据的数据库保存。4. 根据权利要求2所述的新增组件服务方法,其特征在于,所述的在heat的api包下定 义新增服务包进一步包括: 定义新增服务的controller类; 定义新增服务的业务处理类; 设置新增服务api的URL映射; 所述的controller类被URL映射所调用,用于实现各种api接口调用后的入口控制; controller类继续调用业务处理类,完成接口的业务实现,包括数据的数据库保存。5. 根据权利要求1至4任一项所述的新增组件服务方法,其特征在于,所述的新增服务 相关字典配置是指服务所必须的一些参数设置,包括服务启动主机地址bind_host,服务启 动端口号 bind_port。6. 根据权利要求1至4任一项所述的新增组件服务方法,其特征在于, 所述的heat是开源云平台openstack的一个负责编排计划的组件,其主要功能是实现 对云平台的上层应用进行模板化管理;所述的模板化管理是指heat根据模板内容来进行应 用的自动部署;所述的模板是指一个类似于任务计划表的指定格式文件,该格式文件被 heat所识别;所述的应用部署过程包括了基本的虚拟机创建和上层应用程序的安装配置; 所述的db包是指heat项目下一个包含了 __in it__. py文件的文件夹,所述的包是 python语言的通用称呼;所述的api包定义与db包定义一致;所述的模块是python语言的一 个通用称呼,特指一个.py文件; 所述的paste deploy是python的一个开源插件,用于实现wsgi服务的启动配置,利用 其可以实现新增服务的启动加载; 所述的systemd是linux系统的一个系统服务管理模块,用于在进程启动过程中更有效 地引导加载服务。7.根据权利要求5所述的新增组件服务方法,其特征在于, 所述的heat是开源云平台openstack的一个负责编排计划的组件,其主要功能是实现 对云平台的上层应用进行模板化管理;所述的模板化管理是指heat根据模板内容来进行应 用的自动部署;所述的模板是指一个类似于任务计划表的指定格式文件,该格式文件被 heat所识别;所述的应用部署过程包括了基本的虚拟机创建和上层应用程序的安装配置; 所述的db包是指heat项目下一个包含了 __in it__. py文件的文件夹,所述的包是 python语言的通用称呼;所述的api包定义与db包定义一致;所述的模块是python语言的一 个通用称呼,特指一个.py文件; 所述的paste deploy是python的一个开源插件,用于实现wsgi服务的启动配置,利用 其可以实现新增服务的启动加载; 所述的systemd是linux系统的一个系统服务管理模块,用于在进程启动过程中更有效 地引导加载服务。
【文档编号】G06F9/445GK106095476SQ201610368064
【公开日】2016年11月9日
【申请日】2016年5月26日
【发明人】熊梦, 杨松, 季统凯
【申请人】国云科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1