ganeti-github.git
5 years agoAdd the SSH key options
Hrvoje Ribicic [Fri, 9 Oct 2015 20:57:38 +0000 (20:57 +0000)]
Add the SSH key options

The two options added in this patch are ssh-key-bits and
ssh-key-type, which will control the length and type of key later.
They are added to the gnt-cluster init and renew-crypto submethods.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

5 years agoMention disabling of '--no-node-setup' in NEWS file
Helga Velroyen [Fri, 13 Nov 2015 08:56:32 +0000 (09:56 +0100)]
Mention disabling of '--no-node-setup' in NEWS file

Update the NEWS file regarding the disabling of
'--no-node-setup'.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoShow 'modify ssh setup' in cluster info
Helga Velroyen [Wed, 11 Nov 2015 12:02:13 +0000 (13:02 +0100)]
Show 'modify ssh setup' in cluster info

This shows the parameter 'modify ssh setup' in the
output of 'gnt-cluster info', to make the information
more accessible than only writing it in the configuration.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoDisable --no-node-setup
Helga Velroyen [Tue, 10 Nov 2015 10:02:41 +0000 (11:02 +0100)]
Disable --no-node-setup

This patch disables the option --no-node-setup of
'gnt-node add'. The option is the equivalent to
--no-ssh-init for 'gnt-cluster init'. However, it
was rather cumbersome for users to remember whether
or not the cluster was initialized with that to
not forget to use this option. Instead making the
user use --no-node-setup, Ganeti shall determine
whether or not to change the SSH setup by reading
the configuration parameter 'modify_ssh_setup' which
is set with --no-ssh-init.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoMake 'modify ssh setup' queryable
Helga Velroyen [Fri, 6 Nov 2015 12:46:44 +0000 (13:46 +0100)]
Make 'modify ssh setup' queryable

This enables the config to be queried for the configuration
parameter 'modify ssh setup'. This will later be used in
gnt-node add.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoFix RPC signature of NodeVerify
Helga Velroyen [Wed, 28 Oct 2015 10:54:16 +0000 (11:54 +0100)]
Fix RPC signature of NodeVerify

This fixes the fact that the last patch was submitted
in the wrong version. It also fixes a bug where
accidentally the node was not looked up properly
in the ssh_port_map.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoUse ssconf for SSH ports in NodeVerify
Helga Velroyen [Tue, 27 Oct 2015 14:17:06 +0000 (15:17 +0100)]
Use ssconf for SSH ports in NodeVerify

This fixes issue 773. For a while already, SSH ports are
available via ssconf. This enables us to simplify the
RPC signature of NodeVerify.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoMerge branch 'stable-2.15' into stable-2.16
Lisa Velden [Mon, 26 Oct 2015 09:01:12 +0000 (10:01 +0100)]
Merge branch 'stable-2.15' into stable-2.16

* stable-2.15
  (no changes)

* stable-2.14
  (no changes)

* stable-2.13
  Renew-crypto: stop daemons on master node first
  Mention manual creation of {shared,}file paths in UPGRADE
  Don't warn about broken SSH setup of offline nodes

* stable-2.12
  Fix inconsistency in python and haskell objects
  Add notSerializeDefault default field option
  Move design-disks.rst to drafts

* stable-2.11
  Fix default for --default-iallocator-params

Conflicts:
    doc/design-draft.rst

Resolution:
    doc/design-draft.rst: take the stable-2.16 version and
      add design-disks.rst

Signed-off-by: Lisa Velden <velden@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoMerge branch 'stable-2.14' into stable-2.15
Klaus Aehlig [Fri, 23 Oct 2015 11:32:06 +0000 (13:32 +0200)]
Merge branch 'stable-2.14' into stable-2.15

* stable-2.14
  (no changes)

* stable-2.13
  Renew-crypto: stop daemons on master node first
  Mention manual creation of {shared,}file paths in UPGRADE
  Don't warn about broken SSH setup of offline nodes

* stable-2.12
  Fix inconsistency in python and haskell objects
  Add notSerializeDefault default field option
  Move design-disks.rst to drafts

* stable-2.11
  Fix default for --default-iallocator-params

Conflicts:
doc/design-draft.rst
Resolution:
take all additions

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoMerge branch 'stable-2.13' into stable-2.14
Klaus Aehlig [Fri, 23 Oct 2015 07:52:51 +0000 (09:52 +0200)]
Merge branch 'stable-2.13' into stable-2.14

* stable-2.13
  Renew-crypto: stop daemons on master node first
  Mention manual creation of {shared,}file paths in UPGRADE
  Don't warn about broken SSH setup of offline nodes

* stable-2.12
  Fix inconsistency in python and haskell objects
  Add notSerializeDefault default field option
  Move design-disks.rst to drafts

* stable-2.11
  Fix default for --default-iallocator-params

Conflicts:
src/Ganeti/THH.hs
Resolution:
take all additions

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Oleg Ponomarev <oponomarev@google.com>

5 years agoMerge branch 'stable-2.12' into stable-2.13
Klaus Aehlig [Thu, 22 Oct 2015 08:51:36 +0000 (10:51 +0200)]
Merge branch 'stable-2.12' into stable-2.13

* stable-2.12
  Fix inconsistency in python and haskell objects
  Add notSerializeDefault default field option
  Move design-disks.rst to drafts

* stable-2.11
  Fix default for --default-iallocator-params

Conflicts:
doc/design-draft.rst
doc/index.rst
lib/cli.py

Resolution:
for lib/cli.py follow the code move
for the rest, take all additions.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Oleg Ponomarev <oponomarev@google.com>

5 years agoMerge branch 'stable-2.11' into stable-2.12
Klaus Aehlig [Thu, 22 Oct 2015 07:13:23 +0000 (09:13 +0200)]
Merge branch 'stable-2.11' into stable-2.12

* stable-2.11
  Fix default for --default-iallocator-params

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoFix default for --default-iallocator-params
Klaus Aehlig [Wed, 21 Oct 2015 15:36:23 +0000 (17:36 +0200)]
Fix default for --default-iallocator-params

We need to distinguish between the option not being provided
(i.e., no change requested) and the option being empty (i.e.,
a request to reset the value). Therefore, use None as a default,
not {}.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agoRenew-crypto: stop daemons on master node first
Helga Velroyen [Wed, 21 Oct 2015 10:51:37 +0000 (12:51 +0200)]
Renew-crypto: stop daemons on master node first

Otherwise, this can create problems when restarting
the nodes due to voting issues.

