You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2016/07/13 09:44:15 UTC

[01/14] libcloud git commit: adding mock to more 2.x python testing

Repository: libcloud
Updated Branches:
  refs/heads/trunk bb202a27e -> 608b7ec8a


adding mock to more 2.x python testing

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/e1513b2a
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/e1513b2a
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/e1513b2a

Branch: refs/heads/trunk
Commit: e1513b2afe2594443315544bc022cb5dc7abdb1e
Parents: 28d73f4
Author: Rene Kjellerup <rk...@touchcommerce.com>
Authored: Tue Jul 12 15:33:15 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:31:20 2016 +0200

----------------------------------------------------------------------
 tox.ini | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/e1513b2a/tox.ini
----------------------------------------------------------------------
diff --git a/tox.ini b/tox.ini
index 6d2ea73..5f10445 100644
--- a/tox.ini
+++ b/tox.ini
@@ -8,6 +8,7 @@ deps =
     lockfile
     py{2.5,2.6,2.7}: paramiko
     py{2.5,2.6}: unittest2
+    py{2.5,2.6,2.7}: mock
 set-env =
     COVERALLS_REPO_TOKEN = GAB5ZuovdsVEFxSIyZE8YhDYU886iGW54
 commands = cp libcloud/test/secrets.py-dist libcloud/test/secrets.py
@@ -42,6 +43,7 @@ deps = -r{toxinidir}/requirements-tests.txt
        lxml
 [testenv:py2.7-lxml]
 deps = -r{toxinidir}/requirements-tests.txt
+       mock
        lxml
 [testenv:pypypy-lxml]
 deps = -r{toxinidir}/requirements-tests.txt


[07/14] libcloud git commit: require tox to include Mock modules

Posted by to...@apache.org.
require tox to include Mock modules

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/213105a5
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/213105a5
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/213105a5

Branch: refs/heads/trunk
Commit: 213105a5be18708f980de73283ffd8d8df63d012
Parents: c9177d0
Author: Rene Kjellerup <rk...@touchcommerce.com>
Authored: Tue Jul 12 15:12:15 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:31:20 2016 +0200

----------------------------------------------------------------------
 .travis.yml | 1 -
 tox.ini     | 1 +
 2 files changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/213105a5/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 1b74c89..c27cc7c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -79,7 +79,6 @@ install:
   - pip install --upgrade "pip<8.0.0"
   - pip install "virtualenv<14.0.0"
   - pip install "tox>=2.3.0,<2.4"
-  - pip install mock
   - TOX_ENV=py$TRAVIS_PYTHON_VERSION
 
 script:

http://git-wip-us.apache.org/repos/asf/libcloud/blob/213105a5/tox.ini
----------------------------------------------------------------------
diff --git a/tox.ini b/tox.ini
index 248b102..6d2ea73 100644
--- a/tox.ini
+++ b/tox.ini
@@ -37,6 +37,7 @@ deps = -r{toxinidir}/requirements-tests.txt
 [testenv:py2.6-lxml]
 deps = -r{toxinidir}/requirements-tests.txt
        unittest2
+       mock
        paramiko
        lxml
 [testenv:py2.7-lxml]


[08/14] libcloud git commit: import mock from the correct unittest module

Posted by to...@apache.org.
import mock from the correct unittest module

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/fbf2291e
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/fbf2291e
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/fbf2291e

Branch: refs/heads/trunk
Commit: fbf2291efe4c4211eacca6ebd880da10fd04a0aa
Parents: 034c9a0
Author: Rene Kjellerup <rk...@touchcommerce.com>
Authored: Tue Jul 12 14:25:09 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:31:20 2016 +0200

----------------------------------------------------------------------
 libcloud/test/compute/test_libvirt_driver.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/fbf2291e/libcloud/test/compute/test_libvirt_driver.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_libvirt_driver.py b/libcloud/test/compute/test_libvirt_driver.py
index 9bc46ce..ad26b81 100644
--- a/libcloud/test/compute/test_libvirt_driver.py
+++ b/libcloud/test/compute/test_libvirt_driver.py
@@ -16,10 +16,14 @@
 import sys
 
 from libcloud.compute.drivers.libvirt_driver import LibvirtNodeDriver
+from libcloud.utils.py3 import unittest2_required
 
 
 from libcloud.test import unittest
-from unittest import mock
+if unittest2_required:
+    from unittest2 import mock
+else:
+    from unittest import mock
 
 
 @mock.patch('libcloud.compute.drivers.libvirt_driver.libvirt', autospec=True)


[09/14] libcloud git commit: installing mock from pip

Posted by to...@apache.org.
installing mock from pip

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/c9177d0e
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/c9177d0e
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/c9177d0e

Branch: refs/heads/trunk
Commit: c9177d0ec0bb87d096e14150ced3dbf5d8a6a200
Parents: fbf2291
Author: Rene Kjellerup <rk...@touchcommerce.com>
Authored: Tue Jul 12 15:03:34 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:31:20 2016 +0200

