Skip to content

CLOUDSTACK-8715: Add channel to Instances for Qemu Guest Agent - #1545

Merged
asfgit merged 1 commit into
apache:masterfrom
wido:qemu-guest-agent
Nov 24, 2016
Merged

CLOUDSTACK-8715: Add channel to Instances for Qemu Guest Agent#1545
asfgit merged 1 commit into
apache:masterfrom
wido:qemu-guest-agent

Conversation

@wido

@widowido commented May 13, 2016

Copy link
Copy Markdown
Contributor

This commit adds a additional VirtIO channel with the name
'org.qemu.guest_agent.0' to all Instances.

With the Qemu Guest Agent the Hypervisor gains more control over the Instance if
these tools are present inside the Instance, for example:

  • Power control
  • Flushing filesystems
  • Fetching Network information

In the future this should allow safer snapshots on KVM since we can instruct the
Instance to flush the filesystems prior to snapshotting the disk.

More information: http://wiki.qemu.org/Features/QAPI/GuestAgent

Keep in mind that on Ubuntu AppArmor still needs to be disabled since the default
AppArmor profile doesn't allow libvirt to write into /var/lib/libvirt/qemu

This commit does not add any communication methods through API-calls, it merely
adds the channel to the Instances and installs the Guest Agent in the SSVMs.

@wido

wido commented May 13, 2016

Copy link
Copy Markdown
ContributorAuthor

This PR follows up on #985, but this one does not have a libvirt-java dependency.

It only adds the channel in the XML for all Instances and it installs the Qemu Guest Agent inside the SSVM.

This allows is in the future to use the available channel when libvirt-java has the proper support.

@wido
widoforce-pushed the qemu-guest-agent branch from 58a591c to afe55eaCompareMay 13, 2016 10:02
@wido

wido commented May 13, 2016

Copy link
Copy Markdown
ContributorAuthor

@swill and @rhtyd could you take a look at this one?

Once we fork libvirt-java (which I want to do when we switch to new repos) we can implement the actual commands in the KVM Agent.

Just having the channels there also allows admins to send commands to Instances using virsh manually.

@swill

Copy link
Copy Markdown
Contributor

Ya, I like this. I think this is a nice advancement. If we are going to try to get this into 4.9, I will need some help getting this moving forward cause we are pretty tight on time. @wido are you running this in production and what can you provide to show it is working as expected? I need to review the details for releasing when including system VM changes. I know we wanted to try to get StrongSwan into this release (assuming we can get it there), so that would require a new system VM template as well.

@wido

wido commented May 13, 2016

Copy link
Copy Markdown
ContributorAuthor

@swill Yes, running this in production on our cloud

I just started an Instance and the Agent (backport to 4.8, clean merge) produced this XML:

<domain type='kvm'>
<name>i-2-25-VM</name>
<uuid>bd93ca81-d976-41be-823c-6fc0ea013111</uuid>
<description>Ubuntu 12.04 (64-bit)</description>
<cpu mode='host-passthrough'></cpu><sysinfo type='smbios'>
<system>
<entry name='manufacturer'>Apache Software Foundation</entry>
<entry name='product'>CloudStack KVM Hypervisor</entry>
<entry name='uuid'>bd93ca81-d976-41be-823c-6fc0ea013111</entry>
</system>
</sysinfo>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='cdrom'/>
<boot dev='hd'/>
<smbios mode='sysinfo'/>
</os>
<on_reboot>restart</on_reboot>
<on_poweroff>destroy</on_poweroff>
<on_crash>destroy</on_crash>
<memory>4194304</memory>
<devices>
<memballoon model='none'/>
</devices>
<vcpu>2</vcpu>
<features>
<pae/>
<apic/>
<acpi/>
</features>
<cputune>
<shares>1000</shares>
</cputune>
<clock offset='utc'>
<timer name='kvmclock' >
</timer>
</clock>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<interface type='bridge'>
<source bridge='cloudbr0'/>
<mac address='06:73:12:00:00:67'/>
<model type='virtio'/>
<bandwidth>
<inbound average='128000' peak='128000'/>
<outbound average='128000' peak='128000'/>
</bandwidth>
</interface>
<console type='pty'>
<target port='0'/>
</console>
<disk device='disk' type='network'>
<driver name='qemu' type='raw' cache='writeback' />
<source protocol='rbd' name='rbd-c01-p01/d70d7e6e-753d-4a0e-ad5f-ec8ac531e32b'>
<host name='monitor.ceph.XXXX.XXXX.XXXXX.nl' port='6789'/>
</source>
<auth username='cloudstack'>
<secret type='ceph' uuid='5e34fd37-1763-3092-9f51-280a31bdb36f'/>
</auth>
<target dev='vda' bus='virtio'/>
<serial>d70d7e6e753d4a0ead5f</serial></disk>
<disk device='disk' type='network'>
<driver name='qemu' type='raw' cache='writeback' />
<source protocol='rbd' name='rbd-c01-p01/3fcb9970-cf63-4251-b1b9-2d916f6ab1c6'>
<host name='monitor.ceph.XXXXX.XXXXXX.XXXXXX.nl' port='6789'/>
</source>
<auth username='cloudstack'>
<secret type='ceph' uuid='5e34fd37-1763-3092-9f51-280a31bdb36f'/>
</auth>
<target dev='vdb' bus='virtio'/>
<serial>3fcb9970cf634251b1b9</serial></disk>
<disk device='cdrom' type='file'>
<driver name='qemu' type='raw' cache='none' />
<source file=''/>
<target dev='hdc' bus='ide'/>
</disk>
<serial type='pty'>
<target port='0'/>
</serial>
<graphics type='vnc' autoport='yes' listen='10.5.0.106' passwd='XXXXXXXX'/>
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/i-2-25-VM.org.qemu.guest_agent.0'/>
<address type='virtio-serial'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
<input type='tablet' bus='usb'/>
</devices>
</domain>

