Fixed hdsdiscover utils.py bug and updated networking validation

Change-Id: I44488ed2f52f3c1fe9a56050e383176d117ca97f
This commit is contained in:
grace.yu 2014-03-24 17:13:17 -07:00
parent f7508f3f33
commit 65d9d18c74
7 changed files with 27 additions and 24 deletions

View File

@ -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"

View File

@ -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")

View File

@ -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)

View File

@ -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

1 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
2 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
3 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

View File

@ -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()

View File

@ -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

1 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
2 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
3 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
4 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

View File

@ -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)