----------------------------------------------------------------------
 .travis.yml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/c9177d0e/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index c27cc7c..1b74c89 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -79,6 +79,7 @@ install:
   - pip install --upgrade "pip<8.0.0"
   - pip install "virtualenv<14.0.0"
   - pip install "tox>=2.3.0,<2.4"
+  - pip install mock
   - TOX_ENV=py$TRAVIS_PYTHON_VERSION
 
 script:


[04/14] libcloud git commit: replaced inheited class with autospec'ed mock

Posted by to...@apache.org.
replaced inheited class with autospec'ed mock

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/662e3b33
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/662e3b33
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/662e3b33

Branch: refs/heads/trunk
Commit: 662e3b3308a681c30a0253e8212605bcc1930951
Parents: c38971e
Author: Rene Kjellerup <rk...@touchcommerce.com>
Authored: Tue Jul 12 12:07:04 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:31:20 2016 +0200

----------------------------------------------------------------------
 libcloud/test/compute/test_libvirt_driver.py | 175 ++++------------------
 1 file changed, 28 insertions(+), 147 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/662e3b33/libcloud/test/compute/test_libvirt_driver.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_libvirt_driver.py b/libcloud/test/compute/test_libvirt_driver.py
index 36dd851..9bc46ce 100644
--- a/libcloud/test/compute/test_libvirt_driver.py
+++ b/libcloud/test/compute/test_libvirt_driver.py
@@ -16,129 +16,26 @@
 import sys
 
 from libcloud.compute.drivers.libvirt_driver import LibvirtNodeDriver
-from libcloud.compute.base import NodeState
-from libcloud.compute.types import Provider
 
 
 from libcloud.test import unittest
