Fix unittests broken by revision 360.
Reviewed-by: schreiberal
Fix --node option for “gnt-backup list”.
Reviewed-by: iustinp
Fix a wrong comparison in _RecursiveAssembleBD
We want to prevent sending too many 'None' children to a device.However, the test as it is today is wrong, as we want to test thesituation after adding a new child, and not before. This patch fixesthis by testing greater-or-equal instead of just greater....
Fix another breakage in SetEtcHostsEntry
The code assumes all lines have at least two elements which arewhitespace separated - i.e. it does not deal with empty lines or commentlines with no spaces. This patch fixes this.
Also, the patch replaces the blank between IP and the canonical name...
Call fsync() after modifying /etc/hosts.
This is a critical file. Breaking it would be very bad. Thus, if the systemcrashes before the data is synched to the disk, it should have the completefile afterwards.
Fix functions for /etc/hosts.
- Combine hostname and aliases on one line- Fix bug with wrongfully removed newline characters- Use wrapper for SetEtcHostsEntry in cmdlib
Reviewed-by: iustin
Rollback commit 356.
Add functions for known_hosts files.
Reviewed-by: TODO
Add missing descriptions to {Add,Remove}EtcHostsEntry.
Relax replace_disks_all meaning for drbd8
In order to make the replace secondary action to be done via the sameopcode parameters for both remote_raid1 and drbd, we must allow theLUReplaceDisks to change replace_disks_all for drbd with non-emptyremote_node into replace_disks_sec....
Change --nodes to --node
The --nodes option in gnt-backup really accepts only one node at a time.Change it to --node, for added clarity and consistency with a similaroption in gnt-cluster. This patch also updates the relevant man page.
Reviewed-By: iustinp
Update documentation for drbd8 and beta2 release
This patch does: - add drbd8 information to the docs (the new disk template, examples, etc.) - fixes a section header to make it more clear - update the NEWS file by changing format (format taken by looking at...
Fix gnt-instance man page for replace-disks
This patch documents the new syntax for disk changes with the drbd disktemplate.
Reviewed-by: ultrotter
Improve the man pages
This patch does some small fixes to the man pages and adds descriptionsfor a few missing options.
Soften the requirements for hooks execution
Currently, an unreachable node (or one that return undetermined failure)in the hooks pre-phase will abort the curren operation. This is notgood, as a down node could prevent many operation on the cluster.
This patch changes a RPC-level failure (and not a hook execution...
Use new functions to modify /etc/hosts.
Add functions to modify /etc/hosts.
Cleanup temporary file in RemoveAuthorizedKey.
Fix usage of wrong variable in doc/examples/Makefile.am.
This makes “make distcheck” work again.
Simplify burnin output
Currently, the burnin output is very verbose (we log the entire outputfrom LU feedback) and duplicate in some cases (as we enable debugging).
This patch disables debugging and only logs the burnin output when anerror occurs.
Reviewed-by: imsnah
Changes related to logging
This patch modifes: - mcpu.Processor.LogWarning to have its 'hint' parameter as optional and only log it if not None - cmdlib._WaitForSync to not log directly to stdout/stderr but via the proc.Log(Info|Warning) methods...
Refactor burnin to improve disk replacement
This patch changes the burnin: - split the code into functions - add replace2 (replace the secondary) for remote_raid1 - add replace1/2 for drbd8
Insert hook calls.
Implement sample hook.
Implement hooks infrastructure.
Enhance secondary node replace for drbd8
This (big) patch does two things: - add "local disk status" to the block device checks (BlockDevice.GetSyncStatus and the rpc calls that call this function, and therefore cmdlib._CheckDiskConsistency) - improve the drbd8 secondary replace operation using the above...
Indentation fixes for docs.
Update docs for the removed --secondary-node option.
Check whether init.d script is executable.
Adapt QA tests for removed --secondary-node option.
Remove --secondary-node option.
Replace --secondary-node option with an optional parameter for --node.
Enhance DBRD8 disk replacement (same nodes)
This patch adds enhanced reporting and much more checks to the diskreplacement (when not switching the secondary).
Implement degraded status for logical volumes
Logical volumes can be 'degraded' in a similar way to mirrored devices,when their underlying storage has gone away (i.e. after a physical diskfailure and 'vgreduce --removemissing'). If we can detect this, we can...
Add better error logging functions for LUs
Currently, some LUs use logger.Error, others just feedback_fn, etc. Thispatch adds three functions to mcpu.Processor than can be used to logmessages to both the log and to the user.
These function will be used to enhance the output of replace-disks for...
Enhance mirror operations for DRBD8
Currently, the mirror operations (add and remove children) test againstthe instance's attributes. This patch changes the check tests to workagainst the actual status of the device (i.e. live data) which is morerealistic....
Allow DRBD8 operation without backing storage
This patch adds the following functionality: - DRBD8 devices can assemble without local storage (done by allowing None in the list of children, and making DRBD8 to ignore all children if any is None)...
Make DRBD8 disks show 'degraded' status if diskless
This patch enables the bdev.DRBD8 class report a degraded status if thelocal disk is missing. This allows `gnt-instance info` to report theactual situation in this case.
Note that DRBD7 should also behave like this, however the diskless case...
Change the way remove children is called in bdev
For some cases, we don't have to have access to the children of a devicein order to remove them (e.g. md over lvs, or drbd over lvs). In orderto ease the removal process, skip over finding the child if it provides...
Add a support function to objects.Disk
This patch adds a function returning the device path if it is computablefrom the disk object (and we don't need to instantiate a bdev object onthe target node in order to compute this). Only LVs support this.
Small cleanup for error formatting
Handle missing init script at cluster init
This patch adds a check in the prereq of LUInitCluster for the existenceof the init script. This allows a clean abort instead of a stack dump.
Based on a report by admin@steibei.net
Fix a unhandled error case in device creation
The block device creation process is the following: - device create - device assembly (on primary or depending on dev_type, on secondary too) - set sync speed - return
The problem is that device assembly after creation was not checked for...
Miscellaneous style fixes
This patch fixes some minor pylint warnings (unused variables, wrongindentation, etc.) and a real bug in the recovery for drbd8 renameprocedure.
Test tag functionality.
Merge three small cluster tests into one.
Rename utils.GetUUID to utils.NewUUID.
Bump protocol version up
The OS cleanup patches change the wire protocol. Increment the protocol numberby one.
Convert os_get to use OS rather than InvalidOS
In order to do this for simplicity we leave the OSFromDisk function as-is andwe convert the eventual exception to an OS object in ganeti-noded. Theunmangling gets simplified and so does the code for checking whether the OS is...
Simplify diagnose mangling/unmangling functions
The functions in ganeti-noded and rpc.py still deal with the fact that anInvalidOS error could be returned by DiagnoseOS. As this is not the caseanymore simplify their code for the current behavior.
Make DiagnoseOS use the modified OS objects
Modify backend.py so that DiagnoseOS only returns OS objects rather thanInvalidOS errors, and make sure gnt-os understands the new objects. Also deletethe deprecated helper functions from gnt-os.
Create OS from an InvalidOS error
Add a new FromInvalidOS static function to objects.OS that makes it easy tocreate an object representing a broken OS starting from the relevant exception.
Make the OS object able to represent broken OSes
Till now the OS object just represents a correct OS instance. Change it so itcan represent a broken one too, by adding a "status" field: if this field isdifferent from the OS_VALID_STATUS constant the object is considered to be an...
Add option to burnin only a given set of nodes
This patch adds a '-n' option to burnin that takes a comma-separatedlist of nodes to perform the burnin on.
Make call_os_get a single node function
call_os_get is never called with a real list of nodes, so there's no point init being multi-node. Making it single-node till a usage for multi-node call isfound.
Fix two typos in a doc string
Remove a wrong "i" and add a missing ")" to the DiagnoseOS function doc string.
Implement tag searching
This patch adds a search command for locating tags on all objects of thecluster using a regex pattern.
Reviewed-by: aat
Test “gnt-cluster command”.
Also check whether file contents are correct for both “gnt-cluster command” and“gnt-cluster copyfile”.
Implement device to instance mapping cache
Currently, troubleshooting DRBD problems involves a manual process of goingbackwards from the DRBD device to the instance that owns it.
This patch adds a weak (i.e. not guaranteed to be correct or up-to-date)cache of device to instance. The cache should be, in normal operation,...
Improve burnin with regard to drbd8
Allow burnin to use the new drbd8 template (for which case one needs todisable replacement of disks, burnin does yet support that with drbd8).
The patch also changes do-replace12 to no-replace12 as that is whatthey actually do....
Update the dev_path on LVs on rename
When renaming a logical volume, we should change the dev_path (and otherinternal variables) in order to be consistent.
Revision 302 is broken, this fixes it
I forgot a pair of parentheses in that revision which break the commoncase. This patch adds them.
Fix printing of unconfigured DRBD devices
If the device is unconfigured (not yet did SetDiskID for it ever), itmight have a physical_id of None. This patch fixes that case.
Remove two trailing whitespaces
Ok, I've been battling with those for a while but it seemsin the end I forgot to get rid of them! :( Doing it explicitely now.
Move blank lines inside function messages
This patch changes whitespace only. It fixes all the functions in script/gnt-osby putting a white line at the end of all the function descriptions andremoving it from just before the code.
Add empty line after each diagnose OS-Node set
Reviewed-By: imsnah
Modify the displayed format for gnt-os diagnose
Get rid of the tabulated form and create a simplier indented structure.Now a valid OS looks something like:
OS: foo [global status: partial valid] Node: gsdtest4.euw.corp.google.com, status: valid (path: /usr/local/lib/ganeti/os/foo)...
Change the way to compute the first os status message
Use both _DiagnoseOSStatus and _DiagnoseOSPath to calculate the messageassociated with the first entry found on a node for an OS. Also call the renamethe relevant variables to _msg rather than just _status to reflect that they...
Separate OS status and path
Make _DiagnoseOSStatus only return a status message for the OS diagnose objectand create a new _DiagnoseOSPath function to get the path out. This will let usbe more flexible in the messages we display to the user.
Whitespace fixes
Cleanup colouring functions.
Make the code somewhat smaller. Disable disk failure test for master for now.
Cleanup QA scripts.
- Split main() function into several small ones.- Current work on disk failure tests. This is not yet finished.- Fix small typo in qa_node.py.
Revert "Implement multi-failover options"
This reverts commit 289, as the node failover functionality was alreadyimplemented in gnt-node (as opposed to gnt-instance). My mistake.
Fix usage of OpReplaceDisks.
Small improvements to multi-instance selections
This patch fixes the documentation in a few cases and adds handling ofthe situation where no instance is selected due to too restrictiveoptions given.
Implement multi-failover options
This patch adds the same style of multi-instance selection as inshutdown/startup to the failover subcommand, with the exception that wecannot failover with --node or --all (it doesn't make sense).
More sane handling of errors during failover
Currently we ignore errors on instance shutdown (on the source node)during instance failover. We should do this only if the user gave acommand line options allowing this, as it's a dangerous thing to do.
This patch fixes this by using the same "--ignore-consistency" option...
Fix bridge checking in instance failover
The current code checks the bridge on the primary node of the instance,but we need to check it on the destination node.
This was caught by testing failover with a down primary node.
Fix _UpdateEtcHosts to understand empty lines.
Change the signature of some methods of mcpu.Processor
This patch moves the passing of the feedback_fn argument from the(Exec|Chain)OpCode to the initialization of the Processor instance.
Remove a redundant assignment
The major is declared in the base class, we do not need to overwrite it.
Fix some style issues (whitespace changes only)
Fix a non-clear error message
Implement replace-disks for drbd8 devices
This patch adds three modes of disk replacement for drbd8: - replace the disk on the primary node - replace the disk on the secondary node - replace the secondary node
It also adds some debugging code to backend.py and increments the...
Allow drbd8 devices to work without local storage
This patch adds functionality to drbd8 for: - removing local storage - initializing without local storage - adding local storage
This is needed for the being able to replace disks for drbd8.
Implement block device renaming
This patch add code for renaming a device; more precisely, for changingthe unique_id of the device. This means: - logical volumes, rename the volume - drbd8, change the remote peer
This is needed for the being able to replace disks for drbd8....
Convert ListOS to use the all helper function.
The predicate function gets build by a lambda function.Also add a bit of debugging information to the 'unknown OS diagnose type'.
Import two itertools recipes
The two function 'any' and 'all' are copied as-is from the python 2.4documentation for the itertools module. They are useful (and are alreadybuiltin function in python 2.5).
Add a custom str() method for objects.Disk
This is done in order to easy debugging of disk-related issues.
Modify two mirror-device related rpc calls
The two calls mirror_addchild and mirror_removechild take only one childfor addition/removal. While this is enough for our md usage, for localdisk replacement in drbd8, we need to be able to specify both the data...
Initial implementation of drbd8 template type
This is a partially working drbd8 template type. It does: - add/remove - startup/failover/shutdown
Not working is replace disks, which needs custom code for this template.
Allow DRBD8 to sync after sb1-pri with no changes
Currently the way we shutdown or startup disks seems to make DRBD8unhappy. Until we rewrite the sequence of (de)activation, allow DRBD toconnect after a sb1-pri condition with no changes to the data.
Fix a disk handling bug triggered by failover
This leaves an instance's disks configured for the primary node as afterdisk activation we want to start the instance anyway. As such,_GatherBlockDevs in backend.py will need the disks configured for theprimary....
Add DRBD8 class for handling drbd version 8.x
This duplicates some code from the DRBDev class, but not very much, andit will be expanded with the new functionality available for the 8.xversion. Currently the code is not accessible outside the module.
This patch introduces a dependency on the pyparsing module....
Move/rename _IsValidMeta to base drbd class
The DRBDev._IsValidMeta only checks for the metadata device size. Sincethis is a useful check (but not complete) for DRBD8, move it to the baseclass and name it _CheckMetaSize.
More abstractions from DRBD7 to base class
This moves the _SetFromMinor and _MassageProcData to the base class.
Improve out-of-minors handling
Currently, the out-of-minors handling is not very good: though both MDand DRBD functions for finding an unused minor can return None, only theDRBD code checks for this case.
This patch improves this by making the functions _FindUnusedMinor raise...
Move some methods from DRBDev to BaseDRBD
Since some of the methods and constants are valid for both 0.7 and 8.xversions, we move them to the base class.
Some tiny style fixes
Split some DRBD functionality based on versions
This is a small split of some functionality from the DRBDev class into abase drbd class that holds just a few things, in order to make migrationto drbd 8.x easier.
Abstract more strings values into constants
Currently, the disk types are defined using constants in the code.Convert those into constants so that we can easily find them and checktheir usage.
Note that we don't rename the values of the constants as they are used...