diff --git a/bin/csvdeploy.py b/bin/csvdeploy.py index c95e4133..a563b9c3 100755 --- a/bin/csvdeploy.py +++ b/bin/csvdeploy.py @@ -298,7 +298,6 @@ class _APIClient(Client): print "Start to deploy the cluster!....." deploy_req = {"deploy": deploy_list} code, resp = self.deploy_hosts(cluster_id, raw_data=deploy_req) - print "======>resp-----%s" % resp print "---Cluster Info---" print "cluster_id url" print (" %s %s" diff --git a/compass/api/util.py b/compass/api/util.py index 3872bece..43078ecd 100644 --- a/compass/api/util.py +++ b/compass/api/util.py @@ -227,7 +227,8 @@ def is_valid_networking_config(config): "search_path": {"req": 1, "validator": ""}, "gateway": {"req": 1, "validator": is_valid_gateway}, "proxy": {"req": 0, "validator": ""}, - "ntp_server": {"req": 0, "validator": ""} + "ntp_server": {"req": 0, "validator": ""}, + "ha_vip": {"req": 0, "validator": is_valid_ip} } is_valid_format, err = is_valid_keys(global_section, global_config, "global") diff --git a/compass/hdsdiscovery/utils.py b/compass/hdsdiscovery/utils.py index a9486e00..b132c6ed 100644 --- a/compass/hdsdiscovery/utils.py +++ b/compass/hdsdiscovery/utils.py @@ -231,10 +231,10 @@ def snmpget_by_cl(host, credential, oid, timeout=8, retries=3): community = credential['community'] cmd = "snmpget -v %s -c %s -Ob -r %s -t %s %s %s" % ( version, community, retries, timeout, host, oid) - output = None - output, err = exec_command(cmd) - if err: + returncode, output, err = exec_command(cmd) + + if returncode and err: logging.error("[snmpget_by_cl] %s", err) raise TimeoutError(err.strip('\n')) @@ -253,9 +253,9 @@ def snmpwalk_by_cl(host, credential, oid, timeout=5, retries=3): cmd = "snmpwalk -v %s -c %s -Cc -r %s -t %s -Ob %s %s" % ( version, community, retries, timeout, host, oid) - output, err = exec_command(cmd) + returncode, output, err = exec_command(cmd) - if err: + if returncode and err: logging.debug("[snmpwalk_by_cl] %s ", err) raise TimeoutError(err) @@ -278,10 +278,11 @@ def snmpwalk_by_cl(host, credential, oid, timeout=5, retries=3): def exec_command(command): """Execute command. - Return a tuple of output and error message(None if no error). + Return a tuple: returncode, output and error message(None if no error). """ sub_p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - return sub_p.communicate() + output, err_msg = sub_p.communicate() + return (sub_p.returncode, output, err_msg) diff --git a/compass/tests/api/expected_csv/cluster.csv b/compass/tests/api/expected_csv/cluster.csv index e3c736e8..1cf12dcd 100644 --- a/compass/tests/api/expected_csv/cluster.csv +++ b/compass/tests/api/expected_csv/cluster.csv @@ -1,3 +1,3 @@ -id,name,security_config.server_credentials.username,security_config.server_credentials.password,security_config.service_credentials.username,security_config.service_credentials.password,security_config.console_credentials.username,security_config.console_credentials.password,networking_config.interfaces.management.nic,networking_config.interfaces.management.netmask,networking_config.interfaces.management.promisc,networking_config.interfaces.management.ip_end,networking_config.interfaces.management.gateway,networking_config.interfaces.management.ip_start,networking_config.interfaces.storage.nic,networking_config.interfaces.storage.netmask,networking_config.interfaces.storage.promisc,networking_config.interfaces.storage.ip_end,networking_config.interfaces.storage.gateway,networking_config.interfaces.storage.ip_start,networking_config.interfaces.public.nic,networking_config.interfaces.public.netmask,networking_config.interfaces.public.promisc,networking_config.interfaces.public.ip_end,networking_config.interfaces.public.gateway,networking_config.interfaces.public.ip_start,networking_config.interfaces.tenant.nic,networking_config.interfaces.tenant.netmask,networking_config.interfaces.tenant.promisc,networking_config.interfaces.tenant.ip_end,networking_config.interfaces.tenant.gateway,networking_config.interfaces.tenant.ip_start,networking_config.global.nameservers,networking_config.global.ntp_server,networking_config.global.gateway,networking_config.global.proxy,networking_config.global.search_path,partition_config,adapter_id,state -1,cluster_01,root,root,service,admin,console,admin,eth0,255.255.255.0,1,10.120.1.200,None,10.120.1.100,eth3,255.255.255.0,0,172.29.1.200,None,172.29.1.100,eth2,255.255.255.0,0,12.145.1.200,None,12.145.1.100,eth1,255.255.255.0,0,192.168.1.200,None,192.168.1.100,8.8.8.8,127.0.0.1,192.168.1.1,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,READY -2,cluster_02,root,root,service,admin,console,admin,eth0,255.255.255.0,1,10.120.2.200,None,10.120.2.100,eth3,255.255.255.0,0,172.29.2.200,None,172.29.2.100,eth2,255.255.255.0,0,12.145.2.200,None,12.145.2.100,eth1,255.255.255.0,0,192.168.2.200,None,192.168.2.100,8.8.8.8,127.0.0.1,192.168.1.1,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,ERROR +id,name,security_config.server_credentials.username,security_config.server_credentials.password,security_config.service_credentials.username,security_config.service_credentials.password,security_config.console_credentials.username,security_config.console_credentials.password,networking_config.interfaces.management.nic,networking_config.interfaces.management.netmask,networking_config.interfaces.management.promisc,networking_config.interfaces.management.ip_end,networking_config.interfaces.management.gateway,networking_config.interfaces.management.ip_start,networking_config.interfaces.storage.nic,networking_config.interfaces.storage.netmask,networking_config.interfaces.storage.promisc,networking_config.interfaces.storage.ip_end,networking_config.interfaces.storage.gateway,networking_config.interfaces.storage.ip_start,networking_config.interfaces.public.nic,networking_config.interfaces.public.netmask,networking_config.interfaces.public.promisc,networking_config.interfaces.public.ip_end,networking_config.interfaces.public.gateway,networking_config.interfaces.public.ip_start,networking_config.interfaces.tenant.nic,networking_config.interfaces.tenant.netmask,networking_config.interfaces.tenant.promisc,networking_config.interfaces.tenant.ip_end,networking_config.interfaces.tenant.gateway,networking_config.interfaces.tenant.ip_start,networking_config.global.nameservers,networking_config.global.ntp_server,networking_config.global.gateway,networking_config.global.ha_vip,networking_config.global.proxy,networking_config.global.search_path,partition_config,adapter_id,state +1,cluster_01,root,root,service,admin,console,admin,eth0,255.255.255.0,1,10.120.1.200,None,10.120.1.100,eth3,255.255.255.0,0,172.29.1.200,None,172.29.1.100,eth2,255.255.255.0,0,12.145.1.200,None,12.145.1.100,eth1,255.255.255.0,0,192.168.1.200,None,192.168.1.100,8.8.8.8,127.0.0.1,192.168.1.1,None,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,READY +2,cluster_02,root,root,service,admin,console,admin,eth0,255.255.255.0,1,10.120.2.200,None,10.120.2.100,eth3,255.255.255.0,0,172.29.2.200,None,172.29.2.100,eth2,255.255.255.0,0,12.145.2.200,None,12.145.2.100,eth1,255.255.255.0,0,192.168.2.200,None,192.168.2.100,8.8.8.8,127.0.0.1,192.168.1.1,None,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,ERROR diff --git a/compass/tests/api/test_api.py b/compass/tests/api/test_api.py index 8eabaa10..47a1f9bd 100755 --- a/compass/tests/api/test_api.py +++ b/compass/tests/api/test_api.py @@ -367,7 +367,8 @@ class TestClusterAPI(ApiTestCase): "proxy": "", "ntp_server": "", "nameservers": "8.8.8.8", - "search_path": "ods.com,ods1.com"}} + "search_path": "ods.com,ods1.com", + "ha_vip": "192.168.20.1"}} def setUp(self): super(TestClusterAPI, self).setUp() @@ -1141,7 +1142,8 @@ class TestAPIWorkFlow(ApiTestCase): "search_path": "ods.com", "gateway": "192.168.1.1", "proxy": "http://127.0.0.1:3128", - "ntp_server": "127.0.0.1" + "ntp_server": "127.0.0.1", + "ha_vip": "" } } } @@ -1378,7 +1380,8 @@ class TestExport(ApiTestCase): "search_path": "ods.com", "gateway": "192.168.1.1", "proxy": "http://127.0.0.1:3128", - "ntp_server": "127.0.0.1" + "ntp_server": "127.0.0.1", + "ha_vip": "" } } } @@ -1591,7 +1594,6 @@ class TestExport(ApiTestCase): self.assertDictEqual(export_row, expected_row) self.maxDiff = None - if __name__ == '__main__': flags.init() logsetting.init() diff --git a/compass/tests/apicommand/test_files/cluster.csv b/compass/tests/apicommand/test_files/cluster.csv index 717c3295..430f5614 100644 --- a/compass/tests/apicommand/test_files/cluster.csv +++ b/compass/tests/apicommand/test_files/cluster.csv @@ -1,4 +1,4 @@ -id,name,security_config.server_credentials.username,security_config.server_credentials.password,security_config.service_credentials.username,security_config.service_credentials.password,security_config.console_credentials.username,security_config.console_credentials.password,networking_config.interfaces.management.nic,networking_config.interfaces.management.netmask,networking_config.interfaces.management.promisc,networking_config.interfaces.management.ip_end,networking_config.interfaces.management.gateway,networking_config.interfaces.management.ip_start,networking_config.interfaces.storage.nic,networking_config.interfaces.storage.netmask,networking_config.interfaces.storage.promisc,networking_config.interfaces.storage.ip_end,networking_config.interfaces.storage.gateway,networking_config.interfaces.storage.ip_start,networking_config.interfaces.public.nic,networking_config.interfaces.public.netmask,networking_config.interfaces.public.promisc,networking_config.interfaces.public.ip_end,networking_config.interfaces.public.gateway,networking_config.interfaces.public.ip_start,networking_config.interfaces.tenant.nic,networking_config.interfaces.tenant.netmask,networking_config.interfaces.tenant.promisc,networking_config.interfaces.tenant.ip_end,networking_config.interfaces.tenant.gateway,networking_config.interfaces.tenant.ip_start,networking_config.global.nameservers,networking_config.global.ntp_server,networking_config.global.gateway,networking_config.global.proxy,networking_config.global.search_path,partition_config,adapter_id,state -1,cluster_01,root,root,service,admin,console,admin,eth0,255.255.255.0,1,10.120.1.200,None,10.120.1.100,eth3,255.255.255.0,0,172.29.1.200,None,172.29.1.100,eth2,255.255.255.0,0,12.145.1.200,None,12.145.1.100,eth1,255.255.255.0,0,192.168.1.200,None,192.168.1.100,8.8.8.8,127.0.0.1,192.168.1.1,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,READY -2,cluster_02,root,root,service,admin,console,admin,eth0,255.255.255.0,1,10.120.2.200,None,10.120.2.100,eth3,255.255.255.0,0,172.29.2.200,None,172.29.2.100,eth2,255.255.255.0,0,12.145.2.200,None,12.145.2.100,eth1,255.255.255.0,0,192.168.2.200,None,192.168.2.100,8.8.8.8,127.0.0.1,192.168.1.1,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,ERROR -3,cluster_03,root,admin,service,admin,console,admin,eth0,255.255.255.0,1,10.120.3.200,None,10.120.3.100,eth3,255.255.255.0,0,172.29.3.200,None,172.29.3.100,eth2,255.255.255.0,0,12.145.3.200,None,12.145.3.100,eth1,255.255.255.0,0,192.168.3.200,None,192.168.3.100,8.8.8.8,120.0.0.1,192.168.1.1,http://localhost:3128,ods.com,"/home 40%;/tmp 20%;/var 30%;",1,None +id,name,security_config.server_credentials.username,security_config.server_credentials.password,security_config.service_credentials.username,security_config.service_credentials.password,security_config.console_credentials.username,security_config.console_credentials.password,networking_config.interfaces.management.nic,networking_config.interfaces.management.netmask,networking_config.interfaces.management.promisc,networking_config.interfaces.management.ip_end,networking_config.interfaces.management.gateway,networking_config.interfaces.management.ip_start,networking_config.interfaces.storage.nic,networking_config.interfaces.storage.netmask,networking_config.interfaces.storage.promisc,networking_config.interfaces.storage.ip_end,networking_config.interfaces.storage.gateway,networking_config.interfaces.storage.ip_start,networking_config.interfaces.public.nic,networking_config.interfaces.public.netmask,networking_config.interfaces.public.promisc,networking_config.interfaces.public.ip_end,networking_config.interfaces.public.gateway,networking_config.interfaces.public.ip_start,networking_config.interfaces.tenant.nic,networking_config.interfaces.tenant.netmask,networking_config.interfaces.tenant.promisc,networking_config.interfaces.tenant.ip_end,networking_config.interfaces.tenant.gateway,networking_config.interfaces.tenant.ip_start,networking_config.global.nameservers,networking_config.global.ntp_server,networking_config.global.gateway,networking_config.global.ha_vip,networking_config.global.proxy,networking_config.global.search_path,partition_config,adapter_id,state +1,cluster_01,root,root,service,admin,console,admin,eth0,255.255.255.0,1,10.120.1.200,None,10.120.1.100,eth3,255.255.255.0,0,172.29.1.200,None,172.29.1.100,eth2,255.255.255.0,0,12.145.1.200,None,12.145.1.100,eth1,255.255.255.0,0,192.168.1.200,None,192.168.1.100,8.8.8.8,127.0.0.1,192.168.1.1,None,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,READY +2,cluster_02,root,root,service,admin,console,admin,eth0,255.255.255.0,1,10.120.2.200,None,10.120.2.100,eth3,255.255.255.0,0,172.29.2.200,None,172.29.2.100,eth2,255.255.255.0,0,12.145.2.200,None,12.145.2.100,eth1,255.255.255.0,0,192.168.2.200,None,192.168.2.100,8.8.8.8,127.0.0.1,192.168.1.1,None,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,ERROR +3,cluster_03,root,admin,service,admin,console,admin,eth0,255.255.255.0,1,10.120.3.200,None,10.120.3.100,eth3,255.255.255.0,0,172.29.3.200,None,172.29.3.100,eth2,255.255.255.0,0,12.145.3.200,None,12.145.3.100,eth1,255.255.255.0,0,192.168.3.200,None,192.168.3.100,8.8.8.8,120.0.0.1,192.168.1.1,None,http://localhost:3128,ods.com,"/home 40%;/tmp 20%;/var 30%;",1,None diff --git a/compass/tests/hdsdiscovery/test_utils.py b/compass/tests/hdsdiscovery/test_utils.py index 17966e56..46778ba1 100755 --- a/compass/tests/hdsdiscovery/test_utils.py +++ b/compass/tests/hdsdiscovery/test_utils.py @@ -71,19 +71,19 @@ class UtilsTest(unittest2.TestCase): incorr_credentials, oid)) # Switch timeout, failed to execute SNMPGET - mock_exec_command.return_value = (None, "Timeout") + mock_exec_command.return_value = (1, None, "Timeout") with self.assertRaises(TimeoutError): utils.snmpget_by_cl(self.host, self.credentials, oid) # Successfully get system information - mock_exec_command.return_value = ("Huawei Technologies", None) + mock_exec_command.return_value = (0, "Huawei Technologies", None) result = utils.snmpget_by_cl(self.host, self.credentials, oid) self.assertEqual("Huawei Technologies", result) def test_snmpwalk_by_cl(self): oid = "BRIDGE-MIB::dot1dTpFdbPort" # the result of SNMPWALK is None - utils.exec_command = Mock(return_value=(None, None)) + utils.exec_command = Mock(return_value=(0, None, None)) result = utils.snmpwalk_by_cl(self.host, self.credentials, oid) self.assertEqual([], result) @@ -94,7 +94,7 @@ class UtilsTest(unittest2.TestCase): {"iid": "0.12.41.112.143.193", "value": "47"}, {"iid": "0.12.41.139.17.124", "value": "47"} ] - utils.exec_command = Mock(return_value=(return_value, None)) + utils.exec_command = Mock(return_value=(0, return_value, None)) result = utils.snmpwalk_by_cl(self.host, self.credentials, oid) self.assertEqual(expected_result, result)