+from unittest import mock
 
 
-class virConnect:
-    """
-    A stub/Mock implementation of the libvirt.virConnect class returned by
-    the libvirt.openX calles
-    """
-    def __stub(self, *args, **kwargs):
-        return 0
-
-    def __yes(self, *args, **kwargs):
-        return True
-
-    def __ary(self, *args, **kwargs):
-        return []
-
-    def __init__(self):
-        stub = self.__stub
-        yes = self.__yes
-        ary = self.__ary
-        fnt = [
-            '_dispatchCloseCallback',
-            '_dispatchDomainEventAgentLifecycleCallback',
-            '_dispatchDomainEventBalloonChangeCallback',
-            '_dispatchDomainEventBlockJobCallback',
-            '_dispatchDomainEventCallbacks',
-            '_dispatchDomainEventDeviceAddedCallback',
-            '_dispatchDomainEventDeviceRemovalFailedCallback',
-            '_dispatchDomainEventDeviceRemovedCallback',
-            '_dispatchDomainEventDiskChangeCallback',
-            '_dispatchDomainEventGenericCallback',
-            '_dispatchDomainEventGraphicsCallback',
-            '_dispatchDomainEventIOErrorCallback',
-            '_dispatchDomainEventIOErrorReasonCallback',
-            '_dispatchDomainEventJobCompletedCallback',
-            '_dispatchDomainEventLifecycleCallback',
-            '_dispatchDomainEventMigrationIterationCallback',
-            '_dispatchDomainEventPMSuspendCallback',
-            '_dispatchDomainEventPMSuspendDiskCallback',
-            '_dispatchDomainEventPMWakeupCallback',
-            '_dispatchDomainEventRTCChangeCallback',
-            '_dispatchDomainEventTrayChangeCallback',
-            '_dispatchDomainEventTunableCallback',
-            '_dispatchDomainEventWatchdogCallback',
-            '_dispatchNetworkEventLifecycleCallback',
-            '_o', 'allocPages', 'baselineCPU', 'c_pointer', 'changeBegin',
-            'changeCommit', 'changeRollback', 'close', 'compareCPU',
-            'createLinux', 'createXML', 'createXMLWithFiles', 'defineXML',
-            'defineXMLFlags', 'domainEventDeregister',
-            'domainEventDeregisterAny', 'domainEventRegister',
-            'domainEventRegisterAny', 'domainListGetStats',
-            'domainXMLFromNative', 'domainXMLToNative',
-            'findStoragePoolSources', 'getAllDomainStats', 'getCPUMap',
-            'getCPUModelNames', 'getCPUStats', 'getCapabilities',
-            'getCellsFreeMemory', 'getDomainCapabilities', 'getFreeMemory',
-            'getFreePages', 'getHostname', 'getInfo', 'getLibVersion',
-            'getMaxVcpus', 'getMemoryParameters', 'getMemoryStats',
-            'getSecurityModel', 'getSysinfo', 'getType', 'getURI',
-            'getVersion', 'interfaceDefineXML', 'interfaceLookupByMACString',
-            'interfaceLookupByName', 'isAlive', 'isEncrypted', 'isSecure',
-            'listAllDevices', 'listAllDomains', 'listAllInterfaces',
-            'listAllNWFilters', 'listAllNetworks', 'listAllSecrets',
-            'listAllStoragePools', 'listDefinedDomains',
-            'listDefinedInterfaces', 'listDefinedNetworks',
-            'listDefinedStoragePools', 'listDevices', 'listDomainsID',
-            'listInterfaces', 'listNWFilters', 'listNetworks', 'listSecrets',
-            'listStoragePools', 'lookupByID', 'lookupByName', 'lookupByUUID',
-            'lookupByUUIDString', 'networkCreateXML', 'networkDefineXML',
-            'networkEventDeregisterAny', 'networkEventRegisterAny',
-            'networkLookupByName', 'networkLookupByUUID',
-            'networkLookupByUUIDString', 'newStream', 'nodeDeviceCreateXML',
-            'nodeDeviceLookupByName', 'nodeDeviceLookupSCSIHostByWWN',
-            'numOfDefinedDomains', 'numOfDefinedInterfaces',
-            'numOfDefinedNetworks', 'numOfDefinedStoragePools', 'numOfDevices',
-            'numOfDomains', 'numOfInterfaces', 'numOfNWFilters',
-            'numOfNetworks', 'numOfSecrets', 'numOfStoragePools',
-            'nwfilterDefineXML', 'nwfilterLookupByName',
-            'nwfilterLookupByUUID', 'nwfilterLookupByUUIDString',
-            'registerCloseCallback', 'restore', 'restoreFlags',
-            'saveImageDefineXML', 'saveImageGetXMLDesc', 'secretDefineXML',
-            'secretLookupByUUID', 'secretLookupByUUIDString',
-            'secretLookupByUsage', 'setKeepAlive', 'setMemoryParameters',
-            'storagePoolCreateXML', 'storagePoolDefineXML',
-            'storagePoolLookupByName', 'storagePoolLookupByUUID',
-            'storagePoolLookupByUUIDString', 'storageVolLookupByKey',
-            'storageVolLookupByPath', 'suspendForDuration',
-            'unregisterCloseCallback', 'virConnGetLastError',
-            'virConnResetLastError'
-        ]
-        for f in fnt:
-            if f.startswith('is'):
-                self.__dict__[f] = yes
-            elif f.startswith('list'):
-                self.__dict__[f] = ary
-            else:
-                self.__dict__[f] = stub
-
-
-class LibvirtNodeDriverTestCase(LibvirtNodeDriver, unittest.TestCase):
-    type = Provider.LIBVIRT
-    name = 'Libvirt'
-    website = 'http://libvirt.org/'
-
-    NODE_STATE_MAP = {
-        0: NodeState.TERMINATED,  # no state
-        1: NodeState.RUNNING,  # domain is running
-        2: NodeState.PENDING,  # domain is blocked on resource
-        3: NodeState.TERMINATED,  # domain is paused by user
-        4: NodeState.TERMINATED,  # domain is being shut down
-        5: NodeState.TERMINATED,  # domain is shut off
-        6: NodeState.UNKNOWN,  # domain is crashed
-        7: NodeState.UNKNOWN,  # domain is suspended by guest power management
-    }
-
-    def __init__(self, argv=None):
-        unittest.TestCase.__init__(self, argv)
-        self._uri = 'qemu:///system'
-        self.connection = virConnect()
+@mock.patch('libcloud.compute.drivers.libvirt_driver.libvirt', autospec=True)
+class LibvirtNodeDriverTestCase(unittest.TestCase):
+    arp_output_str = """? (1.2.10.80) at 52:54:00:bc:f9:6c [ether] on br0
+? (1.2.10.33) at 52:54:00:04:89:51 [ether] on br0
+? (1.2.10.97) at 52:54:00:c6:40:ec [ether] on br0
+? (1.2.10.40) at 52:54:00:77:1c:83 [ether] on br0"""
+    ip_output_str = """1.2.10.80 dev br0 lladdr 52:54:00:bc:f9:6c STALE
+1.2.10.33 dev br0 lladdr 52:54:00:04:89:51 REACHABLE
+1.2.10.97 dev br0 lladdr 52:54:00:c6:40:ec DELAY
+1.2.10.40 dev br0 lladdr 52:54:00:77:1c:83 STALE"""
+    bad_output_str = """1.2.10.80 dev br0  52:54:00:bc:f9:6c STALE
+1.2.10.33 dev br0 lladdr 52:54:00:04:89:51 REACHABLE
+1.2.10.97 dev br0 lladdr
+1.2.10.40 dev br0 lladdr 52:54:00:77:1c:83 STALE"""
 
     def _assert_arp_table(self, arp_table):
         self.assertIn('52:54:00:bc:f9:6c', arp_table)
@@ -150,44 +47,28 @@ class LibvirtNodeDriverTestCase(LibvirtNodeDriver, unittest.TestCase):
         self.assertIn('1.2.10.97', arp_table['52:54:00:c6:40:ec'])
         self.assertIn('1.2.10.40', arp_table['52:54:00:77:1c:83'])
 
