Fix check_for_setup_error for sheepdog driver
Current implementation of check_for_setup_error() of sheepdog driver cannot work correctly with the latest version of sheepdog cluster. This patch fixes it and adds tests for both old and new version. Fixes: bug #1195098 Change-Id: Ia710789e4bedd7c83cd47eff6b2fc532af39d94a
This commit is contained in:
		@@ -24,6 +24,24 @@ COLLIE_NODE_INFO = """
 | 
			
		||||
Total 107287605248 3623897354 3% 54760833024
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
COLLIE_CLUSTER_INFO_0_5 = """
 | 
			
		||||
Cluster status: running
 | 
			
		||||
 | 
			
		||||
Cluster created at Tue Jun 25 19:51:41 2013
 | 
			
		||||
 | 
			
		||||
Epoch Time           Version
 | 
			
		||||
2013-06-25 19:51:41      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
COLLIE_CLUSTER_INFO_0_6 = """
 | 
			
		||||
Cluster status: running, auto-recovery enabled
 | 
			
		||||
 | 
			
		||||
Cluster created at Tue Jun 25 19:51:41 2013
 | 
			
		||||
 | 
			
		||||
Epoch Time           Version
 | 
			
		||||
2013-06-25 19:51:41      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SheepdogTestCase(test.TestCase):
 | 
			
		||||
 | 
			
		||||
@@ -62,3 +80,15 @@ class SheepdogTestCase(test.TestCase):
 | 
			
		||||
            QoS_support=False)
 | 
			
		||||
        actual = self.driver.get_volume_stats(True)
 | 
			
		||||
        self.assertDictMatch(expected, actual)
 | 
			
		||||
 | 
			
		||||
    def test_check_for_setup_error_0_5(self):
 | 
			
		||||
        def fake_stats(*args):
 | 
			
		||||
            return COLLIE_CLUSTER_INFO_0_5, ''
 | 
			
		||||
        self.stubs.Set(self.driver, '_execute', fake_stats)
 | 
			
		||||
        self.driver.check_for_setup_error()
 | 
			
		||||
 | 
			
		||||
    def test_check_for_setup_error_0_6(self):
 | 
			
		||||
        def fake_stats(*args):
 | 
			
		||||
            return COLLIE_CLUSTER_INFO_0_6, ''
 | 
			
		||||
        self.stubs.Set(self.driver, '_execute', fake_stats)
 | 
			
		||||
        self.driver.check_for_setup_error()
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ class SheepdogDriver(driver.VolumeDriver):
 | 
			
		||||
            #  gives short output, but for compatibility reason we won't
 | 
			
		||||
            #  use it and just check if 'running' is in the output.
 | 
			
		||||
            (out, err) = self._execute('collie', 'cluster', 'info')
 | 
			
		||||
            if 'running' not in out.split():
 | 
			
		||||
            if 'status: running' not in out:
 | 
			
		||||
                exception_message = (_("Sheepdog is not working: %s") % out)
 | 
			
		||||
                raise exception.VolumeBackendAPIException(
 | 
			
		||||
                    data=exception_message)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user