Fixed hdsdiscover utils.py bug and updated networking validation
Change-Id: I44488ed2f52f3c1fe9a56050e383176d117ca97f
This commit is contained in:
parent
f7508f3f33
commit
65d9d18c74
@ -298,7 +298,6 @@ class _APIClient(Client):
|
|||||||
print "Start to deploy the cluster!....."
|
print "Start to deploy the cluster!....."
|
||||||
deploy_req = {"deploy": deploy_list}
|
deploy_req = {"deploy": deploy_list}
|
||||||
code, resp = self.deploy_hosts(cluster_id, raw_data=deploy_req)
|
code, resp = self.deploy_hosts(cluster_id, raw_data=deploy_req)
|
||||||
print "======>resp-----%s" % resp
|
|
||||||
print "---Cluster Info---"
|
print "---Cluster Info---"
|
||||||
print "cluster_id url"
|
print "cluster_id url"
|
||||||
print (" %s %s"
|
print (" %s %s"
|
||||||
|
@ -227,7 +227,8 @@ def is_valid_networking_config(config):
|
|||||||
"search_path": {"req": 1, "validator": ""},
|
"search_path": {"req": 1, "validator": ""},
|
||||||
"gateway": {"req": 1, "validator": is_valid_gateway},
|
"gateway": {"req": 1, "validator": is_valid_gateway},
|
||||||
"proxy": {"req": 0, "validator": ""},
|
"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,
|
is_valid_format, err = is_valid_keys(global_section, global_config,
|
||||||
"global")
|
"global")
|
||||||
|
@ -231,10 +231,10 @@ def snmpget_by_cl(host, credential, oid, timeout=8, retries=3):
|
|||||||
community = credential['community']
|
community = credential['community']
|
||||||
cmd = "snmpget -v %s -c %s -Ob -r %s -t %s %s %s" % (
|
cmd = "snmpget -v %s -c %s -Ob -r %s -t %s %s %s" % (
|
||||||
version, community, retries, timeout, host, oid)
|
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)
|
logging.error("[snmpget_by_cl] %s", err)
|
||||||
raise TimeoutError(err.strip('\n'))
|
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" % (
|
cmd = "snmpwalk -v %s -c %s -Cc -r %s -t %s -Ob %s %s" % (
|
||||||
version, community, retries, timeout, host, oid)
|
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)
|
logging.debug("[snmpwalk_by_cl] %s ", err)
|
||||||
raise TimeoutError(err)
|
raise TimeoutError(err)
|
||||||
|
|
||||||
@ -278,10 +278,11 @@ def snmpwalk_by_cl(host, credential, oid, timeout=5, retries=3):
|
|||||||
|
|
||||||
def exec_command(command):
|
def exec_command(command):
|
||||||
"""Execute 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,
|
sub_p = subprocess.Popen(command,
|
||||||
shell=True,
|
shell=True,
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.PIPE)
|
stderr=subprocess.PIPE)
|
||||||
return sub_p.communicate()
|
output, err_msg = sub_p.communicate()
|
||||||
|
return (sub_p.returncode, output, err_msg)
|
||||||
|
@ -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
|
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,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,READY
|
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,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,ERROR
|
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
|
||||||
|
|
@ -367,7 +367,8 @@ class TestClusterAPI(ApiTestCase):
|
|||||||
"proxy": "",
|
"proxy": "",
|
||||||
"ntp_server": "",
|
"ntp_server": "",
|
||||||
"nameservers": "8.8.8.8",
|
"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):
|
def setUp(self):
|
||||||
super(TestClusterAPI, self).setUp()
|
super(TestClusterAPI, self).setUp()
|
||||||
@ -1141,7 +1142,8 @@ class TestAPIWorkFlow(ApiTestCase):
|
|||||||
"search_path": "ods.com",
|
"search_path": "ods.com",
|
||||||
"gateway": "192.168.1.1",
|
"gateway": "192.168.1.1",
|
||||||
"proxy": "http://127.0.0.1:3128",
|
"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",
|
"search_path": "ods.com",
|
||||||
"gateway": "192.168.1.1",
|
"gateway": "192.168.1.1",
|
||||||
"proxy": "http://127.0.0.1:3128",
|
"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.assertDictEqual(export_row, expected_row)
|
||||||
self.maxDiff = None
|
self.maxDiff = None
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
flags.init()
|
flags.init()
|
||||||
logsetting.init()
|
logsetting.init()
|
||||||
|
@ -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
|
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,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,READY
|
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,http://127.0.0.1:3128,ods.com,"/home 20%;/tmp 10%;/var 30%;",1,ERROR
|
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,http://localhost:3128,ods.com,"/home 40%;/tmp 20%;/var 30%;",1,None
|
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
|
||||||
|
|
@ -71,19 +71,19 @@ class UtilsTest(unittest2.TestCase):
|
|||||||
incorr_credentials,
|
incorr_credentials,
|
||||||
oid))
|
oid))
|
||||||
# Switch timeout, failed to execute SNMPGET
|
# 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):
|
with self.assertRaises(TimeoutError):
|
||||||
utils.snmpget_by_cl(self.host, self.credentials, oid)
|
utils.snmpget_by_cl(self.host, self.credentials, oid)
|
||||||
|
|
||||||
# Successfully get system information
|
# 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)
|
result = utils.snmpget_by_cl(self.host, self.credentials, oid)
|
||||||
self.assertEqual("Huawei Technologies", result)
|
self.assertEqual("Huawei Technologies", result)
|
||||||
|
|
||||||
def test_snmpwalk_by_cl(self):
|
def test_snmpwalk_by_cl(self):
|
||||||
oid = "BRIDGE-MIB::dot1dTpFdbPort"
|
oid = "BRIDGE-MIB::dot1dTpFdbPort"
|
||||||
# the result of SNMPWALK is None
|
# 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)
|
result = utils.snmpwalk_by_cl(self.host, self.credentials, oid)
|
||||||
self.assertEqual([], result)
|
self.assertEqual([], result)
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ class UtilsTest(unittest2.TestCase):
|
|||||||
{"iid": "0.12.41.112.143.193", "value": "47"},
|
{"iid": "0.12.41.112.143.193", "value": "47"},
|
||||||
{"iid": "0.12.41.139.17.124", "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)
|
result = utils.snmpwalk_by_cl(self.host, self.credentials, oid)
|
||||||
self.assertEqual(expected_result, result)
|
self.assertEqual(expected_result, result)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user