-    def test_arp_map(self):
-        arp_output_str = """? (1.2.10.80) at 52:54:00:bc:f9:6c [ether] on br0
-? (1.2.10.33) at 52:54:00:04:89:51 [ether] on br0
-? (1.2.10.97) at 52:54:00:c6:40:ec [ether] on br0
-? (1.2.10.40) at 52:54:00:77:1c:83 [ether] on br0
-"""
-        arp_table = self._parse_ip_table_arp(arp_output_str)
+    def test_arp_map(self, *args, **keywargs):
+        driver = LibvirtNodeDriver('')
+        arp_table = driver._parse_ip_table_arp(self.arp_output_str)
         self._assert_arp_table(arp_table)
 
-    def test_ip_map(self):
-        arp_output_str = """1.2.10.80 dev br0 lladdr 52:54:00:bc:f9:6c STALE
-1.2.10.33 dev br0 lladdr 52:54:00:04:89:51 REACHABLE
-1.2.10.97 dev br0 lladdr 52:54:00:c6:40:ec DELAY
-1.2.10.40 dev br0 lladdr 52:54:00:77:1c:83 STALE
-"""
-        arp_table = self._parse_ip_table_neigh(arp_output_str)
+    def test_ip_map(self, *args, **keywargs):
+        driver = LibvirtNodeDriver('')
+        arp_table = driver._parse_ip_table_neigh(self.ip_output_str)
         self._assert_arp_table(arp_table)
 
-    def test_bad_map(self):
-        arp_output_str = """1.2.10.80 dev br0  52:54:00:bc:f9:6c STALE
-1.2.10.33 dev br0 lladdr 52:54:00:04:89:51 REACHABLE
-1.2.10.97 dev br0 lladdr
-1.2.10.40 dev br0 lladdr 52:54:00:77:1c:83 STALE
-"""
-        arp_table = self._parse_ip_table_neigh(arp_output_str)
+    def test_bad_map(self, *args, **keywargs):
+        driver = LibvirtNodeDriver('')
+        arp_table = driver._parse_ip_table_neigh(self.bad_output_str)
         # we should at least get the correctly formatted lines
         self.assertEqual(len(arp_table), 2)
-        arp_output_str = """? (1.2.10.80) at 52:54:00:bc:f9:6c [ether] on br0
-? (1.2.10.33) at 52:54:00:04:89:51 [ether] on br0
-? (1.2.10.97) at 52:54:00:c6:40:ec [ether] on br0
-? (1.2.10.40) at 52:54:00:77:1c:83 [ether] on br0
-"""
-        arp_table = self._parse_ip_table_neigh(arp_output_str)
+        arp_table = driver._parse_ip_table_neigh(self.arp_output_str)
         # nothing should match if the wrong output is sent
         self.assertEqual(len(arp_table), 0)
 
-    def test_list_nodes(self):
-        nodes = self.list_nodes()
+    def test_list_nodes(self, *args, **keywargs):
+        driver = LibvirtNodeDriver('')
+        nodes = driver.list_nodes()
         self.assertEqual(type([]), type(nodes))
         self.assertEqual(len(nodes), 0)
 


[11/14] libcloud git commit: mock library is already specified in requirements-tests.txt

Posted by to...@apache.org.
mock library is already specified in requirements-tests.txt


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/01c6db45
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/01c6db45
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/01c6db45

Branch: refs/heads/trunk
Commit: 01c6db45e532958d114033ab1b8e271351bf1c26
Parents: 3856f46
Author: Tomaz Muraus <to...@tomaz.me>
Authored: Wed Jul 13 11:32:48 2016 +0200
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:32:48 2016 +0200

----------------------------------------------------------------------
 tox.ini | 3 ---
 1 file changed, 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/01c6db45/tox.ini
----------------------------------------------------------------------
diff --git a/tox.ini b/tox.ini
index 5f10445..248b102 100644
--- a/tox.ini
+++ b/tox.ini
@@ -8,7 +8,6 @@ deps =
     lockfile
     py{2.5,2.6,2.7}: paramiko
     py{2.5,2.6}: unittest2
-    py{2.5,2.6,2.7}: mock
 set-env =
     COVERALLS_REPO_TOKEN = GAB5ZuovdsVEFxSIyZE8YhDYU886iGW54
 commands = cp libcloud/test/secrets.py-dist libcloud/test/secrets.py
@@ -38,12 +37,10 @@ deps = -r{toxinidir}/requirements-tests.txt
 [testenv:py2.6-lxml]
 deps = -r{toxinidir}/requirements-tests.txt
        unittest2
-       mock
        paramiko
        lxml
 [testenv:py2.7-lxml]
 deps = -r{toxinidir}/requirements-tests.txt
-       mock
        lxml
 [testenv:pypypy-lxml]
 deps = -r{toxinidir}/requirements-tests.txt


[02/14] libcloud git commit: import mock module directly

Posted by to...@apache.org.
import mock module directly

the mock module is not in unittest2 so include it directly

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/28d73f46
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/28d73f46
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/28d73f46

Branch: refs/heads/trunk
Commit: 28d73f4619e5778760e2bc4057872b5bc1f84e09
Parents: 213105a
Author: Rene Kjellerup <rk...@touchcommerce.com>
Authored: Tue Jul 12 15:17:47 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:31:20 2016 +0200

