- Jan 20, 2009
-
-
Michael Hanselmann authored
This way newly added files will be not be excluded by default. Fixes also a small whitespace error in utils.py. Reviewed-by: iustinp
-
Iustin Pop authored
This allows the rename failures to show the ouput of OS scripts. Reviewed-by: ultrotter
-
Iustin Pop authored
As per Michael's comment, gitignore should not ignore a couple of real files from the autotools/ directory. Reviewed-by: ultrotter
-
Iustin Pop authored
The ConfigWriter.AllocateDRBDMinor requires the instance name, not the instance object. The LUSetInstanceParms is passing wrongly the instance object, which can cause breakage. The patch also adds asserts to check for this mismatch in ConfigWriter. Reviewed-by: ultrotter
-
Iustin Pop authored
The urllib2 module has very bad error handling. This patch changes to urllib which is simpler, and we derive a custom class from the FancyURLopener. Burning is no longer keeping sockets in CLOSE_WAIT state with this patch. Reviewed-by: ultrotter
-
Iustin Pop authored
This patch adds support for verification of drbd minors space in cluster verify: minors which belong to running instances and should be online but are not, and minors which do not belong to any instace but are in use. The patch requires exposing some methods from bdev.DRBD8 and config.ConfigWriter which were until now private methods. Reviewed-by: ultrotter
-
Iustin Pop authored
Reviewed-by: ultrotter
-
Iustin Pop authored
In order to prevent errors with old, in-use DRBD minors, we check and abort at create time if our minor is already in use. For this we need to also modify DRBD8Status to be able to parse cs:Unconfigured devices. Reviewed-by: ultrotter
-
Iustin Pop authored
This patch adds a tail file function, to be used for parsing and returning in the job log OS installation failures. Reviewed-by: ultrotter
-
Iustin Pop authored
This patch adds unified temporary file handling to the testutils.GanetiTestCase class, which adds easy creation and automated cleanup of temporary files. The patch allows a simpler handling in a couple of test cases but requires all child classes to call the parent setUp and tearDown methods. Reviewed-by: ultrotter
-
Iustin Pop authored
Reviewed-by: ultrotter
-
Iustin Pop authored
This allows the install and reinstall instance to return (hopefully) relevant log files from the OS create scripts. Reviewed-by: ultrotter
-
Iustin Pop authored
This will record the failure cause in starting up the instance in the job log (and thus to the user). Reviewed-by: ultrotter
-
- Jan 19, 2009
-
-
Iustin Pop authored
Commit 2302 only modified _CreateBlockDevOnPrimary to the new style result, but _CreateBlockDevOnSecondary was forgotten. After the merger of the two functions, _CreateBlockDevOnSecondary was taken as template so we checked against old-style values, thus completely breaking error handling. Reviewed-by: imsnah
-
Iustin Pop authored
Instead of having the default live in the gnt-cluster script, we move it to the constants file. The patch also fixes a typo on constants.py. Reviewed-by: ultrotter
-
Iustin Pop authored
This patch replaces a few obvious uses of [instance.primary_node] + list(instance.secondary_nodes) (or similar usage) with the new instance.all_nodes. Reviewed-by: ultrotter
-
Iustin Pop authored
Commit 2294 introduced a new instance.all_nodes property, which unfortunately is working incorrectly for non-drbd instances. This patch fixes it by making sure the primary node is always added to the set, even before recursing over (any potential) children. Reviewed-by: imsnah
-
Iustin Pop authored
We don't need to pre-create the node entries in lvmap, since they will be created at recursion time. Reviewed-by: ultrotter
-
Iustin Pop authored
Some callers of _CreateBlockDev need recursive behaviour, but not all. The replace secondary first creates (manually) new LVs to ensure storage is there, and then it creates the new DRBD. At this point, we need a non-recursive call so that the LVs are not needlessly re-created. This patch splits the single device creation into a separate function, so that LUReplaceDisks can use it. Reviewed-by: ultrotter
-
Iustin Pop authored
Since only two boolean parameters differ between these two functions, we combine them as to have less code duplication. This will be needed in the future as we will need to split off the recursive part off. Reviewed-by: ultrotter
-
Iustin Pop authored
This allows errors to be visible at the user level instead of just node daemon logs. Reviewed-by: ultrotter
-
Iustin Pop authored
For future propagation of error messages from backend to cmdlib and to the job log, just having True/False return from the disk creation function is not enough. This patch converts these functions (_CreateDisks, _CreateBlockDevOnXXX) to raise exception on errors, and otherwise the return value is None. Reviewed-by: ultrotter
-
Iustin Pop authored
Currently when creation LVM-based instances, we always get the extremely-confusing message "ERROR Can't find LV /dev/xenvg/..." which is actually expected. This behaviour was introduced before we had UUID-style LV names, since at that point it was not a unexpected to have such volumes laying around after a failed creation. Today, it's much more of an error to see existing volumes, and it's better to abort with a failure. Since bdev.LogicalVolume.Create() method will raise an error in case it exists, we can remove this check in backend before creating the device. The Create methods for DRBD and FileStorage currently don't raise exception, as behaviour is not very well defined here. We also change some exception types raised in bdev so that all exceptions raised by device creation are a subclass of GenericError. Reviewed-by: ultrotter
-
Iustin Pop authored
Currently we use a different UUID for the _data and _meta volumes of a DRBD disk. This is confusing as it's hard to associate the two in the output of “lvs” or “gnt-node volumes”. The patch changes so that they use the same prefix. Reviewed-by: ultrotter
-
- Jan 16, 2009
-
-
Iustin Pop authored
Due to deficiencies in our block device implementation, it is a must to call SetDiskID on disks before passing them to remote nodes. Since in export/import, we don't touch the disks themselves, this was not needed before in this function. However, since having instance symlinks, the correct ID is needed here too, and with static minors it's a "must need". This reflects into failed instance starts after migration and/or failover. Reviewed-by: ultrotter
-
Iustin Pop authored
In case we pass --disk-grow 0[,0..] then we should not call GrowDisks as it prints confusing log lines. Reviewed-by: imsnah
-
Iustin Pop authored
Since we often need the list of all nodes of an instance, we add a new "all_nodes" property that returns all nodes of the instance, and we switch secondary_nodes to a simpler implementation based on this new function. Reviewed-by: ultrotter
-
Iustin Pop authored
We need to pass the fully-qualified node to _CheckNodeOnline, not the short one. Reviewed-by: imsnah
-
Iustin Pop authored
This patch adds a burnin option to keep instances at the end, so that debugging after a burnin failure is easier. Also, we reorder the command line parsing and client query so that one can use ./tools/burnin --help even on non-ganeti machines. Reviewed-by: ultrotter
-
- Jan 15, 2009
-
-
Iustin Pop authored
This patch rewraps some comments to shorter lengths, changes double-quotes to single-quotes inside triple-quoted docstrings for better editor handling. It also fixes some epydoc errors, namely invalid crossreferences (after method rename), documentation for inexistent (removed) parameters, etc. Reviewed-by: ultrotter
-
Iustin Pop authored
The source port/addr is currently logged three times for each connection, and this is unnecessary. We change two log entries to debug, since they are useful for precise timing, and we keep only one at INFO level. Reviewed-by: imsnah
-
- Jan 14, 2009
-
-
Iustin Pop authored
Reviewed-by: ultrotter
-
- Jan 13, 2009
-
-
Iustin Pop authored
This is again a copy of the latest 1.2 burnin code related to migration. Reviewed-by: ultrotter
-
Iustin Pop authored
This is forward port via copy (and not individual patches cherry-pick) of the latest code on the 1.2 branch related to the migration. The changes compared to 1.2 are the fact that we don't need the IdentifyDisks step anymore (the drbd rpc calls are independent now), and the rpc module improvements. Reviewed-by: ultrotter
-
Iustin Pop authored
In replace disks to new secondary, since Attach (and therefore call_blockdev_find) is not modifying the devices anymore, we need to switch this LU to the new call_drbd_disconnect_net and call_drbd_attach_net functions. Due to the authentication needed in 2.0, we need to be more careful with the activation order. In 1.2, we have the case that the new node was directly activated with networking information, and could connect to the primary while it was still connected or WFConnect to the old secondary. In the new scheme, we: - create the new drbd in StandAlone mode - shutdown old secondary (primary becomes WFConnection) - disconnect primary (and thus it goes into StandAlone) - connect both primary and new secondary to network using the call_drbd_attach_net rpc This should be safer, and is cleaner. This passes burnin. Reviewed-by: ultrotter
-
Iustin Pop authored
This is a modified forward-port of DrbdNetReconfig and their associated RPCs. In Ganeti 2.0, these functions will be used for two things: - live migration (as in 1.2) - and for other network reconfiguration tasks, since DRBD8.Attach() doesn't do them anymore Because of the Attach() changes, we can now implement the AttachNet/DisconnectNet functions as independent entities, and we don't need the cache anymore. Note these functions are copies of the latest 1.2 code, and not cherry-picks of the (many) patches that went into 1.2. Reviewed-by: ultrotter
-
Iustin Pop authored
Since now the Assemble function is different than Attach, we rename this backend function to show that the intent is to fully assemble the device (and it's always allowed to modify the device). Reviewed-by: ultrotter
-
Iustin Pop authored
Currently, both the Attach and Assemble methods for DRBD8 devices will use and alter the device state. This is suboptimal, and it has been worked around in 1.2 via a special cache in the node daemon so that we don't need to call Attach() again in migration, for example. Since in 2.0 we have static minors, we can change these functions so that: - Attach() does not affect the device in any way, and only checks if the minor is already in use or not - Assemble() has two logic paths, one for startup from unused minor (the old Assemble, now renamed _FastAssemble) and one for re-checking/fixing an in-use minor (the old Attach, now renamed _SlowAttach) Basically Attach was renamed to _SlowAttach, Assemble to _FastAssemble, and we have a new, simple Assemble that calls one or the other based on the result of the new Attach. The LUReplaceDisks (with new secondary) is relying on the special semantics of Attach modifying the device and is broken until the end of the patch series. Reviewed-by: ultrotter
-
Iustin Pop authored
The caller of dev.Assemble() (backend._RecursiveAssembleBD) is doing an explicit recursion over all the children of the device, with better error reporting. As such, we don't need this repeated assembly inside the base BlockDev class. Reviewed-by: ultrotter
-
Iustin Pop authored
... as found by the QA script - bug was introduced by me in commit 2117. Reviwed-by: imsnah
-