CLI
2016-01-09 15:52
190 查看
oVirt CLI is a dynamic, runtime interface discovering command line interface for the oVirt engine
dynamic interface that can work against any version of sdk discovering it at runtime
Interactive prompt
Smart auto-completion
Smart help
Generic interface (list, show, add, update, action verbs).
Self descriptive.
note help is dynamically created for each command respectively
note typing beginning of the option name and then hitting <TAB>, will convert
option to appropriate option format adding prefix or suffix.
configuration file based login
cli options based login
list resources
notice: --show-all option extends listed entities (default mode is collapsed).
list resources using oVirt query engine filtering
list resources using client side filtering
list sub-resources
note: ether id or name can be used as --resource-identifier
list sub-resources using client side filtering
note: ether id or name can be used as --resource-identifier
show resource
show resource using client side filtering
show sub-resource
note: ether id or name can be used as --resource-identifier
note: You have to quote the description if it contains spaces. E.g. "iscsi_desktop desc"
Format
no special format, just commands in plain text
From linux shell
From ovirt shell
Run all vms
The script
1. the script (less run_all_vms.txt) will look like:
2. run the script
Explanations
1. run rhevm command and process the output saving it in to temp script new_script_to_run
2. invoke temp script internally at runtime
http://pypi.python.org/pypi/ovirt-shell
To build rpm and install it, from ovirt-engine-cli repo:
Because lxml is not yet packaged, please follow the instructions below to get lxml installed.
For local install in site-packages, from ovirt-engine-cli repo:
That will install lxml, because EPEL's python-lxml is not yet up to the version required by CLI.
note: both deployment procedures require super-user permissions
Bugzila
cli-changelog
Michael Pasternak: mishka8520@yahoo.com, Juan Hernandez: juan.hernandez@redhat.com
[hide] |
Concepts
dynamic interface that can work against any version of sdk discovering it at runtimeInteractive prompt
Smart auto-completion
Smart help
Generic interface (list, show, add, update, action verbs).
Self descriptive.
Usage
Help
syntax
note help is dynamically created for each command respectivelyhelp or help <command> [arguments] [options]
Auto-Completion
available commands
[oVirt shell (connected)]# <TAB><TAB> EOF clear console remove echo help ping show update action connect add disconnect exit list shell status
available options for specific command
[oVirt shell (connected)]# add <TAB><TAB> cdrom datacenter group network permission role storagedomain template vm cluster disk host nic permit snapshot tag user vmpool
available options for command on specific resource
[oVirt shell (connected)]# add vm <TAB><TAB> cluster-id display-type os-boot-dev template-id cluster-name domain-name os-cmdline template-name cpu-topology-cores high_availability-enabled os-initRd timezone cpu-topology-sockets high_availability-priority os-kernel type custom_properties-custom_property memory os-type usb-enabled description name placement_policy-affinity display-monitors origin stateless
available options for command on specific sub-resource
[oVirt shell (connected)]# add nic --vm-identifier xxx <TAB><TAB> interface mac-address name network-id network-name
note typing beginning of the option name and then hitting <TAB>, will convert
option to appropriate option format adding prefix or suffix.
Connect
get help for connect
[mpastern@ovirt-engine-cli (master)]$ ovirt-shell --help Usage: ovirt-shell [options] ovirt-shell [options] command... This program is a command-line interface to oVirt Virtualization. Options: -h, --help show this help message and exit -l URL, --url=URL specifies the API entry point URL (http[s]://server[:port]/api) -u USERNAME, --username=USERNAME connect as this user -K KEY_FILE, --key-file=KEY_FILE specify client PEM key-file -C CERT_FILE, --cert-file=CERT_FILE specify client PEM cert-file -A CA_FILE, --ca-file=CA_FILE specify server CA cert-file -I, --insecure allow connecting to SSL sites without certificates -F, --filter enables user permission based filtering -P PORT, --port=PORT specify port -T TIMEOUT, --timeout=TIMEOUT specify timeout -c, --connect automatically connect -f FILE, --file=FILE read commands from FILE instead of stdin
connect from ovirt-shell
[mpastern@ovirt-engine-cli (master)]$ ovirt-shell ++++++++++++++++++++++++++++++++++++++++++ Welcome to oVirt shell ++++++++++++++++++++++++++++++++++++++++++ [oVirt shell (disconnected)]# connect --url "http://server:8080/api" --user "user@domain" --password 'password' ========================================== >>> connected to oVirt manager 3.2.0.0 <<< ========================================== [oVirt shell (connected)]#
connect from linux shell
configuration file based login
1. vi ~/.ovirtshellrc 2. set args: [ovirt-shell] username = user@domain url = http[s]://server[:port]/api #insecure = False #filter = False #timeout = -1 password = ****** * NOTE: if url/username/password is not configured/commented in .ovirtshellrc and ovirt-shell executed in auto-connect mode (ovirt-shell -c/--connect), you will be prompted to specify it upon login 3. run ovirt-shell [mpastern@ovirt-engine-cli (master)]$ ovirt-shell -c ========================================== >>> connected to oVirt manager 3.2.0.0 <<< ========================================== ++++++++++++++++++++++++++++++++++++++++++ Welcome to oVirt shell ++++++++++++++++++++++++++++++++++++++++++ [oVirt shell (connected)]#
cli options based login
[mpastern@ovirt-engine-cli (master)]$ ovirt-shell -c -l "http://server:8080/api" -u "user@domain" Password: **** ========================================== >>> connected to oVirt manager 3.1.0.0 <<< ========================================== ++++++++++++++++++++++++++++++++++++++++++ Welcome to oVirt shell ++++++++++++++++++++++++++++++++++++++++++ [oVirt shell (connected)]#
Querying
list
list resources
[oVirt shell (connected)]# list vms id : aa849efc-4194-4b00-b274-ab32d4c222c9 name : aa id : 7b4ebc3f-40ba-4eb3-94ef-ca222d62fbe6 name : demo
[oVirt shell (connected)]# list vms --show-all id : aa849efc-4194-4b00-b274-ab32d4c222c9 name : aa cluster-id : e8861726-0b88-11e1-bd8c-27fb0a7aaa76 cpu-topology-cores : 1 cpu-topology-sockets : 1 creation_time : 2012-02-16T20:00:50.859+02:00 display-monitors : 1 display-type : spice high_availability-enabled : False high_availability-priority: 1 memory : 1073741824 memory_policy-guaranteed : 1073741824 origin : ovirt os-boot-dev : hd os-type : unassigned placement_policy-affinity : migratable start_time : 2012-02-29T13:36:27.880Z stateless : False status-state : down template-id : 9c42b69e-daa3-48d7-bf97-779603892f15 type : desktop usb-enabled : True id : 7b4ebc3f-40ba-4eb3-94ef-ca222d62fbe6 name : demo cluster-id : e8861726-0b88-11e1-bd8c-27fb0a7aaa76 cpu-topology-cores : 1 cpu-topology-sockets : 1 creation_time : 2012-02-16T11:15:56.014+02:00 display-address : 10.35.1.127 display-monitors : 1 display-type : vnc high_availability-enabled : False high_availability-priority: 1 memory : 1073741824 memory_policy-guaranteed : 1073741824 origin : ovirt os-boot-dev : hd os-type : unassigned placement_policy-affinity : migratable start_time : 2012-02-29T13:36:27.887Z stateless : False status-state : down template-id : 9c42b69e-daa3-48d7-bf97-779603892f15 type : desktop
notice: --show-all option extends listed entities (default mode is collapsed).
list resources using oVirt query engine filtering
[oVirt shell (connected)]# list vms --query "name=demo" id : 7b4ebc3f-40ba-4eb3-94ef-ca222d62fbe6 name : demo
list resources using client side filtering
[oVirt shell (connected)]# list vms --kwargs "memory=1073741824" id : aa849efc-4194-4b00-b274-ab32d4c222c9 name : aa id : 7b4ebc3f-40ba-4eb3-94ef-ca222d62fbe6 name : demo id : f4a51ae1-4f31-45ee-ab6d-d5965e3bcf71 name : iscsi_desktop description: myvm id : fea05ded-c246-4e51-885e-fef33a7ef2ad name : pythond_sdk_poc2
list sub-resources
[oVirt shell (connected)]# list disks --vm-identifier nfs_desktop id : 889bad90-6efa-42c5-a545-d0ce2033218d name : Disk 2 id : 7a014754-a10e-42b3-91ff-6a325043f9b0 name : Disk 4 id : 4d267464-e126-45fa-8e42-381e2f82354a name : Disk 1 id : b007747c-ad99-4c03-a318-42ad502afb23 name : Disk 3
[oVirt shell (connected)]# list nics --vm-identifier demo id : fbc1f30f-7c21-44e7-9c0a-7e4ffb57fcb4 name : nic3 id : 1f295a64-0a4a-4fba-928d-162b458503a5 name : nic1 id : 7ba3c79c-c619-422f-9035-6b5c8e5ea9e6 name : nic2
note: ether id or name can be used as --resource-identifier
list sub-resources using client side filtering
[oVirt shell (connected)]# list disks --vm-identifier nfs_desktop --kwargs "name=Disk 3" id : b007747c-ad99-4c03-a318-42ad502afb23 name : Disk 3
[oVirt shell (connected)]# list vms --kwargs "usb-enabled=True" id : aa849efc-4194-4b00-b274-ab32d4c222c9 name : aa id : 7b4ebc3f-40ba-4eb3-94ef-ca222d62fbe6 name : demo
note: ether id or name can be used as --resource-identifier
show
show resource
[oVirt shell (connected)]# show vm demo id : 7b4ebc3f-40ba-4eb3-94ef-ca222d62fbe6 name : demo cluster-id : e8861726-0b88-11e1-bd8c-27fb0a7aaa76 cpu-topology-cores : 1 cpu-topology-sockets : 1 creation_time : 2012-02-16T11:15:56.014+02:00 display-address : 10.35.1.127 display-monitors : 1 display-type : vnc high_availability-enabled : False high_availability-priority: 1 memory : 1073741824 memory_policy-guaranteed : 1073741824 origin : ovirt os-boot-dev : hd os-type : unassigned placement_policy-affinity : migratable start_time : 2012-02-29T13:55:15.443Z stateless : False status-state : down template-id : 9c42b69e-daa3-48d7-bf97-779603892f15 type : desktop usb-enabled : True
[oVirt shell (connected)]# show vm --name nfs_desktop id : e0adee2b-2c95-483e-8259-2d8b29aa414d name : nfs_desktop description : updated_desc cluster-id : f16a5ea6-0b88-11e1-9844-bb5eb66ca68b cpu-topology-cores : 1 cpu-topology-sockets : 1 creation_time : 2011-11-10T14:12:09.379+02:00 display-address : 0 display-monitors : 1 display-type : spice high_availability-enabled : False high_availability-priority: 1 memory : 536870912 memory_policy-guaranteed : 536870912 origin : rhev os-boot-dev : hd os-type : rhel_6x64 placement_policy-affinity : migratable start_time : 2012-02-29T13:55:56.448Z stateless : False status-state : down template-id : 00000000-0000-0000-0000-000000000000 type : desktop usb-enabled : True
show resource using client side filtering
[oVirt shell (connected)]# show vm --id f4a51ae1-4f31-45ee-ab6d-d5965e3bcf71 id : f4a51ae1-4f31-45ee-ab6d-d5965e3bcf71 name : iscsi_desktop description : myvm cluster-id : e8861726-0b88-11e1-bd8c-27fb0a7aaa76 cpu-topology-cores : 1 cpu-topology-sockets : 1 creation_time : 2012-01-04T13:27:05.266+02:00 display-monitors : 4 display-type : spice high_availability-enabled : True high_availability-priority: 7 memory : 1073741824 memory_policy-guaranteed : 1073741824 origin : rhev os-boot-dev : hd os-type : unassigned placement_policy-affinity : migratable start_time : 2012-02-29T13:57:07.096Z stateless : False status-state : down template-id : 9c42b69e-daa3-48d7-bf97-779603892f15 type : desktop usb-enabled : True
show sub-resource
[oVirt shell (connected)]# show nic nic1 --vm-identifier demo id : 1f295a64-0a4a-4fba-928d-162b458503a5 name : nic1 interface : virtio mac-address: 00:1a:4a:16:01:68 network-id : d85a5cb2-057b-40ec-8d9c-b4ee6a7646c4 vm-id : 7b4ebc3f-40ba-4eb3-94ef-ca222d62fbe6
Add
add resource
[oVirt shell (connected)]# add vm --name demo2 --template-name iscsi_desktop_tmpl --cluster-name Default_iscsi id : dd981334-afb7-4142-a880-536bb8aef53f name : demo2 cluster-id : e8861726-0b88-11e1-bd8c-27fb0a7aaa76 cpu-topology-cores : 1 cpu-topology-sockets : 1 creation_status-state : pending creation_time : 2012-02-29T16:01:57.896+02:00 display-monitors : 1 display-type : spice high_availability-enabled : False high_availability-priority: 1 memory : 1073741824 memory_policy-guaranteed : 1073741824 origin : ovirt os-boot-dev : hd os-type : unassigned placement_policy-affinity : migratable start_time : 2012-02-29T14:02:01.533Z stateless : False status-state : image_locked template-id : 9c42b69e-daa3-48d7-bf97-779603892f15 type : desktop usb-enabled : True
[oVirt shell (connected)]# add datacenter --name mydc --storage_type nfs --version-major 3 --version-minor 1 id : 4c490b43-e681-49d8-958c-9300787982eb name : mydc status-state : uninitialized storage_type : nfs supported_versions-version-major: 3 supported_versions-version-minor: 1 version-major : 3 version-minor : 1
add sub-resource
[oVirt shell (connected)]# add nic --vm-identifier demo2 --network-name engine --name mynic id : a211d8bb-8abb-429b-8d36-fc4eb44b6ea8 name : mynic interface : virtio mac-address: 00:1a:4a:16:01:5a network-id : d85a5cb2-057b-40ec-8d9c-b4ee6a7646c4 vm-id : dd981334-afb7-4142-a880-536bb8aef53f
Remove
remove resource
[oVirt shell (connected)]# remove vm aa
remove sub-resource
[oVirt shell (connected)]# remove disk "Disk 1" --vm-identifier demo2
note: ether id or name can be used as --resource-identifier
Update
note: You have to quote the description if it contains spaces. E.g. "iscsi_desktop desc"
update resource
[oVirt shell (connected)]# update vm iscsi_desktop --description iscsi_desktop_desc id : f4a51ae1-4f31-45ee-ab6d-d5965e3bcf71 name : iscsi_desktop description : iscsi_desktop_desc cluster-id : e8861726-0b88-11e1-bd8c-27fb0a7aaa76 cpu-topology-cores : 1 cpu-topology-sockets : 1 creation_time : 2012-01-04T13:27:05.266+02:00 display-monitors : 4 display-type : spice high_availability-enabled : True high_availability-priority: 7 memory : 1073741824 memory_policy-guaranteed : 1073741824 origin : rhev os-boot-dev : hd os-type : unassigned placement_policy-affinity : migratable start_time : 2012-02-29T14:08:15.353Z stateless : False status-state : down template-id : 9c42b69e-daa3-48d7-bf97-779603892f15 type : desktop usb-enabled : True
[oVirt shell (connected)]# update vm iscsi_desktop --display-monitors 2 --description test1 id : f4a51ae1-4f31-45ee-ab6d-d5965e3bcf71 name : iscsi_desktop description : test1 cluster-id : e8861726-0b88-11e1-bd8c-27fb0a7aaa76 cpu-topology-cores : 1 cpu-topology-sockets : 1 creation_time : 2012-01-04T13:27:05.266+02:00 display-monitors : 2 display-type : spice high_availability-enabled : True high_availability-priority: 7 memory : 1073741824 memory_policy-guaranteed : 1073741824 origin : rhev os-boot-dev : hd os-type : unassigned placement_policy-affinity : migratable start_time : 2012-02-29T14:11:13.357Z stateless : False status-state : down template-id : 9c42b69e-daa3-48d7-bf97-779603892f15 type : desktop usb-enabled : True
update sub-resource
[oVirt shell (connected)]# update nic nic1 --vm-identifier demo --interface virtio id : 1f295a64-0a4a-4fba-928d-162b458503a5 name : nic1 interface : virtio mac-address: 00:1a:4a:16:01:68 network-id : d85a5cb2-057b-40ec-8d9c-b4ee6a7646c4 vm-id : 7b4ebc3f-40ba-4eb3-94ef-ca222d62fbe6
Action
action on resource
[oVirt shell (connected)]# action vm demo start --vm-display-type vnc --async true error: status: 400 reason: Bad Request detail: [Cannot run VM. Low disk space on relevant Storage Domain.]
action on sub-resource
[oVirt shell (connected)]# action nic bond0 attach --host-identifier grey-vdsa error: status: 400 reason: Bad Request detail: Action [network.id|name] required for attach
Console
connect to vm using vm name
console 'my_vm'
connect to vm using vm id
console '7dff8517-7007-42cd-9cf7-b7a13a9d96b7'
Scripting
Writing a script
Format
no special format, just commands in plain text
less /home/mpastern/script -------------------------- list vms show vm test | grep status list vms --query "name=test*" --show-all | grep status list clusters list datacenters ...
Executing script
From linux shell
[mpastern@lp /]# ovirt-shell -f /home/mpastern/script
From ovirt shell
[oVirt shell (connected)]# file /home/mpastern/script
Examples
Run all vms
The script
1. the script (less run_all_vms.txt) will look like:
list vms | grep name | sed s/'name :'/'action vm'/ | sed -e 's/$/ start/' > /home/mpastern/new_script_to_run file /home/mpastern/new_script_to_run
2. run the script
[RHEVM shell (connected)]# file /home/mpastern/run_all_vms
Explanations
1. run rhevm command and process the output saving it in to temp script new_script_to_run
list vms | grep name | sed s/'name :'/'action vm'/ | sed -e 's/$/ start/' > /home/mpastern/new_script_to_run
2. invoke temp script internally at runtime
file /home/mpastern/new_script_to_run
Tweaks
disable pagination
at /home/user/.ovirtshellrc change autopage to False
Deployment
pypi
http://pypi.python.org/pypi/ovirt-shelleasy_install ovirt-shell
rpm
To build rpm and install it, from ovirt-engine-cli repo:yum install -y rpm-build python-devel python-setuptools python-kitchen
make rpm
yum localinstall rpmtop/RPMS/noarch/ovirt-engine-cli-x.y-z.noarch.rpm
Because lxml is not yet packaged, please follow the instructions below to get lxml installed.
development deployment
For local install in site-packages, from ovirt-engine-cli repo:yum install python-ply libxml2-devel libxslt-devel pexpect python-kitchen python setup.py develop
That will install lxml, because EPEL's python-lxml is not yet up to the version required by CLI.
note: both deployment procedures require super-user permissions
TODO list
Bugzila
Change Log
cli-changelog
Maintainers
Michael Pasternak: mishka8520@yahoo.com, Juan Hernandez: juan.hernandez@redhat.com
相关文章推荐
- LAMP网站架构方案分析
- 整理基础
- ROS学习笔记(2):在ROS中使用OpenCV进行简单的图像处理---代码实现篇
- Linux-CentOS7学习2_设置IP地址
- linux调试工具GDB
- CocoaPods安装和使用教程
- oVirt四问
- android websocket推送
- javascript内置对象简介
- 字符串常量池、堆、栈
- socket编程学习(二)地址转换与套接字
- Eclipse luna启动后立马就卡死的一种原因及解决办法(HotSpot虚拟机上)
- MinGW MinGW-w64 TDM-GCC等工具链之间的差别与联系
- 【C#】DataRowState演变备忘
- npm创建和发布模块
- 线程池的原理与实现
- 大小端模式
- 初接触Kinect v2
- IOS开发系列——异步绘制专题
- 使用ZendStudio+XAMPP搭建PHP开发运行环境