From fabrice.bacchella at orange.fr Fri May 6 12:26:07 2016 Content-Type: multipart/mixed; boundary="===============4044681457213584833==" MIME-Version: 1.0 From: Fabrice Bacchella To: users at ovirt.org Subject: [ovirt-users] a new CLI for oVirt Date: Fri, 06 May 2016 18:26:04 +0200 Message-ID: <3BB8EB9F-8B43-422C-9139-7FF0B69F0159@orange.fr> --===============4044681457213584833== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --Apple-Mail=3D_62AEA0E7-D58F-45F5-A309-BE84C8F41136 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=3Dus-ascii To try to learn the python SDK, and help the automation of my setup, I =3D wrote a CLI to oVirt. It tries to hide some of the complexity, so some simple python script =3D like : dc =3D3D context.datacenter(name=3D3D"dc1") if dc is not None: dc.delete(force=3D3DTrue) context.datacenter().create(name=3D3D"dc1", local=3D3DFalse, =3D storage_format=3D3D"v3", mac_pool_name=3D3D"MoreMac") cluster =3D3D context.cluster(name=3D3D"cl1") if cluster is not None: cluster.delete(force=3D3DTrue) context.cluster().create(name=3D3D"cl1", cpu_type=3D3D"Intel Haswell-noTSX = =3D Family", dc_name=3D3D"en02", memory_policy=3D3D{'guaranteed': True, =3D 'overcommit': 100, 'transparent_hugepages': False}, ballooning_enabled=3D3DTrue) can be used. It avoid the use of params.Something. It can also be used to do action in shell like : ./ovcmd -c ovirt.ini host -n host1 bond -i eth0 -i eth1 -n ovirtmgmt -o =3D mode 4 -o miimon 100 -o xmit_hash_policy 2+3 -D -m 9000 or ./ovcmd -c ovirt.ini host -n host1 export nics Complex commands can take template as an argument : ./ovcmd -d -c ovirt.ini vm create -T vm1.yaml -V cores 2 -V memory 4G -n = =3D vm1 It's of course on github : https://github.com/fbacchella/ovirtcmd =3D It's still a work in progress, only the very basic commands are =3D implemented, I will add other as requested, it should be easy to do so.=3D --Apple-Mail=3D_62AEA0E7-D58F-45F5-A309-BE84C8F41136 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=3Dus-ascii To try to learn the = =3D python SDK, and help the automation of my setup, I wrote a CLI to =3D oVirt.

It tries to hide some of the =3D complexity, so some simple python script like :

dc =3D3D =3D context.datacenter(name=3D3D"dc1")
if dc is =3D not None:
    dc.delete(force=3D3DTrue)