Signed-off-by: Gerard Oskamp <gjo@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

5 years agoMention manual creation of {shared,}file paths in UPGRADE
Helga Velroyen [Thu, 15 Oct 2015 14:11:33 +0000 (16:11 +0200)]
Mention manual creation of {shared,}file paths in UPGRADE

This fixes Issue 653. It was unclear whether or not
'ensure-dirs' creates the directories for file and
sharedfile storage. This patch extends the documentation
to clarify this.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Oleg Ponomarev <oponomarev@google.com>

5 years agokvm: Introduce kvm_pci_reservations hvparam
Dimitris Aragiorgis [Thu, 8 Oct 2015 09:40:28 +0000 (12:40 +0300)]
kvm: Introduce kvm_pci_reservations hvparam

In order to support the theoretical maximum of devices (16 disks and
8 NICs) we introduce kvm_pci_reservations hvparam that denotes the
number of PCI slots that QEMU will implicitly use, e.g. if
kvm_pci_reservations is set to 5, QEMU will manage PCI slots 0, 1,
2, 3, 4. By default this will be 12 and Ganeti will start adding
disks and NICs from the 13rd slot (or whatever the next slot is)
onwards.

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agokvm: Introduce scsi_controller_type hvparam
Dimitris Aragiorgis [Thu, 8 Oct 2015 09:40:27 +0000 (12:40 +0300)]
kvm: Introduce scsi_controller_type hvparam

This will allow the user to explicitly set the type of SCSI
controller to use. The available types are: lsi, virtio-scsi-pci,
and megasas. QEMU uses lsi by default and so does Ganeti.

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agokvm: Use the new interface during hotplug actions
Dimitris Aragiorgis [Thu, 8 Oct 2015 09:40:26 +0000 (12:40 +0300)]
kvm: Use the new interface during hotplug actions

Use the new interface and hvinfo during hotplug actions. This means
that _GenerateKVMDeviceID(), _GetBusSlots() and
_GenerateDeviceHVInfo() will be used to obtain the proper device ID
and bus position.

Add an extra check in _VerifyHotplugSupport() that allows hotplug
only for paravirtual devices (virtio-blk-pci, virtio-net-pci) and
SCSI devices (scsi-cd, scsi-hd, scsi-block, scsi-generic) that
use the latest device model in QEMU (via the -device option).

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agokvm: Work around QEMU commit 48f364dd
Dimitris Aragiorgis [Thu, 8 Oct 2015 09:40:25 +0000 (12:40 +0300)]
kvm: Work around QEMU commit 48f364dd

QEMU commits 48f364dd and da2cf4e8 included in version 2.2 and later
state the following:

 * HMP's drive_del is not supported any more on a drive added
   via QMP's blockdev-add

 * Stay away from immature blockdev-add unless you want to help
   with development.

To this end, currently we cannot hot-remove a disk that was
previously hot-added. Here, we work around this constrain by using
HMP's drive_add instead of blockdev-add. This must be done via a
callback in HotAddDisk() wrapper method, due to the fact that if a
QMP connection terminates before a drive keeps a reference to the fd
passed via the add-fd QMP command, then the fd gets closed and
cannot be used later. So we open a QMP connection, pass the fd, then
invoke the drive_add HMP command referencing the corresponding
fdset, then remove the fdset, then add the device and then terminate
the QMP connection.

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agomonitor: Use hvinfo in QMP methods
Dimitris Aragiorgis [Thu, 8 Oct 2015 09:40:24 +0000 (12:40 +0300)]
monitor: Use hvinfo in QMP methods

Change hotplug-related methods (i.e., HotAddNic() and HotAddDisk())
to use slot 'hvinfo' instead of slot 'pci'.

Change HasPCIDevice() to HasDevice(). This will parse the output of
the 'query-block' and 'query-pci' QMP commands and try to match the
given device ID.

Make _VerifyHotplugCommand() depend only on the device ID and not
on the whole device object.

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agokvm: Refactor device option handling
Dimitris Aragiorgis [Thu, 8 Oct 2015 09:40:23 +0000 (12:40 +0300)]
kvm: Refactor device option handling

Replace pci slot with hvinfo in Disk and NIC config Objects. This
will contain all the necessary info to construct a -device option.
Specifically, for PCI devices it will have driver, id, bus, and addr
fields. SCSI devices will have driver, id, bus, channel, scsi-id,
and lun fields.

Change the way we generate the device ID so that it gets derived
only from the type and the UUID of the device (e.g.
disk-932df160-7a22-4067). We ensure seamless migration by upgrading
the existing runtime files in _UpgradeSerializedRuntime(). All
devices found with a 'pci' slot will get an 'hvinfo' dict with the
old id, bus 'pci.0', and addr based on the old value of 'pci'.

Change the way we put devices into buses. Guessing the default
reserved PCI slots of an instance has proven to be error-prone,
since they may change from version to version, and also because the
PCI bus state may be modified with a specific option passed by the
user with the kvm_extra hvpamam. Therefore, we decide to start
adding PCI devices from slot 12 onwards. The SCSI bus does not need
to have default reservations.

Let QEMU decide the PCI slot of spice, balloon and SCSI controller
devices. Finally, QEMU adds by default an LSI controller in case a
SCSI disk is attached to the instance. Here, we set it explicitly,
and name the created bus 'scsi.0' (as QEMU does by default).

Until now, only SCSI emulated disks were supported. Allow
scsi-generic, scsi-block, scsi-hd, and scsi-cd for the disk_type
hvparams. The first two do SCSI pass-through and thus require a
physical SCSI device on the host. The third is the equivalent of
if=scsi, which means that the virtual disk of the instance will be an
emulated SCSI device.

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agoAdd design doc for SCSI support in KVM
Dimitris Aragiorgis [Thu, 8 Oct 2015 09:40:22 +0000 (12:40 +0300)]
Add design doc for SCSI support in KVM

This is a design document detailing the refactoring of device
handling in the KVM Hypervisor. More specifically, it will use the
latest QEMU device model and modify the current hotplug implementation
so that both PCI and SCSI devices can be managed.

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agoDon't warn about broken SSH setup of offline nodes
Helga Velroyen [Wed, 14 Oct 2015 08:24:33 +0000 (10:24 +0200)]
Don't warn about broken SSH setup of offline nodes

This fixes issue 1131. 'gnt-cluster verify' should stop
complaining about broken SSH setups of offline nodes.

