Revision 4ae49c63

b/Makefile.am
361 361
	tools/cfgshell \
362 362
	tools/cfgupgrade \
363 363
	tools/cfgupgrade12 \
364
	tools/cfgupgrade_grnet \
365
	tools/upgrade-kvm-runtime \
364 366
	tools/cluster-merge \
365 367
	tools/lvmstrap \
366 368
	tools/move-instance \
b/tools/cfgupgrade_grnet
1
#!/usr/bin/env python
2

  
3
import os
4
import sys
5

  
6
from ganeti import config
7

  
8

  
9
cfg = config.ConfigWriter(cfg_file=sys.argv[1], offline=True)
10

  
11
if "kvm" in cfg._config_data.cluster.hvparams:
12
  kvm = cfg._config_data.cluster.hvparams["kvm"]
13

  
14
  if "run_as" in kvm:
15
    if kvm["run_as"]:
16
      print "Found run_as HV parameter, replacing with 'user' security model"
17
      kvm["security_model"] = "user"
18
      kvm["security_domain"] = kvm["run_as"]
19
    else:
20
      print "Found empty run_as KVM HV parameter, removing"
21
    del kvm["run_as"]
22

  
23
instances = cfg._config_data.instances
24

  
25
for name in instances:
26
  instance = instances[name]
27
  if "run_as" in instance.hvparams:
28
    if instance.hvparams["run_as"]:
29
      print "Found old 'run_as' parameter, converting to 'user' security model"
30
      instance.hvparams["security_model"] = "user"
31
      instance.hvparams["security_domain"] = instance.hvparams["run_as"]
32
    else:
33
      print "Found empty run_as KVM HV parameter, removing"
34
    del instance.hvparams["run_as"]
35

  
36
  if instance.disk_template != "blockdev":
37
    continue
38

  
39
  for disk in instance.disks:
40
    if len(disk.logical_id) == 3:
41
      print "Found old blockdev configuration on instance %s, fixing" % name
42
      lid = disk.logical_id[2]
43
      if not lid.startswith("/dev/disk/"):
44
        lid = os.path.join("/dev/disk", lid)
45

  
46
      disk.logical_id = ["manual", lid]
47
      try:
48
        disk.physical_id = ["manual", lid]
49
      except AttributeError:
50
        pass
51

  
52
print "Verifying configuration"
53
cfg.VerifyConfig()
54

  
55
print "Writing config"
56
cfg._WriteConfig()
b/tools/upgrade-kvm-runtime
1
#!/usr/bin/env python
2

  
3
import os
4
import sys
5

  
6
from glob import glob
7

  
8
from ganeti import constants
9
from ganeti import serializer
10
from ganeti import utils
11
from ganeti.hypervisor.hv_kvm import KVMHypervisor
12

  
13
if len(sys.argv) == 1:
14
  root = KVMHypervisor._CONF_DIR
15
else:
16
  root = sys.argv[1]
17

  
18
for path in glob(os.path.join(root, "*.runtime")):
19
  try:
20
    data = utils.ReadFile(path)
21
  except EnvironmentError, e:
22
    print "Failed to read file %s: %s" % (path, str(e))
23
    continue
24

  
25
  try:
26
    kvm_cmd, nics, hvparams = serializer.Load(data)
27
  except Exception, e:
28
    print "Failed to parse file %s: %s" % (path, str(e))
29
    continue
30

  
31
  # Replace the run_as parameter or remove it completely
32
  if "run_as" in hvparams:
33
    if hvparams["run_as"]:
34
      print "Replacing 'run_as' in %s with 'security_model' = 'user'" % path
35
      hvparams["security_model"] = "user"
36
      hvparams["security_domain"] = hvparams["run_as"]
37
    else:
38
      print "Removing 'run_as' from %s" % path
39

  
40
    del hvparams["run_as"]
41

  
42
  try:
43
    utils.WriteFile(path,
44
                    data=serializer.Dump((kvm_cmd, nics, hvparams)),
45
                    backup=True)
46
  except EnvironmentError, e:
47
    print "Failed to write %s" % path

Also available in: Unified diff