You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2015/11/03 16:09:42 UTC

[16/50] [abbrv] celix git commit: CELIX-278: deployment_admin: added capability to add tags, minor refactoring

CELIX-278: deployment_admin: added capability to add tags, minor refactoring


Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/a8942991
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/a8942991
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/a8942991

Branch: refs/heads/master
Commit: a89429917439c93fdd8fb0ae2598b8842e472c9a
Parents: 6c93851
Author: Bjoern Petri <bp...@apache.org>
Authored: Mon Oct 26 18:22:19 2015 +0100
Committer: Bjoern Petri <bp...@apache.org>
Committed: Mon Oct 26 18:22:19 2015 +0100

----------------------------------------------------------------------
 .../private/include/deployment_admin.h          |   4 +-
 deployment_admin/private/src/deployment_admin.c | 110 ++++++++++++-------
 .../private/src/deployment_admin_activator.c    |   2 +-
 .../private/src/deployment_package.c            |   2 +-
 deployment_admin/private/src/log.c              |   2 +-
 5 files changed, 79 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/a8942991/deployment_admin/private/include/deployment_admin.h
----------------------------------------------------------------------
diff --git a/deployment_admin/private/include/deployment_admin.h b/deployment_admin/private/include/deployment_admin.h
index f6244b2..a7e3a39 100644
--- a/deployment_admin/private/include/deployment_admin.h
+++ b/deployment_admin/private/include/deployment_admin.h
@@ -46,7 +46,9 @@ struct deployment_admin {
 };
 
 typedef enum {
-	DEPLOYMENT_ADMIN_AUDIT_EVENT__FRAMEWORK_STARTED = 1005
+	DEPLOYMENT_ADMIN_AUDIT_EVENT__FRAMEWORK_STARTED = 1005,
+	DEPLOYMENT_ADMIN_AUDIT_EVENT__TARGETPROPERTIES_SET = 4001
+
 } DEPLOYMENT_ADMIN_AUDIT_EVENT;
 
 celix_status_t deploymentAdmin_create(bundle_context_pt context, deployment_admin_pt *admin);

http://git-wip-us.apache.org/repos/asf/celix/blob/a8942991/deployment_admin/private/src/deployment_admin.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/deployment_admin.c b/deployment_admin/private/src/deployment_admin.c
index 7e936e4..eaf2468 100644
--- a/deployment_admin/private/src/deployment_admin.c
+++ b/deployment_admin/private/src/deployment_admin.c
@@ -59,6 +59,7 @@
 #define IDENTIFICATION_ID "deployment_admin_identification"
 #define DISCOVERY_URL "deployment_admin_url"
 #define DEPLOYMENT_CACHE_DIR "deployment_cache_dir"
+#define DEPLOYMENT_TAGS "deployment_tags"
 // "http://localhost:8080/deployment/"
 
 #define VERSIONS "/versions"
@@ -172,48 +173,86 @@ celix_status_t deploymentAdmin_destroy(deployment_admin_pt admin) {
 	return status;
 }
 