----------------------------------------------------------------------
 libcloud/test/compute/test_libvirt_driver.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/28d73f46/libcloud/test/compute/test_libvirt_driver.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_libvirt_driver.py b/libcloud/test/compute/test_libvirt_driver.py
index ad26b81..22391da 100644
--- a/libcloud/test/compute/test_libvirt_driver.py
+++ b/libcloud/test/compute/test_libvirt_driver.py
@@ -21,7 +21,7 @@ from libcloud.utils.py3 import unittest2_required
 
 from libcloud.test import unittest
 if unittest2_required:
-    from unittest2 import mock
+    import mock
 else:
     from unittest import mock
 


[03/14] libcloud git commit: cleaned up LibvirtNodeDriver.__init__

Posted by to...@apache.org.
cleaned up LibvirtNodeDriver.__init__

checking the uri string for +tcp before trying to do the SASL
connection to the libvirtd service

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/f59c3922
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/f59c3922
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/f59c3922

Branch: refs/heads/trunk
Commit: f59c3922ebd66e15f9b09ba5cfdfe5fcede6d1b6
Parents: bb202a2
Author: Rene Kjellerup <rk...@touchcommerce.com>
Authored: Fri Jul 8 11:49:33 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:31:20 2016 +0200

----------------------------------------------------------------------
 libcloud/compute/drivers/libvirt_driver.py | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/f59c3922/libcloud/compute/drivers/libvirt_driver.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/libvirt_driver.py b/libcloud/compute/drivers/libvirt_driver.py
index 7a2e132..5586a6b 100644
--- a/libcloud/compute/drivers/libvirt_driver.py
+++ b/libcloud/compute/drivers/libvirt_driver.py
@@ -82,16 +82,18 @@ class LibvirtNodeDriver(NodeDriver):
         self._uri = uri
         self._key = key
         self._secret = secret
-        try:
-            self.connection = libvirt.open(uri)
-        except libvirt.libvirtError:
-            if key is None or secret is None:
+        if '+tcp' in self._uri:
+            if key is None and secret is None:
                 raise RuntimeError('The remote Libvirt instance requires ' +
                                    'authentication, please set \'key\' and ' +
                                    '\'secret\' parameters')
             auth = [[libvirt.VIR_CRED_AUTHNAME, libvirt.VIR_CRED_PASSPHRASE],
                     self._cred_callback, None]
             self.connection = libvirt.openAuth(uri, auth, 0)
+        else:
+            self.connection = libvirt.open(uri)
+        if self.connection is None:
+            raise RuntimeError('Unable to establish a connection to libvirtd')
 
     def _cred_callback(self, cred, user_data):
         """


[12/14] libcloud git commit: Always use packaged mock.

Posted by to...@apache.org.
Always use packaged mock.


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/d9fc1eda
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/d9fc1eda
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/d9fc1eda

Branch: refs/heads/trunk
Commit: d9fc1edaf6b3f52b1141ab80c1d88d97a964380a
Parents: 01c6db4
Author: Tomaz Muraus <to...@tomaz.me>
Authored: Wed Jul 13 11:34:47 2016 +0200
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:34:47 2016 +0200

----------------------------------------------------------------------
 libcloud/test/compute/test_libvirt_driver.py | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/d9fc1eda/libcloud/test/compute/test_libvirt_driver.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_libvirt_driver.py b/libcloud/test/compute/test_libvirt_driver.py
index 22391da..be8513b 100644
--- a/libcloud/test/compute/test_libvirt_driver.py
+++ b/libcloud/test/compute/test_libvirt_driver.py
@@ -15,15 +15,15 @@
 
 import sys
 
-from libcloud.compute.drivers.libvirt_driver import LibvirtNodeDriver
-from libcloud.utils.py3 import unittest2_required
+import mock
 
+from libcloud.compute.drivers.libvirt_driver import LibvirtNodeDriver
 
 from libcloud.test import unittest
-if unittest2_required:
-    import mock
-else:
-    from unittest import mock
+
+__all__ = [
+    'LibvirtNodeDriverTestCase'
+]
 
 
 @mock.patch('libcloud.compute.drivers.libvirt_driver.libvirt', autospec=True)


[14/14] libcloud git commit: Update changelog.

Posted by to...@apache.org.
Update changelog.

Closes #838


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/608b7ec8
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/608b7ec8
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/608b7ec8

Branch: refs/heads/trunk
Commit: 608b7ec8a08918a9dffec9f9fe7a71c76496f871
Parents: a4bddfe
Author: Tomaz Muraus <to...@tomaz.me>
Authored: Wed Jul 13 11:38:50 2016 +0200
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:38:50 2016 +0200

----------------------------------------------------------------------
 CHANGES.rst | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/608b7ec8/CHANGES.rst
----------------------------------------------------------------------
diff --git a/CHANGES.rst b/CHANGES.rst
index ba23490..f14494e 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -15,6 +15,10 @@ Compute
   (GITHUB-835)
   [Wido den Hollander]
 
+- Various improvements in the libvirt driver.
+  (GITHUB-838)
+  [Rene Kjellerup]
+
 DNS
 ~~~
 


[06/14] libcloud git commit: passing None to open will use defaults

Posted by to...@apache.org.
passing None to open will use defaults

if we get a connection with None, retrive the connection uri from libvirt.virConnection

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/034c9a00
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/034c9a00
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/034c9a00

Branch: refs/heads/trunk
Commit: 034c9a007c821db5c5bc61a690151025a599db33
Parents: 662e3b3
Author: Rene Kjellerup <rk...@touchcommerce.com>
Authored: Tue Jul 12 12:34:52 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:31:20 2016 +0200

----------------------------------------------------------------------
 libcloud/compute/drivers/libvirt_driver.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/034c9a00/libcloud/compute/drivers/libvirt_driver.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/libvirt_driver.py b/libcloud/compute/drivers/libvirt_driver.py
index 5586a6b..13b0c95 100644
--- a/libcloud/compute/drivers/libvirt_driver.py
+++ b/libcloud/compute/drivers/libvirt_driver.py
@@ -82,7 +82,7 @@ class LibvirtNodeDriver(NodeDriver):
         self._uri = uri
         self._key = key
         self._secret = secret
-        if '+tcp' in self._uri:
+        if uri is not None and '+tcp' in self._uri:
             if key is None and secret is None:
                 raise RuntimeError('The remote Libvirt instance requires ' +
                                    'authentication, please set \'key\' and ' +
@@ -92,8 +92,8 @@ class LibvirtNodeDriver(NodeDriver):
             self.connection = libvirt.openAuth(uri, auth, 0)
         else:
             self.connection = libvirt.open(uri)
-        if self.connection is None:
-            raise RuntimeError('Unable to establish a connection to libvirtd')
+        if uri is None:
+            self._uri = self.connection.getInfo()
 
     def _cred_callback(self, cred, user_data):
         """


