Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:39 +0000 (17:45 +0300)]
Extend qa to test hotplug support
Only if default hypervisor is KVM try all hotplug related actions.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:37 +0000 (17:45 +0300)]
Hotplug: Update manpages and NEWS
Add --hotplug entry in gnt-instance manpage.
Add NEWS entry for hotplug support.
In both cases mention that hotplug is only supported for
the KVM Hypervisor version >= 1.0.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:36 +0000 (17:45 +0300)]
Hotplug: client support
Add --hotplug option. Only used in OpInstanceSetParams.
If this is omitted, modifications become effective after reboot.
Ask user confirmation in case NIC modify + hotplug because it will
be done via removing old NIC (and the corresponding tap) and adding
a new one in the same PCI slot.
Corresponding mods in haskell opcode definitions.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:35 +0000 (17:45 +0300)]
Hotplug: cmdlib support
Hotplugging is done by functions invoked by ApplyContainerMods(). In
order hotplugging to take place the --hotplug option must be passed
otherwise the modifications will take place after reboot.
NIC hotplug supports add, remove and modify. The modify is done by removing
the existing NIC and adding a new one in the same pci slot.
Disk hotplug supports add and remove. Before hotplugging a Disk it
must be assembled. Use blockdev_assemble RPC, get the device link_name
and then call hotplug RPC command.
In order to remove a disk (with blockdev_remove) it must be shutdown. So
after unplugging the disk ShutdownDiskInstanceDisks() must be invoked.
For both device types we use the generic RPC call_hotplug_device.
Also adapt unit tests to follow the change.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:34 +0000 (17:45 +0300)]
Return link_name in blockdev_assemble rpc
Until now this RPC returned only dev_path. Since we use it in
hotplug we have to know the simlink of the device so that we
pass it to the corresponding hypervisor command and include it
in block_devices entry in runtime files.
Fix unittest to be aware of changed rpc
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:33 +0000 (17:45 +0300)]
Hotplug: rpc support
Introduce new RPC that eventually invoke hypervisor specific
hotplug functions. In order to be generic it has the following
arguments: device type, action, device, extra info, seq.
Device type can be NIC or DISK, action can be ADD, REMOVE,
device is the NIC or Disk object, extra info is used by Disk
hotplug to point the device path and seq is the device index
(from the master perspective)
Add HotplugSupported() in all Hypervisors
Only KVM hypervisor supports this method. The other hypervisors
raise HypervisorError.
Before trying hotplug in backend layer invoke hyper.HotplugSupported
and abort RPC in case it is not implemented or for some other reason
not supported (disk+chroot, nic without fdsend, etc).
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:32 +0000 (17:45 +0300)]
Introduce hotplug methods (hypervisor inteface)
4 new methods: HotAddDevice, HotDelDevice, HotModDevice, HotplugSupported
All these are the hypervisor interface with the backend.
In general they read current runtime info, do the actual hotplug
and update the runtime file.
NIC hot-add:
- open a tap and get its file descriptor.
- pass fd with SCM rights (using python-fdsend) via monitor socket
- create netdev and device with id=kvm_devid and proper pci info
Disk hot-add:
- create drive with id=kvm_devid
- create device with id=kvm_devid and corresponding pci info
Use MonitorSocket in _PassTapFd in order to connect to monitor socket
and pass the tap's file descriptor using fdsend.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:31 +0000 (17:45 +0300)]
Extract socket related code from QmpMonitor class
Separate unix socket related code from QmpMonitor class and
make the latter extend the newly introduced one: MonitorSocket
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:30 +0000 (17:45 +0300)]
Helper methods that check for hotplug support
Hotplug is currently *not* supported for:
- KVM < 1.0
- existing devices in the cluster
- python-fdsend module is not installed (NIC hotplug)
- chroot (Disk hotplug)
- security mode other than None (Disk hotplug)
For the above reasons raise HotplugError exception and
let masterd handle it.
TODO: modify CallHotplugCommand() so that it parses
monitor output and reports whether the command
succeeded or not.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:29 +0000 (17:45 +0300)]
Use -device with pci info if possible
Extend kvm_cmd with -device option for the case of paravirual
Disks and NICs.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:28 +0000 (17:45 +0300)]
Helper methods for PCI slots and device ids
Device naming:
QEMU monitor expects devices to be uniquely named. Device ids derive
from the following function:
kvm_devid = <device_type>-<part of uuid>-pci-<pci_slot>
Device ids must be reproduce-able when we want to remove them.
For that reason we store the pci slot inside the runtime file and
in case we want to remove a device we obtain its pci slot by
parsing the corresponding runtime enrty and matching the device
by its uuid.
Finding the PCI slot:
For newly added devices Hypervisor parses existing PCI allocations
(via _GetFreePCISlot() and eventually ``info pci`` monitor
command) and decides the PCI slot to plug in the device. During
instance startup hypervisor invokes _UpdatePCISlots() for every
device of the instance. Initial PCI reservations derive from KVM
default setup, that allocates 4 slots for devices other than disks
and NICs.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:27 +0000 (17:45 +0300)]
Prepare block_devices runtime entry
With this patch we add another entry in runtime files along with
kvm_cmd, kvm_nics, and hvparams. block_devices that used to be
encapsulated inside kvm_cmd, live now separately just like nics do
but in tupples of (L{objects.Disk}, dev_path).
Introduce also _GetExistingDeviceInfo() helper function to search
for runtime entries. This is going to be useful later in hotplug
methods.
Define new exception: HotplugError.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:26 +0000 (17:45 +0300)]
Prepare kvm options to support -device for disks
Newer kvm version support -device driver,... option where available
drivers can be found by running kvm -device ? command. Currently
ganeti uses `if` property of driver to define the disk type to use
which is also passed as hvparam. This patch prepares the use of
-device option only for paravirtual disks. To support other drivers
as well we must create a mapping between the values passed now as
disk_type hvparam and existing drivers. Note that if -device is used
`if` property of `drive` option should be `none`.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:25 +0000 (17:45 +0300)]
block_devices = (disk, link, uri)
Do not pass BlockDev instance to hypervisor. Instead calculate the
drive_uri (if any) in backend level and pass only the string to
hypervisor.
Hypervisor should not be aware of the entire block device but only
the final path it can be reached.
This is done also for easy manipulation of block devices inside
runtime files since hotplug support enforces separate entry and
BlockDev is not serializable.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:24 +0000 (17:45 +0300)]
Introduce _GenerateKVMBlockDevicesOptions()
Simply move logic that generates block device related
options out of _GenerateKVMRuntime().
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Dimitris Aragiorgis [Wed, 9 Oct 2013 14:45:23 +0000 (17:45 +0300)]
Hotplug: objects and constants additions
Add pci slot in NIC/Disk objects. This slot will be used only
by hypervisor code. Currently only KVM will use it and store it
temporarily in runtime files.
Add HOTPLUG_* constants to define device types an hotplug actions.
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Klaus Aehlig [Mon, 21 Oct 2013 15:18:49 +0000 (17:18 +0200)]
Merge branch 'stable-2.9' into stable-2.10
* stable-2.9
Start NEWS entry for 2.9.0 rc4
* stable-2.8
Version bump for 2.8.1
Verify that ConfD is running after master-failover
daemon-util: handle luxid in {start,stop}_master()
Fix typo in storage.FileStorage docstring
Fix path for serial file
Conflicts:
NEWS: take both additions
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Jose A. Lopes <jabolopes@google.com>
Michele Tartara [Fri, 18 Oct 2013 10:47:05 +0000 (10:47 +0000)]
Create check-news Makefile target
Checking the correctness of the NEWS file syntax is an important part of the
check process, but up to now it was only possible as part of a bigger set of
tests. This commit creates a Makefile target to run that independently.
The developer notes are updated to document this new target.
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Jose A. Lopes <jabolopes@google.com>
Michele Tartara [Thu, 17 Oct 2013 07:33:44 +0000 (07:33 +0000)]
Add dynamic hbal entry to the NEWS file
This feature is new in Ganeti 2.10.
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Santi Raffa [Thu, 17 Oct 2013 08:33:07 +0000 (10:33 +0200)]
Update NEWS file about cpuid and soundhw
Add entry to the news file, per request.
Signed-off-by: Santi Raffa <rsanti@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Thomas Thrainer [Wed, 16 Oct 2013 20:47:24 +0000 (22:47 +0200)]
Mention cmdlib unit tests and python-mock in NEWS
Add a NEWS entry about the cmdlib test framework and increased test
coverage, and mention that at least python-mock 1.0.1 is required as of
Ganeti 2.10.
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Klaus Aehlig [Thu, 17 Oct 2013 13:40:26 +0000 (15:40 +0200)]
Start NEWS entry for 2.9.0 rc4
So far, we have correct start/stop of luxid during gnt-cluster master-failover
inherited form stable-2.8
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Jose A. Lopes [Thu, 17 Oct 2013 09:04:53 +0000 (11:04 +0200)]
Update NEWS file about Hs2Py opcodes and constants
Add information about Haskell to Python opcode and constant
generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Klaus Aehlig [Thu, 17 Oct 2013 11:43:34 +0000 (13:43 +0200)]
Merge branch 'stable-2.8' into stable-2.9
* stable-2.8
Version bump for 2.8.1
Verify that ConfD is running after master-failover
daemon-util: handle luxid in {start,stop}_master()
Fix typo in storage.FileStorage docstring
Fix path for serial file
Conflicts:
NEWS: take both changes
configure.ac: ignore version bump
lib/bdev.py: apply change to lib/storage/bdev.py
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Michele Tartara [Thu, 17 Oct 2013 10:36:44 +0000 (12:36 +0200)]
Version bump for 2.8.1
Also, update the NEWS file accordingly.
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Thu, 17 Oct 2013 09:47:40 +0000 (11:47 +0200)]
Fix unit test regarding recent changes in node_info RPC
This fixes a unit test in instance_storage_unittest.py,
which was affected by the recent change in the RCP
'node_info'.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Hrovje Ribicic <riba@google.com>
Hrvoje Ribicic [Thu, 17 Oct 2013 08:22:11 +0000 (10:22 +0200)]
Update NEWS file about move-instance improvements
Add information about disk template changes and using default
iallocators on the target cluster.
Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Helga Velroyen [Wed, 16 Oct 2013 14:49:09 +0000 (16:49 +0200)]
RPC: request spindle information properly
This patch fixes a problem with the RPC call 'node_info'.
Depending on the exclusive storage flag, we need to add
a storage unit for physical volumes in order to obtain
storage space information for them.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Wed, 16 Oct 2013 11:11:18 +0000 (13:11 +0200)]
Verify that ConfD is running after master-failover
This patch adds additional 'gnt-node list' commands to
the testing of 'gnt-cluster master-failover' in order to
test if ConfD (or LuxiD) is still running after a
master-failover.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Apollon Oikonomopoulos [Wed, 16 Oct 2013 09:17:23 +0000 (12:17 +0300)]
daemon-util: handle luxid in {start,stop}_master()
Luxid was not handled in start_master() and stop_master() at all. As a result,
during a master-failover, luxid would be left running on the old master and
would not start on the new master, leaving the cluster without management until
luxid was manually started.
Signed-off-by: Apollon Oikonomopoulos <apoikos@gmail.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Santi Raffa [Wed, 16 Oct 2013 08:59:39 +0000 (10:59 +0200)]
Fix indentation of devel/build_chroot
This commit is separated from the previous one for reviewing
convenience. If git-blame points to this revision as the culprit of
your problem, you probably have to go deeper.
Signed-off-by: Santi Raffa <rsanti@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Santi Raffa [Wed, 16 Oct 2013 08:59:38 +0000 (10:59 +0200)]
Support wheezy schroots
Add support for wheezy in build_chroot.
* Run squeeze-specific install logic only when building squeeze
* Collapse consecutive apt-get commands
* Add wheezy-specific install logic
* Ask for python-pyinotify 0.9.4 to avoid py-apidoc failures
* Add generic setup logic
Commands inside the new case construct were not indented inside the
new case construct for reviewing convenience. This will be fixed in
the next patch. The changes allow "make commit-check" to run to completion
without errors inside the newly created chroot.
Signed-off-by: Santi Raffa <rsanti@google.com>
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Helga Velroyen [Tue, 15 Oct 2013 11:07:21 +0000 (13:07 +0200)]
Move orphaned unit tests to cmdlib/cluster_unittest.py
Through some merge from 2.9 to master, some unit tests
in the file ganeti.comdlib.common_unittest.py were
no longer referenced in the Makefile and as such not
run anymore. With the introduction of the cmdlib test
suite and the following extension of the unit tests,
the orphaned unit tests (which are not already subsumed
by others) are moved into the new unit test files.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Raffa Santi [Mon, 14 Oct 2013 17:12:57 +0000 (19:12 +0200)]
Fix bug with epydoc of BlockDev.GetUserspaceAccessUri
Signed-off-by: Santi Raffa <rsanti@google.com>
Reviewed-by: Jose A. Lopes <jabolopes@google.com>
Santi Raffa [Tue, 15 Oct 2013 08:13:28 +0000 (10:13 +0200)]
Fix typo in storage.FileStorage docstring
Signed-off-by: Santi Raffa <rsanti@google.com>
Reviewed-by: Jose Lopes <jabolopes@google.com>
Klaus Aehlig [Wed, 16 Oct 2013 07:32:02 +0000 (09:32 +0200)]
Fix path for serial file
It is actually located inside the queue directory.
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Thomas Thrainer [Tue, 15 Oct 2013 14:54:53 +0000 (16:54 +0200)]
Add implemented design docs to hidden toc section
This is required in order to calm a doclint warning.
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Thomas Thrainer [Wed, 9 Oct 2013 07:55:59 +0000 (09:55 +0200)]
Prepare version numbers for 2.10 release cycle
- Bump version numbers to 2.10 in various files
- Move implemented designs to design-2.10
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Thomas Thrainer [Tue, 15 Oct 2013 14:13:10 +0000 (16:13 +0200)]
Merge branch 'stable-2.9'
* stable-2.9:
Version bump for 2.9.0 rc3
Add NEWS entry for 2.9.0 rc3
Remove incorrect comment
cfg auto update: match ipolicy with enabled disk templates
Remove obsolete configure option for shared file storage
* stable-2.8:
Improve harep documentation
Conflicts:
Makefile.am
NEWS
configure.ac
(all trivial merges)
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Thomas Thrainer [Mon, 14 Oct 2013 14:31:16 +0000 (16:31 +0200)]
Add unit tests for LUBackupExport
This patch adds unit tests for LUBackupExport.
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Thomas Thrainer [Mon, 14 Oct 2013 11:38:33 +0000 (13:38 +0200)]
Add unit tests for LUBackupPrepare
This patch adds unit tests for LUBackupPrepare.
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Thomas Thrainer [Mon, 14 Oct 2013 11:03:34 +0000 (13:03 +0200)]
Add unit tests for LUBackupQuery
This patch adds unit tests for LUBackupQuery.
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Thomas Thrainer [Mon, 14 Oct 2013 11:01:58 +0000 (13:01 +0200)]
Use node names in LUBackupQuery
The result of LUBackupQuery has to be indexed by node name rather than
by node UUID, otherwise the automatically constructed filter won't
return any results.
Signed-off-by: Thomas Thrainer <thomasth@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Helga Velroyen [Thu, 10 Oct 2013 14:23:57 +0000 (16:23 +0200)]
Update design doc design-storagetypes.rst
This patch updates the design doc with the current
state of the code base.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Thu, 10 Oct 2013 12:40:23 +0000 (14:40 +0200)]
Make 'gnt-node list-storage' use default storage type
Currently, when no explicit storage type is given, the
'gnt-node list-storage' command defaults to file storage
whether or not file storage is enabled on the cluster
or not. This patch fixes it by defaulting to the default
storage type (which is the storage type of the default
disk template). If this storage type does not support
space reporting, an error message is emitted.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Thu, 10 Oct 2013 11:51:36 +0000 (13:51 +0200)]
Make 'gnt-cluster modify' respect the order of templates
This fixes a bug where the order of enabled disk templates
was not respected when manipulating it with 'gnt-cluster
modify'.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Thu, 10 Oct 2013 09:06:58 +0000 (11:06 +0200)]
Mention reporting behavior in man page of 'gnt-node info'
This patch extends the man page of 'gnt-node info' to
document the space reporting behavior with respect to
the enabled disk templates.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Wed, 9 Oct 2013 14:56:58 +0000 (16:56 +0200)]
Streamlining handling of spindles and default templates
This rather lenghy patch comprises a couple of refactorings
to achieve the following goals:
- 'gnt-node info' should only report space information about
spindles, when exclusive storage is enabled on the node
(so far it always did when lvm-based storage was enabled).
- 'gnt-node info' should report the disks' space information
for the default disk template's storage. So far it did it
always for LVM, which is irrelevant for a cluster running
for example file-based instances.
- Performance tweaking of storage reporting and gnt-node
info.
- Consider the future work on storage pools for any changes.
This is is achieved by the following refactorings:
- Move the decision whether or not to ask for spindle
from cmdlib-level to rpc level.
- Move the decision for which disk template's storage
information to ask for to cmdlib level (instead of
requesting information for all storage units and
later discarding most of them).
- Adjustments to storage utility functions.
- Affected unit tests are adjusted as well.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Wed, 9 Oct 2013 15:32:19 +0000 (17:32 +0200)]
Rename entities of unit test for MakeLegacyNodeInfo
This is a small preparation step for the next patch.
It just renames the key/value constants for the unit
test of MakeLegacyNodeInfo, because they were rather
undescriptive and thus made changes to the test cumbersome.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Jose A. Lopes [Fri, 11 Oct 2013 09:06:12 +0000 (11:06 +0200)]
Add test suite for some names in 'AutoConf'
Add test suite for some names in 'AutoConf' to test whether the values
generated from 'configure' and the 'Makefile' are valid filepaths,
user names, group names, among others. Fixes issue 601.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Jose A. Lopes [Fri, 11 Oct 2013 08:12:32 +0000 (10:12 +0200)]
Fix several search path configure options
Fix several search path configure options to properly handle
separators.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Klaus Aehlig [Tue, 8 Oct 2013 07:31:25 +0000 (09:31 +0200)]
Design document for hsqueeze
This design document describes a new htool, hsqueeze, to
be used to move the externally-mirrored instances in such a
way that as few nodes as possible host instances at all.
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Martin Zobel-Helas <zobel@debian.org>
Reviewed-by: Guido Trotter <ultrotter@google.com>
Klaus Aehlig [Mon, 14 Oct 2013 08:15:07 +0000 (10:15 +0200)]
Version bump for 2.9.0 rc3
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
Klaus Aehlig [Fri, 11 Oct 2013 15:46:15 +0000 (17:46 +0200)]
Add NEWS entry for 2.9.0 rc3
The main news is, that we fixed another issue with the configuration
upgrading process.
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
Klaus Aehlig [Mon, 14 Oct 2013 07:24:58 +0000 (09:24 +0200)]
Merge branch 'stable-2.8' into stable-2.9
* stable-2.8
Improve harep documentation
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Jose A. Lopes <jabolopes@google.com>
Helga Velroyen [Fri, 11 Oct 2013 15:16:22 +0000 (17:16 +0200)]
Remove incorrect comment
Removing a comment which falsely states that Ganeti will
stop supporting certain upgrades at some point.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Fri, 11 Oct 2013 09:33:41 +0000 (11:33 +0200)]
cfg auto update: match ipolicy with enabled disk templates
This patch fixes issue 599. The problem was that with 2.9,
a sanity check was introduced that made sure that the
ipolicies' set of disk templates is a subset of the
cluster-wide enabled disk templates. In order to make
upgrading from 2.8 smoother we add functionaliy to adapt
the ipolicies to the enabled disk templates.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Fri, 11 Oct 2013 14:15:31 +0000 (14:15 +0000)]
Remove obsolete configure option for shared file storage
This patch removes an obsolete configure option related
to shared file storage. It was remove a while ago, but
accidentally reintroduced through a merge.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Jose Lopes <jabolopes@google.com>
Helga Velroyen [Fri, 11 Oct 2013 14:07:33 +0000 (16:07 +0200)]
Fix typos and indentation for cluster.py
This patches fixes a typo and some indentation errors
that were accidentally introduced by premature pushing
of the patch series "Improvements on disk templates, in
particular file storage".
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Jose Lopes <jabolopes@google.com>
Michele Tartara [Thu, 10 Oct 2013 14:03:44 +0000 (14:03 +0000)]
Improve harep documentation
Add a more complete description of how the tool works.
Signed-off-by: Michele Tartara <mtartara@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Wed, 9 Oct 2013 13:45:53 +0000 (15:45 +0200)]
QA: remove subsumed QA test wrt disk templates
This patch removes a QA test that was supposed to test
that unused disk templates can be disabled safely. The
test is now subsumed by unit tests and thus we remove it
here. Besides that, it was actually testing the wrong
thing, as it tested that a _used_ disk template could
be disabled.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Helga Velroyen [Wed, 9 Oct 2013 13:16:29 +0000 (15:16 +0200)]
NEWS: mention restrictions wrt disabling disk templates
Mention the newly introduced feature, that disk templates
can no longer be disabled when there are instances still
using those.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Helga Velroyen [Wed, 9 Oct 2013 11:50:28 +0000 (13:50 +0200)]
Move unit tests for --file-storage-dir to cmdlib/*
There were some unit tests for the '--file-storage-dir'
option of 'gnt-cluster modify' still left in the unit
test file ganeti.cmdlib.cluster_unittest.py.
With the introducion of the unit test framework for
cmdlib, they now get converted into
cmdlib/cluster_unittest.py.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Helga Velroyen [Wed, 9 Oct 2013 12:16:40 +0000 (14:16 +0200)]
Correct properties of the cluster's file storage dir
This patch does:
- Rename the haskell opcode parameter
'pGlobalFileStorageDir' and 'pGlobalSharedfileStorageDir'
to 'pClusterFileStorageDir' and
'pClusterSharedfileStorageDir', respectively, because
the old name was misleading.
- The two parameters are made optional strings instead of
non-empty strings. This actually used to be like this
before, but was accidentally overriden by the switch to
opcode generation from haskell to python.
- The ClusterFileStorageDir parameter had to be renamed in
Haskell to not clash with the FileStorageDir parameter
of the OpInstanceCreate code.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Helga Velroyen [Wed, 9 Oct 2013 11:34:26 +0000 (13:34 +0200)]
Move disk template unit tests to test/py/cmdlib/
This patch moves some unit tests related to dis/enabling
disk templates from ganeti.cmdlib.cluster_unittest.py
to cmdlib/cluster_unittest.py to utilized the new cmdlib
unit test framework.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Helga Velroyen [Wed, 9 Oct 2013 10:48:23 +0000 (12:48 +0200)]
Make GetDiskTemplateSets output disabled disk templates
This patch extends the 'GetDiskTemplateSets' function to
also output the list of disk templates that were enabled
before this operation, but will be disabled afterwards.
This patch also includes code to check for instances using
disk templates that are about to be disabled.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Helga Velroyen [Wed, 9 Oct 2013 09:39:48 +0000 (11:39 +0200)]
Rename GetEnabledDiskTemplates to include disabled ones
This patch solely renames the functions
_GetEnabledDiskTemplates* to _GetDiskTemplateSets, because
in later patches, we will refactor it to not only output
disk templates that are or get enabled, but also the ones
that get disabled. The list of disabled disk templates
will be used for further sanity checks of operations.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Helga Velroyen [Wed, 9 Oct 2013 09:24:03 +0000 (11:24 +0200)]
Check for running instances when disabling templates
This patch introduces a function to be used in
'gnt-cluster modify' when disabling a couple of disk
templates. It checks whether there are still instances
running that use these templates.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Klaus Aehlig [Wed, 9 Oct 2013 14:05:20 +0000 (16:05 +0200)]
Merge branch 'stable-2.9' into master
* stable-2.9
Version bump for 2.9.0 rc2
Update NEWS for 2.9.0 rc2
Downgrade 'vif_script'
Downgrade 'xen_cmd'
Add test cluster config for version 2.9
Remove superfluous import of 'errors'
Start NEWS entry for 2.9.0 rc2
Fix lint errors
Fix upgrade and downgrade regarding disk.dev_type
Rename LDS_DRBD to DTS_DRBD
* stable-2.8
Fix typo in walkthrough documentation
Don't attemp ipv6 ssh in case of ipv4 cluster
Fix outdated documentation for users-setup
Conflicts:
NEWS: trivial
configure.ac: ignore suffix bump on stable-2.9
lib/constants.py: manually replay 66a37e on master
lib/objects.py: manually apply the LDS -> DTS change on master
test/data/cluster_config_2.9.json: take version of stable-2.9
tools/cfgupgrade: union of all Upgrade tasks, remove all downgrade paths from stable-2.9
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Jose A. Lopes <jabolopes@google.com>
Klaus Aehlig [Wed, 9 Oct 2013 11:27:19 +0000 (13:27 +0200)]
Suggest running 'gnt-cluster upgrade --resume' at reboots
In the example crontab, add an entry to run 'gnt-cluster upgrade --resume'
upon reboot of the node, as suggested in the design document.
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Klaus Aehlig [Wed, 9 Oct 2013 11:13:23 +0000 (13:13 +0200)]
Mention 'gnt-cluster upgrade' in NEWS
We added a new command, so mention it as news.
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Klaus Aehlig [Wed, 9 Oct 2013 11:03:44 +0000 (13:03 +0200)]
Update man page for 'gnt-cluster upgrade --resume'
This option is now implemented, and this change should be
mentioned in the man page. Also, document that it is safe
call on all nodes, and if no update was going on.
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Michele Tartara <mtartara@google.com>
Helga Velroyen [Wed, 9 Oct 2013 08:16:41 +0000 (10:16 +0200)]
NEWS: mention improvements on instance allocation
This patch mentions the improvements of the iallocator
with respect to instance allocation of non-LVM disk
templates.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Tue, 8 Oct 2013 15:12:35 +0000 (17:12 +0200)]
Use 'DTS_LVM' when possible
This patch replaces all usages of the utility function
'GetLvmDiskTemplate' by the new 'DTS_LVM' constant
to make it consistant with the usage of other DTS_*
constants.
Additionally, it provides a unit tests to ensure
consistancy between DTS_LVM and the mapping of disk
templates and storage types.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Tue, 8 Oct 2013 12:20:43 +0000 (14:20 +0200)]
iallocator: use lookup by disk template
So far, the iallocator requested storage information
about all enabled disk templates but discarded all but
the LVM information, even if it was allocating space
for a non-LVM instance. With this patch, it now only
asks for the one that is relevant for
the allocation request.
This has the following advantages:
- less load in the RPC call
- meaningful storage information is used for non-LVM
instance and thus better allocation
Note that this so far works only for instance allocation.
The code introduces some FIXMEs which will be resolved
when utilizing the improvements in other iallocator
requests as well.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Tue, 8 Oct 2013 12:47:44 +0000 (14:47 +0200)]
utils/storage.py: storage info lookup by disk template
This patch improves the handling of storage information
before and after a call to the RPC 'node_info'. It
adds a function to not only call for all storage
information on the cluster (as it is used right now),
but to ask only for storage information for a particular
disk template. This way, in many cases, for example
by the iallocator, less information is requested and thus
performance is increased. Unit tests are provided.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Helga Velroyen [Tue, 8 Oct 2013 12:26:47 +0000 (14:26 +0200)]
Replace GetLvmDiskTemplates by 'DTS_LVM'
To reach consistency by how we manage different
categorizations of disk templates, this patch
introduces the set of disk templates which are lvm-based:
'DTS_LVM'.
Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>
Klaus Aehlig [Tue, 8 Oct 2013 16:09:26 +0000 (18:09 +0200)]
If possible, replace symbolic links in place
Naive 'ln -s -f a b' will put the link inside 'b', if
'b' is (a symlink to) a directory; so, during upgrades,
the links in $(sysconfdir) cannot be updated this way.
Removing and readding works, however leaves the risk
of the upgrade process dying in that very moment, thus
leaving 'gnt-cluster' a dangling link, so that the --resume
option is of no help. On GNU systems, avoid this problem
by using the -T option of GNU ln.
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Klaus Aehlig [Tue, 8 Oct 2013 15:10:09 +0000 (17:10 +0200)]
Make information about GNU ln available to programs
Propagate the information on whether we have the GNU version of ln
to all programs by making it available as a constant.
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Klaus Aehlig [Tue, 8 Oct 2013 14:53:27 +0000 (16:53 +0200)]
Add simple test whether ln is the GNU version
If the GNU version is present, we can use certain GNU-extensions,
like the -T option, rendering some parts more robust.
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Klaus Aehlig [Tue, 8 Oct 2013 12:57:54 +0000 (14:57 +0200)]
Version bump for 2.9.0 rc2
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Klaus Aehlig [Tue, 8 Oct 2013 12:56:24 +0000 (14:56 +0200)]
Update NEWS for 2.9.0 rc2
Document that we have also taken care of the bug in 'cfgupgrade --downgrade'
and schedule release date.
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:51:40 +0000 (19:51 +0200)]
Fix 'AutoConf' import
Fix 'AutoConf' import to be qualified.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Mon, 7 Oct 2013 11:37:16 +0000 (13:37 +0200)]
Fix import order
Fix import order to be alphabetically sorted.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:45:43 +0000 (19:45 +0200)]
Hs2Py constants: improve auto repair
Fix auto repair related constants to use the Haskell type 'AutoRepairResult' instead of simple 'String' values.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:44:39 +0000 (19:44 +0200)]
Hs2Py constants: opcodes
Add opcode related constants to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:43:51 +0000 (19:43 +0200)]
Hs2Py constants: node daemon setup
Add node daemon setup related constants to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:43:11 +0000 (19:43 +0200)]
Hs2Py constants: hail, opcode, and SSH
Add hail, opcode, and SSH related constants to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:42:07 +0000 (19:42 +0200)]
Hs2Py constants: assorted constants
Add assorted constants to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:40:57 +0000 (19:40 +0200)]
Hs2Py constants: UID pool
Add UID pool related constants to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:40:01 +0000 (19:40 +0200)]
Hs2Py constants: 'maxUdpDataSize'
Add 'maxUdpDataSize' constant to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:39:09 +0000 (19:39 +0200)]
Hs2Py constants: remove comments
Remove several comment from 'lib/constants.py' because these have been moved to Haskell.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:36:28 +0000 (19:36 +0200)]
Hs2Py constants: assorted constants
Add some assorted constants to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:35:40 +0000 (19:35 +0200)]
Hs2Py constants: 'ispecsMinmaxDefaults'
Add 'ispecsMinmaxDefaults' to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:34:16 +0000 (19:34 +0200)]
Hs2Py constants: 'hvcGlobals' and 'ndcGlobals'
Add 'hvcGlobals' and 'ndcGlobals' to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:32:44 +0000 (19:32 +0200)]
Hs2Py constants: 'defaultEnabledHypervisor'
Add 'defaultEnabledHypervisor' to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:32:01 +0000 (19:32 +0200)]
Hs2Py constants: SSCONF
Add SSCONF related constants to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:30:51 +0000 (19:30 +0200)]
Hs2Py constants: dynamic devices
Add dynamic devices related constants to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:29:56 +0000 (19:29 +0200)]
Hs2Py constants: HT related constants
Add HT related constants to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>
Jose A. Lopes [Fri, 4 Oct 2013 17:27:12 +0000 (19:27 +0200)]
Hs2py constants: query resources
Add query resources related constants to the Haskell to Python constant generation.
Signed-off-by: Jose A. Lopes <jabolopes@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>