Statistics
| Branch: | Tag: | Revision:

root / lib @ 153d9724

# Date Author Comment
153d9724 10/25/2007 02:22 pm Iustin Pop

Modify two mirror-device related rpc calls

The two calls mirror_addchild and mirror_removechild take only one child
for addition/removal. While this is enough for our md usage, for local
disk replacement in drbd8, we need to be able to specify both the data...

a1f445d3 10/24/2007 05:43 pm Iustin Pop

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.

Reviewed-by: imsnah

f38478b2 10/24/2007 05:41 pm Iustin Pop

Allow DRBD8 to sync after sb1-pri with no changes

Currently the way we shutdown or startup disks seems to make DRBD8
unhappy. Until we rewrite the sequence of (de)activation, allow DRBD to
connect after a sb1-pri condition with no changes to the data.

Reviewed-by: imsnah

b352ab5b 10/24/2007 05:23 pm Iustin Pop

Fix a disk handling bug triggered by failover

This leaves an instance's disks configured for the primary node as after
disk activation we want to start the instance anyway. As such,
_GatherBlockDevs in backend.py will need the disks configured for the
primary....

a2cfdea2 10/24/2007 04:30 pm Iustin Pop

Add DRBD8 class for handling drbd version 8.x

This duplicates some code from the DRBDev class, but not very much, and
it will be expanded with the new functionality available for the 8.x
version. Currently the code is not accessible outside the module.

This patch introduces a dependency on the pyparsing module....

ae26a287 10/24/2007 04:30 pm Iustin Pop

Move/rename _IsValidMeta to base drbd class

The DRBDev._IsValidMeta only checks for the metadata device size. Since
this is a useful check (but not complete) for DRBD8, move it to the base
class and name it _CheckMetaSize.

Reviewed-by: imsnah

5a47ad20 10/24/2007 04:24 pm Iustin Pop

More abstractions from DRBD7 to base class

This moves the _SetFromMinor and _MassageProcData to the base class.

Reviewed-by: imsnah

0caf6485 10/24/2007 04:24 pm Iustin Pop

Improve out-of-minors handling

Currently, the out-of-minors handling is not very good: though both MD
and DRBD functions for finding an unused minor can return None, only the
DRBD code checks for this case.

This patch improves this by making the functions _FindUnusedMinor raise...

770fe0f9 10/24/2007 04:23 pm Iustin Pop

Move some methods from DRBDev to BaseDRBD

Since some of the methods and constants are valid for both 0.7 and 8.x
versions, we move them to the base class.

Reviewed-by: imsnah

aa4260ca 10/19/2007 02:49 pm Iustin Pop

Some tiny style fixes

Reviewed-by: imsnah

0f7f32d9 10/19/2007 02:48 pm Iustin Pop

Split some DRBD functionality based on versions

This is a small split of some functionality from the DRBDev class into a
base drbd class that holds just a few things, in order to make migration
to drbd 8.x easier.

Reviewed-by: imsnah

fe96220b 10/19/2007 02:48 pm Iustin Pop

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 check
their usage.

Note that we don't rename the values of the constants as they are used...

bf6929a2 10/18/2007 01:25 pm Alexander Schreiber

Patch series for reboot feature, part 2

This patch series implements the reboot command for gnt-instance. It
supports three types of reboot: soft (hypervisor reboot), hard (instance
config rebuild and reboot) and full (full instance shutdown and startup
again)....

007a2f3e 10/17/2007 06:00 pm Alexander Schreiber

Patch series for reboot feature, part 1

This patch series implements the reboot command for gnt-instance. It
supports three types of reboot: soft (hypervisor reboot), hard (instance
config rebuild and reboot) and full (full instance shutdown and startup
again)....

6a438c98 10/16/2007 06:27 pm Michael Hanselmann

Make “gnt-cluster verify” exit 0 if there's no problem with instances.

Reviewed-by: schreiberal

f55ff7ec 10/16/2007 05:30 pm Iustin Pop

Add the number of VCPUs in gnt-instance info

Reviewed-by: imsnah

1d67656e 10/16/2007 04:51 pm Iustin Pop

Allow force removal of instances

This patch adds a new option to the instance removal command
"--ignore-failures" that forces the removal of the instance from the
configuration even if the removal process encounters errors.

In order to be able to do this when the remote node(s) is(are) down, we...

70d9e3d8 10/16/2007 11:28 am Iustin Pop

Replace more ssh paths with proper constants

