Implementing necessary mathods and rescaning storage
as necessary to support extending ScaleIO volumes
which are currently attached.
Change-Id: Icb9fc4fe1c16c34d8de9287046045d0837b7e80e
In the case that a compute host with multiple NICs can be connectted to
iscsi storage network, we expect the storage traffic only be
transimitted via storage NIC. This need to define an custom iface and set the
iface.net_ifacename value to the storage interface name.
Unfortunately, the current iscsi connector does not support to use a
custom iface. The _validate_iface_transport will change it to default.
After add tcp to the supported_transports, it is possible to use a
custom iface.
Please get the details as below:
1. CMP001 has three NICs: NIC1 is for management network, NIC2 is
for tenant network, and NIC3 is for storage network. NIC3 can access
storage device via layer 2 network. And NIC1 can access storage device
too, but it can only access via layer 3 network. We hope all the storage
traffic only be transimitted via NIC3, because they are in the same
layer 2 network.
2. Get the NIC3 MAC:
fa:16:3e:79:fd:63
3. Add new iscsi iface:
# iscsiadm -m iface --op=new -I tcp.fa:16:3e:79:fd:63
# iscsiadm -m iface -I tcp.fa:16:3e:79:fd:63 --op=update
-n iface.hwaddress -v fa:16:3e:79:fd:63
4. Edit nova.conf, and change iscsi_iface value:
iscsi_iface = tcp.fa:16:3e:79:fd:63
5. Restart nova compute service:
# systemctl restart openstack-nova-compute
Without this change, _validate_iface_transport will change the
custom iface tcp.fa:16:3e:79:fd:63 to default due to it cannot find tcp
transport.
According to this change, we should have a corresponding change to the
nova docs, here is change to nova
https://review.openstack.org/#/c/524443/
Change-Id: I85a62cb6e7f8d8982e97e792d647d38ce5641060
Closes-Bug:#1722432
Release notes are version independent, so remove version/release values.
We've found that most projects now require the service package to be
installed in order to build release notes, and this is entirely due to
the current convention of pulling in the version information.
Release notes should not need installation in order to build, so this
unnecessary version setting needs to be removed.
Change-Id: I0ca29d19436422a382bce8c23bba24a6e677c434
Needed-by: I56909152975f731a9d2c21b2825b972195e48ee8
These constants were moved over a year ago and we have had several releases
since then. The old ones that were kept for backwards compatibility can now
be removed.
Depends-on: I8682804d2299db793c1e4397a07ff67608a8bda6
Change-Id: Ia18de03880ca5b04d31dbdf7891fa6d3240ae9b5
Clean up both the releasenotes 'conf.py' and some remaining pieces of
the main 'conf.py'. In the case of the former, it looks like this was
copied from Cinder's config, and retains a lot of unnecessary config for
same. Remove it all.
It is also necessary to remove a docstring from 'os_brick/__init__.py',
as this was causing build issues. No idea how this was building
previously.
Change-Id: I2ca913c2ebcf2030642b18c72af180bb8f03b288
It was recently added to open-iscsi the functionality to disable
automatic LUN scans on iscsid start, on login, and on reception of
AEN/AER messages reporting LUN data has changed.
Those 3 cases were one of the causes why Nova-CPU and Cinder-Volumes
nodes would have unexpected devices. With this new feature we can
prevent them from appearing unnexpectedly.
This patch adds the mechanism required to configure our sessions for
manual scans in a backward compatible way.
Manual scans are enabled setting `node.session.scan` to `manual`.
Change-Id: I146a74f9f79c68a89677b9b26a324e06a35886f2
This patch refactors iSCSI connect code changing the approach to one
that relies primarily on sysfs, instead of CLI tools, to retrieve all
the required information: devices from the connection, multipath system
device name, multipath name, the WWN for the block devices...
By doing so, not only do we fix a good number of bugs, but we also
improve the reliability and speed of the mechanism.
A good example of improvements and benefits achieved by this patch are:
- Clean all leftovers on exceptions on a connection.
- Parallelize logins on multipath to increase speed on flaky network
connections.
- As long as there is at least one good path when working with multipath
we will return a multipath device instead of a single path device,
which helps with temporary flaky connections.
- Don't use the rescan retry parameter as log in retry on multipath
connections so both single and multipath cases are consistent.
- We no longer rely on just one device to get the wwn and look for the
multipath. This would be problematic with flaky connections.
- No more querying iSCSI devices for their WWN (page 0x83) removing
delays and issue on flaky connections.
- It's no longer a problem for the mechanism the fact that a device
exists but is not accessible.
- We use links in `/dev/disk/by-id` to get the WWID on connect, so we
make sure there are no leftovers on disconnect, but we no longer use
symlinks from `/dev/disk/by-path`, `/dev/disk/by-id`, or `/dev/mapper`
to find devices.
- We no longer need to rely on the WWN to determine the multipath, we
have the session and the LUN, so we trace the devices and from those
we get if they belong to a multipath.
- Stop polluting the logs with unnecessary exceptions from checking if
the node or session exist.
- Action retries will now only log the final exception instead of
logging all the exceptions.
- Warn when a multipath could not be formed and a single device is being
used, as performance will be degraded.
- We no longer do global rescans on single connections that could be
bringing in unrelated and unwanted devices (`iscsiadm -T iqn -p portal
--rescan`).
- Fix scan mechanism that would not request all scans when the same iqn
was shareed between portals and could send a scan request to the wrong
IP if they shared the same iqn.
- When doing single pathed connections we could end with a multipath
because we didn't clean up unfruitful connections.
It's worth mentioning that this patch does not touch the extend
operation.
Change-Id: Ia1c47bfaa7bc3544a5feba6a8a30faf2f132b8d7
This patch refactors iSCSI disconnect code changing the approach to one
that just uses `iscsiadm -m session` and sysfs to get all the required
information: devices from the connection, multipath system device name,
multipath name, the WWN for the block devices...
By doing so, not only do we fix a good number of bugs, but we also
improve the reliability and speed of the mechanism.
A good example of improvements and benefits achieved by this patch are:
- Common code for multipath and single path disconnects.
- No more querying iSCSI devices for their WWN (page 0x83) removing
delays and issue on flaky connections.
- All devices are properly cleaned even if they are not part of the
multipath.
- We wait for device removal and do it in parallel if there are
multiple.
- Removed usage of `multipath -l` to find devices which is really slow
with flaky connections and didn't work when called with a device from
a path that is down.
- Prevent losing data when detaching, currently if the multipath flush
fails for any other reason than "in use" we silently continue with the
removal. That is the case when all paths are momentarily down.
- Adds a new mechanism for the caller of the disconnect to specify that
it's acceptable to lose data and that it's more important to leave a
clean system. That is the case if we are creating a volume from an
image, since the volume will just be set to error, but we don't want
leftovers. Optionally we can tell os-brick to ignore errors and don't
raise an exception if the flush fails.
- Add a warning when we could be leaving leftovers behind due to
disconnect issues.
- Action retries (like multipath flush) will now only log the final
exception instead of logging all the exceptions.
- Flushes of individual paths now use exponential backoff retries
instead of random retries between 0.2 and 2 seconds (from oslo
library).
- We no longer use symlinks from `/dev/disk/by-path`, `/dev/disk/by-id`,
or `/dev/mapper` to find devices or multipaths, as they could be
leftovers from previous runs.
- With high failure rates (above 30%) some CLI calls will enter into a
weird state where they wait forever, so we add a timeout mechanism in
our `execute` method and add it to those specific calls.
Closes-Bug: #1502534
Change-Id: I058ff0a0e5ad517507dc3cda39087c913558561d
Initially Ic155bd29d46059832cce970bf60375e7e472eca6 had aimed to remove these
legacy provider names during the Pike cycle. While removing references
to these names in Tempest via Id221414d74af8413084c7935b762f93b7ce43c42 it was
highlighted that this wouldn't be possible until Queens and the eventual EOL of
Newton.
This change simply updates the logged deprecation warnings and adds a
new releasenote highlighting that these legancy provider names will
remain until Queens.
Change-Id: Ib8ca7ecb5494cd4fcae0657525d4c17bfc4ae37e
Implementation of an os-brick connector for Veritas HyperScale.
The Nova volume driver implementation is being reviewed here:
https://review.openstack.org/#/c/443951/
Change-Id: I01e26642f8fe4bc737c69493bb6ea6628bf72108
Implements: blueprint veritas-hyperscale-cinder-driver
Depends-On: Ie1af5f5d54b0115974a4024a1756e4e0aa07399a
If a 'keyring' key is found in the connection info passed to
connect_volume() use its value as the path to the keyring instead of the
default location (/etc/ceph/<cluster>.client.<user>.keyring).
This allows services such as cinder's RBD and Ceph backup drivers to
make use of a custom keyring path that an admin has defined.
Change-Id: Ib1230d3e40f56371567e1aead40db59667bad295
Closes-bug: #1668304
These constants detail the supported encryption formats and their
associated in tree encryption provider implementations.
The use of out of tree and direct use of these in tree implementations
is now deprecated and will be blocked in the Pike release of os-brick.
Change-Id: Ic155bd29d46059832cce970bf60375e7e472eca6
Partial-bug: #1639293
Releasenote translation publishing is being prepared. 'locale_dirs'
needs to be defined in conf.py to generate translated version of the
release notes.
Note that this repository might not get translated release notes - or
no translations at all - but we add the entry here nevertheless to
prepare for it.
Change-Id: I5e8b3d2865cfa96e45591b98846e03a9f9ec718f
In order to support automatically updating the release notes when we
create stable branches, we want the pages to be in a standard order.
This patch updates the order to be reverse chronological, so the most
recent notes appear at the top.
Change-Id: Ib364dcc8eb31275a31c83b68d7914263b183e393
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
Change I743e676372703e74178c79683dd622d530981e04 removed volume
backend driver calls for creating and restoring volume backups.
The overridden methods for creating and restoring backups in
the VMDK driver is no longer called and this breaks the backup-
restore of volumes created by the VMDK driver. The Cinder backup
manager now uses initiator connectors for creating and restoring
backups for all volume backends. The patch adds a connector for
vmdk volumes to fix the backup-restore for the VMDK driver.
DocImpact
Change-Id: Ia1a20f93780593b1efbb74484c3fdd3ca3564290
Partial-bug: #1602660
This patch adds a Windows Fibre Channel connector.
The patch using Windows os-brick connectors in the Hyper-V
Nova driver: https://review.openstack.org/#/c/273504/
Change-Id: Iec263e5d5803fcceb315e17d16d2b154e0214584
Partial-Implements: blueprint os-brick-windows-support
This patch adds a Windows SMBFS connector. Also, a Windows
RemoteFS class is added, being used by this connector, having
a similar interface with the Linux RemoteFS client class.
The patch using Windows os-brick connectors in the Hyper-V
Nova driver: https://review.openstack.org/#/c/273504/
The Windows connector factory function has been removed as it's not
needed anymore.
Change-Id: I0c753a667d58391da7a903d11ab1f4729e68461a
Implements: blueprint os-brick-windows-support