- Sep 27, 2007
-
-
Michael Hanselmann authored
Reviewed-by: ultrotter
-
Michael Hanselmann authored
Added tests: - “gnt-cluster getmaster” - “gnt-cluster version” - “gnt-instance list” - “gnt-instance reinstall” Reviewed-by: schreiberal
-
Guido Trotter authored
Reviewed-by: imsnah
-
Michael Hanselmann authored
Reviewed-by: ultrotter
-
- Sep 26, 2007
-
-
Michael Hanselmann authored
- Test “gnt-backup export” and “gnt-backup import”. - Move “ResolveInstanceName” to qa_utils.py. - Fix tests for “ganeti-watcher”. - Make instance shutdown and startup configurable. Reviewed-by: schreiberal
-
- Sep 25, 2007
-
-
Guido Trotter authored
Reviewed-By: imsnah
-
Michael Hanselmann authored
Reviewed-by: iustinp
-
Michael Hanselmann authored
Reviewed-by: ultrotter
-
Michael Hanselmann authored
with the script named differently than Debian. Reviewed-by: ultrotter
-
- Sep 24, 2007
-
-
Guido Trotter authored
Thanks to Christoph Rauch for reporting the problem. Reviewed-By: iustinp
-
Michael Hanselmann authored
Reviewed-by: iustinp
-
Iustin Pop authored
This change allows instances of ConfigObject and its children to be converted to and from standard python types. This will allow easier upgrade of the configuration and use of any serialization protocol (not only pickle). The code is not very nice (a little too verbose, I think) but it works. Tested on a 2-node, 3-instance cluster by doing repeated conversions and checking consistency of results. Reviewed-by: imsnah
-
- Sep 21, 2007
-
-
Iustin Pop authored
It makes sense to make the TaggableObject a child of the ConfigObject, since in this case we can derive the Instance, Node and Cluster objects only from the TaggableObject and have a cleaner hierarchy. For consistency child classes will have to declare their slots by adding their parents on top. Reviewed-by: imsnah,ultrotter
-
Iustin Pop authored
We currently require that hostnames are FQDN not short names (node1.example.com instead of node1). We can allow short names as long as: - we always resolve the names as returned by socket.gethostname() - we rely on having a working resolver These issues are not as big as may seem, as we only did gethostname() in a few places in order to check for the master; we already required working resolver all over the code for the other nodes names (and thus requiring the same for the current node name is normal). The patch moves some resolver calls from within execution path to the checking path (which can abort without any problems). It is important that after this patch is applied, no name resolving is called from the execution path (LU.Exec() or other code that is called from within those methods) as in this case we get much better code flow. This patch also changes the functions for doing name lookups and encapsulates all functionality in a single class. The final change is that, by requiring working resolver at all times, we can change the 'return None' into an exception and thus we don't have to check manually each time; only some special cases will check (ganeti-daemon and ganeti-watcher which are not covered by the generalized exception handling in cli.py). The code is cleaner this way. Reviewed-by: imsnah
-
Iustin Pop authored
The EXIT_NODESETUP_ERROR is a useful constant and ganeti-watcher could use it too. This patch moves it to constants.py and modifed the ganeti-master script to use it from there. Reviewed-by: imsnah
-
Iustin Pop authored
Since we added a new, required parameter to OpCreateInstance, we need to update burnin to build the correct opcode. Reviewed-by: schreiberal
-
Iustin Pop authored
Unless we use __slots__ on all parents, we don't get the benefits that __slots__ bring. This patch adds this attribute to the TaggableObject so that Instances, Nodes and the Clusters behave as intended. Reviewed-by: schreiberal,imsnah
-
- Sep 20, 2007
-
-
Iustin Pop authored
This patch makes the new startup/shutdown multi-instance operations to ask for confirmation when touching more than one instance (and unless --force-multi is given). The code is not very short, but it does present a nice (IMO) user interface. Reviewed-by: ultrotter
-
- Sep 19, 2007
-
-
Iustin Pop authored
This patch improves the AskUser function by allowing it to: - choose from multiple choices (instead of only y/n) - give help to the user - preserve line breaks and whitespace formatting in the message With this patch, an instance removal looks like this: root@xen-test1-4:~# gnt-instance remove tsetest1 This will remove the volumes of the instance tsetest1 (including mirrors), thus removing all the data of the instance. Continue? y/[n]/?: ? y - Perform the operation n - Do not perform the operation This will remove the volumes of the instance tsetest1 (including mirrors), thus removing all the data of the instance. Continue? y/[n]/?: y The patch also removed the _ask_user member of the opts argument, since external code was using it (and thus it makes no sense for it to be a private member); now gnt-* scripts are using the AskUser function directly. Reviewed-by: ultrotter
-
Iustin Pop authored
This patch allows 'gnt-instance add' to not start the newly-created instance. It also allow 'gnt-instance add' and 'gnt-backup import' to not check for IP conflicts (only when not starting the instance). Reviewed-by: ultrotter
-
Iustin Pop authored
The current result of utils.LookupHostname() is a dict, but this does not allow static checkers to check the correctness of the code. This patch introduces a new class names HostInfo and changes LookupHostname to return an instance of this class; this allows better checking of the code (and also the code is cleaner). Reviewed-by: ultrotter
-
- Sep 18, 2007
-
-
Iustin Pop authored
This patch adds a new OpCode (and corresponding LU) that implements the cluster rename functionality. This is done by shutting down the master role, making the needed sstore modifications and distributing the changed files to all nodes, and then re-enabling the master role. The modification to the man page of gnt-cluster also moves the section on gnt-cluster destroy in order to correct alphabetical ordering. Reviewed-by: imsnah
-
Guido Trotter authored
Reviewed-by: iustinp
-
- Sep 17, 2007
-
-
Alexander Schreiber authored
Reviewed-by: iustinp, imsnah
-
Iustin Pop authored
This uses the recently-added Instance.FindDisk() method instead of hard coded find-disk code. It also renames one parameter to AddNode from ssh to sshkey in order not to shadow the ganeti.ssh module. Reviewed-by: imsnah
-
Iustin Pop authored
This patch adds support for instance rename operation at all remaining layers: RPC, OpCode/LU and CLI. Reviewed-by: imsnah
-
Alexander Schreiber authored
To be used to replace the currently fping(8) based reachability test. Reviewed-by: imsnah
-
Iustin Pop authored
This patch adds support for renaming at OS level. Because of this, we need to bump up the version of the OS api from 4 to 5. The patch also documents the new script interface in the ganeti-os-interface(7) man page and adds a section on upgrading the OS definitions to the new version. Reviewed-by: imsnah
-
Iustin Pop authored
This is an initial version of the multi-instance start/stop, which allows the gnt-instance startup and shutdown subcommands to work on multiple instances at once. The available selections are: - "gnt-instance startup --instance name..." which is the default, and if passed only one argument it behaves like the original command) - "gnt-instance startup --node name..." will work on all instances having either primary or secondary one of the passed names - "gnt-instance startup --primary name..." will work on all instances having primary node one of the passed names - "gnt-instance startup --secondary name..." will work on all instances having as secondary node one of the passed names - "gnt-instance startup --all" will work on all instances This allows a simple cluster-wide shutdown or node shutdown (or startup). Note that this version stops at the first error - it will not try to start the 2nd instance selected if there is a critical error with the 1st one. Also note that this version is not faster than simply running manually "gnt-instance shutdown NAME", because it doesn't parallelize the shutdown/startup actions. Reviewed-by: imsnah,roman.marxer
-
Iustin Pop authored
This patch adds support for renaming instances to the ConfigWriter class. It's needed in here in order to guarantee that we don't lose the instance during the rename (the instance will be there, either with the old name or with the new name). Reviewed-by: imsnah
-
- Sep 15, 2007
-
-
Iustin Pop authored
I was getting into trouble with gnt-backup and discovered reading the code of the debian-etch os image and the error logs that: 1 - Debian os image shipped by ganeti depends on the availability of dump and restore. Based on that I had included in the section of "Installing the Operating System support packages" the dependency of dump/restore and the command to install dump/restore. Author: Leonardo Rodrigues de Mello <l@lmello.eu.org> Reviewed-by: iustinp
-
- Sep 14, 2007
-
-
Iustin Pop authored
Change this to have the exact same parameters as OpQueryInstances. Also fix burnin which is broken since r146. Reviewed-by: imsnah
-
Iustin Pop authored
As per the changes to LUQueryNodes, the QueryInstances LU is modified to accept a list of instances for which to compute and return information. Reviewed-by: imsnah
-
Iustin Pop authored
Now that LUQueryNodes supports all the functionality of LUQueryNodeData, let's migrate gnt-node.ShowNodeConfig to use it and remove all traces of OpQueryNodeData and LUQueryNodeData. Reviewed-by: imsnah
-
Iustin Pop authored
LUQueryNodes it's very similar to LUQueryNodeData, but it lacks two features: - instance list (it has count though), both primary and secondary - selective node listing In order to support these features, we change it to return raw values instead of stringified ones (like the recent change to LUQueryInstances) and to support query-ing of a restricted set of nodes. This CL also modifies the gnt-node script to conform to the new protocol and the opcode OpQueryNodes to support the new "nodes" attribute. Reviewed-by: imsnah
-
Iustin Pop authored
On closer look, all except one of the current users of _GetWantedNodes are using only the name of the nodes and throw away the other attributes. It makes sense to make this function return only the name list (as in the future this might be faster than computing all attributes). Reviewed-by: imsnah
-
- Sep 13, 2007
-
-
Michael Hanselmann authored
Reviewed-by: iustinp
-
Iustin Pop authored
Currently, LUQueryInstances will provide strings for its results. This makes it hard for other consumers than "gnt-instance list" to use the OpQueryInstances opcode for whatever they wish to. The change moves the formatting in five of the six cases where this happens to the actual gnt-instance.ListInstances procedure and removes the unconditional convert to string in LUQueryInstances.Exec() Reviewed-by: imsnah
-
Iustin Pop authored
Explanation: since we use lists and not a string, every argument we give is passed unchanged to the remote shell. So, for example, passing '/etc/init.d/ganeti restart' to the remote shell, it will try to run the path /etc/init.d/ganeti\ restart. With the s space included. This breaks, for example, gnt-node add and gnt-cluster command. The original problem with the backup routines that led to the "'" change is that they use a plain " ".join(list), but we don't need to quote the whole ssh remote command for this. We can simply use the existing utils.ShellQuoteCmd(list) which does the proper quoting of the ';' or '&&' metacharacters. With this change, both gnt-node add, gnt-cluster command and export/import work. This also improves the error-handling behaviour of one cat command by making it conditional on the preceding mkdir. Reviewed-by: ultrotter
-
- Sep 12, 2007
-
-
Michael Hanselmann authored
Reviewed-by: iustin
-