[13/14] libcloud git commit: Skip libvirt tests if libvirt library is not available.

Posted by to...@apache.org.
Skip libvirt tests if libvirt library is not available.


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/a4bddfec
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/a4bddfec
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/a4bddfec

Branch: refs/heads/trunk
Commit: a4bddfec0b26606258f0e1da94c289d0ab573369
Parents: d9fc1ed
Author: Tomaz Muraus <to...@tomaz.me>
Authored: Wed Jul 13 11:36:10 2016 +0200
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:36:10 2016 +0200

----------------------------------------------------------------------
 libcloud/test/compute/test_libvirt_driver.py | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/a4bddfec/libcloud/test/compute/test_libvirt_driver.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_libvirt_driver.py b/libcloud/test/compute/test_libvirt_driver.py
index be8513b..0cfd517 100644
--- a/libcloud/test/compute/test_libvirt_driver.py
+++ b/libcloud/test/compute/test_libvirt_driver.py
@@ -18,6 +18,7 @@ import sys
 import mock
 
 from libcloud.compute.drivers.libvirt_driver import LibvirtNodeDriver
+from libcloud.compute.drivers.libvirt_driver import have_libvirt
 
 from libcloud.test import unittest
 
@@ -26,6 +27,7 @@ __all__ = [
 ]
 
 
+@unittest.skipIf(not have_libvirt, 'libvirt not available, skipping tests')
 @mock.patch('libcloud.compute.drivers.libvirt_driver.libvirt', autospec=True)
 class LibvirtNodeDriverTestCase(unittest.TestCase):
     arp_output_str = """? (1.2.10.80) at 52:54:00:bc:f9:6c [ether] on br0


[05/14] libcloud git commit: adding more tests, and cleaning up the mock setup

Posted by to...@apache.org.
adding more tests, and cleaning up the mock setup

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/c38971ee
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/c38971ee
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/c38971ee

Branch: refs/heads/trunk
Commit: c38971eed9cb200ba9e74ed964f822d506b880bb
Parents: f59c392
Author: Rene Kjellerup <rk...@touchcommerce.com>
Authored: Fri Jul 8 17:07:14 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:31:20 2016 +0200

----------------------------------------------------------------------
 libcloud/test/compute/test_libvirt_driver.py | 182 +++++++++++-----------
 1 file changed, 89 insertions(+), 93 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/c38971ee/libcloud/test/compute/test_libvirt_driver.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_libvirt_driver.py b/libcloud/test/compute/test_libvirt_driver.py
index 2993ebd..36dd851 100644
--- a/libcloud/test/compute/test_libvirt_driver.py
+++ b/libcloud/test/compute/test_libvirt_driver.py
@@ -16,6 +16,8 @@
 import sys
 
 from libcloud.compute.drivers.libvirt_driver import LibvirtNodeDriver
+from libcloud.compute.base import NodeState
+from libcloud.compute.types import Provider
 
 
 from libcloud.test import unittest
@@ -26,11 +28,19 @@ class virConnect:
     A stub/Mock implementation of the libvirt.virConnect class returned by
     the libvirt.openX calles
     """