Additionally, this fixes a problem when readding nodes.
In some cases, Ganeti complains about a possible attack,
which is a valid case for readding a node (if a key
renew took place between offlining and readding the node).

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoFix inconsistency in python and haskell objects
Oleg Ponomarev [Mon, 12 Oct 2015 14:25:33 +0000 (16:25 +0200)]
Fix inconsistency in python and haskell objects

Currently hv/disk_state_static parameters are supported only for cluster
object properly. For node groups and nodes they were introduced in
2da9f556, however only on the python side. This could cause problems
during upgrades from old versions.

This patch adds hv and disk states fields to haskell objects as a
notSerializedDefaultField which will fix the problem without the changes
in behaviour. Also it modifies corresponding haskell arbitrary instances.

The patch is inspired by e78fb0d6 and 553363a3.

Signed-off-by: Oleg Ponomarev <oponomarev@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoAdd notSerializeDefault default field option
Oleg Ponomarev [Mon, 12 Oct 2015 14:25:32 +0000 (16:25 +0200)]
Add notSerializeDefault default field option

Default field with notSerializedDefault flag set is a default field which
will be serialized only if it's value differs from the default one. This
flag can be set by using notSerializedDefaultField field type instead of
defaultField field type.

This field is introduced in order to fix a bug of inconsistency between
haskell and python config modules which leads to inconsistent config
after ganeti updgrade.

Signed-off-by: Oleg Ponomarev <oponomarev@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

Cherry-picked from: c0a2c62b9ad96c3e35cae0ffdcdf63a09164f537

Signed-off-by: Oleg Ponomarev <oponomarev@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoAdd test for desired locations accounting in ialloc
Oleg Ponomarev [Thu, 8 Oct 2015 09:59:58 +0000 (11:59 +0200)]
Add test for desired locations accounting in ialloc

The test demonstates simple allocation request in which desired location
affect the instance placement.

Signed-off-by: Oleg Ponomarev <oponomarev@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoFix requested instance desired location tags in IAllocator
Oleg Ponomarev [Thu, 8 Oct 2015 09:53:05 +0000 (11:53 +0200)]
Fix requested instance desired location tags in IAllocator

Currently, instance desired location tags are not set for the
instance(s) in iallocator request. This patch fixes the issue.

Signed-off-by: Oleg Ponomarev <oponomarev@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoMerge branch 'stable-2.15' into stable-2.16
Hrvoje Ribicic [Mon, 12 Oct 2015 15:11:38 +0000 (17:11 +0200)]
Merge branch 'stable-2.15' into stable-2.16

* stable-2.15
  For queries, take the correct base address of an IP block
  Fix computation in network blocks

* stable-2.14
  Add test for tags accounting in hail
  Set node tags in iallocator htools backend

* stable-2.13
  Improve xl socat migrations

* stable-2.12
  QA: Retrieve only the RAPI certificate
  QA: Allow usage of specific RAPI certificates and files
  QA: Reload certificates only when renew-crypto has been run
  QA: Restart Ganeti after adding the RAPI users file
  QA: Add reading the RAPI password from a file
  QA: Allow the RAPI user to be set
  QA: Do not remove nodes from cluster without destroying it
  QA: Refactor RAPI handling
  Increase default disk size of burnin to 1G
  break line with more than 80 characters
  Only search for Python-2 interpreters
  Fix faulty comments / indentation
  Handle Xen 4.3 states better

* stable-2.11
  (no changes)

* stable-2.10
  Add a test for parsing of admin_state in IAlloc backend
  At IAlloc backend guess state from admin state

* stable-2.9
  Update harep's man page to notify users of its limitations

 Conflicts:
htools-hail.test: merged tests

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoFor queries, take the correct base address of an IP block
Klaus Aehlig [Fri, 9 Oct 2015 16:15:02 +0000 (18:15 +0200)]
For queries, take the correct base address of an IP block

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoFix computation in network blocks
Klaus Aehlig [Fri, 9 Oct 2015 15:58:26 +0000 (17:58 +0200)]
Fix computation in network blocks

...by differentiating between the provided address and
the base address of the block. E.g., 10.0.0.1/29 and 10.0.0.0/29
contain the same IP addresses; in particular, the first address is
10.0.0.0.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoMerge branch 'stable-2.14' into stable-2.15
Hrvoje Ribicic [Mon, 12 Oct 2015 14:01:02 +0000 (16:01 +0200)]
Merge branch 'stable-2.14' into stable-2.15

* stable-2.14
  Add test for tags accounting in hail
  Set node tags in iallocator htools backend

* stable-2.13
  Improve xl socat migrations

* stable-2.12
  QA: Retrieve only the RAPI certificate
  QA: Allow usage of specific RAPI certificates and files
  QA: Reload certificates only when renew-crypto has been run
  QA: Restart Ganeti after adding the RAPI users file
  QA: Add reading the RAPI password from a file
  QA: Allow the RAPI user to be set
  QA: Do not remove nodes from cluster without destroying it
  QA: Refactor RAPI handling
  Increase default disk size of burnin to 1G
  break line with more than 80 characters
  Only search for Python-2 interpreters
  Fix faulty comments / indentation
  Handle Xen 4.3 states better

* stable-2.11
  (no changes)

* stable-2.10
  Add a test for parsing of admin_state in IAlloc backend
  At IAlloc backend guess state from admin state

* stable-2.9
  Update harep's man page to notify users of its limitations

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoMerge branch 'stable-2.13' into stable-2.14
Klaus Aehlig [Mon, 12 Oct 2015 12:54:00 +0000 (14:54 +0200)]
Merge branch 'stable-2.13' into stable-2.14

* stable-2.13
  Improve xl socat migrations

* stable-2.12
  QA: Retrieve only the RAPI certificate
  QA: Allow usage of specific RAPI certificates and files
  QA: Reload certificates only when renew-crypto has been run
  QA: Restart Ganeti after adding the RAPI users file
  QA: Add reading the RAPI password from a file
  QA: Allow the RAPI user to be set
  QA: Do not remove nodes from cluster without destroying it
  QA: Refactor RAPI handling
  Increase default disk size of burnin to 1G
  break line with more than 80 characters
  Only search for Python-2 interpreters
  Fix faulty comments / indentation
  Handle Xen 4.3 states better

* stable-2.11
  (no changes)

* stable-2.10
  Add a test for parsing of admin_state in IAlloc backend
  At IAlloc backend guess state from admin state

* stable-2.9
  Update harep's man page to notify users of its limitations

