调度器的使用说明
本说明介绍调度器的用法,包括两个命令ivic-vsched和ivic-vsched-utils,和配置文件/etc/ivic/vsched-config.yaml。
ivic-vsched
ivic-vsched没有命令行参数。运行之后,将启动调度器。调度器将循环查询数据库,用户可以按q键退出。
ivic-vsched-utils
ivic-vsched-utils命令行参数的说明如下
Usage: %s cmd [options]
vsched-utils regression_test [<num>]
vsched-utils dump_model [<filename>]
vsched-utils import_model [<sqlfile>] [<modelpy>]
<sqlfile> default to 'virtsched/model.sql'
<modelpy> default to standard output
vsched-utils reload_model
vsched-utils import_sample
vsched-utils import_xml vc|vl|vt|<filename>
vc for 'doc/vcluster-sample.xml'
vl for 'doc/vlab-sample.xml'
vt for 'doc/vtemplate-sample.xml'
vsched-utils export_xml vLab@<num>|vTemplate@<num>|vCluster@<num>
vsched-utils test_model [remote|local]
default to remote
vsched-utils impl <operation>
vsched-utils server
vsched-utils proxy <server>[:<port>] <operation>
vsched-utils redotask <id>
vsched-utils redojob <id>
vsched-utils massacre
regression_test
- 运行vscheduler的回归测试,语法
vsched-utils regression_test [<num>]
- 其中 num 是部分带循环的测试脚本的循环次数
dump_model
- dump portal 数据库的表结构,输出sql。语法
vsched-utils dump_model [<filename>]
import_model
- 将dump的sql表结构文件导入为sqlalchemy(scheduler使用的数据库对象映射库)可识别的 py 模块(ImportedModel?)
- 语法
vsched-utils import_model [<sqlfile>] [<modelpy>]
- 其中两个参数分别是sql文件和py模块文件名,参数可忽略。
reload_model
- 将数据库清空,危险,慎用
import_xml
- 导入 vlab/vcluster/vtemplate 的 xml 到数据库。语法
vsched-utils import_xml vc|vl|vt|<filename> vc for 'doc/vcluster-sample.xml' vl for 'doc/vlab-sample.xml' vt for 'doc/vtemplate-sample.xml' - 其中vc/vl/vt分别为三个样例xml文件的缩写。还可以自己指定用文件名
export_xml
- 将数据库表中的记录,导出成 xml 文件。语法
vsched-utils export_xml vLab@<num>|vTemplate@<num>|vCluster@<num>
test_model
- 对数据库连接和数据库表作简单的检查
vsched-utils test_model [remote|local]
- 其中,remote 访问配置文件中的 portal 数据库,local 访问临时的 sqlite 数据库
impl
- 运行 scheduler 接口命令。接口如下:
def importTemplate(self, xml): # 导入模板,其中xml参数是模板的xml字符串 def listTemplate(self): # 列模板,返回值是模板列表字符串 def listTemplate_ByType(self, typ): # 按照类型列模板,其中参数typ是模板类型,可选vLab, vCluster, vTemplate def showTemplate(self, uuid): # 显示uuid参数所代表的模板详细信息,如果可以保证唯一性,uuid可以只给前缀 def showTemplate_ByKey(self, key): # 按照关键字列模板,其中参数key的语法是: vLab@id, vCluster@id, vTemplate@id,显示相应数据库表中标识为id的记录 def removeTemplate(self, uuid): # 删除uuid参数代表的模版,uuid如果只给前缀,必须唯一。 def removeTemplates(self, uuid): # 删除uuid参数代表的多个模板,参数uuid可以是前缀,作为通配符匹配多个模板 def removeTemplate_ByKey(self, key): # 删除key参数代报的模板 def listInstance(self): # 列模板实例,包括vLab/vCluster/vNode/Nic/vSwitch等对象 def listInstance_ByType(self, typ): # 按照类型列模板实例,参数可选vLab/vCluster/vNode/Nic/vSwitch def listJob(self): # 列举Job表的对象 def listTask(self): # 列举Task表对象 def removeInstance(self, uuid): # 删除uuid代表的模板实例 def removeInstances(self, uuid): # 删除uuid前缀代表的多个模板实例 def removeInstance_ByKey(self, key): # 删除key代表的模板实例 def deployV(self, template_uuid): # 部署虚拟环境,参数是模板的uuid,程序会自动的在vLab和vCluster表中查找uuid def deployV_ByKey(self, template_key): # 部署虚拟环境,参数是模板的key,即vCluster@id这样的字符串 def redeployV(self, uuid): # 重新部署虚拟环境,参数是实例的uuid def redeployV_ByKey(self, key): # 重新部署虚拟环境,参数是实例的key def startV(self, uuid): # 按照uuid启动虚拟环境 def startV_ByKey(self, key): # 按照key启动虚拟环境 def stopV(self, uuid): # 按照uuid停止虚拟环境 def stopV_ByKey(self, key): # 按照key停止虚拟环境 def undeployV(self, uuid): # 反部署 def undeployV_ByKey(self, key): # 反部署
server
- 启动 SOAP 服务器,按照配置文件内容帮定端口和地址
- 服务器暴露的接口同上面的impl
proxy
- 访问 scheduler SOAP服务器暴露的接口,运行相应的命令。语法
vsched-utils proxy <server>[:<port>] <operation>
- 其中,可以运行的接口方法同上面的impl
redotask
- 语法
vsched-utils redotask <id>
- 强制重新执行数据库表中id指定的任务
redojob
- 语法
vsched-utils redojob <id>
- 强制重新执行数据库表中id指定的作业
massacre
- 大屠杀,危险,慎用。该操作将遍历数据库中所有的模板实例,并调用其反部署操作,无论是否成功都将删除该实例。
vsched-config.yaml
- 下面是样例配置文件
prefix: "" # 安装目录的前缀,默认为空,安装到根目录 run_dir: "$prefix/var/run/ivic" # 这三个参数暂时没有用到 lib_dir: "$prefix/var/lib/ivic" www_dir: "$lib_dir/www" # 数据库连接字符串 connect_string: "mysql://user:xxx@cvc.ivic.org.cn/CVC_Portal_development" #connect_string: "mysql://user:xxx@localhost/liqin_cvc" #connect_string: "sqlite:///test_vsched.db" user_id: 5 # 生成任务时所用的用户id vmc_port: 8989 # 虚拟机容器 SOAP 服务器的端口 vsr_port: 8080 # 虚拟网桥服务器 SOAP 服务器的端口 use_dummy_soap: 0 # 是否调用SOAP哑客户端作为测试 thread_num: 10 # 并发线程数目 port: 8181 # scheduler SOAP服务器的端口 address: "" # scheduler SOAP服务器帮定的地址
![(please configure the [header_logo] section in trac.ini)](/ivic/chrome/site/ivic_logo.png)