-    def stub(self, *args, **kwargs):
+    def __stub(self, *args, **kwargs):
         return 0
 
+    def __yes(self, *args, **kwargs):
+        return True
+
+    def __ary(self, *args, **kwargs):
+        return []
+
     def __init__(self):
-        stub = self.stub
+        stub = self.__stub
+        yes = self.__yes
+        ary = self.__ary
         fnt = [
             '_dispatchCloseCallback',
             '_dispatchDomainEventAgentLifecycleCallback',
@@ -65,103 +75,66 @@ class virConnect:
             'domainXMLFromNative', 'domainXMLToNative',
             'findStoragePoolSources', 'getAllDomainStats', 'getCPUMap',
             'getCPUModelNames', 'getCPUStats', 'getCapabilities',
-            'getCellsFreeMemory',
-            'getDomainCapabilities',
-            'getFreeMemory',
-            'getFreePages',
-            'getHostname',
-            'getInfo',
-            'getLibVersion',
-            'getMaxVcpus',
-            'getMemoryParameters',
-            'getMemoryStats',
-            'getSecurityModel',
-            'getSysinfo',
-            'getType',
-            'getURI',
-            'getVersion',
-            'interfaceDefineXML',
-            'interfaceLookupByMACString',
-            'interfaceLookupByName',
-            'isAlive',
-            'isEncrypted',
-            'isSecure',
-            'listAllDevices',
-            'listAllDomains',
-            'listAllInterfaces',
-            'listAllNWFilters',
-            'listAllNetworks',
-            'listAllSecrets',
-            'listAllStoragePools',
-            'listDefinedDomains',
-            'listDefinedInterfaces',
-            'listDefinedNetworks',
-            'listDefinedStoragePools',
-            'listDevices',
-            'listDomainsID',
-            'listInterfaces',
-            'listNWFilters',
-            'listNetworks',
-            'listSecrets',
-            'listStoragePools',
-            'lookupByID',
-            'lookupByName',
-            'lookupByUUID',
-            'lookupByUUIDString',
-            'networkCreateXML',
-            'networkDefineXML',
-            'networkEventDeregisterAny',
-            'networkEventRegisterAny',
-            'networkLookupByName',
-            'networkLookupByUUID',
-            'networkLookupByUUIDString',
-            'newStream',
-            'nodeDeviceCreateXML',
-            'nodeDeviceLookupByName',
-            'nodeDeviceLookupSCSIHostByWWN',
-            'numOfDefinedDomains',
-            'numOfDefinedInterfaces',
-            'numOfDefinedNetworks',
-            'numOfDefinedStoragePools',
-            'numOfDevices',
-            'numOfDomains',
-            'numOfInterfaces',
-            'numOfNWFilters',
-            'numOfNetworks',
-            'numOfSecrets',
-            'numOfStoragePools',
-            'nwfilterDefineXML',
-            'nwfilterLookupByName',
-            'nwfilterLookupByUUID',
-            'nwfilterLookupByUUIDString',
-            'registerCloseCallback',
-            'restore',
-            'restoreFlags',
-            'saveImageDefineXML',
-            'saveImageGetXMLDesc',
-            'secretDefineXML',
-            'secretLookupByUUID',
-            'secretLookupByUUIDString',
-            'secretLookupByUsage',
-            'setKeepAlive',
-            'setMemoryParameters',
-            'storagePoolCreateXML',
-            'storagePoolDefineXML',
-            'storagePoolLookupByName',
-            'storagePoolLookupByUUID',
-            'storagePoolLookupByUUIDString',
-            'storageVolLookupByKey',
-            'storageVolLookupByPath',
-            'suspendForDuration',
-            'unregisterCloseCallback',
-            'virConnGetLastError',
+            'getCellsFreeMemory', 'getDomainCapabilities', 'getFreeMemory',
+            'getFreePages', 'getHostname', 'getInfo', 'getLibVersion',
+            'getMaxVcpus', 'getMemoryParameters', 'getMemoryStats',
+            'getSecurityModel', 'getSysinfo', 'getType', 'getURI',
+            'getVersion', 'interfaceDefineXML', 'interfaceLookupByMACString',
+            'interfaceLookupByName', 'isAlive', 'isEncrypted', 'isSecure',
+            'listAllDevices', 'listAllDomains', 'listAllInterfaces',
+            'listAllNWFilters', 'listAllNetworks', 'listAllSecrets',
+            'listAllStoragePools', 'listDefinedDomains',
+            'listDefinedInterfaces', 'listDefinedNetworks',
+            'listDefinedStoragePools', 'listDevices', 'listDomainsID',
+            'listInterfaces', 'listNWFilters', 'listNetworks', 'listSecrets',
+            'listStoragePools', 'lookupByID', 'lookupByName', 'lookupByUUID',
+            'lookupByUUIDString', 'networkCreateXML', 'networkDefineXML',
+            'networkEventDeregisterAny', 'networkEventRegisterAny',
+            'networkLookupByName', 'networkLookupByUUID',
+            'networkLookupByUUIDString', 'newStream', 'nodeDeviceCreateXML',
+            'nodeDeviceLookupByName', 'nodeDeviceLookupSCSIHostByWWN',
+            'numOfDefinedDomains', 'numOfDefinedInterfaces',
+            'numOfDefinedNetworks', 'numOfDefinedStoragePools', 'numOfDevices',
+            'numOfDomains', 'numOfInterfaces', 'numOfNWFilters',
+            'numOfNetworks', 'numOfSecrets', 'numOfStoragePools',
+            'nwfilterDefineXML', 'nwfilterLookupByName',
+            'nwfilterLookupByUUID', 'nwfilterLookupByUUIDString',
+            'registerCloseCallback', 'restore', 'restoreFlags',
+            'saveImageDefineXML', 'saveImageGetXMLDesc', 'secretDefineXML',
+            'secretLookupByUUID', 'secretLookupByUUIDString',
+            'secretLookupByUsage', 'setKeepAlive', 'setMemoryParameters',
+            'storagePoolCreateXML', 'storagePoolDefineXML',
+            'storagePoolLookupByName', 'storagePoolLookupByUUID',
+            'storagePoolLookupByUUIDString', 'storageVolLookupByKey',
+            'storageVolLookupByPath', 'suspendForDuration',
+            'unregisterCloseCallback', 'virConnGetLastError',
             'virConnResetLastError'
         ]
         for f in fnt:
