Revision 5a8648eb lib/backend.py

b/lib/backend.py
231 231
  for consumption here or from the node daemon.
232 232

  
233 233
  @rtype: tuple
234
  @return: master_netdev, master_ip, master_name, primary_ip_family
234
  @return: master_netdev, master_ip, master_netmask, master_name,
235
    primary_ip_family
235 236
  @raise RPCFail: in case of errors
236 237

  
237 238
  """
......
239 240
    cfg = _GetConfig()
240 241
    master_netdev = cfg.GetMasterNetdev()
241 242
    master_ip = cfg.GetMasterIP()
243
    master_netmask = cfg.GetMasterNetmask()
242 244
    master_node = cfg.GetMasterNode()
243 245
    primary_ip_family = cfg.GetPrimaryIPFamily()
244 246
  except errors.ConfigurationError, err:
245 247
    _Fail("Cluster configuration incomplete: %s", err, exc=True)
246
  return (master_netdev, master_ip, master_node, primary_ip_family)
248
  return (master_netdev, master_ip, master_netmask, master_node,
249
          primary_ip_family)
247 250

  
248 251

  
249 252
def ActivateMasterIp():
......
251 254

  
252 255
  """
253 256
  # GetMasterInfo will raise an exception if not able to return data
254
  master_netdev, master_ip, _, family = GetMasterInfo()
257
  master_netdev, master_ip, master_netmask, _, family = GetMasterInfo()
255 258

  
256 259
  err_msg = None
257 260
  if netutils.TcpPing(master_ip, constants.DEFAULT_NODED_PORT):
......
267 270
      ipcls = netutils.IP6Address
268 271

  
269 272
    result = utils.RunCmd([constants.IP_COMMAND_PATH, "address", "add",
270
                           "%s/%d" % (master_ip, ipcls.iplen),
273
                           "%s/%s" % (master_ip, master_netmask),
271 274
                           "dev", master_netdev, "label",
272 275
                           "%s:0" % master_netdev])
273 276
    if result.failed:
......
325 328
  # need to decide in which case we fail the RPC for this
326 329

  
327 330
  # GetMasterInfo will raise an exception if not able to return data
328
  master_netdev, master_ip, _, family = GetMasterInfo()
329

  
330
  ipcls = netutils.IP4Address
331
  if family == netutils.IP6Address.family:
332
    ipcls = netutils.IP6Address
331
  master_netdev, master_ip, master_netmask, _, _ = GetMasterInfo()
333 332

  
334 333
  result = utils.RunCmd([constants.IP_COMMAND_PATH, "address", "del",
335
                         "%s/%d" % (master_ip, ipcls.iplen),
334
                         "%s/%s" % (master_ip, master_netmask),
336 335
                         "dev", master_netdev])
337 336
  if result.failed:
338 337
    logging.error("Can't remove the master IP, error: %s", result.output)
......
357 356
                  result.cmd, result.exit_code, result.output)
358 357

  
359 358

  
359
def ChangeMasterNetmask(netmask):
360
  """Change the netmask of the master IP.
361

  
362
  """
363
  master_netdev, master_ip, old_netmask, _, _ = GetMasterInfo()
364
  if old_netmask == netmask:
365
    return
366

  
367
  result = utils.RunCmd([constants.IP_COMMAND_PATH, "address", "add",
368
                         "%s/%s" % (master_ip, netmask),
369
                         "dev", master_netdev, "label",
370
                         "%s:0" % master_netdev])
371
  if result.failed:
372
    _Fail("Could not change the master IP netmask")
373

  
374
  result = utils.RunCmd([constants.IP_COMMAND_PATH, "address", "del",
375
                         "%s/%s" % (master_ip, old_netmask),
376
                         "dev", master_netdev, "label",
377
                         "%s:0" % master_netdev])
378
  if result.failed:
379
    _Fail("Could not change the master IP netmask")
380

  
381

  
360 382
def EtcHostsModify(mode, host, ip):
361 383
  """Modify a host entry in /etc/hosts.
362 384

  

Also available in: Unified diff