Conflicts:
src/Ganeti/HTools/Backend/IAlloc.hs
Resolution:
manually apply 9c1704a5 to stable-2.13

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoMove design-disks.rst to drafts
Klaus Aehlig [Mon, 12 Oct 2015 12:15:07 +0000 (14:15 +0200)]
Move design-disks.rst to drafts

When, in commit 2676f31, the design for stand-alone disks
was added, it was not added to the list of draft designs,
but accidentally to the list of designs not shown in the index;
the latter, however, is only for implemented designs. As this
design still isn't fully implemented, fix this now.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoMake CommitTemporaryIPs call out to WConfD
Klaus Aehlig [Thu, 8 Oct 2015 11:32:24 +0000 (13:32 +0200)]
Make CommitTemporaryIPs call out to WConfD

...instead of only doing changes locally. Doing changes
locally used to be fine---and even necessary---as long
as all calls to CommitTemporaryIPs used to be under
full configuration synchronisation.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoAlso accept just "BoringSSL"
Klaus Aehlig [Thu, 8 Oct 2015 10:47:50 +0000 (12:47 +0200)]
Also accept just "BoringSSL"

...and do not insist on a slash to separate further information.
For BoringSSL, the version tuple can contain just the plain string
"BoringSSL".

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoMerge branch 'stable-2.12' into stable-2.13
Klaus Aehlig [Fri, 9 Oct 2015 09:04:28 +0000 (11:04 +0200)]
Merge branch 'stable-2.12' into stable-2.13

* stable-2.12
  QA: Retrieve only the RAPI certificate
  QA: Allow usage of specific RAPI certificates and files
  QA: Reload certificates only when renew-crypto has been run
  QA: Restart Ganeti after adding the RAPI users file
  QA: Add reading the RAPI password from a file
  QA: Allow the RAPI user to be set
  QA: Do not remove nodes from cluster without destroying it
  QA: Refactor RAPI handling
  Increase default disk size of burnin to 1G
  break line with more than 80 characters
  Only search for Python-2 interpreters
  Fix faulty comments / indentation
  Handle Xen 4.3 states better

* stable-2.11
  (no changes)

* stable-2.10
  Add a test for parsing of admin_state in IAlloc backend
  At IAlloc backend guess state from admin state

* stable-2.9
  Update harep's man page to notify users of its limitations

Conflicts:
qa/qa_cluster.py: trivial
qa/rapi-workload.py: keep removed (see c0065e0fa1730a477)

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoMerge branch 'stable-2.11' into stable-2.12
Klaus Aehlig [Thu, 8 Oct 2015 14:35:35 +0000 (16:35 +0200)]
Merge branch 'stable-2.11' into stable-2.12

* stable-2.11
  (no changes)

* stable-2.10
  Add a test for parsing of admin_state in IAlloc backend
  At IAlloc backend guess state from admin state

* stable-2.9
  Update harep's man page to notify users of its limitations

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoMerge branch 'stable-2.10' into stable-2.11
Klaus Aehlig [Thu, 8 Oct 2015 14:16:53 +0000 (16:16 +0200)]
Merge branch 'stable-2.10' into stable-2.11

* stable-2.10
  Add a test for parsing of admin_state in IAlloc backend
  At IAlloc backend guess state from admin state

* stable-2.9
  Update harep's man page to notify users of its limitations

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoQA: Retrieve only the RAPI certificate
Hrvoje Ribicic [Sun, 27 Sep 2015 21:55:51 +0000 (21:55 +0000)]
QA: Retrieve only the RAPI certificate

The QA previously took in the entire certificate file, along with the
private key. As this is really not necessary, change it to be more
conservative.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoQA: Allow usage of specific RAPI certificates and files
Hrvoje Ribicic [Wed, 23 Sep 2015 14:38:50 +0000 (16:38 +0200)]
QA: Allow usage of specific RAPI certificates and files

In some situations, we want to make sure the QA runs with a certain set
of certificates, secrets, users, and the like. This patch allows the QA
to look for a directory on the master node where all of these can be
found, and transplant them into the right place. This allow cluster
creation, renew-crypto, or any other cert-affecting operation to be
tested while preserving RAPI access.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoQA: Reload certificates only when renew-crypto has been run
Hrvoje Ribicic [Thu, 24 Sep 2015 10:36:31 +0000 (12:36 +0200)]
QA: Reload certificates only when renew-crypto has been run

When the cluster refreshes the RAPI certificate as it does in the
renew-crypto test, the stored certificate in the curl config of the
RAPI client has to be renewed. But it should only be renewed when the
test is enabled, so this patch moves that code into the test.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoQA: Restart Ganeti after adding the RAPI users file
Hrvoje Ribicic [Thu, 24 Sep 2015 21:20:30 +0000 (23:20 +0200)]
QA: Restart Ganeti after adding the RAPI users file

... otherwise we have no guarantee that the RAPI daemon will pick up
the change.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoQA: Add reading the RAPI password from a file
Hrvoje Ribicic [Tue, 22 Sep 2015 17:14:50 +0000 (19:14 +0200)]
QA: Add reading the RAPI password from a file

For situations where we're running the QA against a cluster which uses
a hashed password for access, it can be useful to be able to read the
password from a local file. This patch allows this to happen, throwing
in a few refactorings along the way.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoQA: Allow the RAPI user to be set
Hrvoje Ribicic [Tue, 22 Sep 2015 17:09:06 +0000 (19:09 +0200)]
QA: Allow the RAPI user to be set

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoQA: Do not remove nodes from cluster without destroying it
Hrvoje Ribicic [Tue, 22 Sep 2015 15:20:46 +0000 (17:20 +0200)]
QA: Do not remove nodes from cluster without destroying it

The Ganeti QA can be set up to optionally both create and destroy a
cluster during its runtime. Before this patch, the QA removed all the
nodes barring the master one at the end of a QA, regardless of whether
the cluster was supposed to be disassembled. This patch fixes this
behaviour and lets created clusters remain in place after a QA.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoQA: Refactor RAPI handling
Hrvoje Ribicic [Tue, 7 Jul 2015 00:49:23 +0000 (00:49 +0000)]
QA: Refactor RAPI handling

Since the QA RAPI code already uses the horror of global variables to
save the username and password within the qa_rapi module, the code can
be refactored to make the storage of these values outside the module
unnecessary. This encapsulates the RAPI functionality better, and will
allow for easier refactoring in later commits.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoMerge branch 'stable-2.9' into stable-2.10
Klaus Aehlig [Thu, 8 Oct 2015 13:27:59 +0000 (15:27 +0200)]
Merge branch 'stable-2.9' into stable-2.10

