- Jun 27, 2008
-
-
Guido Trotter authored
As we can't use ssh.VerifyNodeHostname directly, we'll set up a mini node-verify to do checking between the master and the new node. In the future networking checks, or more nodes, can be added as well. Reviewed-by: iustinp
-
Guido Trotter authored
Since we're inside a LU we have access to self.sstore. No need to use ss, which separate instantiation will disappear in a few patches! ;) Reviewed-by: iustinp
-
Guido Trotter authored
We used to scp all the ssconf files, and the vnc password file to the new node. With this patch we use the upload_file rpc, specifying just the new node as a destination. All the files previously copied by scp are already allowed by the backend. Reviewed-by: iustinp
-
Guido Trotter authored
What could possibly go wrong? Reviewed-by: iustinp
-
Guido Trotter authored
Two LUs are using RunCmd to call fping, in order to check for an IP presence on the network. Substituting it with TcpPing will get rid of it, which makes it not break in the new world order, where the master cannot fork. Reviewed-by: iustinp
-
Guido Trotter authored
Reviewed-by: iustinp
-
Guido Trotter authored
Rather than packing all the arguments in a tuple, let's pass them plainly. The superclass won't complain. Reviewed-by: iustinp
-
Michael Hanselmann authored
Having a timestamp on log messages is very useful. The default format string doesn't include a timestamp. Reviewed-by: ultrotter
-
- Jun 26, 2008
-
-
Guido Trotter authored
Even in 1.2 this behaviour is broken, as the rpc call will remove the ssh keys before we get a chance to log in. Now the rpc takes care of shutting down the node daemon as well, so we definitely can avoid this. This makes the LURemoveNode operation work again with the threaded master daemon. Reviewed-by: iustinp
-
Guido Trotter authored
This exception does not signal an error but serves the purpose of making the ganeti daemon shut down after handling a request. Currently it will be used by ganeti-noded but in the future ganeti-masterd might make use of it as well. Its usage is documented in the docstring. Reviewed-by: iustinp
-
Guido Trotter authored
Reviewed-by: iustinp
-
Guido Trotter authored
There is no point in checking whether the cluster VNC password file exists as a prerequisite for AddNode, considering the check happens on the master node, not the target one. Removing this check. Reviewed-by: iustinp
-
Guido Trotter authored
Reviewed-by: iustinp
-
- Jun 25, 2008
-
-
Michael Hanselmann authored
Apparently there were still some leftovers. While removing an instance, I got the message "unhandled exception 'module' object has no attribute 'LD_MD_R1'". Reviewed-by: iustinp
-
Iustin Pop authored
Currently, when seeing if a LV is degraded or not (i.e. virtual volume), we first attach to the device (which does an lvdisplay), then do a lvs in order to display the lv_attr. This generates two external commands to do (almost) the same thing. This patch changes the Attach() method for LVs to call lvs and display both the major/minor (needed for attach) and the lv_status (needed for GetSyncStatus). Thus, later in GetSyncStatus, we don't need to run lvs again, and instead just return the value computed in Attach(). Reviewed-by: imsnah
-
- Jun 23, 2008
-
-
Michael Hanselmann authored
Reviewed-by: iustinp
-
Iustin Pop authored
Since the disabling of forking in the master daemon, the two ssh-based subcommands were not working anymore. However, there is no need at all for the commands to be run from the master daemon (permissions to read the cluster private ssh key notwithstanding), they can be run directly from the command line utilities. The patch removes the two opcodes OpRunClusterCommand and OpClusterCopyFile (and their associated LUs) and changes the code in ‘gnt-cluster’ to query the list of nodes and run directly the SshRunner over the list. As such, all forking is done from the gnt-cluster script, and the commands are working again. Reviewed-by: imsnah
-
Michael Hanselmann authored
Reviewed-by: ultrotter
-
Michael Hanselmann authored
In cfgupgrade, we need to extract parts of and build new version numbers. Reviewed-by: iustinp
-
Michael Hanselmann authored
cfgupgrade will not work with relative paths at all, but rather get them from constants.py. Reviewed-by: iustinp
-
- Jun 22, 2008
-
-
Iustin Pop authored
Currently there isn't any easy way to list all nodes or instance and their tags; you have to query each node in turn, or list all the tags via something like “gnt-cluster search-tags '.*'”. Of course, this is not optimal. The patch adds a new fields to “gnt-instance list” and “gnt-node list” called ‘tags’, that will list the tags of the object in comma-separated form. This field will be empty if there are no tags (when using a separator this output can still be parsed by other scripts). At opcode level, there is a new fields called ‘tags’ that returns a (python) list of the object tags. Reviewed-by: ultrotter
-
- Jun 21, 2008
-
-
Iustin Pop authored
Currently the generic handling of ganeti errors in cli.py (GenericMain and FormatError) only handles the core ganeti errors, and not the client protocol errors (which live in a separate hierarchy). This patch adds handling of luxi errors too, and also adds another luxi error for the case when the master is not running. This gives us a nice: gnta1:~# gnt-node list Cannot communicate with the master daemon. Is it running and listening on '/var/run/ganeti-master.sock'? error message instead of a traceback. Reviewed-by: amishchenko
-
- Jun 20, 2008
-
-
Iustin Pop authored
This patch adds rpc layer calls (in rpc.py and the equivalent in ganeti-noded) to close a list of block devices, and the wrapper in backend.py that takes a list of Disk objects, identifies them and returns correctly formatted results. The reason why this very basic call was missing until now from the rpc layer is that we usually don't care about device closes (though we should, and will do so in the future) as only drbd has a meaningful Close() operation; right now we directly do Shutdown(). The patch is clean enough that it's actually independent of the live migration implementation. Reviewed-by: imsnah
-
- Jun 19, 2008
-
-
Michael Hanselmann authored
This change allows us to use cleaner dependencies between directories. The build system is basically rewritten in large parts and may contain bugs. Reviewed-by: iustinp
-
- Jun 18, 2008
-
-
Iustin Pop authored
Currently, compute the status of a drbd8 device in GetSyncStatus and return only the values that we need (and fit in the framework of GetSyncStatus). However, the full status details are useful (and needed) in other places, so the patch attempts to improve this situation. We abstract the status of a device outside in a separate class, that knows how to parse contents from /proc/drbd and set easily accessible attributes. We then simplify the GetSyncStatus to use this and return the values that it needs, and add a separate method that returns the full status object. The move to a separate class cleans up a little bit the old sync-progress computation from GetSyncStatus, but it's still many regexes. The patch also adds unittests for a few statuses, and modifies one BaseDRBD call to accept a custom filename instead of '/proc/drbd' to ease unittests. Reviewed-by: imsnah
-
Michael Hanselmann authored
Reviewed-by: iustinp
-
Michael Hanselmann authored
- Make closing file optional: Required by ganeti-watcher to keep file open after writing it. Changes return value of utils.WriteFile if "close" parameter evaluates to True. - Pre- and post-write functions: Can be used to lock files. This will be used by ganeti-watcher to lock the temporary file before renaming. Reviewed-by: iustinp
-
Michael Hanselmann authored
- Log timestamp for all messages - Write everything to logfile and optionally to stderr - Log messages are no longer buffered, allowing a user to see progress Reviewed-by: ultrotter
-
Michael Hanselmann authored
Also fix the regular expression to not remove newlines. The simplejson module puts whitespace at line endings when using indentation. Remove unnecessary import of ConfigParser module. Reviewed-by: ultrotter
-
- Jun 17, 2008
-
-
Iustin Pop authored
Currently, the way to customize a DRBD disk from (node name 1, node name 2, port) to (ip1, port, ip2, port) is to use the ConfigWriter method SetDiskID. However, since this needs a ConfigWriter object, it can be run only on the master, and therefore disk object can't be passed to more than one node unchanged. This, coupled with the rpc layer limitation that all nodes in a multi-node call receive the same arguments, prevent any kind of multi-node operation that has disks as an argument. This patch takes the SetDiskID method from ConfigWriter and ports it to the disk object itself, and instead of the full node configuration it uses a simple {node_name: replication_ip} mapping for all the nodes involved in the disk tree (currently we only pass primary and secondary node since we don't support nested drbd devices). This allows us to send disks to both the primary and secondary nodes at once and perform synchronized drbd activation on primary/secondary nodes. Note that while for the 1.2 branch this will not change old methods, it is worth to investigate and possible replace all such calls on the master to the nodes themselves for the 2.0 branch. Reviewed-by: ultrotter
-
Iustin Pop authored
There is a mistake in handling grow-disk for an invalid disk. This patch fixes it. Reviewed-by: imsnah
-
Iustin Pop authored
This patch adds a new opcode and LU for growing an instance's disk. The opcode allows growing only one disk at time, and will throw an error if the operation fails midway (e.g. on the primary node after it has been increased on the secondary node). As such, it might actually leave different sized LVs on different nodes, but this will not create problems. Reviewed-by: imsnah
-
Iustin Pop authored
This patch adds a method that implements updating of a disk (object.Disk) size, together with its children. While this will not track the exact disk size, it allows at least an approximate size to be recorded in the configuration (and queried). Reviewed-by: imsnah
-
Iustin Pop authored
This simple patch exposes the block device grow operation at the rpc layer. It does not increase the protocol version as it has been recently changed by the live failover rpc call. Reviewed-by: imsnah
-
- Jun 16, 2008
-
-
Iustin Pop authored
This patch adds a wrapper over the block device grow operation that converts the input and output parameters as needed for the rpc layer. Reviewed-by: imsnah
-
Iustin Pop authored
This patch implements disk resize at the bdev level for the LVM and DRBD8 disk types. It is not implemented for DRBD7 and MD since the way MD works with its underlaying devices makes it harder and this combination is also deprecated. The LVM resize operation is tried three times, with different allocation policies: - contiguous first, since this is best for allocation purposes (it won't fragment too much the PV) - cling, which is supported only by more recent LVM versions, will try to place the new extents on the same PV as the rest of the LV - and finally normal, which is the default Reviewed-by: imsnah
-
Guido Trotter authored
Before we used to be able to update SimpleStore by just calling SetKey, this feature is now moved to an external class, which inherits from it. In this patch the new WritableSimpleStore class is also put to use, in the LUs that need it. Rather than making each LU instantiate it, we have a new LogicalUnit flag REQ_WSSTORE which defaults to False, but when declared to be True asks the LogicalUnit to be initialized with a writeable version of the SimpleStore. LUMasterFailover and LURenameCluster are then changed to use it. InitCluster is also changed to instantiate a WritableSimpleStore, rather than a normal one. Reviewed-by: imsnah
-
Iustin Pop authored
This patch adds the migration rpc call and its implementation in the backend. The patch does not deal with the correct activation of disks. Because of the new RPC, the protocol version is increased. Reviewed-by: imsnah
-
Iustin Pop authored
This is just the hypervisor-level migration (e.g. “xm migrate”) not the whole node coordination work. Reviewed-by: ultrotter
-
- Jun 15, 2008
-
-
Guido Trotter authored
When replacing disks or evacuating nodes with instances administratively down ganeti fails because the instance disks are not active. This patch activates them, performs the replacement, and shuts them down again. Changing this also fixes the same issue on gnt-node evacuate. Reviewed-by: iustinp
-