The node's ssh keys filenames are now provided as constants; this should
allow easier customization.

Also, the user's ssh key computing has been abstracted into ssh.py

Reviewed-by: imsnah

2f8598a5 10/15/2007 04:06 pm Alexander Schreiber

Trivial typing fixups.

Reviewed-by: iustinp

7900ed01 10/12/2007 05:53 pm Iustin Pop

Remove some hardcoded names/paths from backend.py

This patch does the following:
- add constants.GANETI_RUNAS = "root", which is used to compute
the homedir (and thus the .ssh directory) instead of hardcoding
"/root/.ssh" in backend.AddNode and backend.LeaveCluster...

087b34fe 10/12/2007 04:02 pm Iustin Pop

Add a generic write file function

Currently there are a few version of "write a file safely" in the code.
This patch adds a generic function that should be able to replace all
the other versions.

The "take attributes from the target file" option, while useful, is not...

71eca7c3 10/12/2007 03:30 pm Iustin Pop

Do not walk the whole DATA_DIR on node leave

Since we remove only files from DATA_DIR and not from subdirectories,
let's not walk the entire tree, a simple listdir suffices. Also switch
to utils.RemoveFile from simple os.unlink.

Reviewed-by: imsnah

257f4c0a 10/12/2007 03:27 pm Iustin Pop

Enhance GetHomeDir to accept either names or UIDs

Currently GetHomeDir accepts UIDs only. Enhance it to accept either a
user name or a user id, to allow for nicer usage.

Reviewed-by: imsnah

0e137c28 10/11/2007 06:23 pm Iustin Pop

Some small improvements to the hooks environment

For the configuration update hook, it's useful to have a consistent name
for the target of the operation. As such, the LU code is modified to
include an GANETI_OP_TARGET that points either to the cluster (name),...

6a4aa7c1 10/11/2007 06:23 pm Iustin Pop

Implement post-configuration-update hook

This patch adds a special hook: the post-configuration update hook. This
hook has only a post phase that runs after a top-level LU that modified
the configuration.

Since the hook is a post-phase one, no error checking is done on the...

4167825b 10/11/2007 06:00 pm Iustin Pop

Split the hooks env building in two parts

This patch moves some of the environment processing from _BuildEnv to a
new _RunWrapper command which does the stringification and adds the
sstore variables.

The reasoning is that the sstore can be fresher than before the...

9a395a76 10/11/2007 06:00 pm Iustin Pop

Move hook execution decision to HooksMaster

Currently, the HooksMaster creation and execution decision is in the
Processor class. This is not optimal, so we change to always create a
hooks master and instead make the decision inside that class, by
creating empty node lists for both pre and post if the lu doesn't...

f97a6b10 10/11/2007 05:59 pm Iustin Pop

Remove cfg and sstore parameters to HooksMaster

The HooksMaster class doesn't use the cfg parameter, and it's better to
use it from the LU anyway (if needed). Let's remove it.

Also, the sstore of the LU can be fresher than the sstore we got at init
time, so use that instead and remove our own....

14e15659 10/11/2007 05:55 pm Iustin Pop

Enable the ConfigWriter to keep track of updates

This allows external callers to determine if the configuration has been
changed.

Reviewed-by: imsnah

7e1394dc 10/11/2007 04:39 pm Alexander Schreiber

Infrastructure for detailed instance restarts, part one

The beginning of the infrastructure for detailed instance restarts. Does
not affect behaviour if code yet.

Reviewed-by: iustinp

59072e7e 10/11/2007 03:04 pm Michael Hanselmann

Use the kernel's ability to generate UUIDs.

This removes the dependency on either the uuid module or e2fsprogs' uuidgen.

Reviewed-by: iustinp

2f8b60b3 10/11/2007 11:02 am Iustin Pop

Add small function to read the homedir of a user

This can be used to replace hardcoded "/root/" paths.

Reviewed-by: imsnah

16abfbc2 10/10/2007 08:20 pm Alexander Schreiber

Remove fping as a dependency for Ganeti.

This patch completely gets rid of fping
- replace all fping invocations with TcpPing calls
- update documentation accordingly.
- associated cleanups (use constant for localhost IP, use more sensible
defaults for TcpPing and use those)...

01ca31ae 10/10/2007 06:06 pm Iustin Pop

Some small fixes to utils.GenerateTable

This adds:
- fix the case when a dumb caller didn't stringify its values
- explicitly raise a ProgrammerError in case a field is missing from
the headers dictionary