* stable-2.9
  Update harep's man page to notify users of its limitations

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoAdd a test for parsing of admin_state in IAlloc backend
Klaus Aehlig [Mon, 5 Oct 2015 14:34:23 +0000 (16:34 +0200)]
Add a test for parsing of admin_state in IAlloc backend

The administrative state of an instance is reported in the
IAllocator interface. Test whether that correctly propagates
to the parsed cluster state.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoAt IAlloc backend guess state from admin state
Klaus Aehlig [Mon, 5 Oct 2015 14:55:27 +0000 (16:55 +0200)]
At IAlloc backend guess state from admin state

At the IAlloc backend of htools we do not get the actual
state of the instance (as everything is state-of-record only).
However, we do get the administrative state. Therefore, by
assuming that for each instance the actual state is the one
corresponding to the administrated one, we can get a much better
description of the cluster than blindly assuming all instances
are running. Do so, whenever the admin_state is provided.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoAdd test for tags accounting in hail
Oleg Ponomarev [Thu, 8 Oct 2015 10:43:57 +0000 (12:43 +0200)]
Add test for tags accounting in hail

The test allocates drbd instance on the cluster with 3 nodes. Without
location tags, instance would be allocated on more powerful nodes 1,2.

Signed-off-by: Oleg Ponomarev <oponomarev@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoSet node tags in iallocator htools backend
Oleg Ponomarev [Thu, 8 Oct 2015 10:43:56 +0000 (12:43 +0200)]
Set node tags in iallocator htools backend

Since locaton tags were introduced, node tags may affect allocation,
and thus, node tags should be initialized for each node in iallocator
backend.

Signed-off-by: Oleg Ponomarev <oponomarev@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoAccept BoringSSL as a known good ssl library
Klaus Aehlig [Wed, 7 Oct 2015 13:57:54 +0000 (15:57 +0200)]
Accept BoringSSL as a known good ssl library

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

5 years agoUpdate harep's man page to notify users of its limitations
Petr Pudlak [Tue, 29 Sep 2015 12:04:11 +0000 (14:04 +0200)]
Update harep's man page to notify users of its limitations

In particular that it works only for 'drbd' and 'plain', and that it
doesn't perform hardware failure detection, which are both common user
expectations.

Signed-off-by: Petr Pudlak <pudlak@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoAdd a test for group independence in capacity checks
Klaus Aehlig [Wed, 23 Sep 2015 11:23:34 +0000 (13:23 +0200)]
Add a test for group independence in capacity checks

In this example, there are two node groups. The second is
not redundant, as it contains only one non-drained node and
an instance (so, should that node fail as well, the instance
cannot stay in the group). However, there are no current
violations; every instance is running on a healthy node.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoMake hspace correctly handle --independent-groups
Klaus Aehlig [Wed, 23 Sep 2015 08:41:21 +0000 (10:41 +0200)]
Make hspace correctly handle --independent-groups

In the presence of capacity checks, first verify all groups for
present violations of global N+1 redundancy. Then mark the non-redundant
groups as unallocatable and ignore then in future checks.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoAdd a predicate whether a group is globally N+1 redundant
Klaus Aehlig [Tue, 22 Sep 2015 16:26:11 +0000 (18:26 +0200)]
Add a predicate whether a group is globally N+1 redundant

A group is redundant if the evacuation property holds for
all its nodes.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoMake global N+1 checks honor algCapacityIgnoreGroups
Klaus Aehlig [Tue, 22 Sep 2015 14:25:01 +0000 (16:25 +0200)]
Make global N+1 checks honor algCapacityIgnoreGroups

For redundancy checks, ignore all nodes belonging to a group
marked as to be ignored. Do this ignoring in addition to already
existing node filtering.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoAdd a parameter to ignore groups in capacity checks
Klaus Aehlig [Tue, 22 Sep 2015 14:16:35 +0000 (16:16 +0200)]
Add a parameter to ignore groups in capacity checks

Normally, capacity checks check for each group if each node
can be evacuated. However, to support the "independent groups"
option in hspace  computations, two things have to be done for
groups initially not redundant.
- No instance are allocated on those groups, and
- they must be ignored in global N+1 checks during the computation.
The latter is achieved by this algorithmic parameter.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoIncrease default disk size of burnin to 1G
BSRK Aditya [Thu, 24 Sep 2015 12:14:45 +0000 (14:14 +0200)]
Increase default disk size of burnin to 1G

The previous default value causes burnin to fail at instance
creation as the disk size was too low.

Signed-off-by: BSRK Aditya <bsrk@google.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agobreak line with more than 80 characters
Klaus Aehlig [Mon, 21 Sep 2015 11:41:25 +0000 (13:41 +0200)]
break line with more than 80 characters

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoOnly search for Python-2 interpreters
Klaus Aehlig [Mon, 21 Sep 2015 08:39:19 +0000 (10:39 +0200)]
Only search for Python-2 interpreters

Ganeti is not yet ready for Python 3. Therefore, at configure-time,
we effectively have two constraints for the version of Python to
use: ">=2.6" and "<3.0". As, unfortunuately, the AM_PYTHON_PATH
macro only supports minimal-version constraints, we afterwards verify
that we got an interpreter for Python 2. We also tune the search
heuristics to first check binaries that most likely are interpreters
for Python 2. To also work with older versions of the autotools, we
do the "<3.0" check manually and no rely on it already being supported
in the AM_PYTHON_CHECK_VERSION macro.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoFix faulty comments / indentation
Hrvoje Ribicic [Wed, 16 Sep 2015 13:23:59 +0000 (15:23 +0200)]
Fix faulty comments / indentation

As a part of patch 6b16d04a318d33a59, some errors were inadvertently
introduced by adding documentation. This patch fixes them.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoHandle Xen 4.3 states better
Hrvoje Ribicic [Tue, 15 Sep 2015 08:37:11 +0000 (10:37 +0200)]
Handle Xen 4.3 states better

In Xen commit e1475a6693aac8cddc4bdd456548aa05a625556b, the output from
xl list was extended to provide a reason for shutdowns. This breaks
our somewhat strict parsing of the output in certain situations where
the new states appear (e.g. the short suspension during a migration, or
an instance reboot).

This patch makes sure the new states (barring the mysterious watchdog
state) are handled correctly.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoImprove xl socat migrations
Hrvoje Ribicic [Thu, 10 Sep 2015 12:12:24 +0000 (12:12 +0000)]
Improve xl socat migrations

