- Jun 30, 2008
-
-
Guido Trotter authored
This patch creates a new GanetiContext class, which is used to hold context common to all ganeti worker threads. As for the GanetiLockingManager class it is paramount that there is only one such class throughout the execution of Ganeti, so the class checks for that, and also forbids its own modification after it's been initialized. The context for now contains a ConfigWriter and a GanetiLockingManager and is created by the daemon and propagated to PoolWorker(s) and JobRunner(s). Reviewed-by: iustinp
-
- Jun 27, 2008
-
-
Guido Trotter authored
From the master node we can't start ssh and connect to the remote node, nor we can do it from ganeti-noded as this ssh section will possibly ask for key confirmation and password. So the code to copy the ganeti-noded password and SSL key has been moved to bootstrap.py, and it's called by gnt-node before the AddNode opcode. Reviewed-by: iustinp
-
Guido Trotter authored
In the "new world" we'll need to setup ganeti-noded via ssh on the node before calling the AddNode opcode. Before doing it we'll check that the node is not already in the cluster, if --readd was not passed. This guarantees we're not going to restart ganeti-noded on a running node. This patch also incidentally fixes a non-style-guide conformant docstring. Reviewed-by: iustinp
-
Guido Trotter authored
As we can't use ssh.VerifyNodeHostname directly, we'll set up a mini node-verify to do checking between the master and the new node. In the future networking checks, or more nodes, can be added as well. Reviewed-by: iustinp
-
Guido Trotter authored
Since we're inside a LU we have access to self.sstore. No need to use ss, which separate instantiation will disappear in a few patches! ;) Reviewed-by: iustinp
-
Guido Trotter authored
We used to scp all the ssconf files, and the vnc password file to the new node. With this patch we use the upload_file rpc, specifying just the new node as a destination. All the files previously copied by scp are already allowed by the backend. Reviewed-by: iustinp
-
Guido Trotter authored
What could possibly go wrong? Reviewed-by: iustinp
-
Guido Trotter authored
Two LUs are using RunCmd to call fping, in order to check for an IP presence on the network. Substituting it with TcpPing will get rid of it, which makes it not break in the new world order, where the master cannot fork. Reviewed-by: iustinp
-
Guido Trotter authored
Reviewed-by: iustinp
-
Guido Trotter authored
- s/GanetiQuitException/QuitGanetiException/ - Look for the arguments in err.args, not err itself Reviewed-by: iustinp
-
Guido Trotter authored
Rather than packing all the arguments in a tuple, let's pass them plainly. The superclass won't complain. Reviewed-by: iustinp
-
Michael Hanselmann authored
Having a timestamp on log messages is very useful. The default format string doesn't include a timestamp. Reviewed-by: ultrotter
-
- Jun 26, 2008
-
-
Guido Trotter authored
Even in 1.2 this behaviour is broken, as the rpc call will remove the ssh keys before we get a chance to log in. Now the rpc takes care of shutting down the node daemon as well, so we definitely can avoid this. This makes the LURemoveNode operation work again with the threaded master daemon. Reviewed-by: iustinp
-
Guido Trotter authored
Accoring to the usage documented in the QuitGanetiException docstring, if we receive such an exception we'll set the global _EXIT_GANETI_NODED variable to True, and then return either a valid value or an error message to the user. This will be the last request we serve, though, because the main loop will be interrupted and the daemon will terminate. Reviewed-by: iustinp
-
Guido Trotter authored
This exception does not signal an error but serves the purpose of making the ganeti daemon shut down after handling a request. Currently it will be used by ganeti-noded but in the future ganeti-masterd might make use of it as well. Its usage is documented in the docstring. Reviewed-by: iustinp
-
Guido Trotter authored
Rather than calling httpd.serve_forever() in ganeti-noded we'll call httpd.handle_request() but just while a global variable, which we'll call _EXIT_GANETI_NODED, remains false. Reviewed-by: iustinp
-
Guido Trotter authored
Reviewed-by: iustinp
-
Guido Trotter authored
There is no point in checking whether the cluster VNC password file exists as a prerequisite for AddNode, considering the check happens on the master node, not the target one. Removing this check. Reviewed-by: iustinp
-
Guido Trotter authored
Reviewed-by: iustinp
-
Michael Hanselmann authored
If --no-restart is passed to devel/upload, it'll not run "/etc/init.d/ganeti restart" (which kills processes), making debugging on a terminal a bit easier. Reviewed-by: iustinp, ultrotter
-
- Jun 25, 2008
-
-
Michael Hanselmann authored
Apparently there were still some leftovers. While removing an instance, I got the message "unhandled exception 'module' object has no attribute 'LD_MD_R1'". Reviewed-by: iustinp
-
Iustin Pop authored
Currently, when seeing if a LV is degraded or not (i.e. virtual volume), we first attach to the device (which does an lvdisplay), then do a lvs in order to display the lv_attr. This generates two external commands to do (almost) the same thing. This patch changes the Attach() method for LVs to call lvs and display both the major/minor (needed for attach) and the lv_status (needed for GetSyncStatus). Thus, later in GetSyncStatus, we don't need to run lvs again, and instead just return the value computed in Attach(). Reviewed-by: imsnah
-
- Jun 24, 2008
-
-
Iustin Pop authored
This makes it easier to setup new git repositories, and makes it more likely all people have the same ignore rules. Reviewed-by: imsnah
-
- Jun 23, 2008
-
-
Michael Hanselmann authored
Reviewed-by: iustinp
-
Michael Hanselmann authored
Reviewed-by: iustinp
-
Iustin Pop authored
Since the disabling of forking in the master daemon, the two ssh-based subcommands were not working anymore. However, there is no need at all for the commands to be run from the master daemon (permissions to read the cluster private ssh key notwithstanding), they can be run directly from the command line utilities. The patch removes the two opcodes OpRunClusterCommand and OpClusterCopyFile (and their associated LUs) and changes the code in ‘gnt-cluster’ to query the list of nodes and run directly the SshRunner over the list. As such, all forking is done from the gnt-cluster script, and the commands are working again. Reviewed-by: imsnah
-
Guido Trotter authored
If an uncaught exception is thrown currently it destroys the calling thread. This patch changes the behaviour to failing the current job, logging a message, but trying to keep the daemon up. Reviewed-by: imsnah
-
Michael Hanselmann authored
Reviewed-by: iustinp
-
Michael Hanselmann authored
Automake automatically appends "--" to @mkdir_p@. In case you have a directory named "--" in your source tree, you can remove it using the command "rm -rf -- --". Reviewed-by: iustinp
-
Michael Hanselmann authored
Reviewed-by: ultrotter
-
Michael Hanselmann authored
Reviewed-by: iustinp
-
Michael Hanselmann authored
Reviewed-by: iustinp
-
Guido Trotter authored
The failure is because in high load, the parent gets to run before the child has the chance to os._exit(), and therefore it is still running when the parent does the check. The fix removes the chance of this happening by waiting to receive a SIGCHLD (but not calling wait()) before trying to test the pid. Reviewed-by: imsnah
-
Michael Hanselmann authored
We decided to bump the major number to 2 a few weeks ago due to the huge number of changes going into it. Reviewed-by: iustinp
-
Michael Hanselmann authored
In cfgupgrade, we need to extract parts of and build new version numbers. Reviewed-by: iustinp
-
Michael Hanselmann authored
cfgupgrade will not work with relative paths at all, but rather get them from constants.py. Reviewed-by: iustinp
-
- Jun 22, 2008
-
-
Iustin Pop authored
Currently there isn't any easy way to list all nodes or instance and their tags; you have to query each node in turn, or list all the tags via something like “gnt-cluster search-tags '.*'”. Of course, this is not optimal. The patch adds a new fields to “gnt-instance list” and “gnt-node list” called ‘tags’, that will list the tags of the object in comma-separated form. This field will be empty if there are no tags (when using a separator this output can still be parsed by other scripts). At opcode level, there is a new fields called ‘tags’ that returns a (python) list of the object tags. Reviewed-by: ultrotter
-
- Jun 21, 2008
-
-
Iustin Pop authored
Currently the generic handling of ganeti errors in cli.py (GenericMain and FormatError) only handles the core ganeti errors, and not the client protocol errors (which live in a separate hierarchy). This patch adds handling of luxi errors too, and also adds another luxi error for the case when the master is not running. This gives us a nice: gnta1:~# gnt-node list Cannot communicate with the master daemon. Is it running and listening on '/var/run/ganeti-master.sock'? error message instead of a traceback. Reviewed-by: amishchenko
-
Iustin Pop authored
Currently we don't use twisted, so we remove the twisted checks from the configure stage. Reviewed-by: amishchenko
-
- Jun 20, 2008
-
-
Iustin Pop authored
This patch adds rpc layer calls (in rpc.py and the equivalent in ganeti-noded) to close a list of block devices, and the wrapper in backend.py that takes a list of Disk objects, identifies them and returns correctly formatted results. The reason why this very basic call was missing until now from the rpc layer is that we usually don't care about device closes (though we should, and will do so in the future) as only drbd has a meaningful Close() operation; right now we directly do Shutdown(). The patch is clean enough that it's actually independent of the live migration implementation. Reviewed-by: imsnah
-