- 15 Jun, 2009 11 commits
-
-
Iustin Pop authored
This was a very simple (boolean) RPC, so converting it to actually have more value with the new style results was more difficult. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This doesn't have known failure modes but converting will help later. We also now call directly utils.ListVolumeGroups() instead of the backend.ListVolumeGroups() so that we don't have to undo the (status, value) result type. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This is a big change, because we need to cleanup its users too. The call and thus LUVerifyDisks LU used to differentiate between failure at node level and failure at LV level, by returning different types in the RPC result. This is way too complicated for our needs. The patch changes to new style result (easy change), and then: - changes LUVerifyDisks.Exec() to return a tuple of 3-elements instead of 4-elements; we collapse the «nodes not reachable» and «nodes with LVM errors» in a single dict - changes gnt-cluster to parse 3-element results and simplifies the different by-error handling code Note that the status is added in ganeti-noded, and not in the function itself, as the function is used in other places too. This was tested with down nodes and broken VGs. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This converts the export_remove rpc to new style result and also fixes and old TODO by adding exception handling (and conversion to failure). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This is used in multiple places, so it has a little more changes than the previous ones. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This also removes some code from ganeti-noded and rpc.py, which should not do such processing of data (and be simply glue code). (Or alternatively they could, if we had better infrastructure). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This rpc doesn't have explicit failure modes, but once all RPCs are converted and we can catch and convert expceptions to failure in noded, we will have meaningfull error messages. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This also slightly changes the code in cmdlib that uses it for more clarity. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Guido Trotter authored
Signed-off-by:
Guido Trotter <ultrotter@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
- 09 Jun, 2009 1 commit
-
-
Iustin Pop authored
This patch adds a simple failure reporting tool, similar to bdev's _ThrowError. In backend, we move towards the new-style RPC results (of type (status, payload)) and thus functions which use this style can very easily log and return the error message using this new function. The exception is declared here and not in errors.py since it's local to the node-daemon/backend combination. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
- 08 Jun, 2009 3 commits
-
-
Iustin Pop authored
This patch converts blockdev_removechildren to new result type and slightly changes a message in addchildren to match this (paired) function. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This patch converts the blockdev_addchildren rpc call to the new result format. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Iustin Pop authored
This small patch converts the call_blockdev_rename to the new result type. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
- 28 May, 2009 2 commits
-
-
Guido Trotter authored
Signed-off-by:
Guido Trotter <ultrotter@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Guido Trotter authored
Currently UploadFile is restricted to a static set of files, and thus gnt-cluster redist-conf (silently) fails to upload all config files. With this patch we add the new static files we distribute, and all hypervisor-provided ancillary files. Signed-off-by:
Guido Trotter <ultrotter@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
- 27 May, 2009 1 commit
-
-
Iustin Pop authored
This (somewhat big) patch adds support for remotely rebooting the nodes via whatever support the hypervisor has for such a concept. For KVM/fake (and containers in the future) this just uses sysrq plus a ‘reboot’ call if the sysrq method failed. For Xen, it first tries the above, and then Xen-hypervisor reboot (we first try sysrq since that just requires opening a file handle, whereas xen reboot means launching an external utility). The user interface is: # gnt-node powercycle node5 Are you sure you want to hard powercycle node node5? y/[n]/?: y Reboot scheduled in 5 seconds The node reboots hopefully after sending the reply. In case the clock is broken, “time.sleep(5)” might take ages (but then I suspect SSL negotiation wouldn't work). Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
- 06 May, 2009 1 commit
-
-
Guido Trotter authored
Sometimes reinstalls are slightly different than new installs. For example certain partitions may need to be preserved accross reinstalls. In order to do that on a per-os basis we pass in the INSTANCE_REINSTALL variable to inform the create script about when a reinstall is happening. Signed-off-by:
Guido Trotter <ultrotter@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
- 25 Feb, 2009 1 commit
-
-
Iustin Pop authored
The current implementation of the combining of the instance lists will only do this for instances whose all four-fields match in both hypervisors; however, this is broken for the dynamic fields (state, times) which can change between the invocations of the two different hypervisors if the instance is busy. The patch checks only the memory and VCPUs, and makes mixed clusters work even with 100% CPU instances. Reviewed-by: imsnah
-
- 24 Feb, 2009 1 commit
-
-
Iustin Pop authored
This patch removes the extra_args parameter and instead switches the instance to the HV_KERNEL_ARGS hypervisor option. This is a big change, but it's a needed cleanup, this extra parameter on all RPC calls is not generic and we also need to have a persistent value here. Reviewed-by: imsnah
-
- 16 Feb, 2009 2 commits
-
-
Iustin Pop authored
There are two issues fixed in this patch: - first, the recent RPC changes caused loss of data in hard reboot type; we weren't reporting any results from the stop/start instance calls; - second, in soft or hard reboots, we didn't initialized the disk physical ID; based on the last state of the instance's disks, this can create a failure in identifying the disks After this patch, burnin works again with reboot, and reports errors correctly. Reviewed-by: imsnah
-
Iustin Pop authored
If /proc/drbd can't be opened, this raises an IOError, but all the error-handling behaviour in backend treats only BlockDeviceErrors. This creates a plain failure in cluster verify and in other RPC calls. This patch simply converts EnvironmentErrors into BlockDeviceErrors, and also changes the RPC result for NV_DRBDLIST and its handling to be able to show the error. The other RPC calls work by default now, due the existing error handling. Reviewed-by: ultrotter
-
- 13 Feb, 2009 1 commit
-
-
Guido Trotter authored
The cli FIXME is not something broken, but rather some better handling feature we'd rather have, and the two backend FIXME are done (disks have their read only parameter set, and the error is raised and thus reaches the master). Reviewed-by: iustinp
-
- 12 Feb, 2009 2 commits
-
-
Iustin Pop authored
This patch changes the return type from this RPC call to include status information and renames the backend method to match the RPC call name. The patch is a little bigger than the reboot one, since this call is used in more than one place. However, all the points of call have the same usage pattern, so the patch is trivial. Reviewed-by: ultrotter
-
Iustin Pop authored
This small patch changes the return type from this RPC call to include status information and renames the backend method to match the RPC call name. Reviewed-by: ultrotter
-
- 10 Feb, 2009 7 commits
-
-
Iustin Pop authored
Reviewed-by: imsnah
-
Iustin Pop authored
This big patch converts the bdev Assemble() methods and the supporting functions to raise exceptions instead of returning False. This is a big patch, since the assembly functions touch other functions: add children, creation, etc. However, the patch does not add much new code, rather it reworks existing code. One of the biggest changes is in the rework of the DRBD8._SlowAssemble() method (one of the most complicated/ugly ones). Hopefully the new version is a little bit more readable. Reviewed-by: ultrotter
-
Iustin Pop authored
Currently, the Remove() methods of block devices return True/False. This doesn't permit any error detail reporting. This patch changes the return type to None for success, and raises BlockDeviceError in case of failure. This permits the details to be passed up the stack. The patch also simplifies a little the Remove method of file-based devices (no stat first, just try unlink). Reviewed-by: ultrotter
-
Iustin Pop authored
This converts the backend and cmdlib modules to a (status, data) implementation of the blockdev_remove rpc call. bdev.py is not yet converted, so we don't actually have error information. We also fix a bug in _RemoveDisks by not reusing a variable. Reviewed-by: ultrotter
-
Iustin Pop authored
Currently, the Shutdown() methods of block devices return True/False. This doesn't permit any error detail reporting. This patch changes the return type to None for success, and raises BlockDeviceError in case of failure. This permits the details to be passed up the stack. For LVM and file-backed devices, this is a simple change. For DRBD, we first remove the shutdown of disks in case of network activation failures (since with static minors the minor is used anyway, we don't gain anything by clearing it), and the we simply change _ShutdownAll() to raise an exception. Reviewed-by: ultrotter
-
Iustin Pop authored
This converts the backend and cmdlib modules to a (status, data) implementation of the blockdev_shutdown rpc call. bdev.py is not yet converted, so we don't actually have error information. We also fix a bug in _ShutdownInstanceDisks by not reusing a variable. Reviewed-by: ultrotter
-
Iustin Pop authored
This converts the RPC call blockdev_assemble to the new-style result format. Note that we won't usually have error information, but it's the first step toward it. Reviewed-by: ultrotter
-
- 09 Feb, 2009 4 commits
-
-
Iustin Pop authored
Currently, the names of the functions in backend.py that are actually RPC procedures and are called from ganeti-noded are not corresponding to the RPC names. This makes it hard to actually see which functions are exported and which functions are internal to backend. This patch renames all blockdevice-related functions in backend.py match the name of the RPC call (without the ‘call’ or ‘perspective’ prefix). This should make it easier to grep for a given function called in cmdlib, without having to open and check in ganet-inoded what backend function it corresponds to. The patch also does two minor extra cleanups (rename a variable and change a logging level). Reviewed-by: ultrotter
-
Iustin Pop authored
This patch converts the call_blockdev_find - which searches for block devices and returns their status - to the (status, data) format. We also modify the backend function name to match the rpc call. Reviewed-by: ultrotter
-
Iustin Pop authored
This patch fixes the error handling in the add OS to instance function with regard to invalid OSes. Previously, we didn't handle any such errors, with the end result that the user would have to look in the node daemon log. The patch also renames the name of the function to match the RPC call name. Reviewed-by: ultrotter
-
Iustin Pop authored
Currently the return value or errors from the block device Open() method are ignored. This patch catches any BlockDeviceErrors and returns a well-formatted result. Reviewed-by: ultrotter
-
- 03 Feb, 2009 1 commit
-
-
Iustin Pop authored
This patch unifies the hardcoded re-encoding attempts into a single function in utils.py. This function is used to take either an unicode or str object and convert it to a ASCII-only str object which can be safely displayed and transmitted. We replace then the current manual re-encodings with this function. In mcpu we stop re-encoding the hooks output and instead we do it right at the hook generation in backend.py. This passes on my 'custom' lvs output with non-ASCII chars. But there are probably other places we will need to fix. Reviewed-by: ultrotter
-
- 02 Feb, 2009 2 commits
-
-
Iustin Pop authored
This patch correctly exports the mode of disks (rw/ro) and also exports the instance OS. Reviewed-by: imsnah
-
Iustin Pop authored
When the rpc call node_add fails, we don't have any error message. This patch changes the call to return (status, data) so that the user can see the correct error message. Reviewed-by: imsnah
-