Rename the device type constants
[ganeti-local] / lib / config.py
index 9884d92..d7a1e9f 100644 (file)
@@ -269,6 +269,11 @@ class ConfigWriter:
           ports[net_port] = []
         ports[net_port].append((instance.name, "network port"))
 
+      # instance disk verify
+      for idx, disk in enumerate(instance.disks):
+        result.extend(["instance '%s' disk %d error: %s" %
+                       (instance.name, idx, msg) for msg in disk.Verify()])
+
     # cluster-wide pool of free ports
     for free_port in data.cluster.tcpudp_port_pool:
       if free_port not in ports:
@@ -441,14 +446,14 @@ class ConfigWriter:
 
     duplicates = []
     my_dict = dict((node, {}) for node in self._config_data.nodes)
+    for instance in self._config_data.instances.itervalues():
+      for disk in instance.disks:
+        duplicates.extend(_AppendUsedPorts(instance.name, disk, my_dict))
     for (node, minor), instance in self._temporary_drbds.iteritems():
-      if minor in my_dict[node]:
+      if minor in my_dict[node] and my_dict[node][minor] != instance:
         duplicates.append((node, minor, instance, my_dict[node][minor]))
       else:
         my_dict[node][minor] = instance
-    for instance in self._config_data.instances.itervalues():
-      for disk in instance.disks:
-        duplicates.extend(_AppendUsedPorts(instance.name, disk, my_dict))
     return my_dict, duplicates
 
   @locking.ssynchronized(_config_lock)
@@ -641,6 +646,7 @@ class ConfigWriter:
 
     instance.serial_no = 1
     self._config_data.instances[instance.name] = instance
+    self._config_data.cluster.serial_no += 1
     self._UnlockedReleaseDRBDMinors(instance.name)
     self._WriteConfig()
 
@@ -675,6 +681,7 @@ class ConfigWriter:
     if instance_name not in self._config_data.instances:
       raise errors.ConfigurationError("Unknown instance '%s'" % instance_name)
     del self._config_data.instances[instance_name]
+    self._config_data.cluster.serial_no += 1
     self._WriteConfig()
 
   @locking.ssynchronized(_config_lock)
@@ -1059,10 +1066,13 @@ class ConfigWriter:
 
     """
     fn = "\n".join
+    instance_names = utils.NiceSort(self._UnlockedGetInstanceList())
     node_names = utils.NiceSort(self._UnlockedGetNodeList())
     node_info = [self._UnlockedGetNodeInfo(name) for name in node_names]
 
+    instance_data = fn(instance_names)
     off_data = fn(node.name for node in node_info if node.offline)
+    on_data = fn(node.name for node in node_info if not node.offline)
     mc_data = fn(node.name for node in node_info if node.master_candidate)
     node_data = fn(node_names)
 
@@ -1076,6 +1086,8 @@ class ConfigWriter:
       constants.SS_MASTER_NODE: cluster.master_node,
       constants.SS_NODE_LIST: node_data,
       constants.SS_OFFLINE_NODES: off_data,
+      constants.SS_ONLINE_NODES: on_data,
+      constants.SS_INSTANCE_LIST: instance_data,
       constants.SS_RELEASE_VERSION: constants.RELEASE_VERSION,
       }