- Feb 08, 2008
-
-
Guido Trotter authored
Adding a locking.py file for the ganeti locking library. Its first component is the implementation of a non-recursive blocking shared lock complete with a testing library. Reviewed-by: imsnah, iustinp
-
- Feb 05, 2008
-
-
Iustin Pop authored
This can be used for testing purposes. Reviewed-by: ultrotter,imsnah
-
Iustin Pop authored
This patch is a first step in reducing the chance of causing DRBD activation failures when the primary node has not-perfect data. This issue is more seen with DRBD8, which has an 'outdate' state (in which it can get more often). But it can (and before this patch, usually will) happen with both 7 and 8 in the case the primary has data to sync. The error comes from the fact that, before this patch, we activate the primary DRBD device and immediately (i.e. as soon as we can run another shell command) we try to make it primary. This might fail - since the primary knows it has some data to catch up to - but we ignored this error condition. The failure was visible later, in either md failing to activate over a read-only storage or by instance failing to start. The patch has two parts: one affecting bdev.py, which changes failures in BlockDev.Open() from returning False to raising errors.BlockDeviceError; noone (except a generic method inside bdev.py) checked this return value and we logged it but the master didn't know about it; now all classes raise errors from Open if they have a failure. The other part, affecting cmdlib.py, changes the activation sequence from: - activate on primary node as primary and secondary as secondary, in whatever order a function returns the nodes to the following: - activate all drives as secondaries, on both the primary and the secondary nodes of the instance - after that, on the primary node, re-activate the device stack as primary This is in order to give the chance to DRBD to connect and make the handshake. As noted in the comments, this just increases the chances of a handshake/connect, not fixing entirely the problem. However, it is a good first step and it passes all tests of starting with stale (either full or partial) primaries, with both drbd 7 and 8, and also passes a burnin. Note that the patch might make the device activation a little bit slower, but it is a reasonable trade-off. Reviewed-by: imsnah
-
- Feb 04, 2008
-
-
Iustin Pop authored
Reviewed-by: imsnah
-
Iustin Pop authored
This patch completes the change introduced in r566 (trunk) and r568 (branch-1.2). Reviewed-by: imsnah
-
- Jan 31, 2008
-
-
Guido Trotter authored
Currently just the bridge and ip address are passed. Add an environment variable for the mac address. Reviewed-by: iustinp
-
Alexander Schreiber authored
Reviewed-by: imsnah
-
- Jan 30, 2008
-
-
Guido Trotter authored
gnt-backup export used to export the ip and mac of each nic, but not which bridge it was connected to. Adding this information. Reviewed-by: iustinp
-
- Jan 28, 2008
-
-
Iustin Pop authored
The gnt-node and gnt-instance list commands have a customizable list of output fields, but the list is not up to date (in the man page) and not easily understandable from the ‘--help’ output. This patch updates the man pages and adds the available fields and default fields in the ‘--help’ output, as part of the description. Example: Usage ===== gnt-node list Lists the nodes in the cluster. The available fields are (see the man page for details): name, pinst_cnt, pinst_list, sinst_cnt, sinst_list, pip, sip, dtotal, dfree, mtotal, mnode, mfree, bootid. The default field list is (in order): name, dtotal, dfree, mtotal, mnode, mfree, pinst_cnt, sinst_cnt. Reviewed-by: imsnah,ultrotter
-
Iustin Pop authored
Reviewed-by: ultrotter
-
Iustin Pop authored
The new QA tests for instance modify uncovered a bug in the modify initrd operation when setting the initrd to none. Reviewed-by: imsnah
-
- Jan 25, 2008
-
-
Guido Trotter authored
It was wrongly deleted when converting if a in dict.keys(): to if a in dict: Reviewed-by: imsnah
-
- Jan 21, 2008
-
-
Guido Trotter authored
Passing a new aliases dict to generic main we can easily support aliases for compatibility reasons or simply useability. Reviewed-by: iustinp
-
Iustin Pop authored
LVM code sometimes adds an extra separator at the end of the field list. Make the code strip it if exists. Reviewed-by: imsnah
-
- Jan 20, 2008
-
-
Iustin Pop authored
Currently, the function backend._GetVGInfo only checks for errors via the exit code of the 'vgs' command. However, there are other ways of failure so we need to also check for valid output before parsing. Furthermore, the checks on the exit code were reported via a 'raise LVMError', however this exception is not handled anywhere and so the remote caller will not get reasonable data. This patch does two main things: - change the calling protocol for this function to not raise an error, and instead return the same type of argument always (dict) with the requested keys but values changed into None; this allows in the parent rpc call node_info to have valid memory information but "error" value for disk space, if there's an error with disks - check the validity of the output so that in case we fail to parse it, we don't abort with a backtrace in the node daemon but instead return the default result value (containing errors), and log these cases in the node daemon log file We also bump the protocol version to 11. Reviewed-by: ultrotter
-
Iustin Pop authored
This patch does two things: - checks that the result values from call_node_info are valid integer values and aborts otherwise - skips disk space computation for the DT_DISKLESS case The most important point of the patch is the verification of results from the rpc call, as it prepares for a patch that allows failures to be better reported from the remote node. Reviewed-by: ultrotter
-
Iustin Pop authored
The checking of a node's free memory (via rpc.call_node_info) is done in both start instance an failover. This patch abstracts this call, together with the appropriate error handling, into a separate function called _CheckNodeFreeMemory. The patch also has some related changes: - the check is done in prereq and not in exec for start instance - the redundant check in exec for failover has been removed Reviewed-by: ultrotter
-
Iustin Pop authored
The function backend.UploadFile still uses "/etc/hosts" directly instead of the existing constant; this patch fixes this. Reviewed-by: ultrotter
-
Iustin Pop authored
Currently the fake hypervisor has hardcoded ‘/var/run’ as a base directory for its store. This patch adds a constant RUN_DIR that is used for both the fake hypervisor and for BDEV_CACHE_DIR. Reviewed-by: ultrotter
-
- Jan 16, 2008
-
-
Iustin Pop authored
This is a merge from the 1.2 branch Reviewed-by: imsnah
-
Iustin Pop authored
This is a merge from the 1.2 branch Reviewed-by: imsnah
-
- Jan 14, 2008
-
-
Iustin Pop authored
This patch fixes two name typos and a style issue (which makes pylint complain). Reviewed-by: ultrotter
-
Guido Trotter authored
Some new paramenters of the CreateInstance opcode are optional (namely kernel_path, initrd_path and hvm_boot_order) but their absence makes the code crash. Fix this by initializing them to a default value if they're not present. Reviewed-by: iustinp
-
- Jan 11, 2008
-
-
Alexander Schreiber authored
This patch adds support for specifying and changing the boot device order for HVM instances. The boot device order specification is ignored for non HVM instances. Reviewed-by: iustinp
-
- Jan 09, 2008
-
-
Alexander Schreiber authored
First step to support custom boot device order for HVM instances, add a location to actually store that information for the instance. Reviewed-by: iustinp
-
- Jan 08, 2008
-
-
Iustin Pop authored
Reviewed-by: schreiberal
-
Iustin Pop authored
This patch changes the hypervisor to use the new kernel and initrd instance attributes. They kernel is handled as expected (use the custom or the default one), but the initrd is treated a little bit special, in order to keep compatibility with previous behaviour: - if customized and not found, raise an error - if default and not found, do not use one Reviewed-by: imsnah
-
Iustin Pop authored
This patch changes the info subcommand to nicely show the kernel and initrd paths. Reviewed-by: imsnah
-
Iustin Pop authored
This patch adds support for defining the kernel/initrd at instance creation time, using the same interface as in instance modify. Reviewed-by: imsnah
-
Iustin Pop authored
This patch adds support in ‘gnt-instance modify’ to set the kernel and initrd paths. The user can pass either 'default' or 'none' (none is not valid for kernel). Reviewed-by: imsnah
-
Iustin Pop authored
This patch adds two new attributes to the instance object: - kernel_path - object_path The code ignores them and the configuration handling is not broken by this addition. Reviewed-by: imsnah
-
- Jan 07, 2008
-
-
Iustin Pop authored
This patch improves the ‘gnt-cluster verify-disks’ command by adding support for detecting broken volume groups and missing logical volume names. As such, we don't try anymore to activate disks for instances that are not likely to succeed anyway, and instead report them. Reviewed-by: schreiberal
-
Iustin Pop authored
This patch changes the Assemble() method for logical volumes from a noop to do a `lvchange -ay` on the logical volume; this ensures that if the logical volume is not active, we are able to activate and use it. Reviewed-by: imsnah
-
Iustin Pop authored
This patch fixes the double attach operation in bdev.AttachOrAssemble, which was an indentation mistake in the first place. Reviewed-by: imsnah
-
Iustin Pop authored
This patch changes the bdev.DRBD8._GetDevInfo to take a string instead of a minor, separates the `drbdsetup show` invocation into a new separate method (bdev.DRBD8._GetShowData) and modifies the rest of the DRBD8 class to make the appropriate calls. It also adds a unittest script and data files for testing various cases of device output. Reviewed-by: imsnah
-
- Dec 27, 2007
-
-
Alexander Schreiber authored
Allow the MAC address of an instance to be specified optionally during instance creation and later to be changed via instance modify. Reviewed-by: iustinp
-
- Dec 20, 2007
-
-
Alexander Schreiber authored
This patch implements a first proof-of-concept for HVM support in Ganeti. Due to the nature of this patch, it is intended for test environments only. Reviewed-by: iustinp
-
Alexander Schreiber authored
Wrap error handling around creating the instance config file. Reviewed-by: iustinp
-
Alexander Schreiber authored
Abstract the parts of the Xen hypervisor interface shared by both PVM and HVM into a generic interface, subclass the special case PVM from that. Prepatch for adding HVM support. Reviewed-by: iustinp
-
- Dec 19, 2007
-
-
Iustin Pop authored
Currently, RunCmd is written with the assumption that programs will have a small stderr output, therefore we read the child's stdout (which can be big, so we don't want to block the child) and then the stderr (which is small, so it shouldn't block). However, with the ‘gnt-cluster verify-disks’ command, we ourselves generate heavy stderr, therefore we break the ganeti-watcher which runs the verify-disks via utils.RunCmd. This patch turns the RunCmd command into an poll-based one, which means any kind of interleaved output by a child on stdout/stderr will be handled correctly. Of course, since the output is buffered in memory, there are other ways to break RunCmd(). But at least this should fix the common case. Reviewed-by: hansmi
-