context.datacenter().create(name=3D3D"
dc1", local=3D3DFalse, storage_format=3D3D"v3", ma= c_poo=3D l_name=3D3D"MoreMac")

cluster =3D3D =3D context.cluster(name=3D3D"cl1")
if cluster is =3D not None:
    cluster.delete(force=3D3DTrue)= context.cluster().create(name=3D3D"
cl1", cpu_type=3D3D"Intel Haswell-noTSX =3D Family", dc_name=3D3D"en02",
      =3D                   =3D  memory_policy=3D3D{'guaranteed': True, 'overcommit': 1= 0=3D 0, 'transparent_hugepages': False},
  =3D                     =3D    ballooning_enabled=3D3DTrue)

can be used. It avoid the use of =3D params.Something.

It can also be used to do action in shell like :

./ovcmd -c ovirt.ini host -n host1 = =3D bond -i eth0 -i eth1 -n ovirtmgmt -o mode 4 -o miimon 100 -o =3D xmit_hash_policy 2+3 -D -m 9000

or

./ovcmd -c ovirt.ini host -n host1 export nics

Complex comma= nds =3D can take template as an argument :

./ovcmd -d -c ovirt.ini vm create -T vm1.yaml -V =3D cores 2 -V memory 4G -n vm1

It's of course on github :

It's still a work in progress, only = =3D the very basic commands are implemented, I will add other as requested, =3D it should be easy to do so.
=3D --Apple-Mail=3D_62AEA0E7-D58F-45F5-A309-BE84C8F41136-- --===============4044681457213584833== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" Ci0tQXBwbGUtTWFpbD1fNjJBRUEwRTctRDU4Ri00NUY1LUEzMDktQkU4NEM4RjQxMTM2CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKQ29udGVudC1UeXBlOiB0ZXh0 L3BsYWluOwoJY2hhcnNldD11cy1hc2NpaQoKVG8gdHJ5IHRvIGxlYXJuIHRoZSBweXRob24gU0RL LCBhbmQgaGVscCB0aGUgYXV0b21hdGlvbiBvZiBteSBzZXR1cCwgSSA9Cndyb3RlIGEgQ0xJIHRv IG9WaXJ0LgoKSXQgdHJpZXMgdG8gaGlkZSBzb21lIG9mIHRoZSBjb21wbGV4aXR5LCBzbyBzb21l IHNpbXBsZSBweXRob24gc2NyaXB0ID0KbGlrZSA6CgpkYyA9M0QgY29udGV4dC5kYXRhY2VudGVy KG5hbWU9M0QiZGMxIikKaWYgZGMgaXMgbm90IE5vbmU6CiAgICBkYy5kZWxldGUoZm9yY2U9M0RU cnVlKQpjb250ZXh0LmRhdGFjZW50ZXIoKS5jcmVhdGUobmFtZT0zRCJkYzEiLCBsb2NhbD0zREZh bHNlLCA9CnN0b3JhZ2VfZm9ybWF0PTNEInYzIiwgbWFjX3Bvb2xfbmFtZT0zRCJNb3JlTWFjIikK CmNsdXN0ZXIgPTNEIGNvbnRleHQuY2x1c3RlcihuYW1lPTNEImNsMSIpCmlmIGNsdXN0ZXIgaXMg bm90IE5vbmU6CiAgICBjbHVzdGVyLmRlbGV0ZShmb3JjZT0zRFRydWUpCmNvbnRleHQuY2x1c3Rl cigpLmNyZWF0ZShuYW1lPTNEImNsMSIsIGNwdV90eXBlPTNEIkludGVsIEhhc3dlbGwtbm9UU1gg PQpGYW1pbHkiLCBkY19uYW1lPTNEImVuMDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgbWVt b3J5X3BvbGljeT0zRHsnZ3VhcmFudGVlZCc6IFRydWUsID0KJ292ZXJjb21taXQnOiAxMDAsICd0 cmFuc3BhcmVudF9odWdlcGFnZXMnOiBGYWxzZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICBi YWxsb29uaW5nX2VuYWJsZWQ9M0RUcnVlKQoKY2FuIGJlIHVzZWQuIEl0IGF2b2lkIHRoZSB1c2Ug b2YgcGFyYW1zLlNvbWV0aGluZy4KCkl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gZG8gYWN0aW9uIGlu IHNoZWxsIGxpa2UgOgoKLi9vdmNtZCAtYyBvdmlydC5pbmkgaG9zdCAtbiBob3N0MSBib25kIC1p IGV0aDAgLWkgZXRoMSAtbiBvdmlydG1nbXQgLW8gPQptb2RlIDQgLW8gbWlpbW9uIDEwMCAtbyB4 bWl0X2hhc2hfcG9saWN5IDIrMyAtRCAtbSA5MDAwCgpvcgoKLi9vdmNtZCAtYyBvdmlydC5pbmkg aG9zdCAtbiBob3N0MSBleHBvcnQgbmljcwoKQ29tcGxleCBjb21tYW5kcyBjYW4gdGFrZSB0ZW1w bGF0ZSBhcyBhbiBhcmd1bWVudCA6CgouL292Y21kIC1kIC1jIG92aXJ0LmluaSB2bSBjcmVhdGUg LVQgdm0xLnlhbWwgLVYgY29yZXMgMiAtViBtZW1vcnkgNEcgLW4gPQp2bTEKCkl0J3Mgb2YgY291 cnNlIG9uIGdpdGh1YiA6Cmh0dHBzOi8vZ2l0aHViLmNvbS9mYmFjY2hlbGxhL292aXJ0Y21kID0K PGh0dHBzOi8vZ2l0aHViLmNvbS9mYmFjY2hlbGxhL292aXJ0Y21kPgoKSXQncyBzdGlsbCBhIHdv cmsgaW4gcHJvZ3Jlc3MsIG9ubHkgdGhlIHZlcnkgYmFzaWMgY29tbWFuZHMgYXJlID0KaW1wbGVt ZW50ZWQsIEkgd2lsbCBhZGQgb3RoZXIgYXMgcmVxdWVzdGVkLCBpdCBzaG91bGQgYmUgZWFzeSB0 byBkbyBzby49CgotLUFwcGxlLU1haWw9XzYyQUVBMEU3LUQ1OEYtNDVGNS1BMzA5LUJFODRDOEY0 MTEzNgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCkNvbnRlbnQt VHlwZTogdGV4dC9odG1sOwoJY2hhcnNldD11cy1hc2NpaQoKPGh0bWw+PGJvZHkgc3R5bGU9M0Qi d29yZC13cmFwOiBicmVhay13b3JkOyAtd2Via2l0LW5ic3AtbW9kZTogc3BhY2U7ID0KLXdlYmtp dC1saW5lLWJyZWFrOiBhZnRlci13aGl0ZS1zcGFjZTsiIGNsYXNzPTNEIiI+VG8gdHJ5IHRvIGxl YXJuIHRoZSA9CnB5dGhvbiBTREssIGFuZCBoZWxwIHRoZSBhdXRvbWF0aW9uIG9mIG15IHNldHVw LCBJIHdyb3RlIGEgQ0xJIHRvID0Kb1ZpcnQuPGJyIGNsYXNzPTNEIiI+PGJyIGNsYXNzPTNEIiI+ SXQgdHJpZXMgdG8gaGlkZSBzb21lIG9mIHRoZSA9CmNvbXBsZXhpdHksIHNvIHNvbWUgc2ltcGxl IHB5dGhvbiBzY3JpcHQgbGlrZSA6PGJyIGNsYXNzPTNEIiI+PGJyID0KY2xhc3M9M0QiIj48Zm9u dCBmYWNlPTNEIk1lbmxvIiBjbGFzcz0zRCIiPmRjID0zRCA9CmNvbnRleHQuZGF0YWNlbnRlcihu YW1lPTNEImRjMSIpPGJyIGNsYXNzPTNEIiI+aWYmbmJzcDtkYyZuYnNwO2lzID0Kbm90Jm5ic3A7 Tm9uZTo8YnIgY2xhc3M9M0QiIj4mbmJzcDsgJm5ic3A7IGRjLmRlbGV0ZShmb3JjZT0zRFRydWUp PGJyID0KY2xhc3M9M0QiIj5jb250ZXh0LmRhdGFjZW50ZXIoKS5jcmVhdGUobmFtZT0zRCI8L2Zv bnQ+PHNwYW4gPQpzdHlsZT0zRCJmb250LWZhbWlseTogTWVubG87IiBjbGFzcz0zRCIiPmRjMTwv c3Bhbj48Zm9udCBmYWNlPTNEIk1lbmxvIiA9CmNsYXNzPTNEIiI+IiwmbmJzcDtsb2NhbD0zREZh bHNlLCZuYnNwO3N0b3JhZ2VfZm9ybWF0PTNEInYzIiwmbmJzcDttYWNfcG9vPQpsX25hbWU9M0Qi TW9yZU1hYyIpPGJyIGNsYXNzPTNEIiI+PGJyIGNsYXNzPTNEIiI+Y2x1c3RlciA9M0QgPQpjb250 ZXh0LmNsdXN0ZXIobmFtZT0zRCJjbDEiKTxiciBjbGFzcz0zRCIiPmlmJm5ic3A7Y2x1c3RlciZu YnNwO2lzID0Kbm90Jm5ic3A7Tm9uZTo8YnIgY2xhc3M9M0QiIj4mbmJzcDsgJm5ic3A7IGNsdXN0 ZXIuZGVsZXRlKGZvcmNlPTNEVHJ1ZSk8YnI9CiBjbGFzcz0zRCIiPmNvbnRleHQuY2x1c3Rlcigp LmNyZWF0ZShuYW1lPTNEIjwvZm9udD48c3BhbiA9CnN0eWxlPTNEImZvbnQtZmFtaWx5OiBNZW5s bzsiIGNsYXNzPTNEIiI+Y2wxPC9zcGFuPjxmb250IGZhY2U9M0QiTWVubG8iID0KY2xhc3M9M0Qi Ij4iLCZuYnNwO2NwdV90eXBlPTNEIkludGVsIEhhc3dlbGwtbm9UU1ggPQpGYW1pbHkiLCZuYnNw O2RjX25hbWU9M0QiZW4wMiIsPGJyIGNsYXNzPTNEIiI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgPQom bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyA9CiZuYnNwO21lbW9yeV9wb2xpY3k9M0R7J2d1YXJhbnRlZWQnOiZuYnNwO1RydWUsJm5i c3A7J292ZXJjb21taXQnOiZuYnNwOzEwPQowLCZuYnNwOyd0cmFuc3BhcmVudF9odWdlcGFnZXMn OiZuYnNwO0ZhbHNlfSw8YnIgY2xhc3M9M0QiIj4mbmJzcDsgPQombmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgPQombmJz cDsgJm5ic3A7YmFsbG9vbmluZ19lbmFibGVkPTNEVHJ1ZSk8YnIgY2xhc3M9M0QiIj48L2ZvbnQ+ PGJyID0KY2xhc3M9M0QiIj48ZGl2IGNsYXNzPTNEIiI+Y2FuIGJlIHVzZWQuIEl0IGF2b2lkIHRo ZSB1c2Ugb2YgPQpwYXJhbXMuU29tZXRoaW5nLjwvZGl2PjxkaXYgY2xhc3M9M0QiIj48YnIgY2xh c3M9M0QiIj48L2Rpdj48ZGl2ID0KY2xhc3M9M0QiIj5JdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGRv IGFjdGlvbiBpbiBzaGVsbCBsaWtlIDo8L2Rpdj48ZGl2ID0KY2xhc3M9M0QiIj48YnIgY2xhc3M9 M0QiIj48L2Rpdj48ZGl2IGNsYXNzPTNEIiI+PGRpdiBzdHlsZT0zRCJtYXJnaW46ID0KMHB4OyBm b250LWZhbWlseTogTWVubG87IiBjbGFzcz0zRCIiPi4vb3ZjbWQgLWMgb3ZpcnQuaW5pIGhvc3Qg LW4gaG9zdDEgPQpib25kIC1pIGV0aDAgLWkgZXRoMSAtbiBvdmlydG1nbXQgLW8gbW9kZSA0IC1v IG1paW1vbiAxMDAgLW8gPQp4bWl0X2hhc2hfcG9saWN5IDIrMyAtRCAtbSA5MDAwPC9kaXY+PC9k aXY+PGRpdiBzdHlsZT0zRCJtYXJnaW46IDBweDsiID0KY2xhc3M9M0QiIj48YnIgY2xhc3M9M0Qi Ij48L2Rpdj48ZGl2IHN0eWxlPTNEIm1hcmdpbjogMHB4OyIgPQpjbGFzcz0zRCIiPm9yPC9kaXY+ PGRpdiBzdHlsZT0zRCJtYXJnaW46IDBweDsiIGNsYXNzPTNEIiI+PGJyID0KY2xhc3M9M0QiIj48 L2Rpdj48ZGl2IHN0eWxlPTNEIm1hcmdpbjogMHB4OyBmb250LWZhbWlseTogTWVubG87IiA9CmNs YXNzPTNEIiI+Li9vdmNtZCAtYyBvdmlydC5pbmkgaG9zdCAtbiBob3N0MSBleHBvcnQgbmljczwv ZGl2PjxkaXYgPQpzdHlsZT0zRCJtYXJnaW46IDBweDsgZm9udC1mYW1pbHk6IE1lbmxvOyIgY2xh c3M9M0QiIj48YnIgPQpjbGFzcz0zRCIiPjwvZGl2PjxkaXYgc3R5bGU9M0QibWFyZ2luOiAwcHg7 IiBjbGFzcz0zRCIiPkNvbXBsZXggY29tbWFuZHMgPQpjYW4gdGFrZSB0ZW1wbGF0ZSBhcyBhbiBh cmd1bWVudCA6PC9kaXY+PGRpdiBzdHlsZT0zRCJtYXJnaW46IDBweDsiID0KY2xhc3M9M0QiIj48 YnIgY2xhc3M9M0QiIj48L2Rpdj48ZGl2IHN0eWxlPTNEIm1hcmdpbjogMHB4OyIgPQpjbGFzcz0z RCIiPjxkaXYgc3R5bGU9M0QibWFyZ2luOiAwcHg7IGZvbnQtZmFtaWx5OiBNZW5sbzsiID0KY2xh c3M9M0QiIj4uL292Y21kIC1kIC1jJm5ic3A7b3ZpcnQuaW5pJm5ic3A7dm0gY3JlYXRlIC1UIHZt MS55YW1sIC1WID0KY29yZXMgMiAtViBtZW1vcnkgNEcgLW4gdm0xPC9kaXY+PGRpdiBzdHlsZT0z RCJtYXJnaW46IDBweDsiID0KY2xhc3M9M0QiIj48YnIgY2xhc3M9M0QiIj48L2Rpdj48ZGl2IHN0 eWxlPTNEIm1hcmdpbjogMHB4OyIgPQpjbGFzcz0zRCIiPkl0J3Mgb2YgY291cnNlIG9uIGdpdGh1 YiA6PC9kaXY+PGRpdiBzdHlsZT0zRCJtYXJnaW46IDBweDsiID0KY2xhc3M9M0QiIj48YSBocmVm PTNEImh0dHBzOi8vZ2l0aHViLmNvbS9mYmFjY2hlbGxhL292aXJ0Y21kIiA9CmNsYXNzPTNEIiI+ aHR0cHM6Ly9naXRodWIuY29tL2ZiYWNjaGVsbGEvb3ZpcnRjbWQ8L2E+PC9kaXY+PGRpdiA9CnN0 eWxlPTNEIm1hcmdpbjogMHB4OyIgY2xhc3M9M0QiIj48YnIgY2xhc3M9M0QiIj48L2Rpdj48ZGl2 ID0Kc3R5bGU9M0QibWFyZ2luOiAwcHg7IiBjbGFzcz0zRCIiPkl0J3Mgc3RpbGwgYSB3b3JrIGlu IHByb2dyZXNzLCBvbmx5ID0KdGhlIHZlcnkgYmFzaWMgY29tbWFuZHMgYXJlIGltcGxlbWVudGVk LCBJIHdpbGwgYWRkIG90aGVyIGFzIHJlcXVlc3RlZCwgPQppdCBzaG91bGQgYmUgZWFzeSB0byBk byBzby48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPj0KCi0tQXBwbGUtTWFpbD1fNjJBRUEwRTct RDU4Ri00NUY1LUEzMDktQkU4NEM4RjQxMTM2LS0K --===============4044681457213584833==--