-            self.__dict__[f] = stub
+            if f.startswith('is'):
+                self.__dict__[f] = yes
+            elif f.startswith('list'):
+                self.__dict__[f] = ary
+            else:
+                self.__dict__[f] = stub
 
 
 class LibvirtNodeDriverTestCase(LibvirtNodeDriver, unittest.TestCase):
+    type = Provider.LIBVIRT
+    name = 'Libvirt'
+    website = 'http://libvirt.org/'
+
+    NODE_STATE_MAP = {
+        0: NodeState.TERMINATED,  # no state
+        1: NodeState.RUNNING,  # domain is running
+        2: NodeState.PENDING,  # domain is blocked on resource
+        3: NodeState.TERMINATED,  # domain is paused by user
+        4: NodeState.TERMINATED,  # domain is being shut down
+        5: NodeState.TERMINATED,  # domain is shut off
+        6: NodeState.UNKNOWN,  # domain is crashed
+        7: NodeState.UNKNOWN,  # domain is suspended by guest power management
+    }
+
     def __init__(self, argv=None):
         unittest.TestCase.__init__(self, argv)
         self._uri = 'qemu:///system'
@@ -195,5 +168,28 @@ class LibvirtNodeDriverTestCase(LibvirtNodeDriver, unittest.TestCase):
         arp_table = self._parse_ip_table_neigh(arp_output_str)
         self._assert_arp_table(arp_table)
 
+    def test_bad_map(self):
+        arp_output_str = """1.2.10.80 dev br0  52:54:00:bc:f9:6c STALE
+1.2.10.33 dev br0 lladdr 52:54:00:04:89:51 REACHABLE
+1.2.10.97 dev br0 lladdr
+1.2.10.40 dev br0 lladdr 52:54:00:77:1c:83 STALE
+"""
+        arp_table = self._parse_ip_table_neigh(arp_output_str)
+        # we should at least get the correctly formatted lines
+        self.assertEqual(len(arp_table), 2)
+        arp_output_str = """? (1.2.10.80) at 52:54:00:bc:f9:6c [ether] on br0
+? (1.2.10.33) at 52:54:00:04:89:51 [ether] on br0
+? (1.2.10.97) at 52:54:00:c6:40:ec [ether] on br0
+? (1.2.10.40) at 52:54:00:77:1c:83 [ether] on br0
+"""
+        arp_table = self._parse_ip_table_neigh(arp_output_str)
+        # nothing should match if the wrong output is sent
+        self.assertEqual(len(arp_table), 0)
+
+    def test_list_nodes(self):
+        nodes = self.list_nodes()
+        self.assertEqual(type([]), type(nodes))
+        self.assertEqual(len(nodes), 0)
+
 if __name__ == '__main__':
     sys.exit(unittest.main())


[10/14] libcloud git commit: adding python libvirt to dependencies

Posted by to...@apache.org.
adding python libvirt to dependencies

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/3856f462
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/3856f462
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/3856f462

Branch: refs/heads/trunk
Commit: 3856f4629ce1350e32fd9a3e4204fa14b8e8083b
Parents: e1513b2
Author: Rene Kjellerup <rk...@touchcommerce.com>
Authored: Tue Jul 12 17:31:54 2016 -0700
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Wed Jul 13 11:31:21 2016 +0200

----------------------------------------------------------------------
 .travis.yml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/3856f462/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index c27cc7c..32bf653 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -18,6 +18,7 @@ addons:
   apt:
     packages:
       - graphviz
+      - python-libvirt
 
 matrix:
   fast_finish: true