Improve their reliability by allowing socat to reuse an address,
preventing errors if migrations are executed with too narrow a
timespan.

Improve performance by choosing a better blocksize than the default 8k.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoMerge branch 'stable-2.15' into stable-2.16
Lisa Velden [Tue, 8 Sep 2015 14:53:04 +0000 (16:53 +0200)]
Merge branch 'stable-2.15' into stable-2.16

* stable-2.15
  Revision bump for 2.15.1
  Update NEWS file for 2.15.1
  Metad: ignore instances that have no communication NIC

* stable-2.14
  Add error code to OpPrereqError use
  bdev: Allow userspace-only disk templates
  Export disk's userspace URI to OS scripts
  Fix instance failover in case of DTS_EXT_MIRROR
  Only insist on haskell test dependencies if needed

* stable-2.13
  Fix typo in example
  Update documentation of --print-jobid

* stable-2.12
  Add forgotten IPOLICY_SPINDLE_RATIO to __all__ variable
  Make QA turn on user-shutdown when testing it
  Fix disabling of user shutdown reporting
  Make confd answer disk requests querying by name
  gnt-node add: password auth is only one method

* stable-2.10
  (no changes)

* stable-2.9
  Document quoting of special values in key-value parameters
  replace-disks: fix --ignore-ipolicy

Conflicts:
    NEWS
    configure.ac

Resolution:
    NEWS: take both additions
    configure.ac: ignore revision bump

Signed-off-by: Lisa Velden <velden@google.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agoRevision bump for 2.15.1 v2.15.1
Hrvoje Ribicic [Mon, 7 Sep 2015 13:19:47 +0000 (15:19 +0200)]
Revision bump for 2.15.1

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoUpdate NEWS file for 2.15.1
Hrvoje Ribicic [Mon, 7 Sep 2015 13:19:23 +0000 (15:19 +0200)]
Update NEWS file for 2.15.1

... with descriptions of bug fixes and other changes.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoMerge branch 'stable-2.14' into stable-2.15
Hrvoje Ribicic [Fri, 4 Sep 2015 13:56:05 +0000 (15:56 +0200)]
Merge branch 'stable-2.14' into stable-2.15

* stable-2.14
  Add error code to OpPrereqError use
  bdev: Allow userspace-only disk templates
  Export disk's userspace URI to OS scripts
  Fix instance failover in case of DTS_EXT_MIRROR
  Only insist on haskell test dependencies if needed

* stable-2.13
  Fix typo in example
  Update documentation of --print-jobid

* stable-2.12
  Add forgotten IPOLICY_SPINDLE_RATIO to __all__ variable
  Make QA turn on user-shutdown when testing it
  Fix disabling of user shutdown reporting
  Make confd answer disk requests querying by name
  gnt-node add: password auth is only one method

* stable-2.11
  (no changes)

* stable-2.10
  (no changes)

* stable-2.9
  Document quoting of special values in key-value parameters
  replace-disks: fix --ignore-ipolicy

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoMerge branch 'stable-2.13' into stable-2.14
Hrvoje Ribicic [Fri, 4 Sep 2015 12:54:54 +0000 (12:54 +0000)]
Merge branch 'stable-2.13' into stable-2.14

* stable-2.13
  Fix typo in example
  Update documentation of --print-jobid

* stable-2.12
  Add forgotten IPOLICY_SPINDLE_RATIO to __all__ variable
  Make QA turn on user-shutdown when testing it
  Fix disabling of user shutdown reporting
  Make confd answer disk requests querying by name
  gnt-node add: password auth is only one method

* stable-2.11
  (no changes)

* stable-2.10
  (no changes)

* stable-2.9
  Document quoting of special values in key-value parameters
  replace-disks: fix --ignore-ipolicy

Conflicts:
  src/Ganeti/Query/Instance.hs # Added Just and Maybes

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

5 years agoFix typo in example
Klaus Aehlig [Fri, 4 Sep 2015 09:59:39 +0000 (11:59 +0200)]
Fix typo in example

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoMerge branch 'stable-2.12' into stable-2.13
Hrvoje Ribicic [Thu, 3 Sep 2015 15:59:42 +0000 (17:59 +0200)]
Merge branch 'stable-2.12' into stable-2.13

* stable-2.12
  Add forgotten IPOLICY_SPINDLE_RATIO to __all__ variable
  Make QA turn on user-shutdown when testing it
  Fix disabling of user shutdown reporting
  Make confd answer disk requests querying by name
  gnt-node add: password auth is only one method

* stable-2.11
  (no changes)

* stable-2.10
  (no changes)

* stable-2.9
  Document quoting of special values in key-value parameters
  replace-disks: fix --ignore-ipolicy

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoMerge branch 'stable-2.11' into stable-2.12
Hrvoje Ribicic [Thu, 3 Sep 2015 12:39:26 +0000 (14:39 +0200)]
Merge branch 'stable-2.11' into stable-2.12

* stable-2.11
  (no changes)

* stable-2.10
  (no changes)

* stable-2.9
  Document quoting of special values in key-value parameters
  replace-disks: fix --ignore-ipolicy

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoMerge branch 'stable-2.10' into stable-2.11
Hrvoje Ribicic [Thu, 3 Sep 2015 12:10:34 +0000 (14:10 +0200)]
Merge branch 'stable-2.10' into stable-2.11

* stable-2.10
  (no changes)

* stable-2.9
  Document quoting of special values in key-value parameters
  replace-disks: fix --ignore-ipolicy

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoMerge branch 'stable-2.9' into stable-2.10
Hrvoje Ribicic [Thu, 3 Sep 2015 11:22:54 +0000 (13:22 +0200)]
Merge branch 'stable-2.9' into stable-2.10

* stable-2.9
  Document quoting of special values in key-value parameters
  replace-disks: fix --ignore-ipolicy

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoAdd forgotten IPOLICY_SPINDLE_RATIO to __all__ variable
Oleg Ponomarev [Thu, 3 Sep 2015 09:08:49 +0000 (11:08 +0200)]
Add forgotten IPOLICY_SPINDLE_RATIO to __all__ variable

Signed-off-by: Oleg Ponomarev <oponomarev@google.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoAdd a test to accept existing offline violations
Klaus Aehlig [Tue, 1 Sep 2015 17:37:30 +0000 (19:37 +0200)]
Add a test to accept existing offline violations