Reviewed-by: imsnah

3023170f 10/10/2007 05:04 pm Iustin Pop

Fix AskUser to not die on extra input

Currently, AskUser dies with -ESPIPE if the user gives more than one
character plus newline. This is because the python library, while
returning only two chars from the readline(2) call, will cache the rest
of the input, and when we do a write, it will try to seek back to just...

a5bc662a 10/10/2007 02:10 pm Iustin Pop

Implement gnt-node evacuate

This patch adds a new 'evacuate' subcommand to gnt-node. The command
will do a replace disks for all instances having that node as secondary
with the new target being the new node given.

The syntax is:
gnt-node evacuate src_node target_node...

f00b46bc 10/10/2007 01:58 pm Michael Hanselmann

Make Xen DomU kernel and initrd configurable at build time.

Reviewed-by: iustinp

2f31098c 10/10/2007 01:00 pm Iustin Pop

Remove the shebang from modules

Since modules are not directly executables, remove the shebang from
them. This helps with lintian warnings.

Also make the autogenerated _autoconf.py contain two comment lines at
the beginning, like the other modules.

Reviewed-by: ultrotter

5a3103e9 10/10/2007 11:12 am Michael Hanselmann

Detect node restarts and reactivate disks.

- Change format of watcher state file to JSON.
- Move log path for watcher script to constants.py.

Reviewed-by: iustinp

0c434948 10/09/2007 12:13 pm Iustin Pop

Fix a wrong exception name

This was introduced in rev 208.

Reviewed-by: imsnah

73702ee7 10/09/2007 12:13 pm Iustin Pop

Separate error formatting out of cli.GenericMain

This patch moves the error formatting into a separate function that will
be exported so that scripts that execute multiple opcodes can create the
same output as for GenericMain. Also, GenericMain becomes more readable....

fe4cc679 10/09/2007 10:42 am Iustin Pop

Revert a debugging 'raise' from rev 195

As far as I understand, this was just a debugging aid. Remove it so that
configuration errors are nicely handled.

Reviewed-by: imsnah

9f33ef86 10/09/2007 10:39 am Iustin Pop

Enhance cli.SubmitOpcode to use custom parameters

This patch allows the SubmitOpcode function to take a pre-created
Processor instance and a different feedback function. This is helpful
when submitting more than one opcode from a shell script.

Reviewed-by: imsnah

3ef10550 10/08/2007 06:18 pm Michael Hanselmann

Add boot id to “gnt-node list”.

Reviewed-by: iustinp

b9ea6acb 10/08/2007 06:12 pm Iustin Pop

Add handler for errors.TagError

This patch adds a simple handler for TagError that prints the error
(better than having a stack dump).

Reviewed-by: imsnah

810c50b7 10/08/2007 06:12 pm Iustin Pop

Add source file option for {add,remove}-tags

This patch adds a '--from' option to the {add,remove}-tags commands that
allows the command to read from a file or from stdin (when passing a
dash for the filename).

Reviewed-by: imsnah

846baef9 10/08/2007 06:11 pm Iustin Pop

Implement command-line tags support

This patch adds generic functions for tag manipulations to cli.py and
modifies gnt-{cluster,node,instance} to export {list,add,remove}-tags
commands that use those.

Reviewed-by: imsnah

f27302fa 10/08/2007 06:10 pm Iustin Pop

Change tags add/remove to process multiple tags

This patch changes the tags opcodes to work with multiple tags at once
instead of only one. As such, the opcodes and some parameters are
renamed.

Reviewed-by: imsnah

b60ae2ca 10/08/2007 06:10 pm Iustin Pop

Fix super() calls for objects.Cluster

Reviewed-by: imsnah

8f684e16 10/08/2007 06:10 pm Iustin Pop

Fix tags operations for instances

Reviewed-by: imsnah

334d1483 10/08/2007 05:42 pm Iustin Pop

Extend GenericMain with a way to override options

This allows scripts to pass options to generic functions (options that
are not visible in the command line).

Reviewed-by: imsnah

d5835922 10/08/2007 01:48 pm Michael Hanselmann

Use indenting if supported by simplejson.

Reviewed-by: iustinp

9ff7e35c 10/08/2007 01:03 pm Michael Hanselmann

Fix “make distcheck”.

- Move symlink to “ganeti” to top dir
- Add ganeti.config_unittest.py to tests to be run
- Make sure everything is built before tests are run

Reviewed-by: iustinp