There you see this channel added:

<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/i-2-25-VM.org.qemu.guest_agent.0'/>
<address type='virtio-serial'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>

In the Ubuntu 14.04 the Guest Agent is running:

root@vhosting-relay:~# ps aux|grep qemu
root 2789 0.0 0.0 17468 700 ? Ss 22:19 0:00 /usr/sbin/qemu-ga --daemonize -m virtio-serial -p /dev/virtio-ports/org.qemu.guest_agent.0
root 2890 0.0 0.0 10460 908 pts/6 S+ 22:20 0:00 grep qemu
root@vhosting-relay:~#

From the HV I can send commands through libvirt:

[root@n06 ~]# virsh qemu-agent-command i-2-25-VM '{"execute":"guest-ping"}'
{"return":{}}
[root@n06 ~]#

I also re-started a Console Proxy which has a additional channel, that works as well:

<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/v-215-VM.agent'/>
<address type='virtio-serial'/>
<target type='virtio' name='v-215-VM.vport'/>
</channel>
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/v-215-VM.org.qemu.guest_agent.0'/>
<address type='virtio-serial'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>

The commands afterwards:

[root@n04 ~]# virsh qemu-agent-command v-215-VM '{"execute":"guest-ping"}'
{"return":{}}
[root@n04 ~]# virsh qemu-agent-command v-215-VM '{"execute":"guest-sync", "arguments":{"id":1234}}'
{"return":1234}
[root@n04 ~]#

By having the channels already in place it is later just a matter of updating libvirt-java and starting to use this communication channel.

@wido
widoforce-pushed the qemu-guest-agent branch from afe55ea to ecfd1d3CompareMay 13, 2016 21:29
@wido

wido commented May 13, 2016

Copy link
Copy Markdown
ContributorAuthor

@swill I added a small fix for inside the SSVM. During some additional manual testing I found that the SSVM is picky in the order in the XML definition.

My second commit makes sure it doesn't use the first VirtIO port, but uses the proper port.

I tested that fix in production as well, works just fine.

@swill

Copy link
Copy Markdown
Contributor

ok, thank you sir. 👍

@wido
widoforce-pushed the qemu-guest-agent branch 2 times, most recently from 2e65de2 to 7ac6627CompareMay 14, 2016 07:56
@widowido mentioned this pull request May 17, 2016
@wido

wido commented May 19, 2016

Copy link
Copy Markdown
ContributorAuthor

@rhtyd and @DaanHoogland Could you maybe take a quick look at this one? We could finally get the first part of this in.

final VirtioSerialDef vserial = new VirtioSerialDef(vmTO.getName(), null);
devices.addDevice(vserial);
devices.addDevice(new ChannelDef(vmTO.getName() + ".vport", ChannelDef.ChannelType.UNIX,
"/var/lib/libvirt/qemu/" + vmTO.getName() + ".agent"));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these names and paths should not be hardcoded here.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree, @wido do you mind moving them something configurable via global settings or agent.properties

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has always been hardcoded, it's just that I'm moving this part.

This is the SSVM socket which is already there. The socket patch code wants to find the .agent there. Not much I can do there.

@DaanHoogland

Copy link
Copy Markdown
Contributor

apart from some code style and convention things LGTM

String state = getAttrValue("target", "state", channel);

ChannelDef def = null;
if (state == null || state.length() == 0) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can use Strings.isNullOrEmpty here

@yadvr

Copy link
Copy Markdown
Member

In general, a good idea and would be useful for flushing out disk IO and doing clean shutdown of VRs and vms. There are some outstanding issues, but the feature is nice.

I've not tested this, I suppose @wido would have tested this for Debian/Ubuntu based kvm hosts, we'll also need testing efforts on centos6 and 7 based kvm hosts.

@DaanHoogland

Copy link
Copy Markdown
Contributor

@swill, did this pass the (not so C)I?

@wido

wido commented May 19, 2016

Copy link
Copy Markdown
ContributorAuthor

Thanks for the feedback, I will work on that tomorrow.

@rhtyd I tested this on both Ubuntu and CentOS systems.

The main issue with Ubuntu is AppArmor where libvirt isn't allowed to write in /var/lib/qemu.

I'll make that directory configurable, but keep in mind that on all platforms I know that is the directory where the sockets are stored.

@swill

swill commented May 19, 2016

Copy link
Copy Markdown
Contributor

Sorry, I need to queue this one up... I will wait for @wido's changes though so I am testing his latest code.

@wido

wido commented May 19, 2016

Copy link
Copy Markdown
ContributorAuthor

@swill I will work on the changes tomorrow morning (my time, CET). Shouldn't be very hard to do.

@swill

Copy link
Copy Markdown
Contributor

CI RESULTS

Tests Run: 78
Skipped: 0
Failed: 0
Errors: 4
Duration: 7h 47m 49s

Summary of the problem(s):

ERROR: test suite for <class 'integration.smoke.test_internal_lb.TestInternalLb'>
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 209, in run
self.setUp()
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 292, in setUp
self.setupContext(ancestor)
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 315, in setupContext
try_run(context, names)
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/util.py", line 471, in try_run
return func()
File "/data/git/cs1/cloudstack/test/integration/smoke/test_internal_lb.py", line 296, in setUpClass
cls.template.download(cls.apiclient)
File "/usr/lib/python2.7/site-packages/marvin/lib/base.py", line 1350, in download
elif 'Downloaded' in template.status:
TypeError: argument of type 'NoneType' is not iterable
----------------------------------------------------------------------
Additional details in: /tmp/MarvinLogs/test_network_YJVJO9/results.txt
ERROR: test suite for <class 'integration.smoke.test_vpc_vpn.TestRVPCSite2SiteVpn'>
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 209, in run
self.setUp()
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 292, in setUp
self.setupContext(ancestor)
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 315, in setupContext
try_run(context, names)
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/util.py", line 471, in try_run
return func()
File "/data/git/cs1/cloudstack/test/integration/smoke/test_vpc_vpn.py", line 835, in setUpClass
cls.template.download(cls.apiclient)
File "/usr/lib/python2.7/site-packages/marvin/lib/base.py", line 1350, in download
elif 'Downloaded' in template.status:
TypeError: argument of type 'NoneType' is not iterable
----------------------------------------------------------------------
Additional details in: /tmp/MarvinLogs/test_network_YJVJO9/results.txt
ERROR: test suite for <class 'integration.smoke.test_vpc_vpn.TestVpcRemoteAccessVpn'>
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 209, in run
self.setUp()
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 292, in setUp
self.setupContext(ancestor)
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 315, in setupContext
try_run(context, names)
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/util.py", line 471, in try_run
return func()
File "/data/git/cs1/cloudstack/test/integration/smoke/test_vpc_vpn.py", line 293, in setUpClass
cls.template.download(cls.apiclient)
File "/usr/lib/python2.7/site-packages/marvin/lib/base.py", line 1350, in download
elif 'Downloaded' in template.status:
TypeError: argument of type 'NoneType' is not iterable
----------------------------------------------------------------------
Additional details in: /tmp/MarvinLogs/test_network_YJVJO9/results.txt
ERROR: test suite for <class 'integration.smoke.test_vpc_vpn.TestVpcSite2SiteVpn'>
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 209, in run
self.setUp()
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 292, in setUp
self.setupContext(ancestor)
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/suite.py", line 315, in setupContext
try_run(context, names)
File "/usr/lib/python2.7/site-packages/nose-1.3.7-py2.7.egg/nose/util.py", line 471, in try_run
return func()
File "/data/git/cs1/cloudstack/test/integration/smoke/test_vpc_vpn.py", line 472, in setUpClass
cls.template.download(cls.apiclient)
File "/usr/lib/python2.7/site-packages/marvin/lib/base.py", line 1350, in download
elif 'Downloaded' in template.status:
TypeError: argument of type 'NoneType' is not iterable
----------------------------------------------------------------------
Additional details in: /tmp/MarvinLogs/test_network_YJVJO9/results.txt