In this example, there is one offline node that cannot be
evacuated as the instance is too big to fit anywhere. Therefore,
the cluster is not shared N+1 redundant; however, ignoring
the offline node, new instances can be added.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoMake redundant and allocGlobalN1 honor AcceptExisting
Klaus Aehlig [Tue, 1 Sep 2015 15:27:50 +0000 (17:27 +0200)]
Make redundant and allocGlobalN1 honor AcceptExisting

When deciding if a situation is redundant and AcceptExisting
is given, do not try to evacuate nodes that are offline already.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoMake accept-existing an algorithmic option
Klaus Aehlig [Tue, 1 Sep 2015 14:01:18 +0000 (16:01 +0200)]
Make accept-existing an algorithmic option

When checking global capacity, there is an algorithmic
difference on whether evacuation should also be tested
for initial violations (e.g., instances originally on
an offline node) or not. So provide an algorithmic
parameter for this, propagating the value of
the --accept-existing option.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoDocument quoting of special values in key-value parameters
Klaus Aehlig [Tue, 1 Sep 2015 13:23:41 +0000 (15:23 +0200)]
Document quoting of special values in key-value parameters

Since the early days of Ganeti, it is possible to pass in key-value
parameters also some special non-string values (the two boolean values
True and False and the special value None). However, the syntax for
entering them was never properly documented confusing people who had
to pass one of those values. So document it now.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoreplace-disks: fix --ignore-ipolicy
Apollon Oikonomopoulos [Mon, 31 Aug 2015 14:20:36 +0000 (17:20 +0300)]
replace-disks: fix --ignore-ipolicy

CheckTargetNodeIPolicy was expecting an LU, but got a Tasklet instead.
This caused gnt-instance replace-disks --ignore-ipolicy to fail with a
"'TLReplaceDisks' object has no attribute 'LogWarning'" message in the
presence policy-related warnings. We fix this by passing the calling LU
to CheckTargetNodeIPolicy.

Signed-off-by: Apollon Oikonomopoulos <apoikos@gmail.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoUpdate documentation of --print-jobid
Helga Velroyen [Thu, 27 Aug 2015 11:41:08 +0000 (13:41 +0200)]
Update documentation of --print-jobid

This fixes issue 915. In the man pages, the option
'--print-jobid' was accidentally documented as
'--print-job-id'. This fixes all occurrences.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoMake QA turn on user-shutdown when testing it
Hrvoje Ribicic [Wed, 19 Aug 2015 21:35:22 +0000 (23:35 +0200)]
Make QA turn on user-shutdown when testing it

Commit fe6287b4 made the --user-shutdown switch meaningful for Xen,
preventing USER_DOWN reporting if disabled. The QA turned this switch
on for KVM, where it is needed to start the specialized daemon, but
not for Xen. This patch fixes the discrepancy.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

5 years agoFix disabling of user shutdown reporting
Hrvoje Ribicic [Mon, 17 Aug 2015 18:24:24 +0000 (18:24 +0000)]
Fix disabling of user shutdown reporting

Unlike the Python-side query logic still used for more detailed
queries, the Haskell queries neglected to take into account the
user-shutdown cluster-level parameter, turning USER_DOWN reporting on
by default. This is especially bad considering that this parameter was
introduced to give time to users to adapt their automation to take the
new statuses into account. This patch makes the parameter usable,
albeit possibly too late.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

5 years agoMake confd answer disk requests querying by name
Hrvoje Ribicic [Tue, 18 Aug 2015 14:35:21 +0000 (14:35 +0000)]
Make confd answer disk requests querying by name

As a result of an additional bit of code introduced by patch fa3c0df5,
queries for instance disks sent to the configuration daemon required
additional information about the instance. This information was fetched
through a manual search of the list of instances, rather than the
function capable of searching by name or by uuid.

This made the burnin tool used by our tests fail when inquiring for
information and broke QA, and this patch fixes the problem.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

5 years agoAdd error code to OpPrereqError use
Hrvoje Ribicic [Tue, 18 Aug 2015 14:27:10 +0000 (14:27 +0000)]
Add error code to OpPrereqError use

... otherwise the error is misidentified as an unpacking error.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

5 years agobdev: Allow userspace-only disk templates
Dimitris Aragiorgis [Thu, 30 Jul 2015 19:56:49 +0000 (22:56 +0300)]
bdev: Allow userspace-only disk templates

Until now all implementations at the bdev level require a local
block device on the primary node. Since there are storage
technologies that allow userspace access only without the need of
a block device, (e.g. QEMU + RADOS), this patch makes the
corresponding changes to support this kind of functionality.
Note that for this to work you need corresponding support in the
OS definition.

This patch changes the backend logic so that it can handle the
absence of local block devices.

Finally, it extends the ExtStorage interface to support the above
functionality. Until now the 'attach' script returned the block
device in the first line. With this patch, if this line is empty,
it denotes that a local block device is not available.

An example could be a RADOS provider where the volume does not get
mapped locally (i.e., no /dev/rbdX device) and the attach script
returns two lines: an empty line denoting that no local block device
exists and a second line with the appropriate KVM userspace URI
(i.e. kvm:rbd:<pool>/<volume name>).

Adjust OpInstanceActivateDisks so that a None dev_path is handled
correctly as a return value.

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agoExport disk's userspace URI to OS scripts
Dimitris Aragiorgis [Thu, 30 Jul 2015 19:56:48 +0000 (22:56 +0300)]
Export disk's userspace URI to OS scripts

In case of access=userspace, the hypervisor can access the disk
via its userspace URI.

Also export this URI to OS scripts, so that the OS definition may use
it to access the disk, if it so desires.

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agoFix instance failover in case of DTS_EXT_MIRROR
Dimitris Aragiorgis [Thu, 30 Jul 2015 19:56:47 +0000 (22:56 +0300)]
Fix instance failover in case of DTS_EXT_MIRROR

Since 2.14 L{objects.Instance} no longer has a disk_template
slot, thus we must obtain it indirectly via cfg.GetInstanceDiskTemplate().

Commit ff74b60 uses the _CloseInstanceDisks() helper during instance
failover in case the instance's disk template is DTS_EXT_MIRROR,
but uses the instance.disk_template value directly, which is a bug.
Fix this.

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>

5 years agoMetad: ignore instances that have no communication NIC
Petr Pudlak [Mon, 10 Aug 2015 10:57:22 +0000 (12:57 +0200)]
Metad: ignore instances that have no communication NIC

The metadata daemon is informed about all instances before their
creation. However, instances that doesn't use the mechanism and have no
corresponding communication NIC can be safely ignored by the daemon.

