Skip to content

Commit

Permalink
This seem like happens when large amount of data is sent over to
Browse files Browse the repository at this point in the history
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.

Change-Id: I6719920dcc5a92dd4cc72e683347bf119d1cc3c0
Closes-Bug: #1468479
  • Loading branch information
ymariappan committed Jul 23, 2015
1 parent 857ac6c commit 61b3797
Showing 1 changed file with 23 additions and 35 deletions.
58 changes: 23 additions & 35 deletions fabfile/tasks/vcenter_prov.py
Original file line number Diff line number Diff line change
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 61b3797

Please sign in to comment.