Associated Uploads

/tmp/MarvinLogs/DeployDataCenter__May_19_2016_19_37_29_UK7LQG:

/tmp/MarvinLogs/test_network_YJVJO9:

/tmp/MarvinLogs/test_vpc_routers_NDLJQN:

Uploads will be available until 2016-07-20 02:00:00 +0200 CEST

Comment created by upr comment.

@swill

Copy link
Copy Markdown
Contributor

These failures are not related to this PR, but if you have ideas why they are happening I would be interested. I will wait till @wido has a chance to work on this PR to run the CI again. Thx...

@wido
widoforce-pushed the qemu-guest-agent branch 2 times, most recently from fb41aaa to 7960733CompareMay 20, 2016 10:00
@yadvr

Copy link
Copy Markdown
Member

@blueorangutan test

@blueorangutan

Copy link
Copy Markdown

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

@yadvr

Copy link
Copy Markdown
Member

@wido the Trillian env failed to run the tests for your latest PR due to following error:
2016-11-21 09:59:54,000 INFO [cloud.agent.AgentShell] (main:null) (logid:) Agent started
2016-11-21 09:59:54,005 INFO [cloud.agent.AgentShell] (main:null) (logid:) Implementation Version is 4.10.0.0-SNAPSHOT
2016-11-21 09:59:54,007 INFO [cloud.agent.AgentShell] (main:null) (logid:) agent.properties found at /etc/cloudstack/agent/agent.properties
2016-11-21 09:59:54,013 INFO [cloud.agent.AgentShell] (main:null) (logid:) Defaulting to using properties file for storage
2016-11-21 09:59:54,016 INFO [cloud.agent.AgentShell] (main:null) (logid:) Defaulting to the constant time backoff algorithm
2016-11-21 09:59:54,035 INFO [cloud.utils.LogUtils] (main:null) (logid:) log4j configuration found at /etc/cloudstack/agent/log4j-cloud.xml
2016-11-21 09:59:54,050 INFO [cloud.agent.AgentShell] (main:null) (logid:) Using default Java settings for IPv6 preference for agent connection
2016-11-21 09:59:54,211 INFO [cloud.agent.Agent] (main:null) (logid:) id is
2016-11-21 09:59:54,251 ERROR [cloud.agent.AgentShell] (main:null) (logid:) Unable to start agent:
java.lang.NullPointerException
at java.io.File.(File.java:277)
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.configure(LibvirtComputingResource.java:786)
at com.cloud.agent.Agent.(Agent.java:165)
at com.cloud.agent.AgentShell.launchAgent(AgentShell.java:397)
at com.cloud.agent.AgentShell.launchAgentFromClassInfo(AgentShell.java:367)
at com.cloud.agent.AgentShell.launchAgent(AgentShell.java:351)
at com.cloud.agent.AgentShell.start(AgentShell.java:456)
at com.cloud.agent.AgentShell.main(AgentShell.java:491)

Please modify the code to still work where an explicit path may not be defined, and that with your change KVM agent would run on CentOS6/7. Thanks.
/cc @jburwell

@wido

wido commented Nov 23, 2016

Copy link
Copy Markdown
ContributorAuthor

@jburwell @rhtyd I fixed most of the comments.

The NPE should be fixed and the StringUtils comments as well. I didn't refactor the other stuff @jburwell mentioned as my code is in-line with how the existing classes are written in the same files.

A new PR could do a refactor of those whole files, but it wouldn't change anything for a end-result. The functionality is still that we have a Qemu Guest Agent inside the VMs.

But this PR is open since May. Could we please merge this one in?

@yadvr

Copy link
Copy Markdown
Member