This fixes the incorrect error messages complaining about missing such a
NIC.

Signed-off-by: Petr Pudlak <pudlak@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoOnly insist on haskell test dependencies if needed
Klaus Aehlig [Tue, 11 Aug 2015 11:58:07 +0000 (13:58 +0200)]
Only insist on haskell test dependencies if needed

While developers usually run tests and hence need all the infrastructure
for it, people who just want to build and use Ganeti usually do not want
to run tests. So, while still using cabal to get a consistent set of
dependency packages, make the test infra structure optional in the cabal
file. The decision on whether to require test dependencies will be made
based on whether the haskell tests are configured to be run.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agognt-node add: password auth is only one method
Klaus Aehlig [Tue, 11 Aug 2015 07:41:38 +0000 (09:41 +0200)]
gnt-node add: password auth is only one method

The man page for gnt-node add is slightly misleading.
In can be read to mean that we insist on password
authentication for root on the target node. However,
the only point the man page is trying to make here
is that credentials have to be provided to allow to
ssh as root to the target node; password is only of
the many options. Fix the wording accordingly.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>

5 years agoMerge branch 'stable-2.15' into stable-2.16
Hrvoje Ribicic [Mon, 10 Aug 2015 09:58:10 +0000 (11:58 +0200)]
Merge branch 'stable-2.15' into stable-2.16

* stable-2.15
  Bump suffix to 2.15.0
  Update NEWS file for 2.15.0

* stable-2.14
  (no changes)

* stable-2.13
  (no changes)

* stable-2.12
  Accept allocation of 0 jobs
  Return multiple fields multiple times
  In queries collect all needed data
  Add a function computing the filter arguments
  Utils: Add ordNub
  Accept timeout errors are luxi down
  Correct indendation
  In confd provide proper serial number

* stable-2.11
  (no changes)

* stable-2.10
  Add a new unit test for LUInstanceMultiAlloc
  Fix a bug in LUInstanceMultiAlloc LU

Conflicts:
NEWS: Use the 2.15 version
configure.ac: Restore the 2.16 suffix

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoMerge branch 'stable-2.14' into stable-2.15
Hrvoje Ribicic [Mon, 10 Aug 2015 09:23:41 +0000 (11:23 +0200)]
Merge branch 'stable-2.14' into stable-2.15

* stable-2.14
  (no changes)

* stable-2.13
  (no changes)

* stable-2.12
  Accept allocation of 0 jobs
  Return multiple fields multiple times
  In queries collect all needed data
  Add a function computing the filter arguments
  Utils: Add ordNub
  Accept timeout errors are luxi down
  Correct indendation
  In confd provide proper serial number

* stable-2.11
  (no changes)

* stable-2.10
  Add a new unit test for LUInstanceMultiAlloc
  Fix a bug in LUInstanceMultiAlloc LU

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoMerge branch 'stable-2.13' into stable-2.14
Petr Pudlak [Mon, 10 Aug 2015 08:47:32 +0000 (10:47 +0200)]
Merge branch 'stable-2.13' into stable-2.14

* stable-2.13
  (no changes)

* stable-2.12
  Accept allocation of 0 jobs
  Return multiple fields multiple times
  In queries collect all needed data
  Add a function computing the filter arguments
  Utils: Add ordNub
  Accept timeout errors are luxi down
  Correct indendation
  In confd provide proper serial number

* stable-2.11
  (no changes)

* stable-2.10
  Add a new unit test for LUInstanceMultiAlloc
  Fix a bug in LUInstanceMultiAlloc LU

Signed-off-by: Petr Pudlak <pudlak@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoMerge branch 'stable-2.12' into stable-2.13
Petr Pudlak [Fri, 7 Aug 2015 16:49:51 +0000 (18:49 +0200)]
Merge branch 'stable-2.12' into stable-2.13

* stable-2.12
  Accept allocation of 0 jobs
  Return multiple fields multiple times
  In queries collect all needed data
  Add a function computing the filter arguments
  Utils: Add ordNub
  Accept timeout errors are luxi down

Conflicts:
      src/Ganeti/Query/Query.hs - use the 2.12 version, just renaming
        evaluateFilter to evaluateQueryFilter
      src/Ganeti/Utils.hs - keep 2.13 version (from which ordBy has been
        cherry picked)

Signed-off-by: Petr Pudlak <pudlak@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

5 years agoAccept allocation of 0 jobs
Klaus Aehlig [Fri, 7 Aug 2015 15:57:34 +0000 (17:57 +0200)]
Accept allocation of 0 jobs

However, short-cut them and return the empty list
directly, as we do not need to do any change to the
serial file.

Note that allocating 0 jobs has legitimate use cases,
like gnt-node migrate on an empty node. Doing so
without complaining in line with the behaviour of
earlier Ganeti versions.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoReturn multiple fields multiple times
Klaus Aehlig [Tue, 4 Aug 2015 16:03:03 +0000 (18:03 +0200)]
Return multiple fields multiple times

While it is not very useful, our specification still says
that we should return the values for fields requested multiple
times also multiple times. Commit 237a43b added fetching of
fields not requested but needed to evaluate the filter; to
avoid overhead the list of fields was deduplicated, thereby
breaking the said property. Restore it by only deduplicating
and filtering the additional fields.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoIn queries collect all needed data
Klaus Aehlig [Tue, 4 Aug 2015 13:19:01 +0000 (15:19 +0200)]
In queries collect all needed data

Queries are affected by two forms of fields:
- those the user wishes to see, and
- those needed to evaluate the filter provided.
For internal handling, we do have to fetch the
fields of either category to avoid wrong results,
even if we only output fields of the first category.
Ensure this fetch.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoAdd a function computing the filter arguments
Klaus Aehlig [Tue, 4 Aug 2015 13:03:31 +0000 (15:03 +0200)]
Add a function computing the filter arguments

When collecting live data for queries, we need to also
collect the fields the filter talks about, not only the
fields the user wants to see. Therefore, we need a function
computing those fields.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

5 years agoUtils: Add ordNub
Niklas Hambuechen [Fri, 1 Aug 2014 15:27:11 +0000 (17:27 +0200)]
Utils: Add ordNub

For n*log(n) duplicate removal (as opposed to nub's n^2).

Signed-off-by: Niklas Hambuechen <niklash@google.com>
Signed-off-by: Petr Pudlak <pudlak@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

Cherry-picked-from: 5dd8067d
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>