Revision d0c8c01d lib/backend.py

b/lib/backend.py
421 421
                  result.cmd, result.exit_code, result.output)
422 422

  
423 423
  # Raise a custom exception (handled in ganeti-noded)
424
  raise errors.QuitGanetiException(True, 'Shutdown scheduled')
424
  raise errors.QuitGanetiException(True, "Shutdown scheduled")
425 425

  
426 426

  
427 427
def GetNodeInfo(vgname, hypervisor_type):
......
449 449
    if vginfo:
450 450
      vg_free = int(round(vginfo[0][0], 0))
451 451
      vg_size = int(round(vginfo[0][1], 0))
452
    outputarray['vg_size'] = vg_size
453
    outputarray['vg_free'] = vg_free
452
    outputarray["vg_size"] = vg_size
453
    outputarray["vg_free"] = vg_free
454 454

  
455 455
  if hypervisor_type is not None:
456 456
    hyper = hypervisor.GetHypervisor(hypervisor_type)
......
707 707

  
708 708
  """
709 709
  lvs = {}
710
  sep = '|'
710
  sep = "|"
711 711
  if not vg_names:
712 712
    vg_names = []
713 713
  result = utils.RunCmd(["lvs", "--noheadings", "--units=m", "--nosuffix",
......
723 723
      logging.error("Invalid line returned from lvs output: '%s'", line)
724 724
      continue
725 725
    vg_name, name, size, attr = match.groups()
726
    inactive = attr[4] == '-'
727
    online = attr[5] == 'o'
728
    virtual = attr[0] == 'v'
726
    inactive = attr[4] == "-"
727
    online = attr[5] == "o"
728
    virtual = attr[0] == "v"
729 729
    if virtual:
730 730
      # we don't want to report such volumes as existing, since they
731 731
      # don't really hold data
......
773 773
          result.output)
774 774

  
775 775
  def parse_dev(dev):
776
    return dev.split('(')[0]
776
    return dev.split("(")[0]
777 777

  
778 778
  def handle_dev(dev):
779 779
    return [parse_dev(x) for x in dev.split(",")]
780 780

  
781 781
  def map_line(line):
782 782
    line = [v.strip() for v in line]
783
    return [{'name': line[0], 'size': line[1],
784
             'dev': dev, 'vg': line[3]} for dev in handle_dev(line[2])]
783
    return [{"name": line[0], "size": line[1],
784
             "dev": dev, "vg": line[3]} for dev in handle_dev(line[2])]
785 785

  
786 786
  all_devs = []
787 787
  for line in result.stdout.splitlines():
788
    if line.count('|') >= 3:
789
      all_devs.extend(map_line(line.split('|')))
788
    if line.count("|") >= 3:
789
      all_devs.extend(map_line(line.split("|")))
790 790
    else:
791 791
      logging.warning("Strange line in the output from lvs: '%s'", line)
792 792
  return all_devs
......
851 851

  
852 852
  iinfo = hypervisor.GetHypervisor(hname).GetInstanceInfo(instance)
853 853
  if iinfo is not None:
854
    output['memory'] = iinfo[2]
855
    output['state'] = iinfo[4]
856
    output['time'] = iinfo[5]
854
    output["memory"] = iinfo[2]
855
    output["state"] = iinfo[4]
856
    output["time"] = iinfo[5]
857 857

  
858 858
  return output
859 859

  
......
907 907
    if iinfo:
908 908
      for name, _, memory, vcpus, state, times in iinfo:
909 909
        value = {
910
          'memory': memory,
911
          'vcpus': vcpus,
912
          'state': state,
913
          'time': times,
910
          "memory": memory,
911
          "vcpus": vcpus,
912
          "state": state,
913
          "time": times,
914 914
          }
915 915
        if name in output:
916 916
          # we only check static parameters, like memory and vcpus,
917 917
          # and not state and time which can change between the
918 918
          # invocations of the different hypervisors
919
          for key in 'memory', 'vcpus':
919
          for key in "memory", "vcpus":
920 920
            if value[key] != output[name][key]:
921 921
              _Fail("Instance %s is running twice"
922 922
                    " with different parameters", name)
......
961 961

  
962 962
  create_env = OSEnvironment(instance, inst_os, debug)
963 963
  if reinstall:
964
    create_env['INSTANCE_REINSTALL'] = "1"
964
    create_env["INSTANCE_REINSTALL"] = "1"
965 965

  
966 966
  logfile = _InstanceLogName("add", instance.os, instance.name)
967 967

  
......
993 993
  inst_os = OSFromDisk(instance.os)
994 994

  
995 995
  rename_env = OSEnvironment(instance, inst_os, debug)
996
  rename_env['OLD_INSTANCE_NAME'] = old_name
996
  rename_env["OLD_INSTANCE_NAME"] = old_name
997 997

  
998 998
  logfile = _InstanceLogName("rename", instance.os,
999 999
                             "%s-%s" % (old_name, instance.name))
......
1331 1331
      it's not required to return anything.
1332 1332

  
1333 1333
  """