@wido can you confirm if you've fixed the NPE issue I've shared in the comment above?
java.lang.NullPointerException
at java.io.File.(File.java:277)
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.configure(LibvirtComputingResource.java:786)
at com.

@wido

wido commented Nov 23, 2016

Copy link
Copy Markdown
ContributorAuthor

Yes @rhtyd, I added a check for NULL there.

@yadvr

Copy link
Copy Markdown
Member

@wido alright, I'll initiate a final test round -- if that passes we can consider merging. /cc @jburwell

@yadvr

Copy link
Copy Markdown
Member

@blueorangutan package

@blueorangutan

Copy link
Copy Markdown

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@blueorangutan

Copy link
Copy Markdown

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-237

@yadvr

Copy link
Copy Markdown
Member

@blueorangutan test

@blueorangutan

Copy link
Copy Markdown

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

@yadvr

Copy link
Copy Markdown
Member

@wido please fix the build failures:
[INFO] Starting audit...
/jenkins/workspace/acs-pr-centos7-pkg-builder/dist/rpmbuild/BUILD/cloudstack-4.10.0.0-SNAPSHOT/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java:31:8: error: Unused import - com.cloud.utils.StringUtils.
Audit done.

This commit adds a additional VirtIO channel with the name
'org.qemu.guest_agent.0' to all Instances.
With the Qemu Guest Agent the Hypervisor gains more control over the Instance if
these tools are present inside the Instance, for example:
* Power control
* Flushing filesystems
* Fetching Network information
In the future this should allow safer snapshots on KVM since we can instruct the
Instance to flush the filesystems prior to snapshotting the disk.
More information: http://wiki.qemu.org/Features/QAPI/GuestAgent
Keep in mind that on Ubuntu AppArmor still needs to be disabled since the default
AppArmor profile doesn't allow libvirt to write into /var/lib/libvirt/qemu
This commit does not add any communication methods through API-calls, it merely
adds the channel to the Instances and installs the Guest Agent in the SSVMs.
With the addition of the Qemu Guest Agent channel a second channel appears in /dev
on a SSVM as a VirtIO port.
The order in which the ports are defined in the XML matters for the naming inside
the SSVM VM and by not relying on /dev/vportXX but looking for a static name the
SSVM still boots properly if the order in the XML definition is changed.
A SSVM with both ports attached will have something like this:
root@v-215-VM:~# ls -l /dev/virtio-ports
total 0
lrwxrwxrwx 1 root root 11 May 13 21:41 org.qemu.guest_agent.0 -> ../vport0p2
lrwxrwxrwx 1 root root 11 May 13 21:41 v-215-VM.vport -> ../vport0p1
root@v-215-VM:~# ls -l /dev/vport*
crw------- 1 root root 251, 1 May 13 21:41 /dev/vport0p1
crw------- 1 root root 251, 2 May 13 21:41 /dev/vport0p2
root@v-215-VM:~#
In this case the SSVM port points to /dev/vport0p1, but if the order in the XML
is different it might point to /dev/vport0p2
By looking for a portname with a pre-defined pattern in /dev/virtio-ports we
do not rely on the order in the XML definition.
Signed-off-by: Wido den Hollander <wido@widodh.nl>
@wido

wido commented Nov 23, 2016

Copy link
Copy Markdown
ContributorAuthor

@rhtyd Yes, fixed. Forgot to commit that change locally. Pushed a new version.

@yadvr

Copy link
Copy Markdown
Member

@blueorangutan package

@blueorangutan

Copy link
Copy Markdown

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@blueorangutan

Copy link
Copy Markdown

Packaging result: ✖centos6 ✖centos7 ✖debian. JID-239

@yadvr

Copy link
Copy Markdown
Member

@blueorangutan package

@blueorangutan

Copy link
Copy Markdown

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

@blueorangutan

Copy link
Copy Markdown

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-240

@yadvr

Copy link
Copy Markdown
Member

@blueorangutan test

@blueorangutan

Copy link
Copy Markdown

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

@blueorangutan

Copy link
Copy Markdown

Trillian test result (tid-421)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 29503 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1545-t421-kvm-centos7.zip
Test completed. 48 look ok, 1 have error(s)

