This commit is contained in:
Marius Schiffer
2022-03-26 11:22:42 +00:00
commit 49cf12279c
30 changed files with 1961 additions and 0 deletions

352
ceph/PKGBUILD Normal file
View File

@@ -0,0 +1,352 @@
# Maintainer: Thore Bödecker <foxxx0@archlinux.org>
# Contributor: Sébastien "Seblu" Luttringer <seblu@archlinux.org>
# TODO
# Dashboard (ng not found?)
pkgbase='ceph'
pkgname=('ceph' 'ceph-libs' 'ceph-mgr')
_zstdver=1.5.0
pkgver=16.2.7
pkgrel=1
pkgdesc='Distributed, fault-tolerant storage platform delivering object, block, and file system'
arch=('x86_64')
url='https://ceph.com/'
license=('GPL')
makedepends=("zstd" 'bash' 'bc' 'boost' 'boost-libs' 'bzip2' 'c-ares' 'cmake' 'coreutils' 'coffeescript'
'cpio' 'crypto++' 'cryptsetup' 'cunit' 'curl' 'cython' 'expat'
'fcgi' 'fontconfig' 'fuse2' 'fuse3' 'fmt' 'gcc' 'gcc-libs' 'git' 'glibc' 'gmock' 'gnutls'
'gperf' 'gperftools' 'gptfdisk' 'gtest' 'hwloc' 'inetutils' 'java-runtime'
'jq' 'jre11-openjdk-headless' 'junit' 'keyutils' 'leveldb' 'libaio'
'libatomic_ops' 'libcap' 'libcap-ng' 'libcroco' 'libcurl-compat'
'libedit' 'libgudev' 'libnl' 'librabbitmq-c' 'libtool' 'util-linux'
'libuv' 'libxml2' 'librdkafka' 'libpciaccess' 'lsb-release' 'lua' 'lz4' 'ncurses'
'nss' 'numactl' 'oath-toolkit' 'openssl' 'parted' 'pcre' 'pcre2' 'pkgconf' 'protobuf'
'procps-ng' 'python-astroid' 'python-attrs' 'python-bcrypt'
'python-cheroot' 'python-cherrypy' 'python-coverage' 'python-dateutil'
'python-elasticsearch' 'python-flask' 'python-flask-restful'
'python-google-api-python-client' 'python-google-auth'
'python-google-auth-httplib2' 'python-grpcio' 'python-isort'
'python-jinja' 'python-lazy-object-proxy' 'python-mccabe'
'python-isodate' 'python-defusedxml' 'python-pkgconfig' 'python-protobuf'
'python-lxml' 'python-xmlsec' 'python-yaml'
'python-more-itertools' 'python-numpy' 'python-pbr' 'python-pecan'
'python-pip' 'python-pluggy' 'python-portend' 'python-prettytable'
'python-prometheus_client' 'python-py' 'python-pycparser'
'python-pyjwt' 'python-pyopenssl' 'python-pytz' 'python-requests'
'python-routes' 'python-scikit-learn' 'python-scipy'
'python-setuptools' 'python-six' 'python-sphinx' 'python-tempora'
'python-virtualenv' 'python-werkzeug' 'python-wrapt' 'rabbitmq'
'sed' 'snappy' 'socat' 'systemd' 'systemd-libs' 'valgrind'
'xfsprogs' 'xmlstarlet' 'xmlsec' 'xxhash' 'yaml-cpp' 'yasm' 'zlib' )
checkdepends=('python-mock' 'python-nose' 'python-pycodestyle' 'python-pylint'
'python-pytest' 'python-pytest-cov')
options=('emptydirs')
source=(
"https://download.ceph.com/tarballs/${pkgbase}-${pkgver}.tar.gz"
'ceph.sysusers'
"zstd-${_zstdver}.tar.gz::https://github.com/facebook/zstd/archive/v${_zstdver}.tar.gz"
#'glibc2.32-strsignal-compat-backported.patch'
'ceph-14.2.0-cflags.patch'
'ceph-12.2.4-boost-build-none-options.patch'
'ceph-13.2.0-cflags.patch'
'ceph-13.2.2-dont-install-sysvinit-script.patch'
# 'ceph-14.2.0-link-crc32-statically.patch'
'ceph-14.2.0-cython-0.29.patch'
'ceph-15.2.0-rocksdb-cmake.patch'
'ceph-16.2.0-liburing.patch'
# 'ceph-15.2.5-missing-includes.patch'
'disable-empty-readable.sh-test.patch'
# Add python >= 3.8 workaround logic for incompatible modules
# This has been designated for upstream backporting into the octupus (15) and pacific (16) branches.
# TODO: check if merged and included in next releases
# https://tracker.ceph.com/issues/45147
# https://github.com/ceph/ceph/pull/34846
# 'backport_mgr_disabled_modules_workaround_PR34846.patch'
)
sha512sums=('SKIP'
'4354001c1abd9a0c385ba7bd529e3638fb6660b6a88d4e49706d4ac21c81b8e829303a20fb5445730bdac18c4865efb10bc809c1cd56d743c12aa9a52e160049'
'25b657529a698eec891f92ff4a085d1fd95d2ff938ce52c8a4ff6163eb0b668ec642dd09e0db190652638cd92371006afa01d8e437437762c4097ad301675c33'
'9e6bb46d5bbdc5d93f4f026b2a8d6bdb692d9ea6e7018c1bb0188d95ea8574c76238d968b340fd67ddaa3d8183b310e393e3549dc3a63a795fde696413b0ca94'
'6ff46a90d76f667fa23be0f9eb1ed2fb7e30af9a2621aec19944d0a22a431a0f5721603c588286e483ff55c14aac920adfccb039c9678a87cc59640dd70367ae'
'8ec0d668fefee12d2c7f5b5297dd81fc6a559f5823d069e6395d9b4240110eb8f95049d3054697a459948c1f3784b4450539849cf9d7f3b1aa1c7fbd96c475df'
'ea069b75b786c22166c609b127b512802cc5c6e9512d792d7b7b34d276f5b86d57c8c35cfc7b5c855a59c0ba87ba1aabe2ca26da72b26bff46b6ba8410ddb27e'
'82c1608928ee669ef60b8930ce82c443152c446e669e7bde9ce32f78571afb19a9620c3818b69ac8cb3ea33e7d7ac40f77c89162c71b19b157336d907fa23e3d'
'SKIP'
'8258661e56b5360f4260fdd29b07bac4d415068a112b61ca8c55c529fb1593d8d61a0d59a4eec8f1567b97167c058082198d008f55f8ee701cb46489df5f7823'
'2234d005df71b3b6013e6b76ad07a5791e3af7efec5f41c78eb1a9c92a22a67f0be9560be59b52534e90bfe251bcf32c33d5d40163f3f8f7e7420691f0f4a222'
'79e337a78cc4bd9ed8c8ab66831b3efd5a3a34e16d2c73ecedef03d2a34c7ac65ea25641a808913cd2dc2dc0f992fac35822efe4188622add6898dce1e5f13e3'
'4b4d0528d909fb735975db290bc8495ee626fc78d68b82b3525326cb69326cfc310c3078c529246f3d76cec590a3a7c4e92950009211590ebfe55583c4f5b71d')
# -fno-plt causes linker errors (undefined reference to internal methods)
# similar issue: https://bugs.archlinux.org/task/54845
# https://github.com/intel/media-driver/commit/d95d8f7ab7ac94a2e0f4ee6a4b4794898dc2d3b7
# as of today (2019-07-12) the upstream maintainers do not consider this a bug in their code
# (IMHO rightfully so) and thus we strip the option here
export CFLAGS="${CFLAGS/-fno-plt/}"
export CXXFLAGS="${CXXFLAGS/-fno-plt/}"
prepare() {
cd "${srcdir}/${pkgbase}-${pkgver}"
# apply patches from the source array
local filename
for filename in "${source[@]%%::*}"; do
if [[ "${filename}" =~ \.patch$ ]]; then
echo "Applying patch ${filename##*/}"
patch -p1 -N -i "${srcdir}/${filename##*/}"
fi
done
# temporarily disable unsubscriptable-object (buggy on Python 3.9)
# https://github.com/PyCQA/pylint/issues/3882
sed -i '/^disable=/a\ unsubscriptable-object,' \
src/pybind/mgr/dashboard/.pylintrc
# mypy complains about this but the exception is handled; not sure what's up
sed -i 's/from base64 import encodestring$/& # type: ignore/' \
src/pybind/mgr/dashboard/awsauth.py
# suppress deprecation warnings
sed -i '/#ifndef CEPH_CONFIG_H/i#define BOOST_ALLOW_DEPRECATED_HEADERS' \
src/common/config.h
sed -i '/#ifndef CEPH_TYPES_H/i#define BOOST_ALLOW_DEPRECATED_HEADERS' \
src/include/types.h
# fix boost stuff for system-boost
find . -name '*.cmake' -or -name 'CMakeLists.txt' -print0 | xargs --null \
sed -r \
-e 's|Boost::|boost_|g' \
-e 's|Boost_|boost_|g' \
-e 's|[Bb]oost_boost|boost_system|g' -i || exit 1
# remove bundled zstd and replace with newer release
#rm -rf src/zstd
#ln -sf "${srcdir}/zstd-${_zstdver}" src/zstd
# remove tests that require root privileges
rm src/test/cli/ceph-authtool/cap*.t
# disable/remove broken tests
sed -i '/add_ceph_test(smoke.sh/d' src/test/CMakeLists.txt
sed -i '/add_ceph_test(safe-to-destroy.sh/d' src/test/osd/CMakeLists.txt
}
build() {
cd "${srcdir}/${pkgbase}-${pkgver}"
# workaround for boost 1.74 -- similar fix exists upstream but I could
# not get it to work: https://github.com/ceph/ceph/commit/3d708219092d
CPPFLAGS+=' -DBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT'
export CFLAGS+=" ${CPPFLAGS}"
export CXXFLAGS+=" ${CPPFLAGS}"
export PYTHON_VERSION="$(python --version | awk '{print $2}')"
export PYTHON_INCLUDE_DIR="$(python -c "from sysconfig import get_path; print(get_path('include'))")"
export CMAKE_BUILD_TYPE='RelWithDebInfo'
export CMAKE_WARN_UNUSED_CLI=no
cmake \
-B build \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
-DCMAKE_INSTALL_SBINDIR=/usr/bin \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
-DCEPH_SYSTEMD_ENV_DIR=/etc/default \
-DCMAKE_INSTALL_LIBEXECDIR=/usr/lib \
-DCMAKE_INSTALL_SYSTEMD_SERVICEDIR=/usr/lib/systemd/system \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DENABLE_GIT_VERSION=ON \
-DWITH_PYTHON2=OFF \
-DWITH_PYTHON3="${PYTHON_VERSION}" \
-DMGR_PYTHON_VERSION=3 \
-DPYTHON_INCLUDE_DIR="${PYTHON_INCLUDE_DIR:?}" \
-DWITH_BABELTRACE=OFF \
-DWITH_LTTNG=OFF \
-DWITH_OPENLDAP=OFF \
-DWITH_RDMA=OFF \
-DWITH_OCF=OFF \
-DWITH_DPDK=OFF \
-DWITH_SPDK=OFF \
-DWITH_CEPHFS=ON \
-DWITH_CEPHFS_JAVA=ON \
-DWITH_CEPHFS_SHELL=ON \
-DWITH_FUSE=ON \
-DWITH_LZ4=ON \
-DWITH_XFS=ON \
-DWITH_MGR=ON \
-DWITH_MGR_DASHBOARD_FRONTEND=OFF \
-DDASHBOARD_FRONTEND_LANGS="ALL" \
-DWITH_RADOSGW=ON \
-DWITH_RADOSGW_FCGI_FRONTEND=OFF \
-DWITH_RADOSGW_BEAST_FRONTEND=ON \
-DWITH_RADOSGW_BEAST_OPENSSL=ON \
-DWITH_RADOSGW_AMQP_ENDPOINT=OFF \
-DWITH_LIBURING=ON \
-DWITH_SYSTEM_LIBURING=ON \
-DWITH_SYSTEMD=ON \
-DWITH_SYSTEM_BOOST=ON \
-DWITH_BOOST_CONTEXT=ON \
-DWITH_SYSTEM_GTEST=OFF \
-DWITH_SYSTEM_NPM=OFF \
-DENABLE_SHARED=ON \
-DWITH_TESTS=ON \
-Wno-dev
VERBOSE=1 make -C build all
}
###
### testsuite currently broken, needs some debugging
###
# check() {
# cd "${srcdir}/${pkgbase}-${pkgver}"
#
# export CTEST_PARALLEL_LEVEL=8
# export CTEST_OUTPUT_ON_FAILURE=1
# VERBOSE=1 make -C build check
#
# # sometimes processes are not properly terminated...
# for process in ceph-mon ceph-mgr ceph-osd; do
# pkill -9 "${process}" || true
# done
# }
package_ceph-libs() {
depends=('boost-libs' 'curl' 'glibc' 'keyutils' 'libutil-linux' 'bzip2' 'lz4' 'nss'
'oath-toolkit' 'python' 'snappy' 'systemd-libs' 'fmt')
cd "${srcdir}/${pkgbase}-${pkgver}"
# main install
VERBOSE=1 make DESTDIR="${pkgdir}" -C build install
# remove stuff that goes into the ceph package
rm -rf "${pkgdir}"/usr/lib/{ceph/mgr,systemd,sysusers.d,tmpfiles.d}
rm -rf "${pkgdir}/usr/share"
rm -rf "${pkgdir}/usr/sbin"
rm -rf "${pkgdir}/usr/bin"
rm -rf "${pkgdir}/etc"
rm -rf "${pkgdir}/var"
}
package_ceph() {
depends=("ceph-libs=${pkgver}-${pkgrel}"
'boost-libs' 'curl' 'fuse2' 'fuse3' 'fmt' 'glibc' 'gperftools' 'java-runtime'
'keyutils' 'leveldb' 'libaio' 'libutil-linux' 'librdkafka'
'lsb-release' 'ncurses'
'nss' 'oath-toolkit' 'python' 'python-bcrypt' 'python-setuptools'
'python-prettytable' 'python-cmd2' 'python-dateutil' 'snappy' 'sudo' 'systemd-libs'
'python-flask' 'python-pecan' 'python-pyopenssl' 'python-requests' 'python-werkzeug' 'xfsprogs'
'python-yaml' 'python-pyaml')
cd "${srcdir}/${pkgbase}-${pkgver}"
# main install
VERBOSE=1 make DESTDIR="${pkgdir}" -C build install
# fix sbin dir (cmake opt seems to have no effect)
mv "${pkgdir}"/usr/sbin/* "${pkgdir}/usr/bin/"
rm -rf "${pkgdir}/usr/sbin"
# remove stuff that is in the ceph-libs package
find "${pkgdir}/usr/lib" -maxdepth 1 -type f -delete
find "${pkgdir}/usr/lib" -maxdepth 1 -type l -delete
find "${pkgdir}/usr/lib/ceph" -maxdepth 1 -type f -delete
find "${pkgdir}/usr/lib/ceph" -maxdepth 1 -type l -delete
rm -rf "${pkgdir}"/usr/lib/{ceph/{compressor,crypto,erasure-code},rados-classes}
rm -rf "${pkgdir}"/usr/lib/python*
rm -rf "${pkgdir}/usr/include"
# remove stuff that is in the ceph-mgr package
rm -rf "${pkgdir}"/usr/{bin/ceph-mgr,share/ceph/mgr,lib/systemd/system/ceph-mgr*}
# remove _test_ binaries from the package, not needed
find "${pkgdir}/usr/bin" -maxdepth 1 -type f -iname 'ceph_test_*' -delete
# install tmpfiles.d and sysusers.d stuff
install -Dm644 "${srcdir}/${pkgbase}-${pkgver}/systemd/ceph.tmpfiles.d" \
"${pkgdir}/usr/lib/tmpfiles.d/${pkgbase}.conf"
install -Dm644 "${srcdir}/ceph.sysusers" \
"${pkgdir}/usr/lib/sysusers.d/${pkgbase}.conf"
# remove debian init script
rm -rf "${pkgdir}/etc/init.d"
# remove drop.ceph.com ssh stuff
rm -f "${pkgdir}"/usr/share/ceph/id_rsa_drop.ceph.com
rm -f "${pkgdir}"/usr/share/ceph/id_rsa_drop.ceph.com.pub
rm -f "${pkgdir}"/usr/share/ceph/known_hosts_drop.ceph.com
# fix bash completions path
install -d -m 755 "${pkgdir}/usr/share/bash-completion"
mv "${pkgdir}"/{etc/bash_completion.d,usr/share/bash-completion/completions}
# fix EnvironmentFile location in systemd service files
sed -i 's|/etc/sysconfig/|/etc/conf.d/|g' "${pkgdir}"/usr/lib/systemd/system/*.service
# prepare some paths and set correct permissions
install -D -d -m750 -o 0 -g 340 "${pkgdir}/etc/ceph"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/log/ceph"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-mds"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-osd"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-rgw"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/mon"
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/osd"
}
package_ceph-mgr() {
depends=("ceph=${pkgver}-${pkgrel}" "ceph-libs=${pkgver}-${pkgrel}"
'bash' 'boost-libs' 'coffeescript' 'curl' 'gperftools' 'nodejs' 'nss'
'python' 'python-cherrypy' 'python-flask-restful' 'python-pecan'
'python-pyjwt' 'python-routes' 'python-jsonpatch' 'python-more-itertools' 'python-numpy'
'python-scipy' 'python-six')
optdepends=('python-influxdb: influx module'
'python-kubernetes: rook module'
'python-prometheus_client: prometheus module'
'python-remoto: ssh module')
conflicts=('ceph<14.2.1-1')
cd "${srcdir}/${pkgbase}-${pkgver}"
# main install
VERBOSE=1 make DESTDIR="${pkgdir}" -C build install
# fix sbin dir (cmake opt seems to have no effect)
mv "${pkgdir}"/usr/sbin/* "${pkgdir}/usr/bin/"
rm -rf "${pkgdir}/usr/sbin"
# remove everything except mgr related stuff, rest is in ceph/ceph-libs
rm -rf "${pkgdir}"/usr/lib/{ceph/{compressor,crypto,erasure-code},rados-classes}
rm -rf "${pkgdir}/usr/include"
find "${pkgdir}/usr/bin" -maxdepth 1 -type f -not -name 'ceph-mgr' -delete
find "${pkgdir}"/usr/lib/systemd/system -maxdepth 1 -type f -not -iname 'ceph-mgr*' -delete
find "${pkgdir}"/usr/lib -maxdepth 1 -type f -delete
find "${pkgdir}"/usr/lib -maxdepth 1 -type l -delete
rm -rf "${pkgdir}"/etc
rm -rf "${pkgdir}"/var
rm -rf "${pkgdir}"/usr/lib/{ceph,sysusers.d,tmpfiles.d}
rm -rf "${pkgdir}"/usr/lib/python*
rm -rf "${pkgdir}"/usr/share/{bash-completion,doc,java,man}
# remove debian init script
rm -rf "${pkgdir}/etc/init.d"
# remove drop.ceph.com ssh stuff
rm -f "${pkgdir}"/usr/share/ceph/id_rsa_drop.ceph.com
rm -f "${pkgdir}"/usr/share/ceph/id_rsa_drop.ceph.com.pub
rm -f "${pkgdir}"/usr/share/ceph/known_hosts_drop.ceph.com
# fix EnvironmentFile location in systemd service files
sed -i 's|/etc/sysconfig/|/etc/conf.d/|g' "${pkgdir}"/usr/lib/systemd/system/*.service
# prepare some paths and set correct permissions
install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/mgr"
}
# vim:set ts=2 sw=2 et:

View File

@@ -0,0 +1,207 @@
From 40d06ce623f19172721a2f1d5b4f4f8b642a3077 Mon Sep 17 00:00:00 2001
From: Kefu Chai <kchai@redhat.com>
Date: Thu, 30 Apr 2020 10:43:01 +0800
Subject: [PATCH] mgr/PyModuleRegistry: probe modules using std::filesystem
for better readability
Signed-off-by: Kefu Chai <kchai@redhat.com>
---
src/mgr/PyModuleRegistry.cc | 43 +++++++++++++++++--------------------
1 file changed, 20 insertions(+), 23 deletions(-)
diff --git a/src/mgr/PyModuleRegistry.cc b/src/mgr/PyModuleRegistry.cc
index 440f7c8bafc1e..466da5d404964 100644
--- a/src/mgr/PyModuleRegistry.cc
+++ b/src/mgr/PyModuleRegistry.cc
@@ -11,6 +11,17 @@
* Foundation. See file COPYING.
*/
+#include "PyModuleRegistry.h"
+
+#if __has_include(<filesystem>)
+#include <filesystem>
+namespace fs = std::filesystem;
+#elif __has_include(<experimental/filesystem>)
+#include <experimental/filesystem>
+namespace fs = std::experimental::filesystem;
+#else
+#error std::filesystem not available!
+#endif
#include "include/stringify.h"
#include "common/errno.h"
@@ -24,8 +35,6 @@
#include "ActivePyModules.h"
-#include "PyModuleRegistry.h"
-
#define dout_context g_ceph_context
#define dout_subsys ceph_subsys_mgr
@@ -258,29 +267,17 @@ void PyModuleRegistry::shutdown()
std::set<std::string> PyModuleRegistry::probe_modules(const std::string &path) const
{
- DIR *dir = opendir(path.c_str());
- if (!dir) {
- return {};
- }
-
- std::set<std::string> modules_out;
- struct dirent *entry = NULL;
- while ((entry = readdir(dir)) != NULL) {
- string n(entry->d_name);
- string fn = path + "/" + n;
- struct stat st;
- int r = ::stat(fn.c_str(), &st);
- if (r == 0 && S_ISDIR(st.st_mode)) {
- string initfn = fn + "/module.py";
- r = ::stat(initfn.c_str(), &st);
- if (r == 0) {
- modules_out.insert(n);
- }
+ std::set<std::string> modules;
+ for (const auto& entry: fs::directory_iterator(path)) {
+ if (!fs::is_directory(entry)) {
+ continue;
+ }
+ auto module_path = entry.path() / "module.py";
+ if (fs::exists(module_path)) {
+ modules.emplace(entry.path().filename());
}
}
- closedir(dir);
-
- return modules_out;
+ return modules;
}
int PyModuleRegistry::handle_command(
From 067adbf9a032b5de793fd0b41b071f24f075270a Mon Sep 17 00:00:00 2001
From: Kefu Chai <kchai@redhat.com>
Date: Thu, 30 Apr 2020 11:34:07 +0800
Subject: [PATCH] mgr: do not load disabled modules
an option named "mgr_disabled_modules" is added in this change to
prevent mgr from loading modules listed in this option. because mgr
loads *all* modules found in the configured path, and per
https://tracker.ceph.com/issues/45147, python subinterpreter could hang
when loading numpy, so this behavior practically creates a deadlock
in mgr.
this issue is found when mgr uses python3.8 runtime. in development
environment, it'd be inconvenient to disable the offending mgr module
without changing the source code, even if we can choose to not install
them, for instance, the enduser can workaround this issue by
uninstalling `ceph-mgr-diskprediction-local`.
an option would be useful in this case, so we can add the module to the
list before mgr tries to load it.
as this issue is found with python3.8 + diskprediction_local (numpy), so
this mgr module is disabled by default if mgr is compiled with python3.8
runtime.
Fixes: https://tracker.ceph.com/issues/45147
Signed-off-by: Kefu Chai <kchai@redhat.com>
---
CMakeLists.txt | 5 +++++
src/common/options.cc | 14 ++++++++++++++
src/include/config-h.in.cmake | 3 +++
src/mgr/PyModuleRegistry.cc | 11 ++++++++++-
4 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0f7e86414c2d2..fa00d1316bcc0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -442,6 +442,11 @@ if(WITH_MGR)
set(MGR_PYTHON_LIBRARIES ${Python3_LIBRARIES})
set(MGR_PYTHON_VERSION_MAJOR ${Python3_VERSION_MAJOR})
set(MGR_PYTHON_VERSION_MINOR ${Python3_VERSION_MINOR})
+ # https://tracker.ceph.com/issues/45147
+ if(Python3_VERSION VERSION_GREATER_EQUAL 3.8)
+ set(MGR_DISABLED_MODULES "diskprediction_local")
+ message(STATUS "mgr module disabled for ${Python3_VERSION}: ${MGR_DISABLED_MODULES}")
+ endif()
# Boost dependency check deferred to Boost section
endif(WITH_MGR)
diff --git a/src/common/options.cc b/src/common/options.cc
index be1e955ab51ea..c78d9b69d7591 100644
--- a/src/common/options.cc
+++ b/src/common/options.cc
@@ -5169,6 +5169,20 @@ std::vector<Option> get_global_options() {
.add_service("mgr")
.set_description("Filesystem path to manager modules."),
+ Option("mgr_disabled_modules", Option::TYPE_STR, Option::LEVEL_ADVANCED)
+#ifdef MGR_DISABLED_MODULES
+ .set_default(MGR_DISABLED_MODULES)
+#endif
+ .set_flag(Option::FLAG_STARTUP)
+ .add_service("mgr")
+ .set_description("List of manager modules never get loaded")
+ .set_long_description("A comma delimited list of module names. This list "
+ "is read by manager when it starts. By default, manager loads all "
+ "modules found in specified 'mgr_module_path', and it starts the "
+ "enabled ones as instructed. The modules in this list will not be "
+ "loaded at all.")
+ .add_see_also("mgr_module_path"),
+
Option("mgr_initial_modules", Option::TYPE_STR, Option::LEVEL_BASIC)
.set_default("restful iostat")
.set_flag(Option::FLAG_NO_MON_UPDATE)
diff --git a/src/include/config-h.in.cmake b/src/include/config-h.in.cmake
index dc213938f5c9c..ea550c81e3a0e 100644
--- a/src/include/config-h.in.cmake
+++ b/src/include/config-h.in.cmake
@@ -309,6 +309,9 @@
#cmakedefine MGR_PYTHON_EXECUTABLE "@MGR_PYTHON_EXECUTABLE@"
+/* the default value of "mgr_disabled_module" option */
+#cmakedefine MGR_DISABLED_MODULES "@MGR_DISABLED_MODULES@"
+
/* Define to 1 if you have the `getprogname' function. */
#cmakedefine HAVE_GETPROGNAME 1
diff --git a/src/mgr/PyModuleRegistry.cc b/src/mgr/PyModuleRegistry.cc
index 466da5d404964..2e2e080aa76c0 100644
--- a/src/mgr/PyModuleRegistry.cc
+++ b/src/mgr/PyModuleRegistry.cc
@@ -25,6 +25,7 @@ namespace fs = std::experimental::filesystem;
#include "include/stringify.h"
#include "common/errno.h"
+#include "common/split.h"
#include "BaseMgrModule.h"
#include "PyOSDMap.h"
@@ -267,14 +268,22 @@ void PyModuleRegistry::shutdown()
std::set<std::string> PyModuleRegistry::probe_modules(const std::string &path) const
{
+ const auto opt = g_conf().get_val<std::string>("mgr_disabled_modules");
+ const auto disabled_modules = ceph::split(opt);
+
std::set<std::string> modules;
for (const auto& entry: fs::directory_iterator(path)) {
if (!fs::is_directory(entry)) {
continue;
}
+ const std::string name = entry.path().filename();
+ if (std::count(disabled_modules.begin(), disabled_modules.end(), name)) {
+ dout(10) << "ignoring disabled module " << name << dendl;
+ continue;
+ }
auto module_path = entry.path() / "module.py";
if (fs::exists(module_path)) {
- modules.emplace(entry.path().filename());
+ modules.emplace(name);
}
}
return modules;

11
ceph/boost-1.67.patch Normal file
View File

@@ -0,0 +1,11 @@
--- a/src/test/librbd/test_mock_Journal.cc 2018-06-03 01:56:35.407273176 +0300
+++ b/src/test/librbd/test_mock_Journal.cc 2018-06-03 01:56:29.800506081 +0300
@@ -1,6 +1,8 @@
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
// vim: ts=8 sw=2 smarttab
+#define BOOST_BIND_NO_PLACEHOLDERS
+
#include "test/librbd/test_mock_fixture.h"
#include "test/journal/mock/MockJournaler.h"
#include "test/librbd/test_support.h"

View File

@@ -0,0 +1,26 @@
diff --git a/src/boost/tools/build/src/tools/features/debug-feature.jam b/src/boost/tools/build/src/tools/features/debug-feature.jam
index 04958f9a..38b6acf1 100644
--- a/src/boost/tools/build/src/tools/features/debug-feature.jam
+++ b/src/boost/tools/build/src/tools/features/debug-feature.jam
@@ -8,7 +8,7 @@
import feature ;
feature.feature debug-symbols
- : on off
+ : on off none
: propagated ;
feature.feature profiling
diff --git a/src/boost/tools/build/src/tools/features/optimization-feature.jam b/src/boost/tools/build/src/tools/features/optimization-feature.jam
index 761f76f1..fb2a5dec 100644
--- a/src/boost/tools/build/src/tools/features/optimization-feature.jam
+++ b/src/boost/tools/build/src/tools/features/optimization-feature.jam
@@ -8,7 +8,7 @@
import feature ;
feature.feature optimization
- : off speed space
+ : off none speed space
: propagated ;
feature.feature inlining

View File

@@ -0,0 +1,26 @@
diff --git a/cmake/modules/BuildBoost.cmake b/cmake/modules/BuildBoost.cmake
index d6572115a4..cc0bdddc9f 100644
--- a/cmake/modules/BuildBoost.cmake
+++ b/cmake/modules/BuildBoost.cmake
@@ -62,7 +62,7 @@ function(do_build_boost version)
else()
list(APPEND boost_features "address-model=32")
endif()
- set(BOOST_CXXFLAGS "-fPIC -w") # check on arm, etc <---XXX
+ set(BOOST_CXXFLAGS "${CMAKE_CXX_FLAGS} -fPIC -w") # check on arm, etc <---XXX
list(APPEND boost_features "cxxflags=${BOOST_CXXFLAGS}")
list(FIND Boost_BUILD_COMPONENTS "python" with_python)
diff --git a/src/compressor/zstd/CMakeLists.txt b/src/compressor/zstd/CMakeLists.txt
index 5a80aa539c..8d6ff5c8f0 100644
--- a/src/compressor/zstd/CMakeLists.txt
+++ b/src/compressor/zstd/CMakeLists.txt
@@ -1,7 +1,7 @@
# zstd
# libzstd - build it statically
-set(ZSTD_C_FLAGS "-fPIC -Wno-unused-variable -O3")
+set(ZSTD_C_FLAGS "-fPIC -Wno-unused-variable $ENV{CFLAGS} -O3")
include(ExternalProject)
ExternalProject_Add(zstd_ext

View File

@@ -0,0 +1,15 @@
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 874eabfaa1..e337f4cf8e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -601,10 +601,6 @@ install(PROGRAMS
${CMAKE_SOURCE_DIR}/src/ceph-run
${CMAKE_SOURCE_DIR}/src/ceph-clsinfo
DESTINATION bin)
-install(PROGRAMS
- ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/init-ceph
- DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/init.d
- RENAME ceph)
install(FILES
${CMAKE_SOURCE_DIR}/share/id_rsa_drop.ceph.com

View File

@@ -0,0 +1,13 @@
diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake
index 5697dff85f..7fdcfe4112 100644
--- a/cmake/modules/Distutils.cmake
+++ b/cmake/modules/Distutils.cmake
@@ -61,7 +61,7 @@ function(distutils_add_cython_module name src)
CC="${PY_CC}"
CXX="${PY_CXX}"
LDSHARED="${PY_LDSHARED}"
- OPT=\"-DNDEBUG -g -fwrapv -O2 -w\"
+ OPT=\"-DNDEBUG -g -fwrapv -w\"
LDFLAGS=-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
CYTHON_BUILD_DIR=${CMAKE_CURRENT_BINARY_DIR}
CEPH_LIBDIR=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}

View File

@@ -0,0 +1,17 @@
--- ceph-13.2.1/cmake/modules/Distutils.cmake.old 2018-07-26 17:39:56.000000000 -0000
+++ ceph-13.2.1/cmake/modules/Distutils.cmake 2018-12-24 05:43:51.566174070 -0000
@@ -58,8 +62,13 @@
function(distutils_install_cython_module name)
get_property(compiler_launcher GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
get_property(link_launcher GLOBAL PROPERTY RULE_LAUNCH_LINK)
- set(PY_CC "${compiler_launcher} ${CMAKE_C_COMPILER}")
+ string(REPLACE " " ";" cflags ${CMAKE_C_FLAGS})
+ list(APPEND cflags -iquote${CMAKE_SOURCE_DIR}/src/include -w)
+ list(APPEND cflags -D'void0=dead_function\(void\)')
+ list(APPEND cflags -D'__Pyx_check_single_interpreter\(ARG\)=ARG \#\# 0')
+ string(REPLACE ";" " " cflags "${cflags}")
+ set(PY_CC "${compiler_launcher} ${CMAKE_C_COMPILER} ${cflags}")
set(PY_LDSHARED "${link_launcher} ${CMAKE_C_COMPILER} -shared")
install(CODE "
set(ENV{CC} \"${PY_CC}\")
set(ENV{LDSHARED} \"${PY_LDSHARED}\")

View File

@@ -0,0 +1,11 @@
--- ceph-14.2.0.orig/src/common/CMakeLists.txt 2019-03-18 04:08:29.000000000 -0600
+++ ceph-14.2.0/src/common/CMakeLists.txt 2019-03-21 18:42:32.903182824 -0600
@@ -165,7 +165,7 @@
crc32c_aarch64.c)
endif(HAVE_INTEL)
-add_library(crc32 ${crc32_srcs})
+add_library(crc32 STATIC ${crc32_srcs})
if(HAVE_ARMV8_CRC)
set_target_properties(crc32 PROPERTIES
COMPILE_FLAGS "${CMAKE_C_FLAGS} ${ARMV8_CRC_COMPILE_FLAGS}")

View File

@@ -0,0 +1,15 @@
diff --git a/cmake/modules/BuildRocksDB.cmake b/cmake/modules/BuildRocksDB.cmake
index de9748878b..4b86b36d35 100644
--- a/cmake/modules/BuildRocksDB.cmake
+++ b/cmake/modules/BuildRocksDB.cmake
@@ -6,10 +6,6 @@ function(build_rocksdb)
# CMAKE_PREFIX_PATH, for which reason we'll have to use some other separator.
string(REPLACE ";" "!" CMAKE_PREFIX_PATH_ALT_SEP "${CMAKE_PREFIX_PATH}")
list(APPEND rocksdb_CMAKE_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP})
- if(CMAKE_TOOLCHAIN_FILE)
- list(APPEND rocksdb_CMAKE_ARGS
- -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
- endif()
if(ALLOCATOR STREQUAL "jemalloc")
list(APPEND rocksdb_CMAKE_ARGS -DWITH_JEMALLOC=ON)

View File

@@ -0,0 +1,12 @@
diff --git a/src/tools/rbd/action/Bench.cc b/src/tools/rbd/action/Bench.cc
index aa6edbc18b..90c551c179 100644
--- a/src/tools/rbd/action/Bench.cc
+++ b/src/tools/rbd/action/Bench.cc
@@ -9,6 +9,7 @@
#include "common/ceph_mutex.h"
#include "include/types.h"
#include "global/signal_handler.h"
+#include <atomic>
#include <iostream>
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>

View File

@@ -0,0 +1,13 @@
diff --git a/src/ceph-16.2.7/src/rgw/rgw_string.h b/src/ceph-16.2.7/src/rgw/rgw_string.h
index 257daa9..90e64f9 100644
--- a/src/ceph-16.2.7/src/rgw/rgw_string.h
+++ b/tmp/rgw_string.h
@@ -8,6 +8,8 @@
#include <stdlib.h>
#include <limits.h>
#include <string_view>
+#include <string>
+#include <stdexcept>
#include <boost/container/small_vector.hpp>

View File

@@ -0,0 +1,35 @@
diff --git a/cmake/modules/Finduring.cmake b/cmake/modules/Finduring.cmake
index 10c8de4255..c0a4dadfe4 100644
--- a/cmake/modules/Finduring.cmake
+++ b/cmake/modules/Finduring.cmake
@@ -8,10 +8,10 @@ find_path(URING_INCLUDE_DIR liburing.h)
find_library(URING_LIBRARIES liburing.a liburing)
include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(uring DEFAULT_MSG URING_LIBRARIES URING_INCLUDE_DIR)
+pkg_check_modules(URING REQUIRED liburing)
if(uring_FOUND AND NOT TARGET uring::uring)
- add_library(uring::uring UNKNOWN IMPORTED)
+ add_library(uring::uring ALIAS ${URING_LIBRARIES})
set_target_properties(uring::uring PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${URING_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
diff --git a/src/blk/CMakeLists.txt b/src/blk/CMakeLists.txt
index dc4f9b82ae..e39d690394 100644
--- a/src/blk/CMakeLists.txt
+++ b/src/blk/CMakeLists.txt
@@ -52,10 +52,11 @@ endif()
if(WITH_LIBURING)
if(WITH_SYSTEM_LIBURING)
- find_package(uring REQUIRED)
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}../../cmake/modules/")
+ pkg_check_modules(URING REQUIRED liburing)
else()
include(Builduring)
build_uring()
endif()
- target_link_libraries(blk PRIVATE uring::uring)
+ target_link_libraries(blk PRIVATE ${URING_LIBRARIES})
endif()

1
ceph/ceph.sysusers Normal file
View File

@@ -0,0 +1 @@
u ceph 340 - /run/ceph

View File

@@ -0,0 +1,13 @@
--- a/src/test/CMakeLists.txt 2019-12-06 17:42:34.000000000 +0100
+++ b/src/test/CMakeLists.txt 2020-01-04 09:55:50.703888545 +0100
@@ -555,8 +555,8 @@ set(env_vars_for_tox_tests
WITH_PYTHON3=${WITH_PYTHON3})
if(WITH_MGR)
- add_test(NAME run-tox-mgr-dashboard COMMAND bash ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/run-tox.sh)
- list(APPEND tox_tests run-tox-mgr-dashboard)
+ # add_test(NAME run-tox-mgr-dashboard COMMAND bash ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/run-tox.sh)
+ # list(APPEND tox_tests run-tox-mgr-dashboard)
set(MGR_DASHBOARD_VIRTUALENV ${CEPH_BUILD_VIRTUALENV}/mgr-dashboard-virtualenv)
list(APPEND env_vars_for_tox_tests MGR_DASHBOARD_VIRTUALENV=${MGR_DASHBOARD_VIRTUALENV})

View File

@@ -0,0 +1,6 @@
--- a/src/test/encoding/CMakeLists.txt 2019-04-25 20:15:48.000000000 +0200
+++ b/src/test/encoding/CMakeLists.txt 2019-07-14 21:11:37.380428899 +0200
@@ -1,3 +1,2 @@
# scripts
add_ceph_test(check-generated.sh ${CMAKE_CURRENT_SOURCE_DIR}/check-generated.sh)
-add_ceph_test(readable.sh ${CMAKE_CURRENT_SOURCE_DIR}/readable.sh)

View File

@@ -0,0 +1,11 @@
--- a/src/pybind/mgr/dashboard/tox.ini 2019-12-06 17:42:34.000000000 +0100
+++ c/src/pybind/mgr/dashboard/tox.ini 2020-01-03 15:25:30.074706391 +0100
@@ -20,7 +20,7 @@ commands=
py27: pip install -r {toxinidir}/requirements-py27.txt
py3: pip install -r {toxinidir}/requirements-py3.txt
cov: coverage erase
- cov: {envbindir}/py.test --cov=. --cov-report= --junitxml=junit.{envname}.xml --doctest-modules controllers services/ tests/ tools.py
+ cov: {envbindir}/py.test --cov=. --cov-report= --junitxml=junit.{envname}.xml --ignore=frontend/ --doctest-modules controllers services/ tests/ tools.py
cov: coverage combine {toxinidir}/{env:COVERAGE_FILE}
cov: coverage report
cov: coverage xml

View File

@@ -0,0 +1,8 @@
--- a/src/ceph-disk/ceph_disk/main.py 2017-08-28 18:30:20.000000000 +0200
+++ b/src/ceph-disk/ceph_disk/main.py 2017-09-21 13:50:39.373573382 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
#
# Copyright (C) 2015, 2016, 2017 Red Hat <contact@redhat.com>
# Copyright (C) 2014 Inktank <info@inktank.com>

View File

@@ -0,0 +1,50 @@
--- a/src/pybind/mgr/dashboard/run-frontend-unittests.sh 2020-01-08 19:36:54.000000000 +0100
+++ b/src/pybind/mgr/dashboard/run-frontend-unittests.sh 2020-01-10 15:18:39.646510326 +0100
@@ -8,7 +8,7 @@ if [ `uname` != "FreeBSD" ]; then
fi
# Build
-npm run build -- --prod --progress=false || failed=true
+#npm run build -- --prod --progress=false || failed=true
# Unit Tests
config='src/unit-test-configuration.ts'
@@ -25,22 +25,22 @@ if [ -e ${config}_old ]; then
fi
# Linting
-npm run lint --silent
-if [ $? -gt 0 ]; then
- failed=true
- echo -e "\nTry running 'npm run fix' to fix some linting errors. \
-Some errors might need a manual fix."
-fi
-
-# I18N
-npm run i18n:extract
-i18n_lint=`awk '/<source> |<source>$| <\/source>/,/<\/context-group>/ {printf "%-4s ", NR; print}' src/locale/messages.xlf`
-if [[ ! -z $i18n_lint ]]; then
- echo -e "The following source translations in 'messages.xlf' need to be \
-fixed, please check the I18N suggestions in 'HACKING.rst':\n"
- echo "${i18n_lint}"
- failed=true
-fi
+# npm run lint --silent
+# if [ $? -gt 0 ]; then
+# failed=true
+# echo -e "\nTry running 'npm run fix' to fix some linting errors. \
+# Some errors might need a manual fix."
+# fi
+#
+# # I18N
+# npm run i18n:extract
+# i18n_lint=`awk '/<source> |<source>$| <\/source>/,/<\/context-group>/ {printf "%-4s ", NR; print}' src/locale/messages.xlf`
+# if [[ ! -z $i18n_lint ]]; then
+# echo -e "The following source translations in 'messages.xlf' need to be \
+# fixed, please check the I18N suggestions in 'HACKING.rst':\n"
+# echo "${i18n_lint}"
+# failed=true
+# fi
if [ `uname` != "FreeBSD" ]; then
deactivate

View File

@@ -0,0 +1,18 @@
--- a/src/pybind/mgr/dashboard/controllers/health.py 2020-11-17 19:12:53.000000000 +0100
+++ b/src/pybind/mgr/dashboard/controllers/health.py 2020-11-22 22:13:44.115751086 +0100
@@ -11,10 +11,14 @@
from ..services.ceph_service import CephService
from ..services.iscsi_cli import IscsiGatewaysConfig
from ..services.iscsi_client import IscsiClient
-from ..tools import partial_dict
+#from ..tools import partial_dict
from .host import get_hosts
+def partial_dict(orig, keys):
+ return {k: orig[k] for k in keys}
+
+
class HealthData(object):
"""
A class to be used in combination with BaseController to allow either

View File

@@ -0,0 +1,52 @@
--- a/CMakeLists.txt 2018-05-29 14:04:02.000000000 +0200
+++ b/CMakeLists.txt 2018-06-04 13:41:55.684455580 +0200
@@ -49,7 +49,7 @@ endif(WITH_CCACHE)
option(WITH_MANPAGE "Build man pages." ON)
if(WITH_MANPAGE)
find_program(SPHINX_BUILD
- sphinx-build)
+ sphinx-build2)
if(NOT SPHINX_BUILD)
message(FATAL_ERROR "Can't find sphinx-build.")
endif(NOT SPHINX_BUILD)
--- a/src/tools/setup-virtualenv.sh 2018-05-29 14:04:02.000000000 +0200
+++ b/src/tools/setup-virtualenv.sh 2018-06-04 13:43:24.767175961 +0200
@@ -58,10 +58,10 @@ if [ -z "$DIR" ] ; then
fi
rm -fr $DIR
mkdir -p $DIR
-virtualenv --python $PYTHON_BINARY $DIR
+virtualenv2 --python $PYTHON_BINARY $DIR
. $DIR/bin/activate
-if pip --help | grep -q disable-pip-version-check; then
+if pip2 --help | grep -q disable-pip-version-check; then
DISABLE_PIP_VERSION_CHECK=--disable-pip-version-check
else
DISABLE_PIP_VERSION_CHECK=
@@ -69,12 +69,12 @@ fi
# older versions of pip will not install wrap_console scripts
# when using wheel packages
-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade 'pip >= 6.1'
+pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade 'pip >= 6.1'
# workaround of https://github.com/pypa/setuptools/issues/1042
-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade "setuptools < 36"
+pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade "setuptools < 36"
-if pip --help | grep -q disable-pip-version-check; then
+if pip2 --help | grep -q disable-pip-version-check; then
DISABLE_PIP_VERSION_CHECK=--disable-pip-version-check
else
DISABLE_PIP_VERSION_CHECK=
@@ -84,7 +84,7 @@ if test -d wheelhouse ; then
export NO_INDEX=--no-index
fi
-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse 'tox >=2.9.1'
+pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse 'tox >=2.9.1'
if test -f requirements.txt ; then
- pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse -r requirements.txt
+ pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse -r requirements.txt
fi

View File

@@ -0,0 +1,160 @@
--- a/src/pybind/mgr/ansible/run-tox.sh 2019-04-25 20:15:48.000000000 +0200
+++ b/src/pybind/mgr/ansible/run-tox.sh 2019-07-14 16:36:54.220654727 +0200
@@ -8,22 +8,22 @@
test -d ansible && cd ansible
if [ -e tox.ini ]; then
- TOX_PATH=$(readlink -f tox.ini)
+ TOX_PATH="$(readlink -f tox.ini)"
else
- TOX_PATH=$(readlink -f $(dirname $0)/tox.ini)
+ TOX_PATH="$(readlink -f "$(dirname "$0")"/tox.ini)"
fi
# tox.ini will take care of this.
unset PYTHONPATH
export CEPH_BUILD_DIR=$CEPH_BUILD_DIR
-source ${MGR_ANSIBLE_VIRTUALENV}/bin/activate
+source "${MGR_ANSIBLE_VIRTUALENV}"/bin/activate
if [ "$WITH_PYTHON2" = "ON" ]; then
ENV_LIST+="py27"
fi
-if [ "$WITH_PYTHON3" = "ON" ]; then
+if [[ "$WITH_PYTHON3" == "ON" || "$WITH_PYTHON3" == "3" ]]; then
ENV_LIST+="py3"
fi
-tox -c ${TOX_PATH} -e ${ENV_LIST}
+tox -c "${TOX_PATH}" -e "${ENV_LIST}"
--- a/src/pybind/mgr/dashboard/run-tox.sh 2019-04-25 20:15:48.000000000 +0200
+++ b/src/pybind/mgr/dashboard/run-tox.sh 2019-07-14 16:36:48.907269344 +0200
@@ -8,30 +8,30 @@
test -d dashboard && cd dashboard
if [ -e tox.ini ]; then
- TOX_PATH=`readlink -f tox.ini`
+ TOX_PATH="$(readlink -f tox.ini)"
else
- TOX_PATH=`readlink -f $(dirname $0)/tox.ini`
+ TOX_PATH="$(readlink -f "$(dirname "$0")"/tox.ini)"
fi
# tox.ini will take care of this.
unset PYTHONPATH
export CEPH_BUILD_DIR=$CEPH_BUILD_DIR
-source ${MGR_DASHBOARD_VIRTUALENV}/bin/activate
+source "${MGR_DASHBOARD_VIRTUALENV}"/bin/activate
-if [ "$WITH_PYTHON2" = "ON" ]; then
- if [[ -n "$@" ]]; then
+if [ "$WITH_PYTHON2" == "ON" ]; then
+ if [[ -n "$*" ]]; then
ENV_LIST+="py27-run,"
else
ENV_LIST+="py27-cov,py27-lint,"
fi
fi
-if [ "$WITH_PYTHON3" = "ON" ]; then
- if [[ -n "$@" ]]; then
+if [[ "$WITH_PYTHON3" == "ON" || "$WITH_PYTHON3" == "3" ]]; then
+ if [[ -n "$*" ]]; then
ENV_LIST+="py3-run"
else
ENV_LIST+="py3-cov,py3-lint"
fi
fi
-tox -c ${TOX_PATH} -e "$ENV_LIST" "$@"
+tox -c "${TOX_PATH}" -e "$ENV_LIST" "$@"
--- a/src/pybind/mgr/insights/run-tox.sh 2019-04-25 20:15:48.000000000 +0200
+++ b/src/pybind/mgr/insights/run-tox.sh 2019-07-14 16:36:41.347195419 +0200
@@ -8,22 +8,22 @@
test -d insights && cd insights
if [ -e tox.ini ]; then
- TOX_PATH=`readlink -f tox.ini`
+ TOX_PATH="$(readlink -f tox.ini)"
else
- TOX_PATH=`readlink -f $(dirname $0)/tox.ini`
+ TOX_PATH="$(readlink -f "$(dirname "$0")"/tox.ini)"
fi
# tox.ini will take care of this.
unset PYTHONPATH
export CEPH_BUILD_DIR=$CEPH_BUILD_DIR
-source ${MGR_INSIGHTS_VIRTUALENV}/bin/activate
+source "${MGR_INSIGHTS_VIRTUALENV}"/bin/activate
if [ "$WITH_PYTHON2" = "ON" ]; then
ENV_LIST+="py27"
fi
-if [ "$WITH_PYTHON3" = "ON" ]; then
+if [[ "$WITH_PYTHON3" == "ON" || "$WITH_PYTHON3" == "3" ]]; then
ENV_LIST+="py3"
fi
-tox -c ${TOX_PATH} -e ${ENV_LIST}
+tox -c "${TOX_PATH}" -e "${ENV_LIST}"
--- a/src/pybind/mgr/orchestrator_cli/run-tox.sh 2019-04-25 20:15:48.000000000 +0200
+++ b/src/pybind/mgr/orchestrator_cli/run-tox.sh 2019-07-14 16:37:01.734061798 +0200
@@ -8,25 +8,24 @@
test -d orchestrator_cli && cd orchestrator_cli
if [ -e tox.ini ]; then
- TOX_PATH=$(readlink -f tox.ini)
+ TOX_PATH="$(readlink -f tox.ini)"
else
- TOX_PATH=$(readlink -f $(dirname $0)/tox.ini)
+ TOX_PATH="$(readlink -f "$(dirname "$0")"/tox.ini)"
fi
# tox.ini will take care of this.
unset PYTHONPATH
export CEPH_BUILD_DIR=$CEPH_BUILD_DIR
-if [ -f ${MGR_ORCHESTRATOR_CLI_VIRTUALENV}/bin/activate ]
-then
- source ${MGR_ORCHESTRATOR_CLI_VIRTUALENV}/bin/activate
+if [[ -r "${MGR_ORCHESTRATOR_CLI_VIRTUALENV}"/bin/activate ]]; then
+ source "${MGR_ORCHESTRATOR_CLI_VIRTUALENV}"/bin/activate
fi
if [ "$WITH_PYTHON2" = "ON" ]; then
ENV_LIST+="py27"
fi
-if [ "$WITH_PYTHON3" = "ON" ]; then
- ENV_LIST+=",py3"
+if [[ "$WITH_PYTHON3" == "ON" || "$WITH_PYTHON3" == "3" ]]; then
+ ENV_LIST+="py3"
fi
-tox -c ${TOX_PATH} -e ${ENV_LIST}
+tox -c "${TOX_PATH}" -e "${ENV_LIST}"
--- a/src/pybind/mgr/dashboard/tox.ini 2019-04-25 20:15:48.000000000 +0200
+++ b/src/pybind/mgr/dashboard/tox.ini 2019-07-15 12:36:39.693948289 +0200
@@ -1,5 +1,5 @@
[tox]
-envlist = py27-{cov,lint,run},py3-{cov,lint,run}
+envlist = py3-{cov,lint,run}
skipsdist = true
toxworkdir = {env:CEPH_BUILD_DIR}/dashboard
minversion = 2.8.1
@@ -11,13 +11,12 @@ setenv=
WEBTEST_INTERACTIVE = false
LD_LIBRARY_PATH = {toxinidir}/../../../../build/lib
PATH = {toxinidir}/../../../../build/bin:$PATH
- py27: PYTHONPATH = {toxinidir}/../../../../build/lib/cython_modules/lib.2
py3: PYTHONPATH = {toxinidir}/../../../../build/lib/cython_modules/lib.3
cov: UNITTEST = true
cov: COVERAGE_FILE = .coverage.{envname}
commands=
pip install -r {toxinidir}/requirements.txt
- py27: pip install -r {toxinidir}/requirements-py27.txt
+; py27: pip install -r {toxinidir}/requirements-py27.txt
py3: pip install -r {toxinidir}/requirements-py3.txt
cov: coverage erase
cov: {envbindir}/py.test --cov=. --cov-report= --junitxml=junit.{envname}.xml --doctest-modules controllers/rbd.py services/ tests/ tools.py

View File

@@ -0,0 +1,12 @@
diff -upr a/src/compressor/snappy/SnappyCompressor.h b/src/compressor/snappy/SnappyCompressor.h
--- a/src/compressor/snappy/SnappyCompressor.h 2021-08-05 19:11:54.000000000 +0200
+++ b/src/compressor/snappy/SnappyCompressor.h 2021-09-01 17:38:35.488609568 +0200
@@ -96,7 +96,7 @@ class SnappyCompressor : public Compress
if (qat_enabled)
return qat_accel.decompress(p, compressed_len, dst);
#endif
- snappy::uint32 res_len = 0;
+ std::uint32_t res_len = 0;
BufferlistSource source_1(p, compressed_len);
if (!snappy::GetUncompressedLength(&source_1, &res_len)) {
return -1;

View File

@@ -0,0 +1,63 @@
From b9b6faf66ae67648626470cb4fc3f0850ac4d842 Mon Sep 17 00:00:00 2001
From: David Disseldorp <ddiss@suse.de>
Date: Tue, 1 Sep 2020 13:49:21 +0200
Subject: [PATCH] cmake: detect and use sigdescr_np() if available
sys_siglist is deprecated with glibc 2.32. A new thread-safe and
async-signal safe sigdescr_np() function is provided, so use it if
available.
Fixes: https://tracker.ceph.com/issues/47187
Signed-off-by: David Disseldorp <ddiss@suse.de>
---
cmake/modules/CephChecks.cmake | 1 +
src/global/signal_handler.h | 8 +++++---
src/include/config-h.in.cmake | 3 +++
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/cmake/modules/CephChecks.cmake b/cmake/modules/CephChecks.cmake
index 23687283a7c6..ca86dcbc73de 100644
--- a/cmake/modules/CephChecks.cmake
+++ b/cmake/modules/CephChecks.cmake
@@ -24,6 +24,7 @@ check_function_exists(strerror_r HAVE_Strerror_R)
check_function_exists(name_to_handle_at HAVE_NAME_TO_HANDLE_AT)
check_function_exists(pipe2 HAVE_PIPE2)
check_function_exists(accept4 HAVE_ACCEPT4)
+check_function_exists(sigdescr_np HAVE_SIGDESCR_NP)
include(CMakePushCheckState)
cmake_push_check_state(RESET)
diff --git a/src/global/signal_handler.h b/src/global/signal_handler.h
index 476724201aa9..c101b2e28733 100644
--- a/src/global/signal_handler.h
+++ b/src/global/signal_handler.h
@@ -20,10 +20,12 @@
typedef void (*signal_handler_t)(int);
-#ifndef HAVE_REENTRANT_STRSIGNAL
-# define sig_str(signum) sys_siglist[signum]
-#else
+#ifdef HAVE_SIGDESCR_NP
+# define sig_str(signum) sigdescr_np(signum)
+#elif HAVE_REENTRANT_STRSIGNAL
# define sig_str(signum) strsignal(signum)
+#else
+# define sig_str(signum) sys_siglist[signum]
#endif
void install_sighandler(int signum, signal_handler_t handler, int flags);
diff --git a/src/include/config-h.in.cmake b/src/include/config-h.in.cmake
index 1ea3703f620c..59bd4273511a 100644
--- a/src/include/config-h.in.cmake
+++ b/src/include/config-h.in.cmake
@@ -220,6 +220,9 @@
/* Define to 1 if you have sched.h. */
#cmakedefine HAVE_SCHED 1
+/* Define to 1 if you have sigdescr_np. */
+#cmakedefine HAVE_SIGDESCR_NP 1
+
/* Support SSE (Streaming SIMD Extensions) instructions */
#cmakedefine HAVE_SSE

View File

@@ -0,0 +1,671 @@
From e4f179fa960ed18e8f45bc87d26552d720bc819b Mon Sep 17 00:00:00 2001
From: Volker Theile <vtheile@suse.com>
Date: Fri, 25 Sep 2020 13:17:19 +0200
Subject: [PATCH] mgr/dashboard: update pylint to 2.6.0
* Update pylint to 2.6.0.
* Fix pylint issues.
Fixes: https://tracker.ceph.com/issues/47647
(cherry picked from commit 298c91958a41674a928d53f010b20f174f16d68f)
---
src/pybind/mgr/dashboard/.pylintrc | 8 ++++++--
.../mgr/dashboard/controllers/nfsganesha.py | 2 +-
src/pybind/mgr/dashboard/controllers/osd.py | 2 +-
src/pybind/mgr/dashboard/plugins/__init__.py | 2 +-
.../mgr/dashboard/requirements-lint.txt | 2 +-
src/pybind/mgr/dashboard/services/auth.py | 1 -
.../mgr/dashboard/services/ceph_service.py | 2 +-
src/pybind/mgr/dashboard/services/cephx.py | 2 +-
src/pybind/mgr/dashboard/services/ganesha.py | 20 +++++++++----------
.../mgr/dashboard/services/iscsi_client.py | 2 +-
.../mgr/dashboard/services/iscsi_config.py | 2 +-
src/pybind/mgr/dashboard/services/progress.py | 2 +-
.../mgr/dashboard/services/rgw_client.py | 3 ++-
src/pybind/mgr/dashboard/tests/__init__.py | 2 +-
src/pybind/mgr/dashboard/tests/helper.py | 2 +-
.../dashboard/tests/test_access_control.py | 2 +-
.../mgr/dashboard/tests/test_api_auditing.py | 2 +-
src/pybind/mgr/dashboard/tests/test_cephfs.py | 2 +-
.../mgr/dashboard/tests/test_controllers.py | 2 +-
src/pybind/mgr/dashboard/tests/test_docs.py | 2 +-
.../tests/test_erasure_code_profile.py | 2 +-
.../mgr/dashboard/tests/test_exceptions.py | 2 +-
.../dashboard/tests/test_feature_toggles.py | 2 +-
.../mgr/dashboard/tests/test_ganesha.py | 2 +-
.../mgr/dashboard/tests/test_grafana.py | 2 +-
src/pybind/mgr/dashboard/tests/test_home.py | 2 +-
src/pybind/mgr/dashboard/tests/test_host.py | 2 +-
src/pybind/mgr/dashboard/tests/test_iscsi.py | 3 ++-
.../mgr/dashboard/tests/test_orchestrator.py | 2 +-
src/pybind/mgr/dashboard/tests/test_osd.py | 4 ++--
.../mgr/dashboard/tests/test_plugin_debug.py | 2 +-
src/pybind/mgr/dashboard/tests/test_pool.py | 2 +-
.../mgr/dashboard/tests/test_prometheus.py | 2 +-
.../mgr/dashboard/tests/test_rbd_mirroring.py | 2 +-
.../mgr/dashboard/tests/test_rest_tasks.py | 2 +-
src/pybind/mgr/dashboard/tests/test_rgw.py | 2 +-
.../mgr/dashboard/tests/test_rgw_client.py | 2 +-
.../mgr/dashboard/tests/test_settings.py | 2 +-
src/pybind/mgr/dashboard/tests/test_sso.py | 3 ++-
src/pybind/mgr/dashboard/tests/test_tools.py | 2 +-
src/pybind/mgr/dashboard/tools.py | 2 +-
41 files changed, 58 insertions(+), 52 deletions(-)
diff --git a/src/pybind/mgr/dashboard/.pylintrc b/src/pybind/mgr/dashboard/.pylintrc
index 404a16a2e6..c4bf033cda 100644
--- a/src/pybind/mgr/dashboard/.pylintrc
+++ b/src/pybind/mgr/dashboard/.pylintrc
@@ -15,7 +15,7 @@ ignore-patterns=
# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
-#init-hook=
+init-hook='import sys; sys.path.append("./")'
# Use multiple processes to speed up Pylint.
jobs=1
@@ -118,7 +118,11 @@ disable=import-star-module-level,
too-many-arguments,
too-many-locals,
too-many-statements,
- useless-object-inheritance
+ useless-object-inheritance,
+ relative-beyond-top-level,
+ raise-missing-from,
+ super-with-arguments,
+ import-outside-toplevel
# Enable the message, report, category or checker with the given id(s). You can
diff --git a/src/pybind/mgr/dashboard/controllers/nfsganesha.py b/src/pybind/mgr/dashboard/controllers/nfsganesha.py
index 1219f78b95..510b37a712 100644
--- a/src/pybind/mgr/dashboard/controllers/nfsganesha.py
+++ b/src/pybind/mgr/dashboard/controllers/nfsganesha.py
@@ -272,7 +272,7 @@ class NFSGaneshaService(RESTController):
class NFSGaneshaUi(BaseController):
@Endpoint('GET', '/cephx/clients')
def cephx_clients(self):
- return [client for client in CephX.list_clients()]
+ return list(CephX.list_clients())
@Endpoint('GET', '/fsals')
def fsals(self):
diff --git a/src/pybind/mgr/dashboard/controllers/osd.py b/src/pybind/mgr/dashboard/controllers/osd.py
index 2731ad0ffc..f95951cba2 100644
--- a/src/pybind/mgr/dashboard/controllers/osd.py
+++ b/src/pybind/mgr/dashboard/controllers/osd.py
@@ -272,7 +272,7 @@ class Osd(RESTController):
@CreatePermission
@osd_task('create', {'tracking_id': '{tracking_id}'})
- def create(self, method, data, tracking_id): # pylint: disable=W0622
+ def create(self, method, data, tracking_id): # pylint: disable=unused-argument
if method == 'bare':
return self._create_bare(data)
if method == 'drive_groups':
diff --git a/src/pybind/mgr/dashboard/plugins/__init__.py b/src/pybind/mgr/dashboard/plugins/__init__.py
index 8973654770..3e3aca4001 100644
--- a/src/pybind/mgr/dashboard/plugins/__init__.py
+++ b/src/pybind/mgr/dashboard/plugins/__init__.py
@@ -71,4 +71,4 @@ class DashboardPluginManager(object):
PLUGIN_MANAGER = DashboardPluginManager("ceph-mgr.dashboard")
# Load all interfaces and their hooks
-from . import interfaces # noqa: F401 pylint: disable=wrong-import-position,cyclic-import
+from . import interfaces # noqa pylint: disable=C0413,W0406
diff --git a/src/pybind/mgr/dashboard/requirements-lint.txt b/src/pybind/mgr/dashboard/requirements-lint.txt
index 8f68ad3856..f01fa54e6e 100644
--- a/src/pybind/mgr/dashboard/requirements-lint.txt
+++ b/src/pybind/mgr/dashboard/requirements-lint.txt
@@ -1,4 +1,4 @@
-pylint==2.3.1; python_version >= '3'
+pylint==2.6.0
flake8==3.7.8; python_version >= '3'
flake8-colors==0.1.6; python_version >= '3'
#TODO: Fix docstring issues: https://tracker.ceph.com/issues/41224
diff --git a/src/pybind/mgr/dashboard/services/auth.py b/src/pybind/mgr/dashboard/services/auth.py
index d829362e63..475d501263 100644
--- a/src/pybind/mgr/dashboard/services/auth.py
+++ b/src/pybind/mgr/dashboard/services/auth.py
@@ -177,7 +177,6 @@ class AuthManagerTool(cherrypy.Tool):
def _check_authorization(self, username):
self.logger.debug("checking authorization...")
- username = username
handler = cherrypy.request.handler.callable
controller = handler.__self__
sec_scope = getattr(controller, '_security_scope', None)
diff --git a/src/pybind/mgr/dashboard/services/ceph_service.py b/src/pybind/mgr/dashboard/services/ceph_service.py
index a6eee2957e..89582e3f73 100644
--- a/src/pybind/mgr/dashboard/services/ceph_service.py
+++ b/src/pybind/mgr/dashboard/services/ceph_service.py
@@ -12,7 +12,7 @@ from .. import mgr
from ..exceptions import DashboardException
try:
- from typing import Dict, Any, Union # pylint: disable=unused-import
+ from typing import Dict, Any, Union
except ImportError:
pass # For typing only
diff --git a/src/pybind/mgr/dashboard/services/cephx.py b/src/pybind/mgr/dashboard/services/cephx.py
index ccda387961..60303ad85f 100644
--- a/src/pybind/mgr/dashboard/services/cephx.py
+++ b/src/pybind/mgr/dashboard/services/cephx.py
@@ -22,7 +22,7 @@ class CephX(object):
@classmethod
def list_clients(cls):
- return [client for client in cls._clients_map()]
+ return list(cls._clients_map())
@classmethod
def get_client_key(cls, client_id):
diff --git a/src/pybind/mgr/dashboard/services/ganesha.py b/src/pybind/mgr/dashboard/services/ganesha.py
index e9144db406..764ebb3739 100644
--- a/src/pybind/mgr/dashboard/services/ganesha.py
+++ b/src/pybind/mgr/dashboard/services/ganesha.py
@@ -69,7 +69,7 @@ class Ganesha(object):
@classmethod
def get_ganesha_clusters(cls):
- return [cluster_id for cluster_id in cls._get_clusters_locations()]
+ return list(cls._get_clusters_locations())
@staticmethod
def _get_orch_nfs_instances():
@@ -325,7 +325,7 @@ class GaneshaConfParser(object):
for key, val in block.items():
if key == 'block_name':
continue
- elif key == '_blocks_':
+ if key == '_blocks_':
for blo in val:
conf_str += GaneshaConfParser.write_block(blo, depth)
elif val:
@@ -693,21 +693,21 @@ class Export(object):
result['attr_expiration_time'] = self.attr_expiration_time
result['security_label'] = self.security_label
if 'protocols' not in defaults:
- result['protocols'] = [p for p in self.protocols]
+ result['protocols'] = list(self.protocols)
else:
def_proto = defaults['protocols']
if not isinstance(def_proto, list):
def_proto = set([def_proto])
if self.protocols != def_proto:
- result['protocols'] = [p for p in self.protocols]
+ result['protocols'] = list(self.protocols)
if 'transports' not in defaults:
- result['transports'] = [t for t in self.transports]
+ result['transports'] = list(self.transports)
else:
def_transp = defaults['transports']
if not isinstance(def_transp, list):
def_transp = set([def_transp])
if self.transports != def_transp:
- result['transports'] = [t for t in self.transports]
+ result['transports'] = list(self.transports)
result['_blocks_'] = [self.fsal.to_fsal_block()]
result['_blocks_'].extend([client.to_client_block()
@@ -737,14 +737,14 @@ class Export(object):
'path': self.path,
'fsal': self.fsal.to_dict(),
'cluster_id': self.cluster_id,
- 'daemons': sorted([d for d in self.daemons]),
+ 'daemons': sorted(list(self.daemons)),
'pseudo': self.pseudo,
'tag': self.tag,
'access_type': self.access_type,
'squash': self.squash,
'security_label': self.security_label,
- 'protocols': sorted([p for p in self.protocols]),
- 'transports': sorted([t for t in self.transports]),
+ 'protocols': sorted(list(self.protocols)),
+ 'transports': sorted(list(self.transports)),
'clients': [client.to_dict() for client in self.clients]
}
@@ -992,7 +992,7 @@ class GaneshaConf(object):
return None
def list_daemons(self):
- return [daemon_id for daemon_id in self.daemons_conf_blocks]
+ return list(self.daemons_conf_blocks)
def reload_daemons(self, daemons):
with mgr.rados.open_ioctx(self.rados_pool) as ioctx:
diff --git a/src/pybind/mgr/dashboard/services/iscsi_client.py b/src/pybind/mgr/dashboard/services/iscsi_client.py
index b82a51a3d4..c5a6dfa0e7 100644
--- a/src/pybind/mgr/dashboard/services/iscsi_client.py
+++ b/src/pybind/mgr/dashboard/services/iscsi_client.py
@@ -12,7 +12,7 @@ try:
except ImportError:
from urllib.parse import urlparse
-from .iscsi_config import IscsiGatewaysConfig # pylint: disable=cyclic-import
+from .iscsi_config import IscsiGatewaysConfig
from ..settings import Settings
from ..rest_client import RestClient
diff --git a/src/pybind/mgr/dashboard/services/iscsi_config.py b/src/pybind/mgr/dashboard/services/iscsi_config.py
index ab90048500..86bdfc770d 100644
--- a/src/pybind/mgr/dashboard/services/iscsi_config.py
+++ b/src/pybind/mgr/dashboard/services/iscsi_config.py
@@ -57,7 +57,7 @@ class IscsiGatewaysConfig(object):
"""
for gateway_name, gateway_config in config['gateways'].items():
if '.' not in gateway_name:
- from .iscsi_client import IscsiClient
+ from .iscsi_client import IscsiClient # pylint: disable=cyclic-import
from ..rest_client import RequestException
try:
service_url = gateway_config['service_url']
diff --git a/src/pybind/mgr/dashboard/services/progress.py b/src/pybind/mgr/dashboard/services/progress.py
index d8cf7521fa..d7b9ed973b 100644
--- a/src/pybind/mgr/dashboard/services/progress.py
+++ b/src/pybind/mgr/dashboard/services/progress.py
@@ -12,7 +12,7 @@ from __future__ import absolute_import
from datetime import datetime
import logging
-from . import rbd
+from . import rbd # pylint: disable=no-name-in-module
from .. import mgr
diff --git a/src/pybind/mgr/dashboard/services/rgw_client.py b/src/pybind/mgr/dashboard/services/rgw_client.py
index 5507eb6800..aee18acc54 100644
--- a/src/pybind/mgr/dashboard/services/rgw_client.py
+++ b/src/pybind/mgr/dashboard/services/rgw_client.py
@@ -16,7 +16,7 @@ from ..tools import build_url, dict_contains_path, json_str_to_object,\
from .. import mgr
try:
- from typing import Dict, List, Optional # pylint: disable=unused-import
+ from typing import Dict, List, Optional
except ImportError:
pass # For typing only
@@ -303,6 +303,7 @@ class RgwClient(RestClient):
if self.userid != RgwClient._SYSTEM_USERID:
logger.info("Fetching new keys for user: %s", self.userid)
keys = RgwClient.admin_instance().get_user_keys(self.userid)
+ # pylint: disable=attribute-defined-outside-init
self.auth = S3Auth(keys['access_key'], keys['secret_key'],
service_url=self.service_url)
else:
diff --git a/src/pybind/mgr/dashboard/tests/__init__.py b/src/pybind/mgr/dashboard/tests/__init__.py
index 421378a155..8eb5bb8af1 100644
--- a/src/pybind/mgr/dashboard/tests/__init__.py
+++ b/src/pybind/mgr/dashboard/tests/__init__.py
@@ -21,7 +21,7 @@ from ..services.auth import AuthManagerTool
from ..services.exception import dashboard_exception_handler
from ..plugins import PLUGIN_MANAGER
-from ..plugins import feature_toggles, debug # noqa # pylint: disable=unused-import
+from ..plugins import feature_toggles, debug # noqa
PLUGIN_MANAGER.hook.init()
diff --git a/src/pybind/mgr/dashboard/tests/helper.py b/src/pybind/mgr/dashboard/tests/helper.py
index 9ec043d6be..06b83d42a8 100644
--- a/src/pybind/mgr/dashboard/tests/helper.py
+++ b/src/pybind/mgr/dashboard/tests/helper.py
@@ -2,7 +2,7 @@
from __future__ import absolute_import
try:
- from typing import Dict, Any # pylint: disable=unused-import
+ from typing import Dict, Any
except ImportError:
pass
diff --git a/src/pybind/mgr/dashboard/tests/test_access_control.py b/src/pybind/mgr/dashboard/tests/test_access_control.py
index 0039efc167..81604a161e 100644
--- a/src/pybind/mgr/dashboard/tests/test_access_control.py
+++ b/src/pybind/mgr/dashboard/tests/test_access_control.py
@@ -9,7 +9,7 @@ import unittest
from datetime import datetime, timedelta
-from . import CmdException, CLICommandTestMixin
+from . import CmdException, CLICommandTestMixin # pylint: disable=no-name-in-module
from .. import mgr
from ..security import Scope, Permission
from ..services.access_control import load_access_control_db, \
diff --git a/src/pybind/mgr/dashboard/tests/test_api_auditing.py b/src/pybind/mgr/dashboard/tests/test_api_auditing.py
index 0416c03638..023ea7992a 100644
--- a/src/pybind/mgr/dashboard/tests/test_api_auditing.py
+++ b/src/pybind/mgr/dashboard/tests/test_api_auditing.py
@@ -9,7 +9,7 @@ try:
except ImportError:
import unittest.mock as mock
-from . import ControllerTestCase, KVStoreMockMixin
+from . import ControllerTestCase, KVStoreMockMixin # pylint: disable=no-name-in-module
from ..controllers import RESTController, Controller
from ..tools import RequestLoggingTool
from .. import mgr
diff --git a/src/pybind/mgr/dashboard/tests/test_cephfs.py b/src/pybind/mgr/dashboard/tests/test_cephfs.py
index e9abda5380..778b0aa275 100644
--- a/src/pybind/mgr/dashboard/tests/test_cephfs.py
+++ b/src/pybind/mgr/dashboard/tests/test_cephfs.py
@@ -6,7 +6,7 @@ except ImportError:
from unittest.mock import Mock
from .. import mgr
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..controllers.cephfs import CephFS
diff --git a/src/pybind/mgr/dashboard/tests/test_controllers.py b/src/pybind/mgr/dashboard/tests/test_controllers.py
index 0e88047061..b14878ff2e 100644
--- a/src/pybind/mgr/dashboard/tests/test_controllers.py
+++ b/src/pybind/mgr/dashboard/tests/test_controllers.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..controllers import BaseController, RESTController, Controller, \
ApiController, Endpoint
diff --git a/src/pybind/mgr/dashboard/tests/test_docs.py b/src/pybind/mgr/dashboard/tests/test_docs.py
index a6e03b5267..ccb777aca5 100644
--- a/src/pybind/mgr/dashboard/tests/test_docs.py
+++ b/src/pybind/mgr/dashboard/tests/test_docs.py
@@ -1,7 +1,7 @@
# # -*- coding: utf-8 -*-
from __future__ import absolute_import
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..controllers import RESTController, ApiController, Endpoint, EndpointDoc, ControllerDoc
from ..controllers.docs import Docs
diff --git a/src/pybind/mgr/dashboard/tests/test_erasure_code_profile.py b/src/pybind/mgr/dashboard/tests/test_erasure_code_profile.py
index 557b7c1061..d266735e8f 100644
--- a/src/pybind/mgr/dashboard/tests/test_erasure_code_profile.py
+++ b/src/pybind/mgr/dashboard/tests/test_erasure_code_profile.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from .. import mgr
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..controllers.erasure_code_profile import ErasureCodeProfile
diff --git a/src/pybind/mgr/dashboard/tests/test_exceptions.py b/src/pybind/mgr/dashboard/tests/test_exceptions.py
index 2bb25da1bf..b42c356479 100644
--- a/src/pybind/mgr/dashboard/tests/test_exceptions.py
+++ b/src/pybind/mgr/dashboard/tests/test_exceptions.py
@@ -5,7 +5,7 @@ import time
import rados
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..services.ceph_service import SendCommandError
from ..controllers import RESTController, Controller, Task, Endpoint
from ..services.exception import handle_rados_error, handle_send_command_error, \
diff --git a/src/pybind/mgr/dashboard/tests/test_feature_toggles.py b/src/pybind/mgr/dashboard/tests/test_feature_toggles.py
index 031d0ef839..23068c5eda 100644
--- a/src/pybind/mgr/dashboard/tests/test_feature_toggles.py
+++ b/src/pybind/mgr/dashboard/tests/test_feature_toggles.py
@@ -7,7 +7,7 @@ try:
except ImportError:
from unittest.mock import Mock, patch
-from . import KVStoreMockMixin
+from . import KVStoreMockMixin # pylint: disable=no-name-in-module
from ..plugins.feature_toggles import FeatureToggles, Features
diff --git a/src/pybind/mgr/dashboard/tests/test_ganesha.py b/src/pybind/mgr/dashboard/tests/test_ganesha.py
index 03f1f5b551..44498ac40c 100644
--- a/src/pybind/mgr/dashboard/tests/test_ganesha.py
+++ b/src/pybind/mgr/dashboard/tests/test_ganesha.py
@@ -9,7 +9,7 @@ except ImportError:
from unittest.mock import MagicMock, Mock
import orchestrator
-from . import KVStoreMockMixin
+from . import KVStoreMockMixin # pylint: disable=no-name-in-module
from .. import mgr
from ..settings import Settings
from ..services import ganesha
diff --git a/src/pybind/mgr/dashboard/tests/test_grafana.py b/src/pybind/mgr/dashboard/tests/test_grafana.py
index 0eb46bf0f0..a5456905f2 100644
--- a/src/pybind/mgr/dashboard/tests/test_grafana.py
+++ b/src/pybind/mgr/dashboard/tests/test_grafana.py
@@ -8,7 +8,7 @@ except ImportError:
from requests import RequestException
-from . import ControllerTestCase, KVStoreMockMixin
+from . import ControllerTestCase, KVStoreMockMixin # pylint: disable=no-name-in-module
from ..controllers.grafana import Grafana
from ..grafana import GrafanaRestClient
from ..settings import Settings
diff --git a/src/pybind/mgr/dashboard/tests/test_home.py b/src/pybind/mgr/dashboard/tests/test_home.py
index c3088b7a65..c942eed9be 100644
--- a/src/pybind/mgr/dashboard/tests/test_home.py
+++ b/src/pybind/mgr/dashboard/tests/test_home.py
@@ -8,7 +8,7 @@ try:
except ImportError:
import unittest.mock as mock
-from . import ControllerTestCase, FakeFsMixin
+from . import ControllerTestCase, FakeFsMixin # pylint: disable=no-name-in-module
from .. import mgr
from ..controllers.home import HomeController, LanguageMixin
diff --git a/src/pybind/mgr/dashboard/tests/test_host.py b/src/pybind/mgr/dashboard/tests/test_host.py
index ab7286074b..191c3f1245 100644
--- a/src/pybind/mgr/dashboard/tests/test_host.py
+++ b/src/pybind/mgr/dashboard/tests/test_host.py
@@ -7,7 +7,7 @@ except ImportError:
from orchestrator import HostSpec
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..controllers.host import get_hosts, Host, HostUi
from .. import mgr
diff --git a/src/pybind/mgr/dashboard/tests/test_iscsi.py b/src/pybind/mgr/dashboard/tests/test_iscsi.py
index 962ffeb684..72d64453ac 100644
--- a/src/pybind/mgr/dashboard/tests/test_iscsi.py
+++ b/src/pybind/mgr/dashboard/tests/test_iscsi.py
@@ -10,7 +10,8 @@ try:
except ImportError:
import unittest.mock as mock
-from . import CmdException, ControllerTestCase, CLICommandTestMixin, KVStoreMockMixin
+from . import CmdException, ControllerTestCase, CLICommandTestMixin, \
+ KVStoreMockMixin # pylint: disable=no-name-in-module
from .. import mgr
from ..controllers.iscsi import Iscsi, IscsiTarget
from ..services.iscsi_client import IscsiClient
diff --git a/src/pybind/mgr/dashboard/tests/test_orchestrator.py b/src/pybind/mgr/dashboard/tests/test_orchestrator.py
index 714d59c085..9a9d179bbc 100644
--- a/src/pybind/mgr/dashboard/tests/test_orchestrator.py
+++ b/src/pybind/mgr/dashboard/tests/test_orchestrator.py
@@ -6,7 +6,7 @@ except ImportError:
from orchestrator import InventoryHost
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from .. import mgr
from ..controllers.orchestrator import get_device_osd_map
from ..controllers.orchestrator import Orchestrator
diff --git a/src/pybind/mgr/dashboard/tests/test_osd.py b/src/pybind/mgr/dashboard/tests/test_osd.py
index aeb32ed576..063705ddbb 100644
--- a/src/pybind/mgr/dashboard/tests/test_osd.py
+++ b/src/pybind/mgr/dashboard/tests/test_osd.py
@@ -11,11 +11,11 @@ except ImportError:
from ceph.deployment.drive_group import DeviceSelection, DriveGroupSpec
from ceph.deployment.service_spec import PlacementSpec
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..controllers.osd import Osd
from ..tools import NotificationQueue, TaskManager
from .. import mgr
-from .helper import update_dict
+from .helper import update_dict # pylint: disable=import-error
try:
from typing import List, Dict, Any # pylint: disable=unused-import
diff --git a/src/pybind/mgr/dashboard/tests/test_plugin_debug.py b/src/pybind/mgr/dashboard/tests/test_plugin_debug.py
index 4985540046..cb4d1afc21 100644
--- a/src/pybind/mgr/dashboard/tests/test_plugin_debug.py
+++ b/src/pybind/mgr/dashboard/tests/test_plugin_debug.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
-from . import CLICommandTestMixin, ControllerTestCase
+from . import CLICommandTestMixin, ControllerTestCase # pylint: disable=no-name-in-module
class TestPluginDebug(ControllerTestCase, CLICommandTestMixin):
diff --git a/src/pybind/mgr/dashboard/tests/test_pool.py b/src/pybind/mgr/dashboard/tests/test_pool.py
index e33e436540..179a8feeed 100644
--- a/src/pybind/mgr/dashboard/tests/test_pool.py
+++ b/src/pybind/mgr/dashboard/tests/test_pool.py
@@ -6,7 +6,7 @@ try:
except ImportError:
import unittest.mock as mock
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..controllers.pool import Pool
from ..controllers.task import Task
from ..tools import NotificationQueue, TaskManager
diff --git a/src/pybind/mgr/dashboard/tests/test_prometheus.py b/src/pybind/mgr/dashboard/tests/test_prometheus.py
index 3385d66a97..ef669a6203 100644
--- a/src/pybind/mgr/dashboard/tests/test_prometheus.py
+++ b/src/pybind/mgr/dashboard/tests/test_prometheus.py
@@ -5,7 +5,7 @@ try:
except ImportError:
from unittest.mock import patch
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from .. import mgr
from ..controllers.prometheus import Prometheus, PrometheusReceiver, PrometheusNotifications
diff --git a/src/pybind/mgr/dashboard/tests/test_rbd_mirroring.py b/src/pybind/mgr/dashboard/tests/test_rbd_mirroring.py
index ecb4856dc1..d7e0c7dd1e 100644
--- a/src/pybind/mgr/dashboard/tests/test_rbd_mirroring.py
+++ b/src/pybind/mgr/dashboard/tests/test_rbd_mirroring.py
@@ -6,7 +6,7 @@ try:
except ImportError:
import unittest.mock as mock
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from .. import mgr
from ..controllers.summary import Summary
from ..controllers.rbd_mirroring import RbdMirroring, RbdMirroringSummary, \
diff --git a/src/pybind/mgr/dashboard/tests/test_rest_tasks.py b/src/pybind/mgr/dashboard/tests/test_rest_tasks.py
index e9d7907f05..aa158cd288 100644
--- a/src/pybind/mgr/dashboard/tests/test_rest_tasks.py
+++ b/src/pybind/mgr/dashboard/tests/test_rest_tasks.py
@@ -8,7 +8,7 @@ try:
except ImportError:
import unittest.mock as mock
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..controllers import Controller, RESTController, Task
from ..controllers.task import Task as TaskController
from ..services import progress
diff --git a/src/pybind/mgr/dashboard/tests/test_rgw.py b/src/pybind/mgr/dashboard/tests/test_rgw.py
index 2c90e7d11b..11818ca2b7 100644
--- a/src/pybind/mgr/dashboard/tests/test_rgw.py
+++ b/src/pybind/mgr/dashboard/tests/test_rgw.py
@@ -3,7 +3,7 @@ try:
except ImportError:
import unittest.mock as mock
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..controllers.rgw import RgwUser
diff --git a/src/pybind/mgr/dashboard/tests/test_rgw_client.py b/src/pybind/mgr/dashboard/tests/test_rgw_client.py
index d69ab2f48d..fa711b45ca 100644
--- a/src/pybind/mgr/dashboard/tests/test_rgw_client.py
+++ b/src/pybind/mgr/dashboard/tests/test_rgw_client.py
@@ -9,7 +9,7 @@ except ImportError:
from ..services.rgw_client import RgwClient, _parse_frontend_config
from ..settings import Settings
-from . import KVStoreMockMixin
+from . import KVStoreMockMixin # pylint: disable=no-name-in-module
class RgwClientTest(unittest.TestCase, KVStoreMockMixin):
diff --git a/src/pybind/mgr/dashboard/tests/test_settings.py b/src/pybind/mgr/dashboard/tests/test_settings.py
index da54a20655..abdb059c1d 100644
--- a/src/pybind/mgr/dashboard/tests/test_settings.py
+++ b/src/pybind/mgr/dashboard/tests/test_settings.py
@@ -3,7 +3,7 @@ from __future__ import absolute_import
import errno
import unittest
-from . import KVStoreMockMixin, ControllerTestCase
+from . import KVStoreMockMixin, ControllerTestCase # pylint: disable=no-name-in-module
from .. import settings
from ..controllers.settings import Settings as SettingsController
from ..settings import Settings, handle_option_command
diff --git a/src/pybind/mgr/dashboard/tests/test_sso.py b/src/pybind/mgr/dashboard/tests/test_sso.py
index f8681b89ed..e8141a09cc 100644
--- a/src/pybind/mgr/dashboard/tests/test_sso.py
+++ b/src/pybind/mgr/dashboard/tests/test_sso.py
@@ -5,7 +5,8 @@ from __future__ import absolute_import
import errno
import unittest
-from . import CmdException, exec_dashboard_cmd, KVStoreMockMixin
+from . import CmdException, exec_dashboard_cmd, \
+ KVStoreMockMixin # pylint: disable=no-name-in-module
from ..services.sso import handle_sso_command, load_sso_db
diff --git a/src/pybind/mgr/dashboard/tests/test_tools.py b/src/pybind/mgr/dashboard/tests/test_tools.py
index 0f27ec8e63..340ff8c41d 100644
--- a/src/pybind/mgr/dashboard/tests/test_tools.py
+++ b/src/pybind/mgr/dashboard/tests/test_tools.py
@@ -10,7 +10,7 @@ try:
except ImportError:
from unittest.mock import patch
-from . import ControllerTestCase
+from . import ControllerTestCase # pylint: disable=no-name-in-module
from ..services.exception import handle_rados_error
from ..controllers import RESTController, ApiController, Controller, \
BaseController, Proxy
diff --git a/src/pybind/mgr/dashboard/tools.py b/src/pybind/mgr/dashboard/tools.py
index 2b6d92ca55..d9a2d813c0 100644
--- a/src/pybind/mgr/dashboard/tools.py
+++ b/src/pybind/mgr/dashboard/tools.py
@@ -30,7 +30,7 @@ from .services.auth import JwtManager
try:
from typing import Any, AnyStr, Callable, DefaultDict, Deque,\
- Dict, List, Set, Tuple, Union # noqa pylint: disable=unused-import
+ Dict, List, Set, Tuple, Union # noqa
except ImportError:
pass # For typing only

View File

@@ -0,0 +1,65 @@
From a61e8e3b6052bf158fe63ab1cd66197f4ffc3900 Mon Sep 17 00:00:00 2001
From: Sebastian Wagner <sebastian.wagner@suse.com>
Date: Thu, 25 Jun 2020 14:11:54 +0200
Subject: [PATCH] qa,src: update mypy to 0.782
(cherry picked from commit 78f3473f55afe14698dc702e24cf34030223a373)
---
qa/tox.ini | 2 +-
src/pybind/mgr/dashboard/rest_client.py | 2 +-
src/pybind/mgr/tox.ini | 2 +-
src/python-common/requirements.txt | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/qa/tox.ini b/qa/tox.ini
index 31a1ef4fd4..33ad2db968 100644
--- a/qa/tox.ini
+++ b/qa/tox.ini
@@ -16,7 +16,7 @@ commands=flake8 --select=F,E9 --exclude=venv,.tox
[testenv:mypy]
basepython = python3
-deps = mypy==0.770
+deps = mypy==0.782
commands = mypy {posargs:.}
[testenv:pytest]
diff --git a/src/pybind/mgr/dashboard/rest_client.py b/src/pybind/mgr/dashboard/rest_client.py
index 4d58d0dfde..7c04f36a0d 100644
--- a/src/pybind/mgr/dashboard/rest_client.py
+++ b/src/pybind/mgr/dashboard/rest_client.py
@@ -511,7 +511,7 @@ class RestClient(object):
resp_structure = api_kwargs.get('resp_structure', None)
args_name = inspect.getargspec(func).args
args_dict = dict(zip(args_name[1:], args))
- for key, val in kwargs:
+ for key, val in kwargs.items():
args_dict[key] = val
return func(
self,
diff --git a/src/pybind/mgr/tox.ini b/src/pybind/mgr/tox.ini
index 3e129ba64e..4c65be7f16 100644
--- a/src/pybind/mgr/tox.ini
+++ b/src/pybind/mgr/tox.ini
@@ -47,7 +47,7 @@ basepython = python3
deps =
cython
-rrequirements.txt
- mypy==0.770
+ mypy==0.782
commands =
mypy --config-file=../../mypy.ini \
cephadm/module.py \
diff --git a/src/python-common/requirements.txt b/src/python-common/requirements.txt
index a269fada78..7df43fb736 100644
--- a/src/python-common/requirements.txt
+++ b/src/python-common/requirements.txt
@@ -1,7 +1,7 @@
six
pytest >=2.1.3,<5; python_version < '3.5'
mock; python_version < '3.3'
-mypy==0.770; python_version >= '3'
+mypy==0.782; python_version >= '3'
pytest-mypy; python_version >= '3'
pytest >= 2.1.3; python_version >= '3'
pyyaml

View File

@@ -0,0 +1,10 @@
--- a/src/common/util.cc 2018-05-29 14:04:02.000000000 +0200
+++ b/src/common/util.cc 2018-06-04 13:45:52.279495745 +0200
@@ -96,7 +96,6 @@ static bool os_release_parse(map<string,
static const map<string, string> kvm = {
{ "distro", "ID=" },
{ "distro_description", "PRETTY_NAME=" },
- { "distro_version", "VERSION_ID=" }
};
FILE *fp = fopen("/etc/os-release", "r");

View File

@@ -0,0 +1,23 @@
--- a/src/pybind/mgr/dashboard/.pylintrc 2019-12-06 17:42:34.000000000 +0100
+++ b/src/pybind/mgr/dashboard/.pylintrc 2020-01-03 13:55:54.511393504 +0100
@@ -119,7 +119,11 @@ disable=import-star-module-level,
too-many-arguments,
too-many-locals,
too-many-statements,
- useless-object-inheritance
+ useless-object-inheritance,
+ no-else-raise,
+ multiple-statements,
+ unused-argument,
+ protected-access
# Enable the message, report, category or checker with the given id(s). You can
--- a/src/pybind/mgr/dashboard/services/rgw_client.py 2019-12-06 17:42:34.000000000 +0100
+++ b/src/pybind/mgr/dashboard/services/rgw_client.py 2020-01-03 15:13:15.266131061 +0100
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+# pylint: disable=unused-argument
from __future__ import absolute_import
import re

View File

@@ -0,0 +1,35 @@
--- a/src/compressor/zstd/ZstdCompressor.h 2019-04-25 20:15:48.000000000 +0200
+++ b/src/compressor/zstd/ZstdCompressor.h 2019-07-17 19:11:33.177014923 +0200
@@ -16,7 +16,7 @@
#define CEPH_ZSTDCOMPRESSOR_H
#define ZSTD_STATIC_LINKING_ONLY
-#include "zstd/lib/zstd.h"
+#include <zstd.h>
#include "include/buffer.h"
#include "include/encoding.h"
@@ -30,7 +30,13 @@ class ZstdCompressor : public Compressor
int compress(const bufferlist &src, bufferlist &dst) override {
ZSTD_CStream *s = ZSTD_createCStream();
- ZSTD_initCStream_srcSize(s, COMPRESSION_LEVEL, src.length());
+
+ // ZSTD_initCStream_srcSize(s, COMPRESSION_LEVEL, src.length());
+ ZSTD_CCtx_reset(s, ZSTD_reset_session_only);
+ ZSTD_CCtx_refCDict(s, NULL); // clear the dictionary (if any)
+ ZSTD_CCtx_setParameter(s, ZSTD_c_compressionLevel, COMPRESSION_LEVEL);
+ ZSTD_CCtx_setPledgedSrcSize(s, src.length());
+
auto p = src.begin();
size_t left = src.length();
@@ -48,7 +54,7 @@ class ZstdCompressor : public Compressor
inbuf.size = p.get_ptr_and_advance(left, (const char**)&inbuf.src);
left -= inbuf.size;
ZSTD_EndDirective const zed = (left==0) ? ZSTD_e_end : ZSTD_e_continue;
- size_t r = ZSTD_compress_generic(s, &outbuf, &inbuf, zed);
+ size_t r = ZSTD_compressStream2(s, &outbuf, &inbuf, zed);
if (ZSTD_isError(r)) {
return -EINVAL;
}

View File

@@ -0,0 +1,10 @@
--- a/src/test/test_objectstore_memstore.sh 2019-04-25 20:15:48.000000000 +0200
+++ b/src/test/test_objectstore_memstore.sh 2019-07-14 21:18:32.845040824 +0200
@@ -1,6 +1,6 @@
#!/bin/sh -ex
rm -rf memstore.test_temp_dir
-ceph_test_objectstore --gtest_filter=\*/0
+ceph_test_objectstore --gtest_filter=\*/0 --gtest_death_test_style=threadsafe
echo OK