Revision b2fddf63

b/lib/config.py
169 169
      disk.physical_id = disk.logical_id
170 170
    return
171 171

  
172
  def AddTcpIpPort(self, port):
172
  def AddTcpUdpPort(self, port):
173
    """Adds a new port to the available port pool.
174

  
175
    """
173 176
    if not isinstance(port, int):
174
      raise errors.ProgrammerError("Invalid type passed for port")
177
      raise errors.ProgrammerError, ("Invalid type passed for port")
175 178

  
176 179
    self._OpenConfig()
177
    self._config_data.tcpudp_port_pool.add(port)
180
    self._config_data.cluster.tcpudp_port_pool.add(port)
178 181
    self._WriteConfig()
179 182

  
180
  def GetPortList():
183
  def GetPortList(self):
181 184
    """Returns a copy of the current port list.
182 185

  
183 186
    """
184 187
    self._OpenConfig()
185 188
    self._ReleaseLock()
186
    return self._config_data.tcpudp_port_pool.copy()
189
    return self._config_data.cluster.tcpudp_port_pool.copy()
187 190

  
188 191
  def AllocatePort(self):
189 192
    """Allocate a port.
190 193

  
191
    The port will be recorded in the cluster config.
194
    The port will be taken from the available port pool or from the
195
    default port range (and in this case we increase
196
    highest_used_port).
192 197

  
193 198
    """
194 199
    self._OpenConfig()
195 200

  
196 201
    # If there are TCP/IP ports configured, we use them first.
197
    if self._config_data.tcpudp_port_pool:
198
      port = self._config_data.tcpudp_port_pool.pop()
202
    if self._config_data.cluster.tcpudp_port_pool:
203
      port = self._config_data.cluster.tcpudp_port_pool.pop()
199 204
    else:
200 205
      port = self._config_data.cluster.highest_used_port + 1
201 206
      if port >= constants.LAST_DRBD_PORT:
......
500 505
                                   highest_used_port=hu_port,
501 506
                                   mac_prefix=mac_prefix,
502 507
                                   volume_group_name=vg_name,
503
                                   default_bridge=def_bridge)
508
                                   default_bridge=def_bridge,
509
                                   tcpudp_port_pool=set())
504 510
    if secondary_ip is None:
505 511
      secondary_ip = primary_ip
506 512
    nodeconfig = objects.Node(name=node, primary_ip=primary_ip,
......
508 514

  
509 515
    self._config_data = objects.ConfigData(nodes={node: nodeconfig},
510 516
                                           instances={},
511
                                           cluster=globalconfig,
512
                                           tcpudp_port_pool=set())
517
                                           cluster=globalconfig)
513 518
    self._WriteConfig()
514 519

  
515 520
  def GetClusterName(self):
b/lib/objects.py
143 143

  
144 144
class ConfigData(ConfigObject):
145 145
  """Top-level config object."""
146
  __slots__ = ["cluster", "nodes", "instances", "tcpudp_port_pool"]
146
  __slots__ = ["cluster", "nodes", "instances"]
147 147

  
148 148

  
149 149
class NIC(ConfigObject):
......
343 343
  __slots__ = [
344 344
    "config_version",
345 345
    "serial_no",
346
    "master_node",
347 346
    "name",
348 347
    "rsahostkeypub",
349 348
    "highest_used_port",
349
    "tcpudp_port_pool",
350 350
    "mac_prefix",
351 351
    "volume_group_name",
352 352
    "default_bridge",

Also available in: Unified diff