TestResultTime (s)Test File
test_01_create_templateError55.62test_templates.py
test_01_vpc_site2site_vpnSuccess166.49test_vpc_vpn.py
test_01_vpc_remote_access_vpnSuccess66.20test_vpc_vpn.py
test_01_redundant_vpc_site2site_vpnSuccess321.26test_vpc_vpn.py
test_02_VPC_default_routesSuccess311.06test_vpc_router_nics.py
test_01_VPC_nics_after_destroySuccess552.87test_vpc_router_nics.py
test_05_rvpc_multi_tiersSuccess534.88test_vpc_redundant.py
test_04_rvpc_network_garbage_collector_nicsSuccess1427.78test_vpc_redundant.py
test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routersSuccess564.46test_vpc_redundant.py
test_02_redundant_VPC_default_routesSuccess823.05test_vpc_redundant.py
test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACLSuccess1359.34test_vpc_redundant.py
test_09_delete_detached_volumeSuccess15.67test_volumes.py
test_08_resize_volumeSuccess15.46test_volumes.py
test_07_resize_failSuccess20.53test_volumes.py
test_06_download_detached_volumeSuccess15.38test_volumes.py
test_05_detach_volumeSuccess100.28test_volumes.py
test_04_delete_attached_volumeSuccess10.27test_volumes.py
test_03_download_attached_volumeSuccess15.36test_volumes.py
test_02_attach_volumeSuccess43.75test_volumes.py
test_01_create_volumeSuccess621.70test_volumes.py
test_deploy_vm_multipleSuccess299.13test_vm_life_cycle.py
test_deploy_vmSuccess0.04test_vm_life_cycle.py
test_advZoneVirtualRouterSuccess0.03test_vm_life_cycle.py
test_10_attachAndDetach_isoSuccess27.20test_vm_life_cycle.py
test_09_expunge_vmSuccess125.26test_vm_life_cycle.py
test_08_migrate_vmSuccess36.04test_vm_life_cycle.py
test_07_restore_vmSuccess0.15test_vm_life_cycle.py
test_06_destroy_vmSuccess130.98test_vm_life_cycle.py
test_03_reboot_vmSuccess131.14test_vm_life_cycle.py
test_02_start_vmSuccess10.20test_vm_life_cycle.py
test_01_stop_vmSuccess40.37test_vm_life_cycle.py
test_CreateTemplateWithDuplicateNameSuccess176.45test_templates.py
test_08_list_system_templatesSuccess0.03test_templates.py
test_07_list_public_templatesSuccess0.05test_templates.py
test_05_template_permissionsSuccess0.13test_templates.py
test_04_extract_templateSuccess5.16test_templates.py
test_03_delete_templateSuccess5.13test_templates.py
test_02_edit_templateSuccess90.17test_templates.py
test_10_destroy_cpvmSuccess166.77test_ssvm.py
test_09_destroy_ssvmSuccess198.98test_ssvm.py
test_08_reboot_cpvmSuccess136.74test_ssvm.py
test_07_reboot_ssvmSuccess139.10test_ssvm.py
test_06_stop_cpvmSuccess167.17test_ssvm.py
test_05_stop_ssvmSuccess168.95test_ssvm.py
test_04_cpvm_internalsSuccess1.24test_ssvm.py
test_03_ssvm_internalsSuccess3.92test_ssvm.py
test_02_list_cpvm_vmSuccess0.14test_ssvm.py
test_01_list_sec_storage_vmSuccess0.17test_ssvm.py
test_01_snapshot_root_diskSuccess21.61test_snapshots.py
test_04_change_offering_smallSuccess215.40test_service_offerings.py
test_03_delete_service_offeringSuccess0.05test_service_offerings.py
test_02_edit_service_offeringSuccess0.10test_service_offerings.py
test_01_create_service_offeringSuccess0.16test_service_offerings.py
test_02_sys_template_readySuccess0.14test_secondary_storage.py
test_01_sys_vm_startSuccess0.20test_secondary_storage.py
test_09_reboot_routerSuccess55.49test_routers.py
test_08_start_routerSuccess35.39test_routers.py
test_07_stop_routerSuccess15.23test_routers.py
test_06_router_advancedSuccess0.06test_routers.py
test_05_router_basicSuccess0.06test_routers.py
test_04_restart_network_wo_cleanupSuccess5.75test_routers.py
test_03_restart_network_cleanupSuccess75.67test_routers.py
test_02_router_internal_advSuccess1.05test_routers.py
test_01_router_internal_basicSuccess0.58test_routers.py
test_router_dns_guestipquerySuccess78.25test_router_dns.py
test_router_dns_externalipquerySuccess0.08test_router_dns.py
test_router_dhcphostsSuccess287.06test_router_dhcphosts.py
test_01_updatevolumedetailSuccess0.12test_resource_detail.py
test_01_reset_vm_on_rebootSuccess186.54test_reset_vm_on_reboot.py
test_createRegionSuccess0.06test_regions.py
test_create_pvlan_networkSuccess5.29test_pvlan.py
test_dedicatePublicIpRangeSuccess0.61test_public_ip_range.py
test_04_rvpc_privategw_static_routesSuccess1087.09test_privategw_acl.py
test_03_vpc_privategw_restart_vpc_cleanupSuccess609.67test_privategw_acl.py
test_02_vpc_privategw_static_routesSuccess508.03test_privategw_acl.py
test_01_vpc_privategw_aclSuccess108.70test_privategw_acl.py
test_01_primary_storage_nfsSuccess36.09test_primary_storage.py
test_createPortablePublicIPRangeSuccess10.39test_portable_publicip.py
test_createPortablePublicIPAcquireSuccess15.50test_portable_publicip.py
test_isolate_network_password_serverSuccess90.10test_password_server.py
test_UpdateStorageOverProvisioningFactorSuccess0.17test_over_provisioning.py
test_oobm_zchange_passwordSuccess21.02test_outofbandmanagement.py
test_oobm_multiple_mgmt_server_ownershipSuccess16.52test_outofbandmanagement.py
test_oobm_issue_power_statusSuccess11.01test_outofbandmanagement.py
test_oobm_issue_power_softSuccess15.53test_outofbandmanagement.py
test_oobm_issue_power_resetSuccess15.55test_outofbandmanagement.py
test_oobm_issue_power_onSuccess15.52test_outofbandmanagement.py
test_oobm_issue_power_offSuccess15.52test_outofbandmanagement.py
test_oobm_issue_power_cycleSuccess15.51test_outofbandmanagement.py
test_oobm_enabledisable_across_clusterzonesSuccess62.76test_outofbandmanagement.py
test_oobm_enable_feature_validSuccess5.28test_outofbandmanagement.py
test_oobm_enable_feature_invalidSuccess0.18test_outofbandmanagement.py
test_oobm_disable_feature_validSuccess0.28test_outofbandmanagement.py
test_oobm_disable_feature_invalidSuccess0.24test_outofbandmanagement.py
test_oobm_configure_invalid_driverSuccess0.14test_outofbandmanagement.py
test_oobm_configure_default_driverSuccess0.18test_outofbandmanagement.py
test_oobm_background_powerstate_syncSuccess23.87test_outofbandmanagement.py
test_extendPhysicalNetworkVlanSuccess15.35test_non_contigiousvlan.py
test_01_nicSuccess637.54test_nic.py
test_releaseIPSuccess349.88test_network.py
test_reboot_routerSuccess470.65test_network.py
test_public_ip_user_accountSuccess10.32test_network.py
test_public_ip_admin_accountSuccess40.29test_network.py
test_network_rules_acquired_public_ip_3_Load_Balancer_RuleSuccess67.18test_network.py
test_network_rules_acquired_public_ip_2_nat_ruleSuccess61.99test_network.py
test_network_rules_acquired_public_ip_1_static_nat_ruleSuccess124.50test_network.py
test_delete_accountSuccess279.31test_network.py
test_02_port_fwd_on_non_src_natSuccess56.17test_network.py
test_01_port_fwd_on_src_natSuccess112.02test_network.py
test_nic_secondaryip_add_removeSuccess254.25test_multipleips_per_nic.py
login_test_saml_userSuccess26.37test_login.py
test_assign_and_removal_lbSuccess134.19test_loadbalance.py
test_02_create_lb_rule_non_natSuccess187.98test_loadbalance.py
test_01_create_lb_rule_src_natSuccess240.15test_loadbalance.py
test_03_list_snapshotsSuccess0.11test_list_ids_parameter.py
test_02_list_templatesSuccess0.05test_list_ids_parameter.py
test_01_list_volumesSuccess0.04test_list_ids_parameter.py
test_07_list_default_isoSuccess0.07test_iso.py
test_05_iso_permissionsSuccess0.07test_iso.py
test_04_extract_IsoSuccess5.59test_iso.py
test_03_delete_isoSuccess95.21test_iso.py
test_02_edit_isoSuccess0.06test_iso.py
test_01_create_isoSuccess22.49test_iso.py
test_04_rvpc_internallb_haproxy_stats_on_all_interfacesSuccess309.76test_internal_lb.py
test_03_vpc_internallb_haproxy_stats_on_all_interfacesSuccess309.27test_internal_lb.py
test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80Success679.36test_internal_lb.py
test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80Success502.22test_internal_lb.py
test_dedicateGuestVlanRangeSuccess10.35test_guest_vlan_range.py
test_UpdateConfigParamWithScopeSuccess0.16test_global_settings.py
test_rolepermission_lifecycle_updateSuccess7.57test_dynamicroles.py
test_rolepermission_lifecycle_listSuccess7.54test_dynamicroles.py
test_rolepermission_lifecycle_deleteSuccess6.98test_dynamicroles.py
test_rolepermission_lifecycle_createSuccess7.08test_dynamicroles.py
test_rolepermission_lifecycle_concurrent_updatesSuccess7.01test_dynamicroles.py
test_role_lifecycle_update_role_inuseSuccess6.88test_dynamicroles.py
test_role_lifecycle_updateSuccess12.69test_dynamicroles.py
test_role_lifecycle_listSuccess6.99test_dynamicroles.py
test_role_lifecycle_deleteSuccess12.14test_dynamicroles.py
test_role_lifecycle_createSuccess7.28test_dynamicroles.py
test_role_inuse_deletionSuccess6.81test_dynamicroles.py
test_role_account_acls_multiple_mgmt_serversSuccess9.48test_dynamicroles.py
test_role_account_aclsSuccess9.53test_dynamicroles.py
test_default_role_deletionSuccess7.23test_dynamicroles.py
test_04_create_fat_type_disk_offeringSuccess0.11test_disk_offerings.py
test_03_delete_disk_offeringSuccess0.04test_disk_offerings.py
test_02_edit_disk_offeringSuccess0.05test_disk_offerings.py
test_02_create_sparse_type_disk_offeringSuccess0.07test_disk_offerings.py
test_01_create_disk_offeringSuccess0.11test_disk_offerings.py
test_deployvm_userdispersingSuccess20.75test_deploy_vms_with_varied_deploymentplanners.py
test_deployvm_userconcentratedSuccess20.79test_deploy_vms_with_varied_deploymentplanners.py
test_deployvm_firstfitSuccess50.68test_deploy_vms_with_varied_deploymentplanners.py
test_deployvm_userdata_postSuccess5.45test_deploy_vm_with_userdata.py
test_deployvm_userdataSuccess46.14test_deploy_vm_with_userdata.py
test_02_deploy_vm_root_resizeSuccess6.93test_deploy_vm_root_resize.py
test_01_deploy_vm_root_resizeSuccess7.20test_deploy_vm_root_resize.py
test_00_deploy_vm_root_resizeSuccess279.09test_deploy_vm_root_resize.py
test_deploy_vm_from_isoSuccess218.50test_deploy_vm_iso.py
test_DeployVmAntiAffinityGroupSuccess96.33test_affinity_groups.py
test_03_delete_vm_snapshotsSkipped0.00test_vm_snapshots.py
test_02_revert_vm_snapshotsSkipped0.00test_vm_snapshots.py
test_01_test_vm_volume_snapshotSkipped0.00test_vm_snapshots.py
test_01_create_vm_snapshotsSkipped0.00test_vm_snapshots.py
test_06_copy_templateSkipped0.00test_templates.py
test_static_role_account_aclsSkipped0.03test_staticroles.py
test_11_ss_nfs_version_on_ssvmSkipped0.02test_ssvm.py
test_01_scale_vmSkipped0.00test_scale_vm.py
test_01_primary_storage_iscsiSkipped0.05test_primary_storage.py
test_nested_virtualization_vmwareSkipped0.00test_nested_virtualization.py
test_06_copy_isoSkipped0.00test_iso.py
test_deploy_vgpu_enabled_vmSkipped0.04test_deploy_vgpu_enabled_vm.py
test_3d_gpu_supportSkipped0.04test_deploy_vgpu_enabled_vm.py

@yadvr

Copy link
Copy Markdown
Member

LGTM, the tests are all good as one (one failure was due to cleanup in the create template test case and was env related). Based on this I'm merging this.

@asfgit
asfgit merged commit 2a5f37c into apache:masterNov 24, 2016
asfgit pushed a commit that referenced this pull request Nov 24, 2016
CLOUDSTACK-8715: Add channel to Instances for Qemu Guest Agent
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@wido@swill@DaanHoogland@yadvr@bvbharatk@jburwell@blueorangutan@asfgit