gnt-debug(8)
π gnt-debug π
okay bestie, welcome to gnt-debug(8) β the debug commands page from Ganeti, and yes it's the Version 3.1.0~rc2 build, we're fancy. this whole page is literally a toolkit for poking at Ganeti's insides and watching what happens. slay. π
β¨ NAME β¨
gnt-debug β debug commands. that's the whole name. iconic brevity, no notes. π
πΈ SYNOPSIS πΈ
gnt-debug {command} [arguments...]
π¦ DESCRIPTION π¦
so like, the way that gnt-debug works is: it's used for debugging the Ganeti system. that's the vibe. you're the main character, the system is the side quest, and this is the tool that lets you peek behind the curtain. π₯
π COMMANDS π
π IALLOCATOR π
iallocator [--debug] [--dir direction] {--algorithm allocator } [--mode mode] [--mem memory] [--disks diskS] [--disk-template template] [--nics nics] [--os-type OS] [--vcpus vcpus] [--tags tags] {instance-name}
this one runs a test run of the iallocator framework. literally a dress rehearsal, no real consequences.
here's the tea: the command builds input for a given iallocator script (the one you named with --algorithm), and then it either
- shows you that input data β if
directionisin, or - runs the iallocator script and shows you its output β if
directionisout.
and about the mode, bestie:
- if
modeisallocate, then an instance definition gets built out of the other arguments and sent off to the script π - otherwise (
modeisrelocate), you have to pass an existing instance name as the first argument. no name, no relocate, periodt.
also, heads up: this build of Ganeti looks for iallocator scripts in these directories:
/usr/local/lib/ganeti/iallocators
/usr/lib/ganeti/iallocators
for more details about this framework, see the HTML or PDF documentation. iykyk π
π€ DELAY π€
delay [--debug] [--no-master] [--interruptible] [-n node-name...] {duration}
this runs a test opcode (a sleep, yes literally a nap) on the master and on selected nodes via an RPC call. it serves no other purpose but to execute a test operation. that's it. it's a nap opcode. π
-nβ can be given multiple times to select the nodes for the RPC call. by default the delay also runs on the master too, unless...--no-masterβ ...you pass this, and then the master gets to sit it out.--interruptibleβ lets a running delay opcode be interrupted by communicating with a special domain socket. if any data is sent to that socket, the delay opcode terminates. but listen: if you use this option, no RPCs are performed, though locks are still acquired. important, don't skip that part.
and the delay argument? it gets interpreted as a floating point number. yes really. π
π¬ SUBMIT-JOB π¬
submit-job [--verbose] [--timing-stats] [--job-repeat n] [--op-repeat n] [--each] {opcodes_file...}
this command builds a list of opcodes from files in JSON format and submits a job per file to the master daemon. super useful for testing options that aren't available via command line. very "i found a backdoor and it's β¨documentedβ¨" of it.
--verboseβ additionally displays the corresponding job IDs and the progress while waiting for the jobs.--timing-statsβ shows some overall statistics, including the number of total opcodes, jobs submitted, and time spent in each stage (submit,exec,total). π--job-repeat nβ submits N copies of each job (input file). equivalent to passing the arguments N times.--op-repeat nβ causes N copies of each of the opcodes in the file to be executed. equivalent to each file containing N copies of the opcodes.--eachβ submits each job separately, using NSubmitJobLUXI requests instead of oneSubmitManyJobsrequest.
π§ͺ TEST-JOBQUEUE π§ͺ
test-jobqueue
executes a few tests on the job queue. and yes, this command might generate failed jobs deliberately β that's not a bug, bestie, that's the assignment. don't panic when you see red. π
π TEST_OSPARAMS π
test-osparams {--os-parameters-secret param=*value*... }
tests secret os parameter transmission. it's giving secret. it's giving os params. it's giving exactly what it says on the tin. π€«
π LOCKS π
locks [--no-headers] [--separator=*separator*] [-v]
[-o [+]field,...] [--interval=*seconds*]
shows a list of locks in the master daemon. let's get into it:
--no-headersβ skips the initial header line.--separatorβ takes an argument that denotes what gets used between the output fields.
both of those exist to help scripting, so your scripts can be cute and clean. π
-vβ activates verbose mode, which changes the display of special field states (seeganeti(7)).-oβ takes a comma-separated list of output fields. here are the available fields and what they mean:modeβ mode in which the lock is currently acquired (exclusiveorshared)nameβ lock nameownerβ current lock owner(s)pendingβ threads waiting for the lock
oh and if the value of the option starts with the character +, the new fields get added to the default list instead of replacing it. that's so you can quickly see the default list plus a few extra fields without retyping the entire list of fields. efficiency queen behavior. π
--intervalβ repeats the listing. a delay specified by the option value in seconds is inserted between rounds. π
π£οΈ METAD π£οΈ
metad echo text
tests the WConf daemon by invoking its echo function.
a given text is sent to Metad through RPC, echoed back by Metad, and printed to the console. it's basically shouting into a canyon but the canyon is a daemon. ποΈ
π WCONFD π
wconfd echo
wconfd echo text
tests the WConf daemon by invoking its echo function.
a given text is sent to WConfd through RPC, echoed back by WConfd, and printed to the console. same canyon, different daemon. π«Ά
wconfd cleanuplocks
wconfd cleanuplocks
a request to clean up all stale locks is sent to WConfd. bye bye stale locks, we don't know her. π§Ή
wconfd listlocks
wconfd listlocks job-id
a request to list the locks owned by the given job id is sent to WConfd, and the answer is displayed. very "who's holding what" of it. π
wconfd listalllocks
wconfd listalllocks
a request to list all locks in use, directly or indirectly, is sent to WConfd, and the answer is displayed.
wconfd listalllocks
wconfd listalllocks
a request to list all locks in use, directly or indirectly, together with their respective direct owners, is sent to WConfd, and the answer is displayed. (yes, same command name, extra detail. the owners are the moment. π)
wconfd flushconfig
wconfd flushconfig
a request to ensure that the configuration is fully distributed to the master candidates. so everyone's on the same page. communication is key besties. π
π REPORTING BUGS π
found a bug? report bugs to the project's issue tracker, or contact the developers using the Ganeti mailing list. they don't bite. go tell them. π£
π SEE ALSO π
Ganeti overview and specifications:
ganeti(7)β general overviewganeti-os-interface(7)β guest OS definitionsganeti-extstorage-interface(7)β external storage providers
Ganeti commands:
gnt-cluster(8)β cluster-wide commandsgnt-job(8)β job-related commandsgnt-node(8)β node-related commandsgnt-instance(8)β instance commandsgnt-os(8)β guest OS commandsgnt-storage(8)β storage commandsgnt-group(8)β node group commandsgnt-backup(8)β instance import/export commandsgnt-debug(8)β debug commands (hi, that's us π)
Ganeti daemons:
ganeti-watcher(8)β automatic instance restarterganeti-cleaner(8)β job queue cleanerganeti-noded(8)β node daemonganeti-rapi(8)β remote API daemon
Ganeti htools:
htools(1)β generic binaryhbal(1)β cluster balancerhspace(1)β capacity calculationhail(1)β IAllocator pluginhscan(1)β data gatherer from remote clustershinfo(1)β cluster information printermon-collector(7)β data collectors interface
βοΈ COPYRIGHT βοΈ
Copyright (C) 2006-2015 Google Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
okay that's the whole page bestie, go debug something and be iconic doing it. π¦ this was gnt-debug(8) from Ganeti, Version 3.1.0~rc2 β thanks for reading, mwah. πβ¨π
π¦ where this page comes from
- debian trixie: ganeti-3.1 3.1.0~rc2-3 Β· BSD-2-Clause
- ubuntu questing: ganeti-3.1 3.1.0~rc2-4
- ubuntu resolute: ganeti-3.1 3.1.0~rc2-4build1 Β· BSD-2-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms