database: Remove new_oid from database adapter 46/167446/1
authorPaweł Szewczyk <p.szewczyk@samsung.com>
Wed, 17 Jan 2018 14:38:19 +0000 (15:38 +0100)
committerPaweł Szewczyk <p.szewczyk@samsung.com>
Wed, 17 Jan 2018 14:38:19 +0000 (15:38 +0100)
Instead of separate mechanism for generating OIDs, we delegate this
task to database_store function.

This removes the requirement to have id field present in stored objects. This
change is essential for database adapters internal handling of objects
IDs, as they are still required to be included in results of queries.

Change-Id: I56478e0ebb2992f46712e99f311ebbf5827de862
Signed-off-by: Paweł Szewczyk <p.szewczyk@samsung.com>
src/core/database.c
src/core/database.h
src/core/event_processor.c
src/database/database_nop.c
src/database/ejdb.c
tests/unit/test_dbadapter.c

index cab91170bb7ddfe759fb7886a8ee272a196ddb2d..cb127c99c390d30234c97047479b1587233dcd4c 100644 (file)
@@ -62,14 +62,6 @@ int database_load(struct faultd_object *query, struct faultd_object *hints,
        return database_adapter->load(database_adapter, query, hints, result, nr);
 }
 
-int database_new_oid(faultd_oid_t *oid)
-{
-       if (!database_adapter)
-               return -ENOSYS;
-
-       return database_adapter->new_oid(database_adapter, oid);
-}
-
 int database_get_well_known_oid(const char *name, faultd_oid_t *oid)
 {
        if (!database_adapter)
index 53a6ea4faf43a8a85f7d3fd39d0f12dd42d78366..85c4a2bcf23b137257264eea6e1f9a3f65d1b19c 100644 (file)
@@ -30,6 +30,9 @@ struct faultd_database_adapter {
        char *name;
        const char *id_key;
 
+       /**
+        * @param[out] oid Will be filled with newly created oid
+        */
        int (*store)(struct faultd_database_adapter *adapter,
                                 struct faultd_object *obj, faultd_oid_t *oid);
 
@@ -40,8 +43,6 @@ struct faultd_database_adapter {
                                struct faultd_object *query, struct faultd_object *hints,
                                struct faultd_object *result, uint32_t *nr);
 
-       int (*new_oid)(struct faultd_database_adapter *adapter, faultd_oid_t *oid);
-
        int (*get_well_known_oid)(const char *name, faultd_oid_t *oid);
 
        bool (*is_oid_valid)(faultd_oid_t *oid);
@@ -58,7 +59,6 @@ int database_store(struct faultd_object *obj, faultd_oid_t *oid);
 int database_get_by_oid(faultd_oid_t *oid, struct faultd_object *result);
 int database_load(struct faultd_object *query, struct faultd_object *hints,
                                  struct faultd_object *result, uint32_t *nr);
-int database_new_oid(faultd_oid_t *oid);
 int database_get_well_known_oid(const char *name, faultd_oid_t *oid);
 bool database_is_oid_valid(faultd_oid_t *oid);
 const char *database_get_id_key(void);
index 9421200925d962962534f1597fb7ac7882db3d6a..fa9845b217d9f6f7450b05e6792b07815dd5206c 100644 (file)
@@ -144,13 +144,6 @@ int event_processor_report_event(struct faultd_event *ev)
        int ret;
 
        faultd_object_new(&obj);
-       ret = database_new_oid(&oid);
-       if (ret < 0) {
-               log_warning_errno(ret, "Database could not create new OID: %m");
-               goto unref_obj;
-       }
-
-       faultd_object_append_oid(obj, database_get_id_key(), &oid);
        faultd_event_serialize(ev, obj);
 
        ret = database_store(obj, &ev->oid);
index f088533503411bc89717a78c3cf1e889bc09e9e3..1c9c94c232c2c806f2298353fb1a47ac21e90842 100644 (file)
@@ -56,12 +56,6 @@ static int nop_load(struct faultd_database_adapter *adapter,
        return 0;
 }
 
-static int nop_new_oid(faultd_oid_t *oid)
-{
-       strncpy(oid->nop, NOP_DEFAULT_OID, OID_NOP_SIZE);
-       return 0;
-}
-
 static int nop_store(struct faultd_database_adapter *adapter,
                                         struct faultd_object *obj, faultd_oid_t *oid)
 {
@@ -69,8 +63,7 @@ static int nop_store(struct faultd_database_adapter *adapter,
 
        ret = faultd_object_get_oid(obj, NOP_ID_KEY_NAME, oid);
        if (ret == -ENOENT) {
-               nop_new_oid(oid);
-               ret = 0;
+               ret = strncpy(oid->nop, NOP_DEFAULT_OID, OID_NOP_SIZE);
        }
 
        return ret;
@@ -79,7 +72,7 @@ static int nop_store(struct faultd_database_adapter *adapter,
 
 static int nop_get_well_known_oid(const char *name, faultd_oid_t *oid)
 {
-       return nop_new_oid(oid);
+       return strncpy(oid->nop, NOP_DEFAULT_OID, OID_NOP_SIZE);
 }
 
 static bool nop_is_oid_valid(faultd_oid_t *oid)
@@ -105,7 +98,6 @@ static struct nop_adapter nop_adapter = {
                .store = nop_store,
                .get_by_oid = nop_get_by_oid,
                .load = nop_load,
-               .new_oid = nop_new_oid,
                .get_well_known_oid = nop_get_well_known_oid,
                .is_oid_valid = nop_is_oid_valid,
                .get_event = nop_get_event,
index e2a909e8a95588b364a3557f6a72976e0c4426bc..4771e1a55275c4a5911404fc4384dc9854ad5523 100644 (file)
@@ -411,19 +411,6 @@ finish:
        return ret;
 }
 
-static int ejdb_new_oid(struct faultd_database_adapter *adapter, faultd_oid_t *oid)
-{
-       sd_id128_t uuid;
-
-       assert(oid != NULL);
-
-
-       memset(oid, 0, sizeof(*oid));
-       sd_id128_randomize(&uuid);
-       memcpy(&oid->bson, uuid.bytes, sizeof(*oid));
-       return 0;
-}
-
 static int ejdb_get_well_known_oid(const char *name, faultd_oid_t *oid)
 {
        int i;
@@ -488,7 +475,6 @@ static struct ejdb_adapter ejdb_adapter = {
                .store = ejdb_store,
                .get_by_oid = ejdb_get_by_oid,
                .load = ejdb_load,
-               .new_oid = ejdb_new_oid,
                .get_well_known_oid = ejdb_get_well_known_oid,
                .is_oid_valid = ejdb_is_oid_valid,
                .get_event = ejdb_get_event,
index 3a66a068072454f23c5410adcfd81006828d3e68..d8104b294270a1ef14437764009235af8db8f740 100644 (file)
@@ -58,11 +58,6 @@ static int testdb_load(struct faultd_database_adapter *adapter,
        return 0;
 }
 
-static int testdb_new_oid(struct faultd_database_adapter *adapter, faultd_oid_t *oid)
-{
-       return 0;
-}
-
 static bool testdb_is_oid_valid(faultd_oid_t *oid)
 {
        return true;
@@ -93,7 +88,6 @@ static struct testdb_adapter testdb_adapter = {
                .store = testdb_store,
                .get_by_oid = testdb_get_by_oid,
                .load = testdb_load,
-               .new_oid = testdb_new_oid,
                .is_oid_valid = testdb_is_oid_valid,
                .get_event = testdb_get_event,
        }