eedbda4b 10/08/2007 11:59 am Michael Hanselmann

Add function to list files in a directory, excluding those beginning with a
dot.

Reviewed-by: iustinp

0ee60a28 10/04/2007 06:49 pm Guido Trotter

Remove redundant check.

This isdir() check leads to a broken error message. Even fixing it creates some
cases in which the error message is nebulous and unclear while removing it
makes this situation be dealt with a lot better by the _OSOndiskVersion checks....

305a7297 10/04/2007 02:51 pm Guido Trotter

Ship (and display) path for InvalidOS errors too.

- Document the expected change to errors.InvalidOS
- Always pass the additional argument
- Modify DiagnoseOS output to show the path

Reviewed-by: iustinp, imsnah

319856a9 10/04/2007 02:33 pm Michael Hanselmann

Change configuration storage format from Pickle to JSON.

- Add NEWS file with major changes between versions.
- Bump RPC version number
- No longer serialize in RPC, but just convert to dict

Old Pickle based configuration files can be converted using the cfgupgrade...

56bcd3f4 10/03/2007 05:11 pm Guido Trotter

Second part of the OS search path cleanup

Abstract the _OSSearch function, to look for an OS in the search path
Make OSFromDisk accept an optional base_dir, rather than the os_dir itself

Reviewed-by: iustinp

c26dabd7 10/03/2007 02:21 pm Guido Trotter

Make parameter os_dir mandatory for _OSOndiskversion.

First part of the OS search path cleanup. _OSOndiskversion is only ever called
once, and with that argument set, so let's make it mandatory.

Reviewed-by: iustinp

7c3d51d4 09/28/2007 12:39 pm Guido Trotter

Change constants.OS_DIR with constants.OS_SEARCH_PATH which includes all the
directories which can contain OS scripts.

The list defaults to the current one but can be changed at configure time.

Reviewed-by: imsnah

68dccc07 09/27/2007 07:02 pm Guido Trotter

Make the default export path configurable.

This is needed to improve FHS compliance for distribution integration.
The need was discussed on the alioth pkg-ganeti project.

Reviewed-by: imsnah

081b1e69 09/27/2007 04:03 pm Michael Hanselmann

Prevent race condition in CreateBackup().

Reviewed-by: ultrotter

f491c3a8 09/25/2007 04:04 pm Michael Hanselmann

Rename constants for SSH init script by Iustin's request.

Reviewed-by: iustinp

c6b8baba 09/25/2007 02:41 pm Michael Hanselmann

Add configure option for init.d/ssh script. This is useful for distributions
with the script named differently than Debian.

Reviewed-by: ultrotter

ff9c047c 09/24/2007 11:41 am Iustin Pop

Implement to/from dict conversion for ConfigObject(s)

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...

ec29fe40 09/21/2007 05:59 pm Iustin Pop

Change class hierarchy in objects.py

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...

89e1fc26 09/21/2007 04:37 pm Iustin Pop

Remove requirement that host names are FQDN

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...

619fdc8e 09/21/2007 04:36 pm Iustin Pop

Move a constant from ganeti-master to constants.py

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

2057f6c7 09/21/2007 03:23 pm Iustin Pop

Add slots on TaggableObject

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

47988778 09/19/2007 05:24 pm Iustin Pop

Improve the cli.AskUser() function

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:...

bdd55f71 09/19/2007 04:52 pm Iustin Pop

Allow 'add instance' to not start the new instance

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)....

bcf043c9 09/19/2007 09:56 am Iustin Pop

Change resolved hostname from dict to a class

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...

07bd8a51 09/18/2007 03:42 pm Iustin Pop

Implement cluster rename operation

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...

4ca1b175 09/17/2007 05:04 pm Alexander Schreiber

Cleanup up selective imports for utils and utils unit test.

Reviewed-by: iustinp, imsnah

9716fdce 09/17/2007 02:53 pm Iustin Pop

A few minor fixes in backend.py

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

decd5f45 09/17/2007 02:52 pm Iustin Pop

Implement instance rename operation

This patch adds support for instance rename operation at all remaining
layers: RPC, OpCode/LU and CLI.

Reviewed-by: imsnah

2c30e9d7 09/17/2007 02:18 pm Alexander Schreiber

Added TcpPing to do ping-alike via TCP connect(2) with defined source address.
To be used to replace the currently fping(8) based reachability test.

Reviewed-by: imsnah

386b57af 09/17/2007 01:52 pm Iustin Pop