-static celix_status_t deploymentAdmin_updateAuditPool(deployment_admin_pt admin, DEPLOYMENT_ADMIN_AUDIT_EVENT auditEvent) {
-	celix_status_t status = CELIX_SUCCESS;
 
+static celix_status_t deploymentAdmin_performRequest(deployment_admin_pt admin, char* entry) {
+    celix_status_t status = CELIX_SUCCESS;
 
-	CURL *curl;
-	CURLcode res;
-	curl = curl_easy_init();
+    CURL *curl;
+    CURLcode res;
+    curl = curl_easy_init();
 
-	if (!curl) {
-		status = CELIX_BUNDLE_EXCEPTION;
+    if (!curl) {
+        status = CELIX_BUNDLE_EXCEPTION;
 
-		fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Error initializing curl.");
-	}
+        fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Error initializing curl.");
+    }
 
-	char url[strlen(admin->auditlogUrl)+6];
-	sprintf(url, "%s/send", admin->auditlogUrl);
-	char entry[512];
-	int entrySize = snprintf(entry, 512, "%s,%llu,%u,0,%i\n", admin->targetIdentification, admin->auditlogId, admin->aditlogSeqNr++, auditEvent);
-	if (entrySize >= 512) {
-		status = CELIX_BUNDLE_EXCEPTION;
-		fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Error, entry buffer is too small");
-	}
+    char url[strlen(admin->auditlogUrl)+6];
+    sprintf(url, "%s/send", admin->auditlogUrl);
 
-	if (status == CELIX_SUCCESS) {
-			curl_easy_setopt(curl, CURLOPT_URL, url);
-			curl_easy_setopt(curl, CURLOPT_POSTFIELDS, entry);
-			res = curl_easy_perform(curl);
+    if (status == CELIX_SUCCESS) {
+            curl_easy_setopt(curl, CURLOPT_URL, url);
+            curl_easy_setopt(curl, CURLOPT_POSTFIELDS, entry);
+            res = curl_easy_perform(curl);
 
-			if (res != CURLE_OK ) {
-				status = CELIX_BUNDLE_EXCEPTION;
-				fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Error sending auditlog, got curl error code %d", res);
-			}
-	}
+            if (res != CURLE_OK ) {
+                status = CELIX_BUNDLE_EXCEPTION;
+                fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Error sending auditlog, got curl error code %d", res);
+            }
+    }
 
-	return status;
+    return status;
 }
 
+static celix_status_t deploymentAdmin_auditEventTargetPropertiesSet(deployment_admin_pt admin) {
+    celix_status_t status = CELIX_SUCCESS;
+
+    char *tags = NULL;
+
+    bundleContext_getProperty(admin->context, DEPLOYMENT_TAGS, &tags);
+
+    if (tags != NULL) {
+        char entry[512];
+        int entrySize = 0;
+
+        entrySize = snprintf(entry, 512, "%s,%llu,%u,0,%i,%s\n", admin->targetIdentification, admin->auditlogId, admin->aditlogSeqNr++, DEPLOYMENT_ADMIN_AUDIT_EVENT__TARGETPROPERTIES_SET, tags);
+
+        if (entrySize >= 512) {
+            status = CELIX_BUNDLE_EXCEPTION;
+        }
+        else {
+            status = deploymentAdmin_performRequest(admin, entry);
+        }
+    }
+
+    return status;
+}
+
+static celix_status_t deploymentAdmin_auditEventFrameworkStarted(deployment_admin_pt admin) {
+    celix_status_t status = CELIX_SUCCESS;
+
+    char entry[512];
+    int entrySize = 0;
+
+    entrySize = snprintf(entry, 512, "%s,%llu,%u,0,%i\n", admin->targetIdentification, admin->auditlogId, admin->aditlogSeqNr++, DEPLOYMENT_ADMIN_AUDIT_EVENT__FRAMEWORK_STARTED);
+
+    if (entrySize >= 512) {
+        status = CELIX_BUNDLE_EXCEPTION;
+    }
+    else {
+        status = deploymentAdmin_performRequest(admin, entry);
+    }
+
+    return status;
+}
+
+
 static void *deploymentAdmin_poll(void *deploymentAdmin) {
 	deployment_admin_pt admin = deploymentAdmin;
 
 	/*first poll send framework started audit event, note this will register the target in Apache ACE*/
-	deploymentAdmin_updateAuditPool(admin, DEPLOYMENT_ADMIN_AUDIT_EVENT__FRAMEWORK_STARTED);
+    deploymentAdmin_auditEventFrameworkStarted(admin);
+    deploymentAdmin_auditEventTargetPropertiesSet(admin);
 
 	while (admin->running) {
 		//poll ace
@@ -228,15 +267,12 @@ static void *deploymentAdmin_poll(void *deploymentAdmin) {
 			if (admin->current == NULL || strcmp(last, admin->current) != 0) {
 				int length = strlen(admin->pollUrl) + strlen(last) + 2;
 				char request[length];
-				if (admin->current == NULL) {
-					snprintf(request, length, "%s/%s", admin->pollUrl, last);
-				} else {
-					// TODO
-					//      We do not yet support fix packages
-					//		Check string lenght!
-					// snprintf(request, length, "%s/%s?current=%s", admin->pollUrl, last, admin->current);
-					snprintf(request, length, "%s/%s", admin->pollUrl, last);
-				}
+
+				// TODO
+                //      We do not yet support fix packages
+                //		Check string lenght!
+                // snprintf(request, length, "%s/%s?current=%s", admin->pollUrl, last, admin->current);
+                snprintf(request, length, "%s/%s", admin->pollUrl, last);
 
 				char *inputFilename = NULL;
 				celix_status_t status = deploymentAdmin_download(admin ,request, &inputFilename);

http://git-wip-us.apache.org/repos/asf/celix/blob/a8942991/deployment_admin/private/src/deployment_admin_activator.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/deployment_admin_activator.c b/deployment_admin/private/src/deployment_admin_activator.c
index 9a3ce5f..93fd6b5 100644
--- a/deployment_admin/private/src/deployment_admin_activator.c
+++ b/deployment_admin/private/src/deployment_admin_activator.c
@@ -64,7 +64,7 @@ celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context)
 }
 
 celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) {
-	celix_status_t status = CELIX_SUCCESS;
+	celix_status_t status;
 
 	bundle_activator_pt activator = (bundle_activator_pt) userData;
 

http://git-wip-us.apache.org/repos/asf/celix/blob/a8942991/deployment_admin/private/src/deployment_package.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/deployment_package.c b/deployment_admin/private/src/deployment_package.c
index 042d9ae..3fb962f 100644
--- a/deployment_admin/private/src/deployment_package.c
+++ b/deployment_admin/private/src/deployment_package.c
@@ -46,7 +46,7 @@ celix_status_t deploymentPackage_create(bundle_context_pt context, manifest_pt m
 	celix_status_t status = CELIX_SUCCESS;
 
 	*package = calloc(1, sizeof(**package));
-	if (!package) {
+	if (!(*package)) {
 		status = CELIX_ENOMEM;
 	} else {
 		(*package)->context = context;

http://git-wip-us.apache.org/repos/asf/celix/blob/a8942991/deployment_admin/private/src/log.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/log.c b/deployment_admin/private/src/log.c
index a5227ca..98e757d 100644
--- a/deployment_admin/private/src/log.c
+++ b/deployment_admin/private/src/log.c
@@ -55,7 +55,7 @@ celix_status_t log_destroy(log_pt *log) {
 }
 
 celix_status_t log_log(log_pt log, unsigned int type, properties_pt properties) {
-	celix_status_t status = CELIX_SUCCESS;
+	celix_status_t status;
 
 	log_event_pt event = NULL;