1334
  # TODO: remove the obsolete 'size' argument
1334
  # TODO: remove the obsolete "size" argument
1335 1335
  # pylint: disable-msg=W0613
1336 1336
  clist = []
1337 1337
  if disk.children:
......
1831 1831
                                                   destcmd)
1832 1832

  
1833 1833
  # all commands have been checked, so we're safe to combine them
1834
  command = '|'.join([expcmd, utils.ShellQuoteArgs(remotecmd)])
1834
  command = "|".join([expcmd, utils.ShellQuoteArgs(remotecmd)])
1835 1835

  
1836 1836
  result = utils.RunCmd(["bash", "-c", command])
1837 1837

  
......
1925 1925
  @param err: the exception to format
1926 1926

  
1927 1927
  """
1928
  if hasattr(err, 'errno'):
1928
  if hasattr(err, "errno"):
1929 1929
    detail = errno.errorcode[err.errno]
1930 1930
  else:
1931 1931
    detail = str(err)
......
2055 2055
  os_files = dict.fromkeys(constants.OS_SCRIPTS)
2056 2056

  
2057 2057
  if max(api_versions) >= constants.OS_API_V15:
2058
    os_files[constants.OS_VARIANTS_FILE] = ''
2058
    os_files[constants.OS_VARIANTS_FILE] = ""
2059 2059

  
2060 2060
  if max(api_versions) >= constants.OS_API_V20:
2061
    os_files[constants.OS_PARAMETERS_FILE] = ''
2061
    os_files[constants.OS_PARAMETERS_FILE] = ""
2062 2062
  else:
2063 2063
    del os_files[constants.OS_SCRIPT_VERIFY]
2064 2064

  
......
2161 2161
  result = {}
2162 2162
  api_version = \
2163 2163
    max(constants.OS_API_VERSIONS.intersection(inst_os.api_versions))
2164
  result['OS_API_VERSION'] = '%d' % api_version
2165
  result['OS_NAME'] = inst_os.name
2166
  result['DEBUG_LEVEL'] = '%d' % debug
2164
  result["OS_API_VERSION"] = "%d" % api_version
2165
  result["OS_NAME"] = inst_os.name
2166
  result["DEBUG_LEVEL"] = "%d" % debug
2167 2167

  
2168 2168
  # OS variants
2169 2169
  if api_version >= constants.OS_API_V15:
2170 2170
    variant = objects.OS.GetVariant(os_name)
2171 2171
    if not variant:
2172 2172
      variant = inst_os.supported_variants[0]
2173
    result['OS_VARIANT'] = variant
2173
    result["OS_VARIANT"] = variant
2174 2174

  
2175 2175
  # OS params
2176 2176
  for pname, pvalue in os_params.items():
2177
    result['OSP_%s' % pname.upper()] = pvalue
2177
    result["OSP_%s" % pname.upper()] = pvalue
2178 2178

  
2179 2179
  return result
2180 2180

  
......
2199 2199
  for attr in ["name", "os", "uuid", "ctime", "mtime", "primary_node"]:
2200 2200
    result["INSTANCE_%s" % attr.upper()] = str(getattr(instance, attr))
2201 2201

  
2202
  result['HYPERVISOR'] = instance.hypervisor
2203
  result['DISK_COUNT'] = '%d' % len(instance.disks)
2204
  result['NIC_COUNT'] = '%d' % len(instance.nics)
2205
  result['INSTANCE_SECONDARY_NODES'] = \
2206
      ('%s' % " ".join(instance.secondary_nodes))
2202
  result["HYPERVISOR"] = instance.hypervisor
2203
  result["DISK_COUNT"] = "%d" % len(instance.disks)
2204
  result["NIC_COUNT"] = "%d" % len(instance.nics)
2205
  result["INSTANCE_SECONDARY_NODES"] = \
2206
      ("%s" % " ".join(instance.secondary_nodes))
2207 2207

  
2208 2208
  # Disks
2209 2209
  for idx, disk in enumerate(instance.disks):
2210 2210
    real_disk = _OpenRealBD(disk)
2211
    result['DISK_%d_PATH' % idx] = real_disk.dev_path
2212
    result['DISK_%d_ACCESS' % idx] = disk.mode
2211
    result["DISK_%d_PATH" % idx] = real_disk.dev_path
2212
    result["DISK_%d_ACCESS" % idx] = disk.mode
2213 2213
    if constants.HV_DISK_TYPE in instance.hvparams:
2214
      result['DISK_%d_FRONTEND_TYPE' % idx] = \
2214
      result["DISK_%d_FRONTEND_TYPE" % idx] = \
2215 2215
        instance.hvparams[constants.HV_DISK_TYPE]
2216 2216
    if disk.dev_type in constants.LDS_BLOCK:
2217
      result['DISK_%d_BACKEND_TYPE' % idx] = 'block'
2217
      result["DISK_%d_BACKEND_TYPE" % idx] = "block"
2218 2218
    elif disk.dev_type == constants.LD_FILE:
2219
      result['DISK_%d_BACKEND_TYPE' % idx] = \
2220
        'file:%s' % disk.physical_id[0]
2219
      result["DISK_%d_BACKEND_TYPE" % idx] = \
2220
        "file:%s" % disk.physical_id[0]
2221 2221

  
2222 2222
  # NICs
2223 2223
  for idx, nic in enumerate(instance.nics):
2224
    result['NIC_%d_MAC' % idx] = nic.mac
2224
    result["NIC_%d_MAC" % idx] = nic.mac
2225 2225
    if nic.ip:
2226
      result['NIC_%d_IP' % idx] = nic.ip
2227
    result['NIC_%d_MODE' % idx] = nic.nicparams[constants.NIC_MODE]
2226
      result["NIC_%d_IP" % idx] = nic.ip
2227
    result["NIC_%d_MODE" % idx] = nic.nicparams[constants.NIC_MODE]
2228 2228
    if nic.nicparams[constants.NIC_MODE] == constants.NIC_MODE_BRIDGED:
2229
      result['NIC_%d_BRIDGE' % idx] = nic.nicparams[constants.NIC_LINK]
2229
      result["NIC_%d_BRIDGE" % idx] = nic.nicparams[constants.NIC_LINK]
2230 2230
    if nic.nicparams[constants.NIC_LINK]:
2231
      result['NIC_%d_LINK' % idx] = nic.nicparams[constants.NIC_LINK]
2231
      result["NIC_%d_LINK" % idx] = nic.nicparams[constants.NIC_LINK]
2232 2232
    if constants.HV_NIC_TYPE in instance.hvparams:
2233
      result['NIC_%d_FRONTEND_TYPE' % idx] = \
2233
      result["NIC_%d_FRONTEND_TYPE" % idx] = \
2234 2234
        instance.hvparams[constants.HV_NIC_TYPE]
2235 2235

  
2236 2236
  # HV/BE params
......
2318 2318
  config = objects.SerializableConfigParser()
2319 2319

  
2320 2320
  config.add_section(constants.INISECT_EXP)
2321
  config.set(constants.INISECT_EXP, 'version', '0')
2322
  config.set(constants.INISECT_EXP, 'timestamp', '%d' % int(time.time()))
2323
  config.set(constants.INISECT_EXP, 'source', instance.primary_node)
2324
  config.set(constants.INISECT_EXP, 'os', instance.os)
2321
  config.set(constants.INISECT_EXP, "version", "0")
2322
  config.set(constants.INISECT_EXP, "timestamp", "%d" % int(time.time()))
2323
  config.set(constants.INISECT_EXP, "source", instance.primary_node)
2324
  config.set(constants.INISECT_EXP, "os", instance.os)
2325 2325
  config.set(constants.INISECT_EXP, "compression", "none")
2326 2326

  
2327 2327
  config.add_section(constants.INISECT_INS)
2328
  config.set(constants.INISECT_INS, 'name', instance.name)
2329
  config.set(constants.INISECT_INS, 'memory', '%d' %
2328
  config.set(constants.INISECT_INS, "name", instance.name)
2329
  config.set(constants.INISECT_INS, "memory", "%d" %
2330 2330
             instance.beparams[constants.BE_MEMORY])
2331
  config.set(constants.INISECT_INS, 'vcpus', '%d' %
2331
  config.set(constants.INISECT_INS, "vcpus", "%d" %
2332 2332
             instance.beparams[constants.BE_VCPUS])
2333
  config.set(constants.INISECT_INS, 'disk_template', instance.disk_template)
2334
  config.set(constants.INISECT_INS, 'hypervisor', instance.hypervisor)
2333
  config.set(constants.INISECT_INS, "disk_template", instance.disk_template)
2334
  config.set(constants.INISECT_INS, "hypervisor", instance.hypervisor)
2335 2335
  config.set(constants.INISECT_INS, "tags", " ".join(instance.GetTags()))
2336 2336

  
2337 2337
  nic_total = 0
2338 2338
  for nic_count, nic in enumerate(instance.nics):
2339 2339
    nic_total += 1
2340
    config.set(constants.INISECT_INS, 'nic%d_mac' %
2341
               nic_count, '%s' % nic.mac)
2342
    config.set(constants.INISECT_INS, 'nic%d_ip' % nic_count, '%s' % nic.ip)
2340
    config.set(constants.INISECT_INS, "nic%d_mac" %
2341
               nic_count, "%s" % nic.mac)
2342
    config.set(constants.INISECT_INS, "nic%d_ip" % nic_count, "%s" % nic.ip)
2343 2343
    for param in constants.NICS_PARAMETER_TYPES:
2344
      config.set(constants.INISECT_INS, 'nic%d_%s' % (nic_count, param),
2345
                 '%s' % nic.nicparams.get(param, None))
2344
      config.set(constants.INISECT_INS, "nic%d_%s" % (nic_count, param),
2345
                 "%s" % nic.nicparams.get(param, None))
2346 2346
  # TODO: redundant: on load can read nics until it doesn't exist
2347
  config.set(constants.INISECT_INS, 'nic_count' , '%d' % nic_total)
2347
  config.set(constants.INISECT_INS, "nic_count" , "%d" % nic_total)
2348 2348

  
2349 2349
  disk_total = 0
2350 2350
  for disk_count, disk in enumerate(snap_disks):
2351 2351
    if disk:
2352 2352
      disk_total += 1
2353
      config.set(constants.INISECT_INS, 'disk%d_ivname' % disk_count,
2354
                 ('%s' % disk.iv_name))
2355
      config.set(constants.INISECT_INS, 'disk%d_dump' % disk_count,
2356
                 ('%s' % disk.physical_id[1]))
2357
      config.set(constants.INISECT_INS, 'disk%d_size' % disk_count,
2358
                 ('%d' % disk.size))
2359

  
2360
  config.set(constants.INISECT_INS, 'disk_count' , '%d' % disk_total)
2353
      config.set(constants.INISECT_INS, "disk%d_ivname" % disk_count,
2354
                 ("%s" % disk.iv_name))
2355
      config.set(constants.INISECT_INS, "disk%d_dump" % disk_count,
2356
                 ("%s" % disk.physical_id[1]))
2357
      config.set(constants.INISECT_INS, "disk%d_size" % disk_count,
2358
                 ("%d" % disk.size))
2359

  
2360
  config.set(constants.INISECT_INS, "disk_count" , "%d" % disk_total)
2361 2361

  
2362 2362
  # New-style hypervisor/backend parameters
2363 2363

  

Also available in: Unified diff