Lukasz Wojciechowski [Tue, 3 Mar 2015 13:26:11 +0000 (14:26 +0100)]
Fix bug in receiving requests in libcynara-agent
Method AgentSocketClient::receiveResponseFromServer should hang
until it can return a request received from cynara service.
However a single read from socket can read more than one request.
Received requests are queued.
Code did not check if there is a valid request read and queued
previously, but always tried to read from socket.
Fix changes order - so now code first checks queue and only in case,
when there is no valid request waiting a socket is read.
Change-Id: I845cd677700e516f252a8958b97ee8facb82170f
Zofia Abramowska [Wed, 25 Feb 2015 17:38:10 +0000 (18:38 +0100)]
Add implementation of simple asynch check
Add implementation in api and logic layers.
Protocol layer is shared with synchronous client.
Change-Id: Ic8ade619756cb7e0893e3da25a5452e1bf3b0994
Zofia Abramowska [Tue, 24 Feb 2015 19:29:29 +0000 (20:29 +0100)]
Add description of simple check request in asynch API
Change-Id: I63e3da83cb2cc8284b3c56ce52f88a85b6feac90
Aleksander Zdyb [Mon, 2 Mar 2015 11:30:03 +0000 (12:30 +0100)]
Link cynara-creds-commons with cynara-common
This is needed because cynara-creds-commons use logging.
Change-Id: If9575313081b9a252d5f711f11f396cdd8eeebd3
Aleksander Zdyb [Thu, 15 Jan 2015 10:27:42 +0000 (11:27 +0100)]
Add tests utilizing short command-line options
The tests are automagically generated from their
longer sisters' bodies.
Change-Id: I1e50314ddee74aaaba42dc29a04c26f237128996
Pawel Wieczorek [Tue, 3 Mar 2015 11:36:13 +0000 (12:36 +0100)]
Handle database corruption
Loading database from storage is now moved to logic layer.
InMemoryStorageBackend throws DatabaseCorruptedException to trigger
corrupted state toggle when database corruption is detected.
Tests which involved database to enter corrupted state were updated.
Change-Id: I0df8c38322b4478abb8c6d18c0805f97cfa45161
Pawel Wieczorek [Tue, 3 Mar 2015 11:35:48 +0000 (12:35 +0100)]
Handle information about database corruption
DatabaseCorruptedException will be thrown to inform about database
corruption. This may be handled directly (OfflineLogic) or through
responses returned from service logic (OnlineLogic).
In both cases proper error code should be returned:
CYNARA_API_DATABASE_CORRUPTED (introduced in this patch).
Change-Id: Idbafcf241c6689dadd3c5a7f25adc4629ea7cffd
Pawel Wieczorek [Wed, 4 Feb 2015 14:05:30 +0000 (15:05 +0100)]
Prepare service for database corruption handling
When database corruption is detected, no administrative actions are
allowed and all responses to check requests are DENY. Administrative API
has to be informed about detected corruption. This patch modifies
protocol so that this information is passed.
Unit tests are also adjusted to the protocol changes this patch
introduces.
Change-Id: If3ab5d6ca1671167890956b986a4768cc828f3f5
Pawel Wieczorek [Thu, 15 Jan 2015 09:53:18 +0000 (10:53 +0100)]
Adjust InMemoryStorageBackend to ChecksumStream
Now InMemoryStorageBackend uses ChecksumStream instead of std::ofstream.
New member function dumpDatabase() was introduced in order to destruct
database index stream before calling integrity mechanism.
Change-Id: I5ea943e1ec21f02cea97699993ddbd0f3eeb0a62
Pawel Wieczorek [Tue, 23 Dec 2014 16:18:16 +0000 (17:18 +0100)]
Adjust InMemoryStorageBackend to ChecksumValidator
InMemoryStorageBackend uses ChecksumValidator as a checksum loader and
comparator. This patch also includes files needed by storage unit tests
to work properly.
Change-Id: I541975351275bd6a30e7cf627697c9657161312f
Pawel Wieczorek [Thu, 15 Jan 2015 07:19:15 +0000 (08:19 +0100)]
Introduce ChecksumStream
ChecksumStream will replace std::ofstream for saving database contents
in storage. This way data will be not only written to the files, but
also its checksums will be computed and stored in given stream (database
index equivalent for storing checksums).
Checksum computing is performed during stream destruction in order to be
sure that all necessary data was already collected.
Change-Id: I4a9ff2e29361f337cacd790d77364feca854a706
Pawel Wieczorek [Mon, 12 Jan 2015 14:01:54 +0000 (15:01 +0100)]
Make StorageSerializer a template class
This patch modifies StorageSerializer so that it will be able to use
other streams than std::ostream and its derivatives. Within current
class hierarchy custom output streams with overloaded insertion operator
(operator<<) cannot be used, as it is non-virtual in std::ostream.
Change-Id: I3e713329c55aacfbb8daa23a5c4579d4c5db9f52
Pawel Wieczorek [Tue, 27 Jan 2015 10:47:19 +0000 (11:47 +0100)]
Add tests for ChecksumValidator
Add tests checking if ChecksumValidator properly:
* generates checksums,
* loads them or rejects corrupted records,
* supports backup files.
Change-Id: I2e4222283cc0676490134819561824df6661034f
Pawel Wieczorek [Tue, 23 Dec 2014 13:53:59 +0000 (14:53 +0100)]
Introduce ChecksumValidator
ChecksumValidator computes checksums for every file listed in checksum
index equivalent using crypt(3). As a result, base64-like (custom
alphabet) encoded strings are produced and compared with last known
corresponding digest. Its 4-character prefix indicates used algorithm.
Class will be later used as an integrity mechanism extension.
Change-Id: Ibaba636bae30c747e8eac5561e9b130d4398518e
Pawel Wieczorek [Thu, 26 Feb 2015 13:39:39 +0000 (14:39 +0100)]
Fix basename() usage in ChecksumGenerator
Contents of a string passed to basename() as an argument may be modified
(it depends on implementation). In order not to perform unexpected
changes, duplicate of given string is passed to basename().
Change-Id: Ib783629160f9528a6054dd0f78b9ebd5e6870fb6
Pawel Wieczorek [Mon, 22 Dec 2014 15:18:41 +0000 (16:18 +0100)]
Modify RecordCorruptedException class hierarchy
So far there was only one type of record Cynara could read from its
database. If any corruption was detected, BucketRecordCorruptedException
was thrown.
Now database will contain information about not only buckets and
policies, but also some metadata for them (in this case - checksums).
Need for exception superclass for handling corrupted records emerged.
Patch modifies exception class hierarchy and adds new exception type:
ChecksumRecordCorruptedException.
Change-Id: I3af6bd20b57e17ec31d766f138595920c7a413bd
Pawel Wieczorek [Fri, 27 Feb 2015 09:50:52 +0000 (10:50 +0100)]
Remove unwanted pointers (InMemoryStorageBackend)
Using pointers to helper classes (Integrity and, in future,
ChecksumValidator) is unnecessary and undesired. However, this forces
removal of InMemoryStorageBackend default constructor, as it cannot
initialize its helpers with valid arguments.
This patch also adjusts tests to the new constructor set and removes no
longer used typedef.
Change-Id: If0a41a75c16be6d55bdf3841ddb5190c388968af
Pawel Wieczorek [Fri, 5 Dec 2014 14:26:24 +0000 (15:26 +0100)]
Extend ignored files list in integrity mechanism
Integrity mechanism will not remove file containing checksums even
though it is not listed in database index.
Change-Id: I1e587ecdad5abff47d78362394cc0ecdb1ecd4c4
Pawel Wieczorek [Tue, 24 Feb 2015 14:58:42 +0000 (15:58 +0100)]
Add tests for migration tool
Change-Id: I2bdd88cd07646896b75ea36e7776b7fa1a449bd8
Pawel Wieczorek [Fri, 16 Jan 2015 10:16:56 +0000 (11:16 +0100)]
Add support for checksums to migration tool
This patch also adds downgrade option to the migration tool.
Change-Id: If6a443172d52a78e8bfbf732e7eca38cb37f886f
Pawel Wieczorek [Mon, 9 Feb 2015 14:37:57 +0000 (15:37 +0100)]
Add comparator for Semantic Versioning
Change-Id: I73b273465995b6246d20179395bdff1b4d1941f2
Pawel Wieczorek [Wed, 11 Feb 2015 15:00:12 +0000 (16:00 +0100)]
Refactorize migration tool
This refactoring run deals with:
* unintuitive naming,
* late input validation,
* passing only parts of input during option parsing,
* unconsistent comments.
Additionally, this patch:
* adds possiblity to install database in a custom directory,
* removes possibility of removing whole Cynara's state directory during
deinstallation - now only database is removed by migration tool.
Change-Id: I59e429d93812861ca9c32f201ed0056f753cbc25
Pawel Wieczorek [Wed, 18 Feb 2015 12:23:54 +0000 (13:23 +0100)]
Add tests for ChecksumGenerator (chsgen)
This patch adds tests for calling "cynara-db-chsgen" executable.
Following call scenarios are checked:
* no filename,
* create checksum records for primary database contents,
* create checksum records for backup database contents.
Change-Id: I398f6865610598ab558b22a9cf3cdc620dc057b8
Pawel Wieczorek [Fri, 16 Jan 2015 14:38:05 +0000 (15:38 +0100)]
Introduce ChecksumGenerator (chsgen)
A commandline-tool for computing checksums for Cynara's database
contents.
Change-Id: Iaddf799b84b82562734275991561ea0091852f2d
Pawel Wieczorek [Wed, 18 Feb 2015 14:36:33 +0000 (15:36 +0100)]
Fix InMemoryStorageBackend unit tests
One of InMemoryStorageBackend unit tests - load_from_backup from
InMemeoryStorageBackendFixture group - gave inconclusive results. After
first execution of "cynara-tests" some contents of CYNARA_TESTS_DIR/db6
were removed. It was caused by insufficient mocking in
FakeInMemoryStorageBackend class.
This patch removes performing changes on filesystem from this test. It
also adjusts Integrity class to new PathConfig::StoragePath contents in
order to simplify its usage.
Change-Id: Ic5206ad337269996615ce36d60105b9c4ac32314
Pawel Wieczorek [Mon, 12 Jan 2015 12:45:21 +0000 (13:45 +0100)]
Move bucket separators to PathConfig::StoragePath
This patch removes both bucket separators - for fields as well as for
records - from StorageSerializer. To this point they could be accessed
using provided static member functions. This is no longer possible, as
StorageSerializer has to be rewritten using templates.
Change-Id: Ib010bd0b125a1a93da9983d9bdd7b8f75cbbc191
Pawel Wieczorek [Thu, 4 Dec 2014 10:45:40 +0000 (11:45 +0100)]
Move storage consts to PatchConfig::StoragePath
Put all default values of Cynara storage consts into config namespace.
Change-Id: If0bfaca58708b575bfada41448f000272e54182e
Pawel Wieczorek [Wed, 12 Nov 2014 17:02:34 +0000 (18:02 +0100)]
Move migration tool to its parent directory
This patch drops creation of additional directory "cynara" in /usr/sbin.
According to FHS, there must not be placed any directories. Migration
scripts will get common prefix ("cynara-db-") and will be placed there
directly.
What is more, regardless of its actual contents, no executable in
/usr/sbin has file extension. This patch removes extension from main
migration tool script.
Change-Id: I4f5ccbf1e86815d4b4aa4e785dc01d8188d90fd5
Pawel Wieczorek [Wed, 4 Feb 2015 11:11:19 +0000 (12:11 +0100)]
Modify version check during package upgrade
Cynara has to determine its currently installed version during package
upgrade. Doing RPM queries from inside install-time scripts isn't
recommended. Necessary information is obtained from Cynara's version
information.
However, not all Cynara releases provided mechanism of reporting its
version. In case of lack of it, following fallback mechanism is
provided: version information is extracted from a name of a file that
Cynara depends on, which currently is
"<libdir>/libcynara-commons.so.<version>".
Change-Id: I5c9a2abf123d91a32513980e3f9c24112d59547c
Pawel Wieczorek [Tue, 17 Feb 2015 09:28:02 +0000 (10:28 +0100)]
Add tests for version reporting
This patch adds tests for calling main Cynara executable with additional
options. Following call scenarios are checked (both long and short
options):
* print version,
* print help,
* unknown option.
Change-Id: Ibab5d7a081fd1da8b98a59c9a242fd17725cd400
Pawel Wieczorek [Wed, 21 Jan 2015 13:12:42 +0000 (14:12 +0100)]
Add version information to the main executable
In order to comply with GNU Coding Standards for command-line
interfaces, Cynara has to report its current version.
Cynara now responds to two command-line options:
* -V, --version prints installed version of Cynara,
* -h, --help prints help message.
Change-Id: I386a09d00f1542cbff8db6a4b9eb2ac9a7fab9fb
Pawel Wieczorek [Tue, 17 Feb 2015 15:29:15 +0000 (16:29 +0100)]
Add quiet fixture for commandline tests
This patch introduces fixture which suppresses printing output to
std::cout or std::cerr. Data is redirected to temporary buffers and
accessible from there.
Change-Id: Ia1b8b240be95d1d672a56cd9eaf6e13320bb375b
Pawel Wieczorek [Mon, 16 Feb 2015 16:14:12 +0000 (17:14 +0100)]
Make commandline tests fixture more generic
CyadCommandlineTest fixture can be reused for tests of Cynara's
commandline interface (and others, if necessary). Its functionality is
now moved to BaseCommandlineTest fixture.
Commons for tests will be placed in "test-common", because name "common"
was already taken - it's a place for storing tests of Cynara's commons.
Change-Id: I57a5c894ed03ee349a30dae922ec669003eaac5c
Aleksander Zdyb [Mon, 12 Jan 2015 12:01:24 +0000 (13:01 +0100)]
Add performance tests for InMemoryStorageBackend
Methods of InMemoryStorageBackend::hasBucket()
and InMemoryStorageBackend::createBucket() are checked
against possible performance issues.
Change-Id: I0f65b77cab6ae88f62a495f0e34c38e391c61773
Adam Malinowski [Thu, 12 Feb 2015 14:39:53 +0000 (15:39 +0100)]
Fix (de)serializing sizes of strings & containers
Additionally fix (de)serializing bool as its size is implementation
specific and remove unused code.
Change-Id: I5389b2191b827a2da5dfe0d967064b10ca9d4a73
Adam Malinowski [Fri, 6 Feb 2015 08:58:02 +0000 (09:58 +0100)]
Introduce logging of privilege checks (AUDIT)
Added functionality saves privilege checking responses in systemd
journal. Such entries may be filtered using CYNARA_LOG_TYPE=AUDIT
field. Logging depends on configuration based on environment variable
CYNARA_AUDIT_LEVEL which may take one of following values:
* NONE - nothing will be saved
* DENY - only DENY responses will be saved (DEFAULT behaviour)
* ALLOW - only ALLOW respones will be saved
* OTHER - other policy types e.g. plugin specific
* ALL - all above responses will be saved
Change-Id: Iaa46f3c579660784ffe5edc0c2120b822fb0061a
Aleksander Zdyb [Mon, 9 Feb 2015 12:30:26 +0000 (13:30 +0100)]
Support human-readable policy type names
Policy type is no longer parsed in CyadCommandlineParser,
but rather forwarded to CommandsDispatcher in raw form.
Apparent small feature, but required changes across many
layers. Refactoring of CyadCommandlineDispatcherTest was
needed in order to apply fixes to tests.
Change-Id: I9528554afdb5c0747c3f9ef550bf3362cd8c8084
Aleksander Zdyb [Mon, 2 Feb 2015 13:11:47 +0000 (14:11 +0100)]
Print error messages to stderr in Cyad
Every dispatched command checks return value from Cynara API
and prints possible error message using cynara_strerror() function.
Call to cynara_strerror() is not of course subject to above
check & print routine.
Change-Id: I008d1fbd592061646478b47be8ae53bbc408cb1b
Aleksander Zdyb [Thu, 22 Jan 2015 10:25:00 +0000 (11:25 +0100)]
Add API description of cynara_strerror()
Introduce new API call of cynara_strerror() used to obtain error
message from error number.
Change-Id: Ibd5b5a2af700a04fe8b3bfea8fde715b17db3a61
Zofia Abramowska [Thu, 12 Feb 2015 16:39:21 +0000 (17:39 +0100)]
Fix pluginCheck in service logic
Change-Id: I835c471b38756a9d3cee1ddfe4c4b90591744aa4
Zofia Abramowska [Tue, 10 Feb 2015 15:53:39 +0000 (16:53 +0100)]
Add client protocol side implementation of simple check
Change-Id: I379bf96ac664827d89379b1df36d903864749a4b
Zofia Abramowska [Mon, 9 Feb 2015 15:14:34 +0000 (16:14 +0100)]
Add logic side implementation of simple check
Add implementation of client and service logic side implementation
of simple check API and request and response handling.
Change-Id: Ie59fb86e20fae383196025580b164c15e855bc62
Zofia Abramowska [Tue, 10 Feb 2015 15:21:42 +0000 (16:21 +0100)]
Create request and response types for simple check client API call
Create SimpleCheckResponse and SimpleCheckRequest.
Change-Id: I75796fb035ac9dfd5ecbe1e8bfc68d37a55ba6f4
Zofia Abramowska [Tue, 3 Feb 2015 13:13:40 +0000 (14:13 +0100)]
Add new cynara_simple_check synchronous client API
New API description put in synchronous client header.
New return code added - CYNARA_API_ACCESS_NOT_RESOLVED.
Mockup function to Logic added.
Change-Id: I57968b3e17cf70c3b294af1faf8158e265ffe2b6
Zofia Abramowska [Tue, 3 Feb 2015 12:02:26 +0000 (13:02 +0100)]
Fix possible memory leaks in Logic initialization
Change for:
* client logic
* client-async logic
* admin logic
* agent logic
Change-Id: Ie2f4db0324652a24d1e4755a888fff4e713eac8c
Zofia Abramowska [Wed, 14 Jan 2015 13:06:07 +0000 (14:06 +0100)]
Add logic implementation of configuration
Add optional configuration parameter to client logic creation.
Change-Id: I66091d539b66803e069bcf7c6223017cc5e65e39
Zofia Abramowska [Wed, 14 Jan 2015 12:49:46 +0000 (13:49 +0100)]
Add api side implementation of configuration
Add implementation of cynara client (both async and sync) configuration
initialization, destruction and cache size option setting.
Change-Id: I34a81cb7c1578fc9a51944b73478ace3b623b9cc
Zofia Abramowska [Tue, 13 Jan 2015 14:28:46 +0000 (15:28 +0100)]
Add API descriptions of cynara-configuration calls
Introduce three new API calls specific for
cynara_configuration creation, destruction and cache size setting.
Change-Id: Id24175765ebff71b18bfdd4fd94c9a671c0035dc
Zofia Abramowska [Tue, 13 Jan 2015 14:24:17 +0000 (15:24 +0100)]
Add API descriptions of cynara-async-configuration calls
Introduce three new API calls specific for cynara_async_configuration
creation, destruction and cache size setting.
Change-Id: I51665a2885c6de3a49ebd30dcfc10a733707673b
Radoslaw Bartosiak [Wed, 21 Jan 2015 15:12:57 +0000 (16:12 +0100)]
Fix catching exceptions in socket helper functions
Cynara socket helpers functions could throw exceptions (GET_CRED
macro in cders-socket-inner.cpp used std::to_string()).
Fixed it with Cynara::tryCatch().
Change-Id: Ic0db847bc04e9817d1afa86310452147f9678431
Signed-off-by: Radoslaw Bartosiak <r.bartosiak@samsung.com>
Lukasz Wojciechowski [Fri, 16 Jan 2015 10:32:46 +0000 (11:32 +0100)]
Release 0.5.0
Change-Id: Iaf6d9ba8649a23477ba08dc50ccac2044ffa48b6
Lukasz Wojciechowski [Fri, 16 Jan 2015 12:21:46 +0000 (13:21 +0100)]
Fix missing predefined policies description in offline
Predefined policies description were returned only in online
admin mode. Offline admin mode returned just policy types
provided by plugins.
Now both offline and online mode return predefined and plugin
provided policy types.
Change-Id: I890062638a8d2d54dc67edd4a883cfccea5f3905
Aleksander Zdyb [Fri, 16 Jan 2015 09:50:55 +0000 (10:50 +0100)]
Implement --list-policies-descriptions option
Change-Id: I5be0664a33191863d7a38ab1b5e42004a77b912e
Aleksander Zdyb [Fri, 16 Jan 2015 09:06:12 +0000 (10:06 +0100)]
Implement --list-policies option in Cyad
Change-Id: Ib20721f04dc4c43ee92f5e279cdf764dbaf2cc2a
Aleksander Zdyb [Tue, 13 Jan 2015 08:17:04 +0000 (09:17 +0100)]
Refactorize command-line & friends
This refactoring run mostly deals with cumbersome
and redundant command-line options framework.
Change-Id: I62369d9faaf0414314e1ea5e450fac2eb7319534
Aleksander Zdyb [Mon, 5 Jan 2015 10:09:57 +0000 (11:09 +0100)]
Implement --check in Cyad
This option is used to do administrative checks
in Cynara's database.
Change-Id: I2900826610aa91d3a3c9cc042d59c7cd9f541547
Aleksander Zdyb [Mon, 5 Jan 2015 07:52:59 +0000 (08:52 +0100)]
Add -k, --bucket to help message
The option was missing in --set-policy (-s) documentation.
Change-Id: If66c2d068040cbf4d7875cc3cf3083decf6aeba0
Aleksander Zdyb [Fri, 2 Jan 2015 07:04:22 +0000 (08:04 +0100)]
Implement --erase option in Cyad
This option runs cynara_admin_erase() API function
to erase policies from Cynara's database.
Change-Id: I3659971657ef23fcd1c27850f56f32e57938aa6d
Aleksander Zdyb [Fri, 2 Jan 2015 07:46:09 +0000 (08:46 +0100)]
Introduce HumanReadableParser
A set of helper functions to parse human readable
values from command-line.
Change-Id: Ic2b8865f04f1f75afa66f3640f1eedcdff22c71d
Aleksander Zdyb [Fri, 2 Jan 2015 07:10:07 +0000 (08:10 +0100)]
Rename --policy to --type in Cyad
Option of --policy has been renamed to --type (-t)
to let --privilege have -p as short option (formerly -r).
Change-Id: Idaf2db21e33707e4472e962c2d9d6d695549dbdf
Lukasz Wojciechowski [Tue, 13 Jan 2015 19:38:08 +0000 (20:38 +0100)]
Verify PolicyType on service and offline client side
Verification of PolicyTypes was removed from libcynara-admin library.
Now it is added to Cynara service and cynara offline admin with full
plugin support. It means, that validation passes only for predefined
types or types provided by loaded cynara service plugins.
In case, the validation fails, new CodeResponse::Code::NO_POLICY_TYPE
value is returned from service to libcynara admin side and
CYNARA_API_INVALID_PARAM is returned from cynara_admin_set_policies()
or cynara_admin_set_bucket() functions.
Change-Id: Id1a85aafaa4feb31d8513e819c78736813a9ff38
Lukasz Wojciechowski [Tue, 13 Jan 2015 17:05:20 +0000 (18:05 +0100)]
Remove checking PolicyType in libcynara-admin
Two libcynara-admin API functions:
* cynara_admin_set_policies
* cynara_admin_set_bucket
have checked validity of PolicyType. Except for special values
(like NONE, BUCKET, DELETE) they accepted only ALLOW and DENY
policy types. No other policy types defined by plugins were able
to be set.
This patch removes described checks leaving only special values
handling. All other types (including ALLOW and DENY) are passed
to cynara service.
The only check that is done verifies if given policy type can
be casted into Cynara::PolicyType.
Change-Id: Iedb0434bd35d4085e977fe86d07ed33a1f89cdc7
Marcin Niesluchowski [Mon, 5 Jan 2015 11:22:21 +0000 (12:22 +0100)]
Fix bug keeping write and read queue on disconnect
Read and write binary queues are not cleared in asynchronous client
after disconnect happens. Add clearing function in connect() and
completeConnection() functions of SocketClientAsync class, when connection
state changes.
Change-Id: I18f5d13a1a21d0b99ebe456bfafd4487df9c1767
Lukasz Wojciechowski [Wed, 31 Dec 2014 01:21:48 +0000 (02:21 +0100)]
Bring back lost feature of loading client plugins
Patch "Remove loading plugins from PluginManager constructor"
removed loading plugins from PluginManager constructor.
Loading plugins was manually added to cynara service start procedure.
However PluginManager is used also in client libraries - that was
forgotten and is fixed in this patch.
Change-Id: I9bb93720fbfcf2275bff40699ea039c6ae1872dc
Lukasz Wojciechowski [Tue, 30 Dec 2014 18:22:46 +0000 (19:22 +0100)]
Remove never used offline-admin header
Change-Id: I22f12755352d230a2ae5eacf8f8040b93a0e7ead
Lukasz Wojciechowski [Tue, 30 Dec 2014 17:41:12 +0000 (18:41 +0100)]
Implement offline listing of policy descriptions
PluginManager instance is created when list of policy descriptions
is needed. Created object loads service plugins and creates required
list.
Change-Id: I9d7d5d31afb13f21c53545bd3ad8553c0a9a745b
Lukasz Wojciechowski [Tue, 30 Dec 2014 13:11:16 +0000 (14:11 +0100)]
Call acquireDatabase() in OfflineLogic API functions
Call of OfflineLogic::acquireDatabase() has been moved from
centralized point in Logic to every single call of OfflineLogic
API functions, because some functions does not require database.
So there is no need to load it.
Now database is loaded only in case, when it is needed.
Change-Id: I26131a257e85c79b97a96a748b4eb22ea96dd531
Lukasz Wojciechowski [Tue, 30 Dec 2014 12:27:55 +0000 (13:27 +0100)]
Remove loading plugins from PluginManager constructor
Loading plugins can be done also by offline API while executing
listing of available policy descriptions. That is why loading plugins
should be done only in case when database lock is aquired.
PluginManager::loadPlugin() has been changed to public and is
ran manually during cynara service startup.
Change-Id: Ie5b9276049bda08fb14d2a7620613afe5e0942f4
Adam Malinowski [Tue, 30 Dec 2014 11:21:00 +0000 (12:21 +0100)]
Make logs available in devel package
Header for logs is now installed for cynara related components
that want to use cynara logs e.g. plugins.
Change-Id: I174ce7ed4770cbf76511716e879885cffca32316
Adam Malinowski [Tue, 30 Dec 2014 11:04:39 +0000 (12:04 +0100)]
Adjust logs to C++ string stream
Now macros LOGx() accept:
* sprintf style messages e.g. LOGE("Error: [%d]", 69);
* C++ string stream e.g. LOGE("Error: [" << 69 << "]");
Change-Id: I9bbfd2dfd595c6f42f2bcba09f02d207da1c6062
Adam Malinowski [Mon, 29 Dec 2014 19:25:53 +0000 (20:25 +0100)]
Add missing include file in common install section
types/PolicyDescription.h was missing in common/CMakeLists.txt
install section.
Change-Id: Ia7afde0ef8723d680d4aaa9ba9dee7f3533bf828
Aleksander Zdyb [Sat, 20 Dec 2014 12:42:34 +0000 (13:42 +0100)]
Assemble all Cyad's components
Change-Id: I1a711cad7d5aba0508ef41f308cddcc7a0704b28
Aleksander Zdyb [Mon, 15 Dec 2014 12:58:31 +0000 (13:58 +0100)]
Implement --set-policy option in Cyad
Policies can be added or altered one by one or in bulk mode.
Option --bulk accepts file name as an argument.
The "-" value means standard input.
Change-Id: I479a29fd5ff43463f6f78d7865468bd84e1642ee
Aleksander Zdyb [Mon, 15 Dec 2014 12:49:46 +0000 (13:49 +0100)]
Implement --set-bucket and --delete-bucket in Cyad
Change-Id: I61065bb8364d8cb33821c8a7be20a4b756522b43
Aleksander Zdyb [Mon, 15 Dec 2014 09:26:12 +0000 (10:26 +0100)]
Add CyadCommandlineParser
Only --help option is currently supported.
There is also errors handling implemented.
Change-Id: I81b9aae457c49518e42582653b8c29a84b4870ac
Aleksander Zdyb [Fri, 12 Dec 2014 13:25:08 +0000 (14:25 +0100)]
Support --bulk in --set-policy in Cyad
Change-Id: I3c6792fc1f5da1d5ce8c7ca5cca2bc7380154902
Aleksander Zdyb [Fri, 12 Dec 2014 12:53:25 +0000 (13:53 +0100)]
Add --set-policy option to Cyad
Change-Id: I62dedb73c9f486cc071d2f80d93721fd81a07d13
Aleksander Zdyb [Sat, 20 Dec 2014 12:05:23 +0000 (13:05 +0100)]
Add --set-bucket and --delete-bucket to Cyad
Change-Id: I54b8199b3daf59bf9a8f81222391e42980ba2f41
Aleksander Zdyb [Sat, 20 Dec 2014 11:49:27 +0000 (12:49 +0100)]
Introduce CommandsDispatcher
Change-Id: I220422f667c32c673e0b55b04d9faac39d840037
Aleksander Zdyb [Tue, 9 Dec 2014 13:17:49 +0000 (14:17 +0100)]
Introduce AdminPolicyParser::parse()
This function parses input stream and returns
a CynaraAdminPolicies collection.
It uses parsing functions from cynara-storage library.
Change-Id: I3615563a2a8184a5c39b88952af795abd8399748
Aleksander Zdyb [Sat, 6 Dec 2014 13:58:00 +0000 (14:58 +0100)]
Make BucketDeserializer::parseKey() public
This static function will be needed in Cyad.
Change-Id: Iccc28a9ea6754e23ba7878a07546d426af9e0c9a
Aleksander Zdyb [Tue, 9 Dec 2014 12:42:33 +0000 (13:42 +0100)]
Introduce DispatcherIO
BaseDispatcherIO provides interface for wrapping
and aggregating I/O streams. The wrapping is needed
mainly for testing purposes, but in near future will
be used for printing messages, errors, etc.
DispatcherIO is a target implementation, while
FakeDispatcherIO is a stub for testing.
Change-Id: I1ce231c3bbaf5f7f483358478cdf1eb5ff618589
Aleksander Zdyb [Tue, 9 Dec 2014 12:22:55 +0000 (13:22 +0100)]
Introduce CynaraAdminPolicies
This is a collection of cynara_admin_policy structs.
It helps to manage memory and creates a convenient
wrapper while still allowing to pass it to API calls.
Change-Id: I61e39dbab88cbbbef07a0bd5ace4967d20336b17
Aleksander Zdyb [Tue, 9 Dec 2014 11:37:44 +0000 (12:37 +0100)]
Introduce AdminApiWrapper
BaseAdminApiWrapper provides interface for wrapping
functions of cynara-admin API. The wrapping is needed
mainly for testing purposes.
AdminApiWrapper is a target implementation, while
FakeAdminApiWrapper is a mock for testing.
Change-Id: I0b4afb89d8b4bec62693cf070f2a5a90f1148b79
Aleksander Zdyb [Tue, 9 Dec 2014 11:23:37 +0000 (12:23 +0100)]
Introduce Cyad
A command-line tool for managing Cynara's database.
Change-Id: I3731f0c3166469c2e4e43dff9e4593adfc66106e
Adam Malinowski [Wed, 17 Dec 2014 18:34:38 +0000 (19:34 +0100)]
Fix searching plugin in CapacityCache::update()
Also put procedure finding plugin into method as it repeats twice.
Change-Id: Icd77e45f77637a7e52871aa8d2b2c9d8d4af925d
Adam Malinowski [Wed, 17 Dec 2014 18:19:20 +0000 (19:19 +0100)]
Add debug info in plugins loading mechanism
Change-Id: Ifebe1dcb8b985764b3cbcdbf9f3bb3d0462ad234
Adam Malinowski [Wed, 17 Dec 2014 16:45:08 +0000 (17:45 +0100)]
Make logs initialized in the very begining of libs
Change-Id: I44bffd736e29c59c9d0d929906e43816dcf927d2
Adam Malinowski [Tue, 9 Dec 2014 08:56:06 +0000 (09:56 +0100)]
Fix unregistering agents on contextClosed event
Also:
* fix agent talkers removing
* optimize check requests removing
Change-Id: I0f0251783f00a90a5e3004638b08878255251eb8
Lukasz Wojciechowski [Sun, 28 Dec 2014 00:38:33 +0000 (01:38 +0100)]
Add serialization tests for DescriptionList
Add tests checking serialization/deserialization of DescriptionListRequest
and DescriptionListResponse implementation in ProtocolAdmin.
Change-Id: Ic3579436f361cbf9a9d60393de733c800c52181d
Zofia Abramowska [Tue, 23 Dec 2014 12:51:36 +0000 (13:51 +0100)]
Implement plugin description listing in admin protocol layer
Change-Id: Id8de44b255234fec8a4bd85091283db2f00be205
Zofia Abramowska [Mon, 22 Dec 2014 17:03:21 +0000 (18:03 +0100)]
Implement plugin description listing in service logic
Change-Id: I426edc48d77768b2841fb96ee35eb6eb01cfae11
Zofia Abramowska [Mon, 22 Dec 2014 16:27:21 +0000 (17:27 +0100)]
Implement plugin description listing in admin logic
Change-Id: I82f82a7dc31cad4349c91ac61a36b70e00c2929a
Zofia Abramowska [Mon, 22 Dec 2014 15:40:16 +0000 (16:40 +0100)]
Redo admin logic template
Template askCynaraAndInterpreteCodeResponse replaced with more general
getResponse.
Change-Id: I3d4ba04ebc5fb279a4eefbe9657a627822c39fc2
Zofia Abramowska [Mon, 22 Dec 2014 12:19:15 +0000 (13:19 +0100)]
Add classes for plugin description listing request and response
DescritpionListRequest used for asking cynara for list of internal
and external plugin description.
DescriptionListResponse used for sending this list back to client.
Change-Id: I047747efcf69ecf7f15747e890ffe1b2b98132f1
Zofia Abramowska [Fri, 19 Dec 2014 09:52:22 +0000 (10:52 +0100)]
Add api side implementation of plugin descriptions listing
Add:
* description of api function cynara_admin_list_policies_descriptions
* implementation in admin-api
* utilities for creating null terminated array
Change-Id: I4b7d56757e22fab4cce81665f16ceef61f3a0e2c
Zofia Abramowska [Tue, 16 Dec 2014 15:48:58 +0000 (16:48 +0100)]
Add listing types of policies
Change-Id: Iab51f7ec232fb711ac6945be1ce71effa7e59ef1
Aleksander Zdyb [Tue, 23 Dec 2014 13:21:47 +0000 (14:21 +0100)]
Implement detection of online/offline mode in admin
Change-Id: I93a2af08266d7606491abf4f89bf16663c7d0e15
Aleksander Zdyb [Wed, 17 Dec 2014 09:24:11 +0000 (10:24 +0100)]
Rename admin's Logic to OnlineLogic
This is a preparation to implement OfflineLogic.
Change-Id: Ica6e7dfe12ac9bc921f77e2c5d08bc539373ed07
Aleksander Zdyb [Tue, 23 Dec 2014 13:11:15 +0000 (14:11 +0100)]
Inherit from Exception in FileLockAcquiringException
Change-Id: I40eb3f6b906f34261f8c6b6596e0afb503e41e7a