From 794cffc86808db86cf059214b9edb8c03e1e93d0 Mon Sep 17 00:00:00 2001 From: Adam Malinowski Date: Mon, 3 Nov 2014 14:53:33 +0100 Subject: [PATCH 01/16] Handle agent response This patch handles response from agent of both types: action and cancel. Change-Id: I3168f4f7466c79bdcb9a3f6b1c3d6863ddcf952c --- src/service/logic/Logic.cpp | 67 +++++++++++++++++++++++++++++++++++++++++++++ src/service/logic/Logic.h | 6 ++++ 2 files changed, 73 insertions(+) diff --git a/src/service/logic/Logic.cpp b/src/service/logic/Logic.cpp index 037deb8..4cf78eb 100644 --- a/src/service/logic/Logic.cpp +++ b/src/service/logic/Logic.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -57,6 +58,8 @@ #include +#include + #include "Logic.h" namespace Cynara { @@ -85,6 +88,40 @@ void Logic::execute(RequestContextPtr context, AdminCheckRequestPtr request) { request->sequenceNumber())); } +void Logic::execute(RequestContextPtr context, AgentActionRequestPtr request) { + AgentTalkerPtr talkerPtr = m_agentManager->getTalker(context->responseQueue(), + request->sequenceNumber()); + if (!talkerPtr) { + LOGD("Received response from agent with invalid request id: [%" PRIu16 "]", + request->sequenceNumber()); + return; + } + + CheckContextPtr checkContextPtr = m_checkRequestManager.getContext(talkerPtr); + if (!checkContextPtr) { + LOGE("No matching check context for agent talker."); + m_agentManager->removeTalker(talkerPtr); + return; + } + + if (!checkContextPtr->cancelled()) { + PluginData data(request->data().begin(), request->data().end()); + if (request->type() == CYNARA_MSG_TYPE_CANCEL) { + // Nothing to do for now + } else if (request->type() == CYNARA_MSG_TYPE_ACTION) { + update(checkContextPtr->m_key, checkContextPtr->m_checkId, data, + checkContextPtr->m_requestContext, checkContextPtr->m_plugin); + } else { + LOGE("Invalid response type [%d] in response from agent <%s>", + static_cast(request->type()), talkerPtr->agentType().c_str()); + // TODO: disconnect agent + } + } + + m_agentManager->removeTalker(talkerPtr); + m_checkRequestManager.removeRequest(checkContextPtr); +} + void Logic::execute(RequestContextPtr context, AgentRegisterRequestPtr request) { auto result = m_agentManager->registerAgent(request->agentType(), context->responseQueue()); context->returnResponse(context, std::make_shared( @@ -191,6 +228,36 @@ bool Logic::pluginCheck(const RequestContextPtr &context, const PolicyKey &key, } } +bool Logic::update(const PolicyKey &key, ProtocolFrameSequenceNumber checkId, + const PluginData &agentData, const RequestContextPtr &context, + const ServicePluginInterfacePtr &plugin) { + + LOGD("Check update: <%s>:[%" PRIu16 "]", key.toString().c_str(), checkId); + + PolicyResult result; + bool answerReady = false; + auto ret = plugin->update(key.client().toString(), key.user().toString(), + key.privilege().toString(), agentData, result); + switch (ret) { + case ServicePluginInterface::PluginStatus::SUCCESS: + answerReady = true; + break; + case ServicePluginInterface::PluginStatus::ERROR: + result = PolicyResult(PredefinedPolicyType::DENY); + answerReady = true; + break; + default: + throw PluginErrorException(key); + } + + if (answerReady && context->responseQueue()) { + context->returnResponse(context, std::make_shared(result, checkId)); + return true; + } + + return false; +} + void Logic::execute(RequestContextPtr context, InsertOrUpdateBucketRequestPtr request) { auto code = CodeResponse::Code::OK; diff --git a/src/service/logic/Logic.h b/src/service/logic/Logic.h index dbbc7d6..57a862c 100644 --- a/src/service/logic/Logic.h +++ b/src/service/logic/Logic.h @@ -32,6 +32,8 @@ #include #include +#include + namespace Cynara { class Logic : public RequestTaker { @@ -63,6 +65,7 @@ public: } virtual void execute(RequestContextPtr context, AdminCheckRequestPtr request); + virtual void execute(RequestContextPtr context, AgentActionRequestPtr request); virtual void execute(RequestContextPtr context, AgentRegisterRequestPtr request); virtual void execute(RequestContextPtr context, CancelRequestPtr request); virtual void execute(RequestContextPtr context, CheckRequestPtr request); @@ -84,6 +87,9 @@ private: ProtocolFrameSequenceNumber checkId, PolicyResult &result); bool pluginCheck(const RequestContextPtr &context, const PolicyKey &key, ProtocolFrameSequenceNumber checkId, PolicyResult &result); + bool update(const PolicyKey &key, ProtocolFrameSequenceNumber checkId, + const PluginData &agentData, const RequestContextPtr &request, + const ServicePluginInterfacePtr &plugin); void onPoliciesChanged(void); }; -- 2.7.4 From ced9c53a12b1f47eb2087b97650c0085fdb65c9e Mon Sep 17 00:00:00 2001 From: Adam Malinowski Date: Mon, 3 Nov 2014 14:57:13 +0100 Subject: [PATCH 02/16] Handle client and agent disconnection This patch handles situations where client and/or agent connection to cynara service is closed. Change-Id: I410b6da96102b6ae16442e90dbbb1e867490287a --- src/service/logic/Logic.cpp | 39 +++++++++++++++++++++++++++++++++++++-- src/service/logic/Logic.h | 3 +++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/service/logic/Logic.cpp b/src/service/logic/Logic.cpp index 4cf78eb..8f51af5 100644 --- a/src/service/logic/Logic.cpp +++ b/src/service/logic/Logic.cpp @@ -63,6 +63,7 @@ #include "Logic.h" namespace Cynara { + Logic::Logic() { } @@ -307,8 +308,17 @@ void Logic::execute(RequestContextPtr context, SetPoliciesRequestPtr request) { request->sequenceNumber())); } -void Logic::contextClosed(RequestContextPtr context UNUSED) { - //We don't care now, but we will +void Logic::contextClosed(RequestContextPtr context) { + LOGD("context closed"); + + LinkId linkId = context->responseQueue(); + + m_agentManager->cleanupAgent(linkId, [&](const AgentTalkerPtr &talker) -> void { + handleAgentTalkerDisconnection(talker); }); + + m_checkRequestManager.cancelRequests(linkId, + [&](const CheckContextPtr &checkContextPtr) -> void { + handleClientDisconnection(checkContextPtr); }); } void Logic::onPoliciesChanged(void) { @@ -317,4 +327,29 @@ void Logic::onPoliciesChanged(void) { //todo remove all saved contexts (if there will be any saved contexts) } +void Logic::handleAgentTalkerDisconnection(const AgentTalkerPtr &agentTalkerPtr) { + CheckContextPtr checkContextPtr = m_checkRequestManager.getContext(agentTalkerPtr); + if (checkContextPtr == nullptr) { + LOGE("No matching check context for agent talker."); + return; + } + + if (!checkContextPtr->cancelled() && checkContextPtr->m_requestContext->responseQueue()) { + PolicyResult result(PredefinedPolicyType::DENY); + checkContextPtr->m_requestContext->returnResponse(checkContextPtr->m_requestContext, + std::make_shared(result, checkContextPtr->m_checkId)); + } + + m_checkRequestManager.removeRequest(checkContextPtr); +} + +void Logic::handleClientDisconnection(const CheckContextPtr &checkContextPtr) { + LOGD("Handle client disconnection"); + + if (!checkContextPtr->cancelled()) { + checkContextPtr->cancel(); + checkContextPtr->m_agentTalker->cancel(); + } +} + } // namespace Cynara diff --git a/src/service/logic/Logic.h b/src/service/logic/Logic.h index 57a862c..33c5701 100644 --- a/src/service/logic/Logic.h +++ b/src/service/logic/Logic.h @@ -91,6 +91,9 @@ private: const PluginData &agentData, const RequestContextPtr &request, const ServicePluginInterfacePtr &plugin); + void handleAgentTalkerDisconnection(const AgentTalkerPtr &agentTalkerPtr); + void handleClientDisconnection(const CheckContextPtr &checkContextPtr); + void onPoliciesChanged(void); }; -- 2.7.4 From f4e6749ef8d1fdd86946c848bb2d90431ca7e6ad Mon Sep 17 00:00:00 2001 From: Lukasz Wojciechowski Date: Sat, 15 Nov 2014 05:39:18 +0100 Subject: [PATCH 03/16] Release 0.4.0 Change-Id: Ia8f5a7e623bcbce58f9574c084a6472ea59e271a --- CMakeLists.txt | 2 +- changelog | 28 ++++++++++++++++++++++++++++ packaging/cynara.spec | 2 +- src/admin/CMakeLists.txt | 2 +- src/client-common/CMakeLists.txt | 2 +- src/client/CMakeLists.txt | 2 +- src/common/CMakeLists.txt | 2 +- src/helpers/creds-commons/CMakeLists.txt | 2 +- src/helpers/creds-dbus/CMakeLists.txt | 2 +- src/helpers/creds-socket/CMakeLists.txt | 2 +- src/helpers/session/CMakeLists.txt | 2 +- 11 files changed, 38 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dc951bb..5271bb2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3) PROJECT("cynara") -set(CYNARA_VERSION 0.2.2) +set(CYNARA_VERSION 0.4.0) ############################# cmake packages ################################## diff --git a/changelog b/changelog index a2d08e3..e841be7 100644 --- a/changelog +++ b/changelog @@ -1,5 +1,33 @@ ############################## +Release: 0.4.0 +Date: 2014.11.15 +Name: Asynchronous client and extensions API + +Libraries: +libcynara-admin.0.4.0 +libcynara-agent.0.4.0 +libcynara-client-async.0.4.0 +libcynara-client-commmons.0.4.0 +libcynara-client.0.4.0 +libcynara-commons.0.4.0 +libcynara-creds-commons.0.4.0 +libcynara-creds-dbus.0.4.0 +libcynara-creds-socket.0.4.0 +libcynara-session.0.4.0 +libcynara-storage.0.4.0 + +Description: +Asynchronous client library. +Admin API: admin_check, NONE policies +Common error codes +Extensions: plugins and agents API +Database integrity +Migration package +Common client exceptions handling + +############################## + Release: 0.3.0 Date: 2014.09.05 Name: Helper libraries diff --git a/packaging/cynara.spec b/packaging/cynara.spec index 88e9209..ae98c80 100644 --- a/packaging/cynara.spec +++ b/packaging/cynara.spec @@ -1,6 +1,6 @@ Name: cynara Summary: Cynara service with client libraries -Version: 0.3.0 +Version: 0.4.0 Release: 1 Group: Security/Application Privilege License: Apache-2.0 diff --git a/src/admin/CMakeLists.txt b/src/admin/CMakeLists.txt index 4918571..7cab9f6 100644 --- a/src/admin/CMakeLists.txt +++ b/src/admin/CMakeLists.txt @@ -17,7 +17,7 @@ # SET(LIB_CYNARA_ADMIN_VERSION_MAJOR 0) -SET(LIB_CYNARA_ADMIN_VERSION ${LIB_CYNARA_ADMIN_VERSION_MAJOR}.3.0) +SET(LIB_CYNARA_ADMIN_VERSION ${LIB_CYNARA_ADMIN_VERSION_MAJOR}.4.0) SET(CYNARA_LIB_CYNARA_ADMIN_PATH ${CYNARA_PATH}/admin) diff --git a/src/client-common/CMakeLists.txt b/src/client-common/CMakeLists.txt index 5436884..36c6806 100644 --- a/src/client-common/CMakeLists.txt +++ b/src/client-common/CMakeLists.txt @@ -17,7 +17,7 @@ # SET(LIB_CYNARA_CLIENT_COMMON_VERSION_MAJOR 0) -SET(LIB_CYNARA_CLIENT_COMMON_VERSION ${LIB_CYNARA_CLIENT_COMMON_VERSION_MAJOR}.3.0) +SET(LIB_CYNARA_CLIENT_COMMON_VERSION ${LIB_CYNARA_CLIENT_COMMON_VERSION_MAJOR}.4.0) SET(LIB_CYNARA_COMMON_PATH ${CYNARA_PATH}/client-common) diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index db0622c..79d85a2 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -18,7 +18,7 @@ # SET(LIB_CYNARA_VERSION_MAJOR 0) -SET(LIB_CYNARA_VERSION ${LIB_CYNARA_VERSION_MAJOR}.3.0) +SET(LIB_CYNARA_VERSION ${LIB_CYNARA_VERSION_MAJOR}.4.0) SET(LIB_CYNARA_PATH ${CYNARA_PATH}/client) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 7f3da76..8cf615c 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -17,7 +17,7 @@ # SET(CYNARA_COMMON_VERSION_MAJOR 0) -SET(CYNARA_COMMON_VERSION ${CYNARA_COMMON_VERSION_MAJOR}.3.0) +SET(CYNARA_COMMON_VERSION ${CYNARA_COMMON_VERSION_MAJOR}.4.0) SET(COMMON_PATH ${CYNARA_PATH}/common) diff --git a/src/helpers/creds-commons/CMakeLists.txt b/src/helpers/creds-commons/CMakeLists.txt index 5dd5007..bafa025 100644 --- a/src/helpers/creds-commons/CMakeLists.txt +++ b/src/helpers/creds-commons/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_CREDS_COMMONS_VERSION_MAJOR 0) -SET(LIB_CREDS_COMMONS_VERSION ${LIB_CREDS_COMMONS_VERSION_MAJOR}.3.0) +SET(LIB_CREDS_COMMONS_VERSION ${LIB_CREDS_COMMONS_VERSION_MAJOR}.4.0) SET(LIB_CREDS_COMMONS_PATH ${CYNARA_PATH}/helpers/creds-commons) diff --git a/src/helpers/creds-dbus/CMakeLists.txt b/src/helpers/creds-dbus/CMakeLists.txt index bc1d95c..69b94e2 100644 --- a/src/helpers/creds-dbus/CMakeLists.txt +++ b/src/helpers/creds-dbus/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_CREDS_DBUS_VERSION_MAJOR 0) -SET(LIB_CREDS_DBUS_VERSION ${LIB_CREDS_DBUS_VERSION_MAJOR}.3.0) +SET(LIB_CREDS_DBUS_VERSION ${LIB_CREDS_DBUS_VERSION_MAJOR}.4.0) SET(LIB_CREDS_DBUS_PATH ${CYNARA_PATH}/helpers/creds-dbus) diff --git a/src/helpers/creds-socket/CMakeLists.txt b/src/helpers/creds-socket/CMakeLists.txt index 1c8d301..1d40f3b 100644 --- a/src/helpers/creds-socket/CMakeLists.txt +++ b/src/helpers/creds-socket/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_CREDS_SOCKET_VERSION_MAJOR 0) -SET(LIB_CREDS_SOCKET_VERSION ${LIB_CREDS_SOCKET_VERSION_MAJOR}.3.0) +SET(LIB_CREDS_SOCKET_VERSION ${LIB_CREDS_SOCKET_VERSION_MAJOR}.4.0) SET(LIB_CREDS_SOCKET_PATH ${CYNARA_PATH}/helpers/creds-socket) diff --git a/src/helpers/session/CMakeLists.txt b/src/helpers/session/CMakeLists.txt index 00c5d3d..6ad7234 100644 --- a/src/helpers/session/CMakeLists.txt +++ b/src/helpers/session/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_SESSION_VERSION_MAJOR 0) -SET(LIB_SESSION_VERSION ${LIB_SESSION_VERSION_MAJOR}.3.0) +SET(LIB_SESSION_VERSION ${LIB_SESSION_VERSION_MAJOR}.4.0) SET(LIB_SESSION_PATH ${CYNARA_PATH}/helpers/session) -- 2.7.4 From 88b6ae7330c1f3d015b1d2584cd7fe678a0e5c72 Mon Sep 17 00:00:00 2001 From: Adam Malinowski Date: Mon, 17 Nov 2014 08:50:27 +0100 Subject: [PATCH 04/16] Fix linking dependencies PluginManager was moved from service to common but linking with 'dl' library stayed in service. This patch moves linking with dl to common. Change-Id: If1be63e86dfe4c8651b48bbe9facc80160fd9f32 --- src/common/CMakeLists.txt | 1 + src/service/CMakeLists.txt | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 8cf615c..bd3911f 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -89,6 +89,7 @@ ENDIF (CMAKE_BUILD_TYPE MATCHES "DEBUG") TARGET_LINK_LIBRARIES(${TARGET_CYNARA_COMMON} ${CYNARA_DEP_LIBRARIES} ${CYNARA_DBG_LIBRARIES} + dl ) INSTALL(TARGETS ${TARGET_CYNARA_COMMON} DESTINATION ${LIB_INSTALL_DIR}) diff --git a/src/service/CMakeLists.txt b/src/service/CMakeLists.txt index d4dd32e..b28058b 100644 --- a/src/service/CMakeLists.txt +++ b/src/service/CMakeLists.txt @@ -41,7 +41,6 @@ TARGET_LINK_LIBRARIES(${TARGET_CYNARA} ${CYNARA_DEP_LIBRARIES} ${TARGET_CYNARA_COMMON} ${TARGET_LIB_CYNARA_STORAGE} - dl ) INSTALL(TARGETS ${TARGET_CYNARA} DESTINATION ${BIN_INSTALL_DIR}) -- 2.7.4 From ae42834191f7652728b1570ad9a9959a3dad1692 Mon Sep 17 00:00:00 2001 From: Lukasz Wojciechowski Date: Mon, 17 Nov 2014 09:34:17 +0100 Subject: [PATCH 05/16] Add missing devel package dependency libcynara-admin-devel package requires cynara-error.h that is provided by libcynara-client-commons-devel. Change-Id: Ic6b9203e2dcf80fd0057fa64d906819be69b929d Signed-off-by: Lukasz Wojciechowski --- packaging/cynara.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/packaging/cynara.spec b/packaging/cynara.spec index ae98c80..fa7fa23 100644 --- a/packaging/cynara.spec +++ b/packaging/cynara.spec @@ -112,6 +112,7 @@ admin client library for setting, listing and removing policies %package -n libcynara-admin-devel Summary: Cynara - admin client library (devel) Requires: libcynara-admin = %{version}-%{release} +Requires: libcynara-client-commons-devel = %{version}-%{release} Requires: libcynara-commons-devel = %{version}-%{release} %description -n libcynara-admin-devel -- 2.7.4 From 84252f505c6dac16aa0e73d4cf35313d5ba90a90 Mon Sep 17 00:00:00 2001 From: Lukasz Wojciechowski Date: Mon, 17 Nov 2014 09:38:42 +0100 Subject: [PATCH 06/16] Expose ClientSession type ClientSession is required by client-plugin mechanism. Files section for libcynara-commons-devel was enhanced, so it provides ClientSession.h Change-Id: Ia0d935bf297bdf1743fd37e5df3a0826ebf446cd Signed-off-by: Lukasz Wojciechowski --- packaging/cynara.spec | 1 + src/common/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/packaging/cynara.spec b/packaging/cynara.spec index fa7fa23..9869482 100644 --- a/packaging/cynara.spec +++ b/packaging/cynara.spec @@ -522,6 +522,7 @@ fi %files -n libcynara-commons-devel %{_includedir}/cynara/cynara-policy-types.h %{_includedir}/cynara/plugin/ExternalPluginInterface.h +%{_includedir}/cynara/types/ClientSession.h %{_includedir}/cynara/types/PolicyResult.h %{_includedir}/cynara/types/PolicyType.h %{_libdir}/libcynara-commons.so diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index bd3911f..68bda47 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -94,6 +94,7 @@ TARGET_LINK_LIBRARIES(${TARGET_CYNARA_COMMON} INSTALL(TARGETS ${TARGET_CYNARA_COMMON} DESTINATION ${LIB_INSTALL_DIR}) INSTALL(FILES + ${COMMON_PATH}/types/ClientSession.h ${COMMON_PATH}/types/PolicyResult.h ${COMMON_PATH}/types/PolicyType.h DESTINATION ${INCLUDE_INSTALL_DIR}/cynara/types -- 2.7.4 From 5220e36e2fb4be2577472b95a19e9f85c6361b2e Mon Sep 17 00:00:00 2001 From: Lukasz Wojciechowski Date: Mon, 17 Nov 2014 09:41:30 +0100 Subject: [PATCH 07/16] Change include brackets Include brackets style of 2 files in credential libraries was changed from "" to <> , as it is used in other headers. Change-Id: I1dba20862a53acdccf65d671b15b254310121961 Signed-off-by: Lukasz Wojciechowski --- src/include/cynara-creds-dbus.h | 2 +- src/include/cynara-creds-socket.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/include/cynara-creds-dbus.h b/src/include/cynara-creds-dbus.h index 6f24f74..7f151f1 100644 --- a/src/include/cynara-creds-dbus.h +++ b/src/include/cynara-creds-dbus.h @@ -28,7 +28,7 @@ #include #include -#include "cynara-creds-commons.h" +#include #ifdef __cplusplus extern "C" { diff --git a/src/include/cynara-creds-socket.h b/src/include/cynara-creds-socket.h index e9dc2af..252af26 100644 --- a/src/include/cynara-creds-socket.h +++ b/src/include/cynara-creds-socket.h @@ -28,7 +28,7 @@ #include -#include "cynara-creds-commons.h" +#include #ifdef __cplusplus extern "C" { -- 2.7.4 From b08fb0f0948019275266e0dd680ef4459f843f7c Mon Sep 17 00:00:00 2001 From: Zofia Abramowska Date: Mon, 17 Nov 2014 10:29:07 +0100 Subject: [PATCH 08/16] Fix missing directories Creation of cynara plugins directories was missing during installation. Change-Id: I774b831765f71cc034f8d5800dea0032bf2ae2c9 --- packaging/cynara.spec | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packaging/cynara.spec b/packaging/cynara.spec index 9869482..62cfce1 100644 --- a/packaging/cynara.spec +++ b/packaging/cynara.spec @@ -36,6 +36,7 @@ BuildRequires: pkgconfig(libsystemd-journal) %global group_name %{name} %global state_path %{_localstatedir}/%{name}/ +%global lib_path %{_libdir}/%{name}/ %global tests_dir %{_datarootdir}/%{name}/tests/ %global conf_path %{_sysconfdir}/%{name}/ @@ -282,6 +283,7 @@ export CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE" %endif export CXXFLAGS="$CXXFLAGS -DCYNARA_STATE_PATH=\\\"%{state_path}\\\" \ + -DCYNARA_LIB_PATH=\\\"%{lib_path}\\\" \ -DCYNARA_TESTS_DIR=\\\"%{tests_dir}\\\" \ -DCYNARA_CONFIGURATION_DIR=\\\"%{conf_path}\\\"" export LDFLAGS+="-Wl,--rpath=%{_libdir}" @@ -302,6 +304,9 @@ cp ./conf/creds.conf %{buildroot}/%{conf_path}/creds.conf mkdir -p %{buildroot}/usr/lib/systemd/system/sockets.target.wants mkdir -p %{buildroot}/%{state_path} mkdir -p %{buildroot}/%{tests_dir}/empty_db +mkdir -p %{buildroot}/%{lib_path}/plugin/client +mkdir -p %{buildroot}/%{lib_path}/plugin/service + cp -a db* %{buildroot}/%{tests_dir} ln -s ../cynara.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara.socket ln -s ../cynara-admin.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket @@ -455,6 +460,7 @@ fi %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara-agent.socket %attr(-,root,root) /usr/lib/systemd/system/cynara-agent.socket %dir %attr(700,cynara,cynara) %{state_path} +%dir %attr(755,cynara,cynara) %{lib_path}/plugin/service %files -n libcynara-client %manifest libcynara-client.manifest @@ -480,6 +486,7 @@ fi %manifest libcynara-client-commons.manifest %license LICENSE %{_libdir}/libcynara-client-commons.so.* +%dir %attr(755,cynara,cynara) %{lib_path}/plugin/client %files -n libcynara-client-commons-devel %{_includedir}/cynara/cynara-error.h -- 2.7.4 From d8d0683a5716c7038c7806a3b534b9d631256ed7 Mon Sep 17 00:00:00 2001 From: Rafal Krypa Date: Tue, 11 Nov 2014 12:18:42 +0100 Subject: [PATCH 09/16] packaging: tame the packaging madness Cynara seems to adapt the model of multiple small libraries put in separate package each. This leads into plethora of small packages. This commit tries to rationalize this decomposition, merging some of the packages: - all development packages are now merged into one cynara-devel - client, client-async and client-common are merged into one - storage is merged into libcynara-common The overall result is decrease in total number of packages from 24 to 12, not counting auto generated debuginfo and debugsource. Change-Id: I947e733872a4d5c96c722b207243e3c1cdfe1ba6 --- packaging/cynara.spec | 342 ++++------------------------ packaging/libcynara-client-async.manifest | 5 - packaging/libcynara-client-commons.manifest | 5 - packaging/libcynara-storage.manifest | 5 - 4 files changed, 49 insertions(+), 308 deletions(-) delete mode 100644 packaging/libcynara-client-async.manifest delete mode 100644 packaging/libcynara-client-commons.manifest delete mode 100644 packaging/libcynara-storage.manifest diff --git a/packaging/cynara.spec b/packaging/cynara.spec index 62cfce1..bf5c00a 100644 --- a/packaging/cynara.spec +++ b/packaging/cynara.spec @@ -8,18 +8,15 @@ Source0: %{name}-%{version}.tar.gz Source1000: %{name}-rpmlintrc Source1001: cynara.manifest Source1002: libcynara-client.manifest -Source1003: libcynara-client-async.manifest -Source1004: libcynara-admin.manifest -Source1005: cynara-tests.manifest -Source1006: libcynara-agent.manifest -Source1007: libcynara-client-commons.manifest -Source1008: libcynara-commons.manifest -Source1009: libcynara-creds-commons.manifest -Source1010: libcynara-creds-dbus.manifest -Source1011: libcynara-creds-socket.manifest -Source1012: libcynara-session.manifest -Source1013: libcynara-storage.manifest -Source1014: cynara-db-migration.manifest +Source1003: libcynara-admin.manifest +Source1004: cynara-tests.manifest +Source1005: libcynara-agent.manifest +Source1006: libcynara-commons.manifest +Source1007: libcynara-creds-commons.manifest +Source1008: libcynara-creds-dbus.manifest +Source1009: libcynara-creds-socket.manifest +Source1010: libcynara-session.manifest +Source1011: cynara-db-migration.manifest Requires: default-ac-domains Requires(pre): pwdutils Requires(pre): cynara-db-migration >= %{version}-%{release} @@ -52,57 +49,40 @@ BuildRequires: pkgconfig(libunwind) %endif %description -service, client libraries (libcynara-client, libcynara-client-async, libcynara-admin), +service, client libraries (libcynara-client, libcynara-admin), agent library, helper libraries (libcynara-session, libcynara-creds-common, libcynara-creds-dbus, libcynara-creds-socket) and tests (cynara-tests) -####################################################### -%package -n libcynara-client -Summary: Cynara - client library -Requires: cynara = %{version}-%{release} - -%description -n libcynara-client -client library for checking policies - -%package -n libcynara-client-devel -Summary: Cynara - client library (devel) +%package devel +Summary: Cynara development files +Requires: libcynara-admin = %{version}-%{release} +Requires: libcynara-agent = %{version}-%{release} Requires: libcynara-client = %{version}-%{release} -Requires: libcynara-client-commons-devel = %{version}-%{release} - -%description -n libcynara-client-devel -client library (devel) for checking policies - -####################################################### -%package -n libcynara-client-async -Summary: Cynara - asynchronous client library -Requires: cynara = %{version}-%{release} - -%description -n libcynara-client-async -asynchronous client library for checking policies - -%package -n libcynara-client-async-devel -Summary: Cynara - asynchronous client library (devel) -Requires: libcynara-client-async = %{version}-%{release} -Requires: libcynara-client-commons-devel = %{version}-%{release} +Requires: libcynara-commons = %{version}-%{release} +Requires: libcynara-creds-commons = %{version}-%{release} +Requires: libcynara-creds-dbus = %{version}-%{release} +Requires: libcynara-creds-socket = %{version}-%{release} +Requires: libcynara-session = %{version}-%{release} -%description -n libcynara-client-async-devel -asynchronous client library (devel) for checking policies +%description devel +Cynara development files -####################################################### -%package -n libcynara-client-commons -Summary: Cynara - client commons library +%package tests +Summary: Cynara - cynara test binaries +BuildRequires: pkgconfig(gmock) -%description -n libcynara-client-commons -client commons library with common functionalities +%description tests +Cynara tests -%package -n libcynara-client-commons-devel -Summary: Cynara - client commons library (devel) -Requires: libcynara-client-commons = %{version}-%{release} +%package -n libcynara-client +Summary: Cynara - client libraries +Requires: cynara = %{version}-%{release} +Obsoletes: libcynara-client-commons +Obsoletes: libcynara-client-async -%description -n libcynara-client-commons-devel -client commons library (devel) with common functionalities +%description -n libcynara-client +Client libraries for checking policies: synchronous and asynchronous -####################################################### %package -n libcynara-admin Summary: Cynara - admin client library Requires: cynara = %{version}-%{release} @@ -110,16 +90,6 @@ Requires: cynara = %{version}-%{release} %description -n libcynara-admin admin client library for setting, listing and removing policies -%package -n libcynara-admin-devel -Summary: Cynara - admin client library (devel) -Requires: libcynara-admin = %{version}-%{release} -Requires: libcynara-client-commons-devel = %{version}-%{release} -Requires: libcynara-commons-devel = %{version}-%{release} - -%description -n libcynara-admin-devel -admin client library (devel) for setting, listing and removing policies - -####################################################### %package -n libcynara-agent Summary: Cynara - agent client library Requires: cynara = %{version}-%{release} @@ -127,66 +97,19 @@ Requires: cynara = %{version}-%{release} %description -n libcynara-agent agent client library for communication with cynara service and plugins -%package -n libcynara-agent-devel -Summary: Cynara - agent client library (devel) -Requires: libcynara-agent = %{version}-%{release} -Requires: libcynara-client-commons-devel = %{version}-%{release} - -%description -n libcynara-agent-devel -agent client library (devel) for communication with cynara service and plugins - -####################################################### -%package -n libcynara-storage -Summary: Cynara - storage - -%description -n libcynara-storage -cynara common storage library with common storage functionalities - -%package -n libcynara-storage-devel -Summary: Cynara - storage-devel -Requires: cynara = %{version}-%{release} - -%description -n libcynara-storage-devel -cynara common storage library (devel) with common storage functionalities - -####################################################### %package -n libcynara-commons Summary: Cynara - cynara commons library +Obsoletes: libcynara-storage %description -n libcynara-commons cynara common library with common functionalities -%package -n libcynara-commons-devel -Summary: Cynara - cynara commons library (devel) -Requires: libcynara-commons = %{version}-%{release} - -%description -n libcynara-commons-devel -cynara common library (devel) with common functionalities - -####################################################### -%package -n libcynara-plugin-devel -Summary: Cynara - cynara plugin library (devel) -Requires: libcynara-commons-devel = %{version}-%{release} - -%description -n libcynara-plugin-devel -cynara plugin library (devel) with plugin definitions - -####################################################### %package -n libcynara-creds-commons Summary: Base library for cynara credentials helpers %description -n libcynara-creds-commons Base library for cynara credentials helpers -%package -n libcynara-creds-commons-devel -Summary: Base library for cynara credentials helpers (devel) -Requires: libcynara-creds-commons = %{version}-%{release} -Requires: libcynara-client-commons-devel = %{version}-%{release} - -%description -n libcynara-creds-commons-devel -Base library for cynara credentials helpers (devel) - -####################################################### %package -n libcynara-creds-dbus Summary: Cynara credentials helpers library for dbus clients BuildRequires: pkgconfig(dbus-1) @@ -195,60 +118,18 @@ Requires: dbus %description -n libcynara-creds-dbus Cynara credentials helpers library for dbus clients -%package -n libcynara-creds-dbus-devel -Summary: Cynara credentials helpers library for dbus clients (devel) -Requires: libcynara-creds-dbus = %{version}-%{release} -Requires: libcynara-creds-commons-devel = %{version}-%{release} - -%description -n libcynara-creds-dbus-devel -Cynara credentials helpers library for dbus clients (devel) - -####################################################### %package -n libcynara-creds-socket Summary: Cynara credentials helpers library for socket clients %description -n libcynara-creds-socket Cynara credentials helpers library for socket clients -%package -n libcynara-creds-socket-devel -Summary: Cynara credentials helpers library for socket clients (devel) -Requires: libcynara-creds-socket = %{version}-%{release} -Requires: libcynara-creds-commons-devel = %{version}-%{release} - -%description -n libcynara-creds-socket-devel -Cynara credentials helpers library for socket clients (devel) - -####################################################### %package -n libcynara-session Summary: Cynara helper client session string creation library %description -n libcynara-session Cynara helper client session string creation library -%package -n libcynara-session-devel -Summary: Cynara helper client session string creation library (devel) -Requires: libcynara-session = %{version}-%{release} - -%description -n libcynara-session-devel -Cynara helper client session string creation library (devel) - -####################################################### -%package -n cynara-tests -Summary: Cynara - cynara test binaries -BuildRequires: pkgconfig(gmock) - -%description -n cynara-tests -Cynara tests - -####################################################### -%package -n cynara-devel -Summary: Cynara service (devel) -Requires: cynara = %{version}-%{release} - -%description -n cynara-devel -service (devel version) - -####################################################### %package -n cynara-db-migration Summary: Migration tools for Cynara's database @@ -268,9 +149,6 @@ cp -a %{SOURCE1008} . cp -a %{SOURCE1009} . cp -a %{SOURCE1010} . cp -a %{SOURCE1011} . -cp -a %{SOURCE1012} . -cp -a %{SOURCE1013} . -cp -a %{SOURCE1014} . cp -a test/db/db* . %build @@ -363,14 +241,6 @@ fi %postun -n libcynara-client -p /sbin/ldconfig -%post -n libcynara-client-async -p /sbin/ldconfig - -%postun -n libcynara-client-async -p /sbin/ldconfig - -%post -n libcynara-client-commons -p /sbin/ldconfig - -%postun -n libcynara-client-commons -p /sbin/ldconfig - %post -n libcynara-admin -p /sbin/ldconfig %postun -n libcynara-admin -p /sbin/ldconfig @@ -379,75 +249,27 @@ fi %postun -n libcynara-agent -p /sbin/ldconfig -%post -n libcynara-storage -p /sbin/ldconfig - -%postun -n libcynara-storage -p /sbin/ldconfig - -%post -n libcynara-storage-devel -p /sbin/ldconfig - -%postun -n libcynara-storage-devel -p /sbin/ldconfig - %post -n libcynara-commons -p /sbin/ldconfig %postun -n libcynara-commons -p /sbin/ldconfig -%post -n libcynara-client-devel -p /sbin/ldconfig - -%postun -n libcynara-client-devel -p /sbin/ldconfig - -%post -n libcynara-client-async-devel -p /sbin/ldconfig - -%postun -n libcynara-client-async-devel -p /sbin/ldconfig - -%post -n libcynara-client-commons-devel -p /sbin/ldconfig - -%postun -n libcynara-client-commons-devel -p /sbin/ldconfig - -%post -n libcynara-admin-devel -p /sbin/ldconfig - -%postun -n libcynara-admin-devel -p /sbin/ldconfig - -%post -n libcynara-agent-devel -p /sbin/ldconfig - -%postun -n libcynara-agent-devel -p /sbin/ldconfig - -%post -n libcynara-commons-devel -p /sbin/ldconfig - -%postun -n libcynara-commons-devel -p /sbin/ldconfig - %post -n libcynara-creds-commons -p /sbin/ldconfig %postun -n libcynara-creds-commons -p /sbin/ldconfig -%post -n libcynara-creds-commons-devel -p /sbin/ldconfig - -%postun -n libcynara-creds-commons-devel -p /sbin/ldconfig - %post -n libcynara-creds-dbus -p /sbin/ldconfig %postun -n libcynara-creds-dbus -p /sbin/ldconfig -%post -n libcynara-creds-dbus-devel -p /sbin/ldconfig - -%postun -n libcynara-creds-dbus-devel -p /sbin/ldconfig - %post -n libcynara-creds-socket -p /sbin/ldconfig %postun -n libcynara-creds-socket -p /sbin/ldconfig -%post -n libcynara-creds-socket-devel -p /sbin/ldconfig - -%postun -n libcynara-creds-socket-devel -p /sbin/ldconfig - %post -n libcynara-session -p /sbin/ldconfig %postun -n libcynara-session -p /sbin/ldconfig -%post -n libcynara-session-devel -p /sbin/ldconfig - -%postun -n libcynara-session-devel -p /sbin/ldconfig - -%files -n cynara +%files %manifest cynara.manifest %license LICENSE %attr(755,root,root) /usr/bin/cynara @@ -462,88 +284,42 @@ fi %dir %attr(700,cynara,cynara) %{state_path} %dir %attr(755,cynara,cynara) %{lib_path}/plugin/service +%files -n cynara-devel +%{_includedir}/cynara/*.h +%{_includedir}/cynara/plugin/*.h +%{_includedir}/cynara/types/*.h +%{_libdir}/pkgconfig/*.pc +%{_libdir}/*.so + +%files -n cynara-tests +%manifest cynara-tests.manifest +%attr(755,root,root) /usr/bin/cynara-tests +%attr(755,root,root) %{tests_dir}/db*/* +%dir %attr(755,root,root) %{tests_dir}/empty_db + %files -n libcynara-client %manifest libcynara-client.manifest %license LICENSE %{_libdir}/libcynara-client.so.* - -%files -n libcynara-client-devel -%{_includedir}/cynara/cynara-client.h -%{_libdir}/pkgconfig/cynara-client.pc -%{_libdir}/libcynara-client.so - -%files -n libcynara-client-async -%manifest libcynara-client-async.manifest -%license LICENSE %{_libdir}/libcynara-client-async.so.* - -%files -n libcynara-client-async-devel -%{_includedir}/cynara/cynara-client-async.h -%{_libdir}/pkgconfig/cynara-client-async.pc -%{_libdir}/libcynara-client-async.so - -%files -n libcynara-client-commons -%manifest libcynara-client-commons.manifest -%license LICENSE %{_libdir}/libcynara-client-commons.so.* %dir %attr(755,cynara,cynara) %{lib_path}/plugin/client -%files -n libcynara-client-commons-devel -%{_includedir}/cynara/cynara-error.h -%{_libdir}/libcynara-client-commons.so - %files -n libcynara-admin %manifest libcynara-admin.manifest %license LICENSE %{_libdir}/libcynara-admin.so.* -%files -n libcynara-admin-devel -%{_includedir}/cynara/cynara-admin.h -%{_includedir}/cynara/cynara-admin-types.h -%{_libdir}/libcynara-admin.so -%{_libdir}/pkgconfig/cynara-admin.pc - %files -n libcynara-agent %manifest libcynara-agent.manifest %license LICENSE %{_libdir}/libcynara-agent.so.* -%files -n libcynara-agent-devel -%{_includedir}/cynara/cynara-agent.h -%{_libdir}/libcynara-agent.so -%{_libdir}/pkgconfig/cynara-agent.pc - -%files -n libcynara-storage -%manifest libcynara-storage.manifest -%license LICENSE -%{_libdir}/libcynara-storage.so.* - -%files -n libcynara-storage-devel -%{_libdir}/libcynara-storage.so - %files -n libcynara-commons %manifest libcynara-commons.manifest %license LICENSE %{_libdir}/libcynara-commons.so.* - -%files -n libcynara-commons-devel -%{_includedir}/cynara/cynara-policy-types.h -%{_includedir}/cynara/plugin/ExternalPluginInterface.h -%{_includedir}/cynara/types/ClientSession.h -%{_includedir}/cynara/types/PolicyResult.h -%{_includedir}/cynara/types/PolicyType.h -%{_libdir}/libcynara-commons.so - -%files -n libcynara-plugin-devel -%{_includedir}/cynara/cynara-plugin.h -%{_includedir}/cynara/cynara-client-plugin.h -%{_libdir}/pkgconfig/cynara-plugin.pc - -%files -n cynara-tests -%manifest cynara-tests.manifest -%attr(755,root,root) /usr/bin/cynara-tests -%attr(755,root,root) %{tests_dir}/db*/* -%dir %attr(755,root,root) %{tests_dir}/empty_db +%{_libdir}/libcynara-storage.so.* %files -n libcynara-creds-commons %manifest libcynara-creds-commons.manifest @@ -551,41 +327,21 @@ fi %{_libdir}/libcynara-creds-commons.so.* %{conf_path}creds.conf -%files -n libcynara-creds-commons-devel -%{_includedir}/cynara/cynara-creds-commons.h -%{_libdir}/libcynara-creds-commons.so -%{_libdir}/pkgconfig/cynara-creds-commons.pc - %files -n libcynara-creds-dbus %manifest libcynara-creds-dbus.manifest %license LICENSE %{_libdir}/libcynara-creds-dbus.so.* -%files -n libcynara-creds-dbus-devel -%{_includedir}/cynara/cynara-creds-dbus.h -%{_libdir}/libcynara-creds-dbus.so -%{_libdir}/pkgconfig/cynara-creds-dbus.pc - %files -n libcynara-creds-socket %manifest libcynara-creds-socket.manifest %license LICENSE %{_libdir}/libcynara-creds-socket.so.* -%files -n libcynara-creds-socket-devel -%{_includedir}/cynara/cynara-creds-socket.h -%{_libdir}/libcynara-creds-socket.so -%{_libdir}/pkgconfig/cynara-creds-socket.pc - %files -n libcynara-session %manifest libcynara-session.manifest %license LICENSE %{_libdir}/libcynara-session.so.* -%files -n libcynara-session-devel -%{_includedir}/cynara/cynara-session.h -%{_libdir}/libcynara-session.so -%{_libdir}/pkgconfig/cynara-session.pc - %files -n cynara-db-migration %manifest cynara-db-migration.manifest %attr(744,root,root) %{_sbindir}/cynara/cynara-db-migration.sh diff --git a/packaging/libcynara-client-async.manifest b/packaging/libcynara-client-async.manifest deleted file mode 100644 index a76fdba..0000000 --- a/packaging/libcynara-client-async.manifest +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packaging/libcynara-client-commons.manifest b/packaging/libcynara-client-commons.manifest deleted file mode 100644 index a76fdba..0000000 --- a/packaging/libcynara-client-commons.manifest +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packaging/libcynara-storage.manifest b/packaging/libcynara-storage.manifest deleted file mode 100644 index a76fdba..0000000 --- a/packaging/libcynara-storage.manifest +++ /dev/null @@ -1,5 +0,0 @@ - - - - - -- 2.7.4 From 1d7785957f74ba5443759688245ec92a221bad78 Mon Sep 17 00:00:00 2001 From: Rafal Krypa Date: Fri, 31 Oct 2014 14:33:16 +0100 Subject: [PATCH 10/16] packaging: make cynara-devel depend on dbus-devel D-Bus include is being included from cynara-creds-dbus.h. D-Bus headers will be required for successful compilation against cynara-creds-dbus. Change-Id: Ib223f7025fe7c49f57741b6dca11f294b927d06e --- packaging/cynara.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/packaging/cynara.spec b/packaging/cynara.spec index bf5c00a..a9fa629 100644 --- a/packaging/cynara.spec +++ b/packaging/cynara.spec @@ -63,6 +63,7 @@ Requires: libcynara-creds-commons = %{version}-%{release} Requires: libcynara-creds-dbus = %{version}-%{release} Requires: libcynara-creds-socket = %{version}-%{release} Requires: libcynara-session = %{version}-%{release} +Requires: pkgconfig(dbus-1) %description devel Cynara development files -- 2.7.4 From 332dcdd8783d9fd94a852b8ec9535a54029cc5a5 Mon Sep 17 00:00:00 2001 From: Lukasz Wojciechowski Date: Mon, 17 Nov 2014 11:57:07 +0100 Subject: [PATCH 11/16] Release 0.4.1 Change-Id: I79a7007db3af7e7815547c7ccbca8f23986fab02 --- CMakeLists.txt | 2 +- changelog | 23 +++++++++++++++++++++++ packaging/cynara.spec | 2 +- src/admin/CMakeLists.txt | 2 +- src/client-common/CMakeLists.txt | 2 +- src/client/CMakeLists.txt | 2 +- src/common/CMakeLists.txt | 2 +- src/helpers/creds-commons/CMakeLists.txt | 2 +- src/helpers/creds-dbus/CMakeLists.txt | 2 +- src/helpers/creds-socket/CMakeLists.txt | 2 +- src/helpers/session/CMakeLists.txt | 2 +- 11 files changed, 33 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5271bb2..0bfb07d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3) PROJECT("cynara") -set(CYNARA_VERSION 0.4.0) +set(CYNARA_VERSION 0.4.1) ############################# cmake packages ################################## diff --git a/changelog b/changelog index e841be7..aa297e4 100644 --- a/changelog +++ b/changelog @@ -1,5 +1,28 @@ ############################## +Release: 0.4.1 +Date: 2014.11.17 +Name: Fix packaging problems + +Libraries: +libcynara-admin.0.4.1 +libcynara-agent.0.4.1 +libcynara-client-async.0.4.1 +libcynara-client-commmons.0.4.1 +libcynara-client.0.4.1 +libcynara-commons.0.4.1 +libcynara-creds-commons.0.4.1 +libcynara-creds-dbus.0.4.1 +libcynara-creds-socket.0.4.1 +libcynara-session.0.4.1 +libcynara-storage.0.4.1 + +Description: +Fix problems with packages dependencies +Create missing plugin directories + +############################## + Release: 0.4.0 Date: 2014.11.15 Name: Asynchronous client and extensions API diff --git a/packaging/cynara.spec b/packaging/cynara.spec index a9fa629..377d6b2 100644 --- a/packaging/cynara.spec +++ b/packaging/cynara.spec @@ -1,6 +1,6 @@ Name: cynara Summary: Cynara service with client libraries -Version: 0.4.0 +Version: 0.4.1 Release: 1 Group: Security/Application Privilege License: Apache-2.0 diff --git a/src/admin/CMakeLists.txt b/src/admin/CMakeLists.txt index 7cab9f6..3b46f63 100644 --- a/src/admin/CMakeLists.txt +++ b/src/admin/CMakeLists.txt @@ -17,7 +17,7 @@ # SET(LIB_CYNARA_ADMIN_VERSION_MAJOR 0) -SET(LIB_CYNARA_ADMIN_VERSION ${LIB_CYNARA_ADMIN_VERSION_MAJOR}.4.0) +SET(LIB_CYNARA_ADMIN_VERSION ${LIB_CYNARA_ADMIN_VERSION_MAJOR}.4.1) SET(CYNARA_LIB_CYNARA_ADMIN_PATH ${CYNARA_PATH}/admin) diff --git a/src/client-common/CMakeLists.txt b/src/client-common/CMakeLists.txt index 36c6806..0c3c431 100644 --- a/src/client-common/CMakeLists.txt +++ b/src/client-common/CMakeLists.txt @@ -17,7 +17,7 @@ # SET(LIB_CYNARA_CLIENT_COMMON_VERSION_MAJOR 0) -SET(LIB_CYNARA_CLIENT_COMMON_VERSION ${LIB_CYNARA_CLIENT_COMMON_VERSION_MAJOR}.4.0) +SET(LIB_CYNARA_CLIENT_COMMON_VERSION ${LIB_CYNARA_CLIENT_COMMON_VERSION_MAJOR}.4.1) SET(LIB_CYNARA_COMMON_PATH ${CYNARA_PATH}/client-common) diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index 79d85a2..e20fd51 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -18,7 +18,7 @@ # SET(LIB_CYNARA_VERSION_MAJOR 0) -SET(LIB_CYNARA_VERSION ${LIB_CYNARA_VERSION_MAJOR}.4.0) +SET(LIB_CYNARA_VERSION ${LIB_CYNARA_VERSION_MAJOR}.4.1) SET(LIB_CYNARA_PATH ${CYNARA_PATH}/client) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 68bda47..797e233 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -17,7 +17,7 @@ # SET(CYNARA_COMMON_VERSION_MAJOR 0) -SET(CYNARA_COMMON_VERSION ${CYNARA_COMMON_VERSION_MAJOR}.4.0) +SET(CYNARA_COMMON_VERSION ${CYNARA_COMMON_VERSION_MAJOR}.4.1) SET(COMMON_PATH ${CYNARA_PATH}/common) diff --git a/src/helpers/creds-commons/CMakeLists.txt b/src/helpers/creds-commons/CMakeLists.txt index bafa025..98ea56c 100644 --- a/src/helpers/creds-commons/CMakeLists.txt +++ b/src/helpers/creds-commons/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_CREDS_COMMONS_VERSION_MAJOR 0) -SET(LIB_CREDS_COMMONS_VERSION ${LIB_CREDS_COMMONS_VERSION_MAJOR}.4.0) +SET(LIB_CREDS_COMMONS_VERSION ${LIB_CREDS_COMMONS_VERSION_MAJOR}.4.1) SET(LIB_CREDS_COMMONS_PATH ${CYNARA_PATH}/helpers/creds-commons) diff --git a/src/helpers/creds-dbus/CMakeLists.txt b/src/helpers/creds-dbus/CMakeLists.txt index 69b94e2..b3c9ee6 100644 --- a/src/helpers/creds-dbus/CMakeLists.txt +++ b/src/helpers/creds-dbus/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_CREDS_DBUS_VERSION_MAJOR 0) -SET(LIB_CREDS_DBUS_VERSION ${LIB_CREDS_DBUS_VERSION_MAJOR}.4.0) +SET(LIB_CREDS_DBUS_VERSION ${LIB_CREDS_DBUS_VERSION_MAJOR}.4.1) SET(LIB_CREDS_DBUS_PATH ${CYNARA_PATH}/helpers/creds-dbus) diff --git a/src/helpers/creds-socket/CMakeLists.txt b/src/helpers/creds-socket/CMakeLists.txt index 1d40f3b..847ffe5 100644 --- a/src/helpers/creds-socket/CMakeLists.txt +++ b/src/helpers/creds-socket/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_CREDS_SOCKET_VERSION_MAJOR 0) -SET(LIB_CREDS_SOCKET_VERSION ${LIB_CREDS_SOCKET_VERSION_MAJOR}.4.0) +SET(LIB_CREDS_SOCKET_VERSION ${LIB_CREDS_SOCKET_VERSION_MAJOR}.4.1) SET(LIB_CREDS_SOCKET_PATH ${CYNARA_PATH}/helpers/creds-socket) diff --git a/src/helpers/session/CMakeLists.txt b/src/helpers/session/CMakeLists.txt index 6ad7234..8d3774c 100644 --- a/src/helpers/session/CMakeLists.txt +++ b/src/helpers/session/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_SESSION_VERSION_MAJOR 0) -SET(LIB_SESSION_VERSION ${LIB_SESSION_VERSION_MAJOR}.4.0) +SET(LIB_SESSION_VERSION ${LIB_SESSION_VERSION_MAJOR}.4.1) SET(LIB_SESSION_PATH ${CYNARA_PATH}/helpers/session) -- 2.7.4 From 50b4c070e01fbcf710e5b27f34eab00f0a48d892 Mon Sep 17 00:00:00 2001 From: Lukasz Wojciechowski Date: Tue, 18 Nov 2014 14:29:23 +0100 Subject: [PATCH 12/16] Make old devel packages names obsolete Merging all devel rpms into single cynara-devel causes all older devel packages to be obsolete. Change-Id: I6e10c7c74f58dbf8c5ca676ce817382f2c801752 --- packaging/cynara.spec | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packaging/cynara.spec b/packaging/cynara.spec index 377d6b2..95d722d 100644 --- a/packaging/cynara.spec +++ b/packaging/cynara.spec @@ -64,6 +64,18 @@ Requires: libcynara-creds-dbus = %{version}-%{release} Requires: libcynara-creds-socket = %{version}-%{release} Requires: libcynara-session = %{version}-%{release} Requires: pkgconfig(dbus-1) +Obsoletes: libcynara-admin-devel +Obsoletes: libcynara-agent-devel +Obsoletes: libcynara-client-async-devel +Obsoletes: libcynara-client-commons-devel +Obsoletes: libcynara-client-devel +Obsoletes: libcynara-commons-devel +Obsoletes: libcynara-creds-commons-devel +Obsoletes: libcynara-creds-dbus-devel +Obsoletes: libcynara-creds-socket-devel +Obsoletes: libcynara-plugin-devel +Obsoletes: libcynara-session-devel +Obsoletes: libcynara-storage-devel %description devel Cynara development files -- 2.7.4 From b00d7fb59ba12ad6cfb53b5b476dc3c18e09f39d Mon Sep 17 00:00:00 2001 From: Lukasz Wojciechowski Date: Tue, 18 Nov 2014 14:37:36 +0100 Subject: [PATCH 13/16] Release 0.4.2 Change-Id: I98e8bc31f89125fa7dd7a92b9feb7d93e24772c7 --- CMakeLists.txt | 2 +- changelog | 22 ++++++++++++++++++++++ packaging/cynara.spec | 2 +- src/admin/CMakeLists.txt | 2 +- src/client-common/CMakeLists.txt | 2 +- src/client/CMakeLists.txt | 2 +- src/common/CMakeLists.txt | 2 +- src/helpers/creds-commons/CMakeLists.txt | 2 +- src/helpers/creds-dbus/CMakeLists.txt | 2 +- src/helpers/creds-socket/CMakeLists.txt | 2 +- src/helpers/session/CMakeLists.txt | 2 +- 11 files changed, 32 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0bfb07d..c7a802c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3) PROJECT("cynara") -set(CYNARA_VERSION 0.4.1) +set(CYNARA_VERSION 0.4.2) ############################# cmake packages ################################## diff --git a/changelog b/changelog index aa297e4..25fb0f5 100644 --- a/changelog +++ b/changelog @@ -1,5 +1,27 @@ ############################## +Release: 0.4.2 +Date: 2014.11.18 +Name: Fix packaging problems + +Libraries: +libcynara-admin.0.4.2 +libcynara-agent.0.4.2 +libcynara-client-async.0.4.2 +libcynara-client-commmons.0.4.2 +libcynara-client.0.4.2 +libcynara-commons.0.4.2 +libcynara-creds-commons.0.4.2 +libcynara-creds-dbus.0.4.2 +libcynara-creds-socket.0.4.2 +libcynara-session.0.4.2 +libcynara-storage.0.4.2 + +Description: +Fix problems with obsolete packages + +############################## + Release: 0.4.1 Date: 2014.11.17 Name: Fix packaging problems diff --git a/packaging/cynara.spec b/packaging/cynara.spec index 95d722d..91b80a6 100644 --- a/packaging/cynara.spec +++ b/packaging/cynara.spec @@ -1,6 +1,6 @@ Name: cynara Summary: Cynara service with client libraries -Version: 0.4.1 +Version: 0.4.2 Release: 1 Group: Security/Application Privilege License: Apache-2.0 diff --git a/src/admin/CMakeLists.txt b/src/admin/CMakeLists.txt index 3b46f63..f58c751 100644 --- a/src/admin/CMakeLists.txt +++ b/src/admin/CMakeLists.txt @@ -17,7 +17,7 @@ # SET(LIB_CYNARA_ADMIN_VERSION_MAJOR 0) -SET(LIB_CYNARA_ADMIN_VERSION ${LIB_CYNARA_ADMIN_VERSION_MAJOR}.4.1) +SET(LIB_CYNARA_ADMIN_VERSION ${LIB_CYNARA_ADMIN_VERSION_MAJOR}.4.2) SET(CYNARA_LIB_CYNARA_ADMIN_PATH ${CYNARA_PATH}/admin) diff --git a/src/client-common/CMakeLists.txt b/src/client-common/CMakeLists.txt index 0c3c431..bb02eca 100644 --- a/src/client-common/CMakeLists.txt +++ b/src/client-common/CMakeLists.txt @@ -17,7 +17,7 @@ # SET(LIB_CYNARA_CLIENT_COMMON_VERSION_MAJOR 0) -SET(LIB_CYNARA_CLIENT_COMMON_VERSION ${LIB_CYNARA_CLIENT_COMMON_VERSION_MAJOR}.4.1) +SET(LIB_CYNARA_CLIENT_COMMON_VERSION ${LIB_CYNARA_CLIENT_COMMON_VERSION_MAJOR}.4.2) SET(LIB_CYNARA_COMMON_PATH ${CYNARA_PATH}/client-common) diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index e20fd51..2d5c0a2 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -18,7 +18,7 @@ # SET(LIB_CYNARA_VERSION_MAJOR 0) -SET(LIB_CYNARA_VERSION ${LIB_CYNARA_VERSION_MAJOR}.4.1) +SET(LIB_CYNARA_VERSION ${LIB_CYNARA_VERSION_MAJOR}.4.2) SET(LIB_CYNARA_PATH ${CYNARA_PATH}/client) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 797e233..e8974cb 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -17,7 +17,7 @@ # SET(CYNARA_COMMON_VERSION_MAJOR 0) -SET(CYNARA_COMMON_VERSION ${CYNARA_COMMON_VERSION_MAJOR}.4.1) +SET(CYNARA_COMMON_VERSION ${CYNARA_COMMON_VERSION_MAJOR}.4.2) SET(COMMON_PATH ${CYNARA_PATH}/common) diff --git a/src/helpers/creds-commons/CMakeLists.txt b/src/helpers/creds-commons/CMakeLists.txt index 98ea56c..9ff7aa7 100644 --- a/src/helpers/creds-commons/CMakeLists.txt +++ b/src/helpers/creds-commons/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_CREDS_COMMONS_VERSION_MAJOR 0) -SET(LIB_CREDS_COMMONS_VERSION ${LIB_CREDS_COMMONS_VERSION_MAJOR}.4.1) +SET(LIB_CREDS_COMMONS_VERSION ${LIB_CREDS_COMMONS_VERSION_MAJOR}.4.2) SET(LIB_CREDS_COMMONS_PATH ${CYNARA_PATH}/helpers/creds-commons) diff --git a/src/helpers/creds-dbus/CMakeLists.txt b/src/helpers/creds-dbus/CMakeLists.txt index b3c9ee6..90f6cbe 100644 --- a/src/helpers/creds-dbus/CMakeLists.txt +++ b/src/helpers/creds-dbus/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_CREDS_DBUS_VERSION_MAJOR 0) -SET(LIB_CREDS_DBUS_VERSION ${LIB_CREDS_DBUS_VERSION_MAJOR}.4.1) +SET(LIB_CREDS_DBUS_VERSION ${LIB_CREDS_DBUS_VERSION_MAJOR}.4.2) SET(LIB_CREDS_DBUS_PATH ${CYNARA_PATH}/helpers/creds-dbus) diff --git a/src/helpers/creds-socket/CMakeLists.txt b/src/helpers/creds-socket/CMakeLists.txt index 847ffe5..27f9b0c 100644 --- a/src/helpers/creds-socket/CMakeLists.txt +++ b/src/helpers/creds-socket/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_CREDS_SOCKET_VERSION_MAJOR 0) -SET(LIB_CREDS_SOCKET_VERSION ${LIB_CREDS_SOCKET_VERSION_MAJOR}.4.1) +SET(LIB_CREDS_SOCKET_VERSION ${LIB_CREDS_SOCKET_VERSION_MAJOR}.4.2) SET(LIB_CREDS_SOCKET_PATH ${CYNARA_PATH}/helpers/creds-socket) diff --git a/src/helpers/session/CMakeLists.txt b/src/helpers/session/CMakeLists.txt index 8d3774c..b783ebc 100644 --- a/src/helpers/session/CMakeLists.txt +++ b/src/helpers/session/CMakeLists.txt @@ -19,7 +19,7 @@ # SET(LIB_SESSION_VERSION_MAJOR 0) -SET(LIB_SESSION_VERSION ${LIB_SESSION_VERSION_MAJOR}.4.1) +SET(LIB_SESSION_VERSION ${LIB_SESSION_VERSION_MAJOR}.4.2) SET(LIB_SESSION_PATH ${CYNARA_PATH}/helpers/session) -- 2.7.4 From 668a60a5339b3078540c6cabfa199271c8d816a4 Mon Sep 17 00:00:00 2001 From: Zofia Abramowska Date: Fri, 21 Nov 2014 15:43:28 +0100 Subject: [PATCH 14/16] Fix uninitialized member Descriptor could return uninitialized BinaryQueuePtr. Change-Id: I53fbc739438e8316ca5c4b81eec5139b6732aea2 --- src/service/sockets/Descriptor.cpp | 5 +++++ src/service/sockets/Descriptor.h | 4 +--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/service/sockets/Descriptor.cpp b/src/service/sockets/Descriptor.cpp index b2e9459..e247f7f 100644 --- a/src/service/sockets/Descriptor.cpp +++ b/src/service/sockets/Descriptor.cpp @@ -34,6 +34,11 @@ void Descriptor::checkQueues(void) { m_readQueue = std::make_shared(); } +BinaryQueuePtr Descriptor::writeQueue(void) { + checkQueues(); + return m_writeQueue; +} + bool Descriptor::hasDataToWrite(void) const { if (m_writeQueue) return !(m_writeQueue->empty() && m_writeBuffer.empty()); diff --git a/src/service/sockets/Descriptor.h b/src/service/sockets/Descriptor.h index 5d77028..a9a6c68 100644 --- a/src/service/sockets/Descriptor.h +++ b/src/service/sockets/Descriptor.h @@ -57,9 +57,7 @@ public: ResponseTakerPtr responseTaker(void) const; - BinaryQueuePtr writeQueue(void) { - return m_writeQueue; - } + BinaryQueuePtr writeQueue(void); void setProtocol(ProtocolPtr protocol) { m_protocol = protocol; -- 2.7.4 From e0d4ea8fe95d59f0d6e21376e8d16b2c05b0495c Mon Sep 17 00:00:00 2001 From: Zofia Abramowska Date: Mon, 17 Nov 2014 17:48:30 +0100 Subject: [PATCH 15/16] Optimize message() method of exceptions message() returned std::string through value, causing unnecessary copy. Changed it to return const std::string reference. Change-Id: I8d9631fb2468924d35ba4376b1821d0d01c7f70c --- src/common/exceptions/BucketDeserializationException.h | 11 +++++------ src/common/exceptions/BucketNotExistsException.h | 9 ++++++--- src/common/exceptions/BucketRecordCorruptedException.h | 14 +++++++------- src/common/exceptions/BucketSerializationException.h | 11 +++++------ src/common/exceptions/CannotCreateFileException.h | 11 +++++------ src/common/exceptions/ContextErrorException.h | 9 ++++++--- src/common/exceptions/DefaultBucketDeletionException.h | 10 +++++++--- src/common/exceptions/DefaultBucketSetNoneException.h | 10 +++++++--- src/common/exceptions/DescriptorNotExistsException.h | 10 ++++------ src/common/exceptions/Exception.h | 2 +- src/common/exceptions/FileNotFoundException.h | 13 ++++++------- src/common/exceptions/InitException.h | 9 ++++++--- src/common/exceptions/InvalidBucketIdException.h | 11 +++++------ src/common/exceptions/InvalidProtocolException.h | 12 ++++++------ src/common/exceptions/NoMemoryException.h | 8 ++++---- src/common/exceptions/NotImplementedException.h | 9 ++++++--- src/common/exceptions/NullPointerException.h | 10 ++++------ src/common/exceptions/OutOfDataException.h | 12 +++++------- src/common/exceptions/PluginErrorException.h | 2 +- src/common/exceptions/PluginNotFoundException.h | 14 ++++++-------- src/common/exceptions/UnexpectedErrorException.h | 17 ++++++----------- 21 files changed, 108 insertions(+), 106 deletions(-) diff --git a/src/common/exceptions/BucketDeserializationException.h b/src/common/exceptions/BucketDeserializationException.h index c5670c8..36ef8b0 100644 --- a/src/common/exceptions/BucketDeserializationException.h +++ b/src/common/exceptions/BucketDeserializationException.h @@ -29,13 +29,12 @@ namespace Cynara { class BucketDeserializationException : public DatabaseException { public: - BucketDeserializationException(const PolicyBucketId &bucketId) : m_bucketId(bucketId) {} + BucketDeserializationException(const PolicyBucketId &bucket) : m_bucketId(bucket) { + m_message = "Could not deserialize bucket " + bucketId(); + } virtual ~BucketDeserializationException() {}; - const std::string message(void) const { - if (m_message.empty()) { - m_message = "Could not deserialize bucket " + m_bucketId; - } + const std::string &message(void) const { return m_message; } @@ -44,7 +43,7 @@ public: } private: - mutable std::string m_message; + std::string m_message; PolicyBucketId m_bucketId; }; diff --git a/src/common/exceptions/BucketNotExistsException.h b/src/common/exceptions/BucketNotExistsException.h index 9ba9505..68d041b 100644 --- a/src/common/exceptions/BucketNotExistsException.h +++ b/src/common/exceptions/BucketNotExistsException.h @@ -33,11 +33,13 @@ namespace Cynara { class BucketNotExistsException : public Exception { public: BucketNotExistsException() = delete; - BucketNotExistsException(const PolicyBucketId &bucketId) : m_bucketId(bucketId) {} + BucketNotExistsException(const PolicyBucketId &bucketId) + : m_bucketId(bucketId), m_message("BucketNotExistsException") { + } virtual ~BucketNotExistsException() {}; - virtual const std::string message(void) const { - return "BucketNotExistsException"; + virtual const std::string &message(void) const { + return m_message; } const PolicyBucketId &bucketId(void) const { @@ -46,6 +48,7 @@ public: private: PolicyBucketId m_bucketId; + std::string m_message; }; } /* namespace Cynara */ diff --git a/src/common/exceptions/BucketRecordCorruptedException.h b/src/common/exceptions/BucketRecordCorruptedException.h index 92b29f7..a5ffb7d 100644 --- a/src/common/exceptions/BucketRecordCorruptedException.h +++ b/src/common/exceptions/BucketRecordCorruptedException.h @@ -39,25 +39,25 @@ public: BucketRecordCorruptedException withLineNumber(const size_t &lineNumber) const { BucketRecordCorruptedException copy(*this); copy.m_lineNumber = lineNumber; - copy.m_whatMsg.clear(); + copy.m_message.clear(); return copy; } BucketRecordCorruptedException withFilename(const std::string &filename) const { BucketRecordCorruptedException copy(*this); copy.m_filename = filename; - copy.m_whatMsg.clear(); + copy.m_message.clear(); return copy; } - virtual const std::string message(void) const { - if (m_whatMsg.empty()) { - m_whatMsg = "Bucket record corrupted at" + virtual const std::string &message(void) const { + if (m_message.empty()) { + m_message = "Bucket record corrupted at" + formatedFilename() + formatedLineNumber() + ": <" + slicedLine() + ">"; } - return m_whatMsg; + return m_message; } const std::string &filename(void) const { @@ -91,7 +91,7 @@ private: size_t m_lineNumber; std::string m_line; std::string m_filename; - mutable std::string m_whatMsg; + mutable std::string m_message; }; } /* namespace Cynara */ diff --git a/src/common/exceptions/BucketSerializationException.h b/src/common/exceptions/BucketSerializationException.h index 1e02823..23ff4cc 100644 --- a/src/common/exceptions/BucketSerializationException.h +++ b/src/common/exceptions/BucketSerializationException.h @@ -29,13 +29,12 @@ namespace Cynara { class BucketSerializationException : public DatabaseException { public: - BucketSerializationException(const PolicyBucketId &bucketId) : m_bucketId(bucketId) {} + BucketSerializationException(const PolicyBucketId &bucket) : m_bucketId(bucket) { + m_message = "Could not serialize bucket " + bucketId(); + } virtual ~BucketSerializationException() {}; - const std::string message(void) const { - if (m_message.empty()) { - m_message = "Could not serialize bucket " + m_bucketId; - } + const std::string &message(void) const { return m_message; } @@ -44,7 +43,7 @@ public: } private: - mutable std::string m_message; + std::string m_message; PolicyBucketId m_bucketId; }; diff --git a/src/common/exceptions/CannotCreateFileException.h b/src/common/exceptions/CannotCreateFileException.h index 67c1d67..f7b8d92 100644 --- a/src/common/exceptions/CannotCreateFileException.h +++ b/src/common/exceptions/CannotCreateFileException.h @@ -31,13 +31,12 @@ namespace Cynara { class CannotCreateFileException : public DatabaseException { public: - CannotCreateFileException(const std::string &filename) : m_filename(filename) {}; + CannotCreateFileException(const std::string &file) : m_filename(file) { + m_message = "File " + filename() + " cannot be created"; + }; virtual ~CannotCreateFileException() {}; - const std::string message(void) const { - if (m_message.empty()) { - m_message = "File " + filename() + " cannot be created"; - } + const std::string &message(void) const { return m_message; } @@ -46,7 +45,7 @@ public: } private: - mutable std::string m_message; + std::string m_message; std::string m_filename; }; diff --git a/src/common/exceptions/ContextErrorException.h b/src/common/exceptions/ContextErrorException.h index 771065a..692b26e 100644 --- a/src/common/exceptions/ContextErrorException.h +++ b/src/common/exceptions/ContextErrorException.h @@ -29,12 +29,15 @@ namespace Cynara { class ContextErrorException : public Exception { public: - ContextErrorException() = default; + ContextErrorException() : m_message("ContextErrorException") {} virtual ~ContextErrorException() {}; - virtual const std::string message(void) const { - return "ContextErrorException"; + virtual const std::string &message(void) const { + return m_message; } + +private: + std::string m_message; }; } /* namespace Cynara */ diff --git a/src/common/exceptions/DefaultBucketDeletionException.h b/src/common/exceptions/DefaultBucketDeletionException.h index a4742be..7982f90 100644 --- a/src/common/exceptions/DefaultBucketDeletionException.h +++ b/src/common/exceptions/DefaultBucketDeletionException.h @@ -31,12 +31,16 @@ namespace Cynara { class DefaultBucketDeletionException : public Exception { public: - DefaultBucketDeletionException() = default; + DefaultBucketDeletionException() : m_message("DefaultBucketDeletionException") { + } virtual ~DefaultBucketDeletionException() {}; - virtual const std::string message(void) const { - return "DefaultBucketDeletionException"; + virtual const std::string &message(void) const { + return m_message; } + +private: + std::string m_message; }; } /* namespace Cynara */ diff --git a/src/common/exceptions/DefaultBucketSetNoneException.h b/src/common/exceptions/DefaultBucketSetNoneException.h index 243c4d8..a7b2d4b 100644 --- a/src/common/exceptions/DefaultBucketSetNoneException.h +++ b/src/common/exceptions/DefaultBucketSetNoneException.h @@ -31,12 +31,16 @@ namespace Cynara { class DefaultBucketSetNoneException : public Exception { public: - DefaultBucketSetNoneException() = default; + DefaultBucketSetNoneException() : m_message("DefaultBucketSetNoneException") { + } virtual ~DefaultBucketSetNoneException() {}; - virtual const std::string message(void) const { - return "DefaultBucketSetNoneException"; + virtual const std::string &message(void) const { + return m_message; } + +private: + std::string m_message; }; } /* namespace Cynara */ diff --git a/src/common/exceptions/DescriptorNotExistsException.h b/src/common/exceptions/DescriptorNotExistsException.h index 3535b91..ffb6bba 100644 --- a/src/common/exceptions/DescriptorNotExistsException.h +++ b/src/common/exceptions/DescriptorNotExistsException.h @@ -35,19 +35,17 @@ class DescriptorNotExistsException : public Exception { public: DescriptorNotExistsException() = delete; DescriptorNotExistsException(int desc) { - std::ostringstream stream; - stream << "trying access not existing descriptor [" << desc << "]"; - m_whatMsg = stream.str(); + m_message = "trying access not existing descriptor [" + std::to_string(desc) + "]"; } virtual ~DescriptorNotExistsException() {}; - virtual const std::string message(void) const { - return m_whatMsg; + virtual const std::string &message(void) const { + return m_message; } private: - std::string m_whatMsg; + std::string m_message; }; } // namespace Cynara diff --git a/src/common/exceptions/Exception.h b/src/common/exceptions/Exception.h index c5eb709..5dbaa6b 100644 --- a/src/common/exceptions/Exception.h +++ b/src/common/exceptions/Exception.h @@ -46,7 +46,7 @@ public: return m_whatMessage.c_str(); } - virtual const std::string message(void) const = 0; + virtual const std::string &message(void) const = 0; private: std::string m_backtrace; diff --git a/src/common/exceptions/FileNotFoundException.h b/src/common/exceptions/FileNotFoundException.h index 4c446e2..2c43ca5 100644 --- a/src/common/exceptions/FileNotFoundException.h +++ b/src/common/exceptions/FileNotFoundException.h @@ -31,13 +31,12 @@ namespace Cynara { class FileNotFoundException : public DatabaseException { public: - FileNotFoundException(const std::string &filename) : m_filename(filename) {}; - virtual ~FileNotFoundException() {}; + FileNotFoundException(const std::string &file) : m_filename(file) { + m_message = "File " + filename() + " not found or corrupted badly"; + } + virtual ~FileNotFoundException() {} - const std::string message(void) const { - if (m_message.empty()) { - m_message = "File " + filename() + " not found or corrupted badly"; - } + const std::string &message(void) const { return m_message; } @@ -46,7 +45,7 @@ public: } private: - mutable std::string m_message; + std::string m_message; std::string m_filename; }; diff --git a/src/common/exceptions/InitException.h b/src/common/exceptions/InitException.h index cdb09a2..22f8615 100644 --- a/src/common/exceptions/InitException.h +++ b/src/common/exceptions/InitException.h @@ -31,12 +31,15 @@ namespace Cynara { class InitException : public Exception { public: - InitException() = default; + InitException() : m_message("InitException") {} virtual ~InitException() {}; - virtual const std::string message(void) const { - return "InitException"; + virtual const std::string &message(void) const { + return m_message; } + +private: + std::string m_message; }; } /* namespace Cynara */ diff --git a/src/common/exceptions/InvalidBucketIdException.h b/src/common/exceptions/InvalidBucketIdException.h index f8772e4..6fe40b0 100644 --- a/src/common/exceptions/InvalidBucketIdException.h +++ b/src/common/exceptions/InvalidBucketIdException.h @@ -31,13 +31,12 @@ namespace Cynara { class InvalidBucketIdException : public Exception { public: - InvalidBucketIdException(const std::string &bucketId) : m_bucketId(bucketId) {}; + InvalidBucketIdException(const std::string &bucket) : m_bucketId(bucket) { + m_message = "Bucket ID " + bucketId() + " contains forbidden characters"; + }; virtual ~InvalidBucketIdException() {}; - const std::string message(void) const { - if (m_message.empty()) { - m_message = "Bucket ID " + bucketId() + " contains forbidden characters"; - } + const std::string &message(void) const { return m_message; } @@ -46,7 +45,7 @@ public: } private: - mutable std::string m_message; + std::string m_message; std::string m_bucketId; }; diff --git a/src/common/exceptions/InvalidProtocolException.h b/src/common/exceptions/InvalidProtocolException.h index 9b6a740..65c9f77 100644 --- a/src/common/exceptions/InvalidProtocolException.h +++ b/src/common/exceptions/InvalidProtocolException.h @@ -42,21 +42,21 @@ public: m_exceptionType(exceptionType) { switch(m_exceptionType) { case InvalidSignature: - m_whatMessage = "No valid signature found"; + m_message = "No valid signature found"; break; case WrongOpCode: - m_whatMessage = "Wrong request code"; + m_message = "Wrong request code"; break; case Other: - m_whatMessage = "Unknown problem"; + m_message = "Unknown problem"; break; } } virtual ~InvalidProtocolException() {}; - virtual const std::string message(void) const { - return m_whatMessage; + virtual const std::string &message(void) const { + return m_message; } ExceptionType exceptionType(void) const { @@ -64,7 +64,7 @@ public: } private: - std::string m_whatMessage; + std::string m_message; ExceptionType m_exceptionType; }; diff --git a/src/common/exceptions/NoMemoryException.h b/src/common/exceptions/NoMemoryException.h index 2eca090..8c811f5 100644 --- a/src/common/exceptions/NoMemoryException.h +++ b/src/common/exceptions/NoMemoryException.h @@ -34,17 +34,17 @@ class NoMemoryException : public Exception { public: NoMemoryException() = delete; NoMemoryException(const std::string &errorMsg) { - m_whatMessage = "NoMemoryException with message <" + errorMsg + ">"; + m_message = "NoMemoryException with message <" + errorMsg + ">"; } virtual ~NoMemoryException() {}; - virtual const std::string message(void) const { - return m_whatMessage; + virtual const std::string &message(void) const { + return m_message; } private: - std::string m_whatMessage; + std::string m_message; }; } // namespace Cynara diff --git a/src/common/exceptions/NotImplementedException.h b/src/common/exceptions/NotImplementedException.h index 8ca3762..c29e616 100644 --- a/src/common/exceptions/NotImplementedException.h +++ b/src/common/exceptions/NotImplementedException.h @@ -31,12 +31,15 @@ namespace Cynara { class NotImplementedException : public Exception { public: - NotImplementedException() = default; + NotImplementedException() :m_message("NotImplementedException") {} virtual ~NotImplementedException() {}; - virtual const std::string message(void) const { - return "NotImplementedException"; + virtual const std::string &message(void) const { + return m_message; } + +private: + std::string m_message; }; } /* namespace Cynara */ diff --git a/src/common/exceptions/NullPointerException.h b/src/common/exceptions/NullPointerException.h index e735555..9336332 100644 --- a/src/common/exceptions/NullPointerException.h +++ b/src/common/exceptions/NullPointerException.h @@ -34,19 +34,17 @@ class NullPointerException : public Exception { public: NullPointerException() = delete; NullPointerException(const char *varName) { - m_whatMsg = std::string("unexpected null value in variable <") - + std::string(varName) - + std::string(">"); + m_message = "unexpected null value in variable <" + std::string(varName) + ">"; } virtual ~NullPointerException() {}; - virtual const std::string message(void) const { - return m_whatMsg; + virtual const std::string &message(void) const { + return m_message; } private: - std::string m_whatMsg; + std::string m_message; }; } // namespace Cynara diff --git a/src/common/exceptions/OutOfDataException.h b/src/common/exceptions/OutOfDataException.h index 6420819..776d2f4 100644 --- a/src/common/exceptions/OutOfDataException.h +++ b/src/common/exceptions/OutOfDataException.h @@ -35,20 +35,18 @@ class OutOfDataException : public Exception { public: OutOfDataException() = delete; OutOfDataException(size_t dataRange, size_t accessTry) { - std::ostringstream stream; - stream << "trying access [" << accessTry << "]"; - stream << " which exceeds data range [" << dataRange << "]"; - m_whatMsg = stream.str(); + m_message = "trying access [" + std::to_string(accessTry) + "]" + + " which exceeds data range [" + std::to_string(dataRange) + "]"; } virtual ~OutOfDataException() {}; - virtual const std::string message(void) const { - return m_whatMsg; + virtual const std::string &message(void) const { + return m_message; } private: - std::string m_whatMsg; + std::string m_message; }; } // namespace Cynara diff --git a/src/common/exceptions/PluginErrorException.h b/src/common/exceptions/PluginErrorException.h index a29eab5..1a6c7eb 100644 --- a/src/common/exceptions/PluginErrorException.h +++ b/src/common/exceptions/PluginErrorException.h @@ -35,7 +35,7 @@ public: "privilege <" + key.privilege().toString() + ">"; } - const std::string message(void) const { + const std::string &message(void) const { return m_message; } diff --git a/src/common/exceptions/PluginNotFoundException.h b/src/common/exceptions/PluginNotFoundException.h index 4492a53..010f2f5 100644 --- a/src/common/exceptions/PluginNotFoundException.h +++ b/src/common/exceptions/PluginNotFoundException.h @@ -35,21 +35,19 @@ class PluginNotFoundException : public Exception { public: PluginNotFoundException() = delete; PluginNotFoundException(const PolicyResult &result) { - std::ostringstream stream; - stream << "No proper plugin found to interprete PolicyResult {type = [" - << result.policyType() << "], metadata = <" - << result.metadata().substr(0, 20) << ">}"; - m_whatMessage = stream.str(); + m_message = "No proper plugin found to interprete PolicyResult {type = [" + + std::to_string(result.policyType()) + "], metadata = <" + + result.metadata().substr(0, 20) + ">}"; } virtual ~PluginNotFoundException() {}; - virtual const std::string message(void) const { - return m_whatMessage; + virtual const std::string &message(void) const { + return m_message; } private: - std::string m_whatMessage; + std::string m_message; }; } // namespace Cynara diff --git a/src/common/exceptions/UnexpectedErrorException.h b/src/common/exceptions/UnexpectedErrorException.h index 3080c0f..4e0261d 100644 --- a/src/common/exceptions/UnexpectedErrorException.h +++ b/src/common/exceptions/UnexpectedErrorException.h @@ -34,26 +34,21 @@ class UnexpectedErrorException : public Exception { public: UnexpectedErrorException() = delete; UnexpectedErrorException(int errorCode, const char *errorMsg) { - std::ostringstream stream; - stream << "UnexpectedErrorException with errorCode =[" << errorCode << "] and message <"; - stream << errorMsg << ">"; - m_whatMessage = stream.str(); + m_message = "UnexpectedErrorException with errorCode =[" + std::to_string(errorCode) + + "] and message <" + errorMsg + ">"; } UnexpectedErrorException(const char *errorMsg) { - std::ostringstream stream; - stream << "UnexpectedErrorException with message <"; - stream << errorMsg << ">"; - m_whatMessage = stream.str(); + m_message = "UnexpectedErrorException with message <" + std::string(errorMsg) + ">"; } virtual ~UnexpectedErrorException() {}; - virtual const std::string message(void) const { - return m_whatMessage; + virtual const std::string &message(void) const { + return m_message; } private: - std::string m_whatMessage; + std::string m_message; }; } // namespace Cynara -- 2.7.4 From d3bdd0f9b37d8050b6b348294d353b7981f6f9c5 Mon Sep 17 00:00:00 2001 From: Zofia Abramowska Date: Tue, 18 Nov 2014 17:04:33 +0100 Subject: [PATCH 16/16] Add invalidation mechanism for plugins Every time the cynara storage is changed all data stored in service and client plugins should be invalidated. Change-Id: I7537aa8a6d3ea28efed0f3e0f986ae51d7f9d344 --- src/client-common/cache/CapacityCache.cpp | 4 ++++ src/client-common/plugins/NaiveInterpreter.h | 2 ++ src/common/plugin/ExternalPluginInterface.h | 7 +++++++ src/common/plugin/PluginManager.cpp | 6 ++++++ src/common/plugin/PluginManager.h | 1 + src/service/logic/Logic.cpp | 1 + 6 files changed, 21 insertions(+) diff --git a/src/client-common/cache/CapacityCache.cpp b/src/client-common/cache/CapacityCache.cpp index 3174744..25ae6ad 100644 --- a/src/client-common/cache/CapacityCache.cpp +++ b/src/client-common/cache/CapacityCache.cpp @@ -87,6 +87,10 @@ int CapacityCache::get(const ClientSession &session, const PolicyKey &key) { void CapacityCache::clear(void) { m_keyUsage.clear(); m_keyValue.clear(); + m_pluginManager.invalidateAll(); + for (auto &plugin : m_plugins) { + plugin.second->invalidate(); + } } std::string CapacityCache::keyToString(const PolicyKey &key) { diff --git a/src/client-common/plugins/NaiveInterpreter.h b/src/client-common/plugins/NaiveInterpreter.h index 8099362..059554d 100644 --- a/src/client-common/plugins/NaiveInterpreter.h +++ b/src/client-common/plugins/NaiveInterpreter.h @@ -48,6 +48,8 @@ public: const std::vector &getSupportedPolicyTypes(void) { return s_supportedTypes; } + + void invalidate(void) {} private: static const std::vector s_supportedTypes; }; diff --git a/src/common/plugin/ExternalPluginInterface.h b/src/common/plugin/ExternalPluginInterface.h index bf3c7fe..ddd8363 100644 --- a/src/common/plugin/ExternalPluginInterface.h +++ b/src/common/plugin/ExternalPluginInterface.h @@ -52,6 +52,13 @@ public: * Policy type supported by plugin. */ virtual const std::vector &getSupportedPolicyTypes(void) = 0; + + /** + * Informs, that every data stored based on previously given input + * should be invalidated. + */ + virtual void invalidate(void) = 0; + virtual ~ExternalPluginInterface() {} }; diff --git a/src/common/plugin/PluginManager.cpp b/src/common/plugin/PluginManager.cpp index 8062683..c8a38c5 100644 --- a/src/common/plugin/PluginManager.cpp +++ b/src/common/plugin/PluginManager.cpp @@ -65,6 +65,12 @@ ExternalPluginPtr PluginManager::getPlugin(PolicyType pType) { return m_plugins[pType]; } +void PluginManager::invalidateAll(void) { + for (auto &plugin : m_plugins) { + plugin.second->invalidate(); + } +} + void PluginManager::loadPlugins(void) { struct dirent **nameList = NULL; int fileAmount = scandir(m_dir.c_str(), &nameList, pluginFilter, alphasort); diff --git a/src/common/plugin/PluginManager.h b/src/common/plugin/PluginManager.h index c2372e6..8de33ae 100644 --- a/src/common/plugin/PluginManager.h +++ b/src/common/plugin/PluginManager.h @@ -38,6 +38,7 @@ class PluginManager { public: PluginManager(const std::string &pluginDir); ExternalPluginPtr getPlugin(PolicyType pType); + void invalidateAll(void); ~PluginManager(); private: diff --git a/src/service/logic/Logic.cpp b/src/service/logic/Logic.cpp index 8f51af5..684eac3 100644 --- a/src/service/logic/Logic.cpp +++ b/src/service/logic/Logic.cpp @@ -324,6 +324,7 @@ void Logic::contextClosed(RequestContextPtr context) { void Logic::onPoliciesChanged(void) { m_storage->save(); m_socketManager->disconnectAllClients(); + m_pluginManager->invalidateAll(); //todo remove all saved contexts (if there will be any saved contexts) } -- 2.7.4