Skip to content

Commit

Permalink
Merge "This seem like happens when large amount of data is sent over …
Browse files Browse the repository at this point in the history
…to vcenter in SOAP (multiple hosts to be added to dvswitch which has about 200 port groups). This is not seen when trying to add single host, it may still break if the sheer number of port groups is high. but for now we can do single host addition to the dvswitch instead of all hosts at once." into R2.20
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Jul 24, 2015
2 parents dd555ca + 61b3797 commit 25abe27
Showing 1 changed file with 23 additions and 35 deletions.
58 changes: 23 additions & 35 deletions fabfile/tasks/vcenter_prov.py
Expand Up @@ -400,20 +400,13 @@ def configure_hosts_on_dvSwitch(self, si, network_folder, clusters, dvs_name):
return
else:
host_list = []
dvs_host_configs = []
uplink_port_names = []
dvs_config_spec = self.pyVmomi.vim.DistributedVirtualSwitch.ConfigSpec()
dvs_config_spec.configVersion = dvs.config.configVersion
dvs_config_spec.uplinkPortPolicy = self.pyVmomi.vim.DistributedVirtualSwitch.NameArrayUplinkPortPolicy()
for cluster_name in clusters:
cluster = self.get_obj([self.pyVmomi.vim.ClusterComputeResource], cluster_name)
host_list.append(cluster.host)
hosts = []
for mo in host_list:
for host in mo:
hosts.append(host)
for x in range(len(hosts)):
uplink_port_names.append("dvUplink%d" % x)
for each_host in dvs.config.host:
if each_host.config.host in hosts:
print "%s host already exists in the dvswitch" % each_host.config.host
Expand All @@ -423,6 +416,11 @@ def configure_hosts_on_dvSwitch(self, si, network_folder, clusters, dvs_name):
return

for host in hosts:
dvs_host_configs = []
uplink_port_names = "dvUplink1"
dvs_config_spec = self.pyVmomi.vim.DistributedVirtualSwitch.ConfigSpec()
dvs_config_spec.configVersion = dvs.config.configVersion
dvs_config_spec.uplinkPortPolicy = self.pyVmomi.vim.DistributedVirtualSwitch.NameArrayUplinkPortPolicy()
dvs_config_spec.uplinkPortPolicy.uplinkPortName = uplink_port_names
dvs_config_spec.maxPorts = 60000
#pnic_spec = self.pyVmomi.vim.dvs.HostMember.PnicSpec()
Expand All @@ -435,8 +433,8 @@ def configure_hosts_on_dvSwitch(self, si, network_folder, clusters, dvs_name):
dvs_host_config.backing = self.pyVmomi.vim.dvs.HostMember.PnicBacking()
#dvs_host_config.backing.pnicSpec = pnic_specs
dvs_config_spec.host = dvs_host_configs
task = dvs.ReconfigureDvs_Task(dvs_config_spec)
self.wait_for_task(task,si)
task = dvs.ReconfigureDvs_Task(dvs_config_spec)
self.wait_for_task(task,si)
print "Successfully configured hosts on dvswitch ", dvs_name

def reconfigure_dvSwitch(self, si, clusters, dvs_name):
Expand All @@ -446,44 +444,34 @@ def reconfigure_dvSwitch(self, si, clusters, dvs_name):
return
else:
add_hosts = []
dvs_host_configs = []
uplink_port_names = []
host_list = []

dvs_config_spec = self.pyVmomi.vim.DistributedVirtualSwitch.ConfigSpec()
dvs_config_spec.configVersion = dvs.config.configVersion

dvs_config_spec.uplinkPortPolicy = self.pyVmomi.vim.DistributedVirtualSwitch.NameArrayUplinkPortPolicy()

for host_info in self.hosts:
host = self.get_obj([self.pyVmomi.vim.HostSystem], host_info[0])
add_hosts.append(host)

for cluster_name in clusters:
cluster = self.get_obj([self.pyVmomi.vim.ClusterComputeResource], cluster_name)
host_list.append(cluster.host)
cluster_hosts = []
for mo in host_list:
for host in mo:
cluster_hosts.append(host)

uplink = 0
for x in range(len(cluster_hosts)-1):
uplink = uplink + 1
for each_host in dvs.config.host:
if each_host.config.host in add_hosts:
print "%s host already exists in the dvswitch" % each_host.config.host
add_hosts.remove(each_host.config.host)
if not add_hosts:
print "No hosts left to add to dvswitch ", dvs_name
return dvs

print "Updating dvs_config_spec"
for host in add_hosts:
print "Updating dvs_config_spec"
uplink_port_names.append("dvUplink%d" %uplink)
uplink = uplink + 1
dvs_host_configs = []
uplink_port_names = "dvUplink1"
dvs_config_spec = self.pyVmomi.vim.DistributedVirtualSwitch.ConfigSpec()
dvs_config_spec.configVersion = dvs.config.configVersion
dvs_config_spec.uplinkPortPolicy = self.pyVmomi.vim.DistributedVirtualSwitch.NameArrayUplinkPortPolicy()
dvs_config_spec.uplinkPortPolicy.uplinkPortName = uplink_port_names
dvs_host_config = self.pyVmomi.vim.dvs.HostMember.ConfigSpec()
dvs_host_config.operation = self.pyVmomi.vim.ConfigSpecOperation.add
dvs_host_config.host = host
dvs_config_spec.host.append(dvs_host_config)
task = dvs.ReconfigureDvs_Task(dvs_config_spec)
self.wait_for_task(task,si)
task = dvs.ReconfigureDvs_Task(dvs_config_spec)
self.wait_for_task(task,si)
print "Successfully reconfigured DVS ", dvs_name
return self.get_obj( [self.pyVmomi.vim.DistributedVirtualSwitch],dvs_name)
return dvs

def create_datacenter(self, dcname=None, folder=None):
datacenter = self.get_obj([self.pyVmomi.vim.Datacenter], dcname)
Expand Down

0 comments on commit 25abe27

Please sign in to comment.