Add support for rename operation in the OS API

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...

fc95f88f 09/17/2007 12:10 pm Iustin Pop

Add rename instance support to ConfigWriter

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...

246e180a 09/14/2007 12:54 pm Iustin Pop

Change OpQueryNodes nodes attribute to names

Change this to have the exact same parameters as OpQueryInstances.

Also fix burnin which is broken since r146.

Reviewed-by: imsnah

069dcc86 09/14/2007 12:54 pm Iustin Pop

Enable LUQueryInstances to work with a given list of instances

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

4a72cc75 09/14/2007 12:03 pm Iustin Pop

Remove OpQueryNodeData and LUQueryNodeData

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

ec223efb 09/14/2007 12:02 pm Iustin Pop

Change LUQueryNodes to return raw values and support selective listing

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...

a7ba5e53 09/14/2007 12:02 pm Iustin Pop

Change _GetWanted* to return names instead of objects

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...

8a23d2d3 09/13/2007 02:49 pm Iustin Pop

Move string formatting out of LUQueryInstances

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...

72f0f7fd 09/13/2007 02:31 pm Iustin Pop

Fix the ssh change which breaks remote ssh commands

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...

23f41a3e 09/12/2007 03:02 pm Michael Hanselmann

Change the way how locales are overridden:
- Set only LC_ALL, it overrides any other variable
- Restore environment after unittest

Reviewed-by: iustinp

3312b702 09/12/2007 02:58 pm Iustin Pop

Clone cmdlib._GetWantedNodes into _GetWantedInstances

This duplicates _GetWantedNodes to _GetWantedInstances, after doing some
changes to it:
- fix an indentation error that should result in only the last node
name passed being chosen
- change the function to have a single return statement...

fdc267f4 09/12/2007 01:32 pm Iustin Pop

Fix docstrings of many opcodes

Reviewed-by: imsnah

f6441c7c 09/11/2007 03:18 pm Iustin Pop

Filters out LANG and LC_* on RunCmd

This filters out the LANG and LC_ variables from the environment of programs
executed by RunCmd, in order to get consistent output of execute programs like
lvs, etc.

Reviewed-by: imsnah

8e587e52 09/11/2007 11:45 am Michael Hanselmann

- Don't build .tar.bz2, we only distribute .tar.gz anyway.
- Clean generated files on “make maintainer-clean”.
- Build _autoconf.py and ganeti.initd on “make all”.

Reviewed-by: iustinp

00003458 09/07/2007 02:30 pm Guido Trotter

Make import/export use the auxiliary ssh library to build the remote commands.

This avoids forgetting some parameters, as it's happening right now
(the correct known host file is not being passed)

In order to do so we split SSHCall into an auxiliary BuildSSHCmd which builds...

88d14415 09/05/2007 08:14 pm Michael Hanselmann

Add function to get all local IP addresses, will be used in cmdlib.py.

Reviewed-by: schreiberal

2ec08468 09/04/2007 02:32 pm Michael Hanselmann

Use _autoconf.py instead of version.py, generated by Makefile with more
variables. The underline is there to mark it as a private module.

Reviewed-by: iustinp

7c18ef8e 09/03/2007 05:42 pm Michael Hanselmann

- Generic automake cleanup
- Bump version number to 1.2b2
- Add version.py file generated from version.py.in by autoconf

Reviewed-by: schreiberal

113b55aa 09/03/2007 02:22 pm Iustin Pop

Switch utils.RunCmd from popen2 to subprocess

This changes the implementation of RunCmd from using the popen2 module
to using the (new in 2.4) subprocess module.

This is helpful because the subprocess module has more advanced features
than popen2, the most important ones being the ability to run code in the...

8d519422 08/30/2007 07:16 pm Iustin Pop

Fix mdadm -D output compatibility issues.

Also add some debugging output.

2a710df1 08/30/2007 06:36 pm Michael Hanselmann

- Check for secondary node before doing a failover.
- Replace magic values by constants.

Reviewed-by: iustinp

c20494cd 08/30/2007 05:32 pm Iustin Pop

Add a safety check to the backend.AddOSToInstance

This changes a ';' to '&&' to make sure we run the create script from
the correct directory.

Reviewed-by: imsnah

130e907e 08/30/2007 05:30 pm Iustin Pop

Add one more check on cluster init.

This adds a check that the initial node's IP name doesn't resolve to a
loopback address (127.x.y.z).

Also remove an unused variable.

Reviewed-by: imsnah