Author: abroekhuis
Date: Fri Feb 17 10:00:44 2012
New Revision: 1245362
URL: http://svn.apache.org/viewvc?rev=1245362&view=rev
Log:
Deployment Admin configuration
Added configuration parameters to the deployment admin
Modified:
incubator/celix/trunk/deployment_admin/private/include/deployment_admin.h
incubator/celix/trunk/deployment_admin/private/src/deployment_admin.c
Modified:
incubator/celix/trunk/deployment_admin/private/include/deployment_admin.h
URL:
http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/private/include/deployment_admin.h?rev=1245362&r1=1245361&r2=1245362&view=diff
==============================================================================
--- incubator/celix/trunk/deployment_admin/private/include/deployment_admin.h
(original)
+++ incubator/celix/trunk/deployment_admin/private/include/deployment_admin.h
Fri Feb 17 10:00:44 2012
@@ -22,6 +22,8 @@ struct deployment_admin {
bool running;
char *current;
HASH_MAP packages;
+ char *targetIdentification;
+ char *pollUrl;
};
celix_status_t deploymentAdmin_create(apr_pool_t *pool, BUNDLE_CONTEXT
context, deployment_admin_t *admin);
Modified: incubator/celix/trunk/deployment_admin/private/src/deployment_admin.c
URL:
http://svn.apache.org/viewvc/incubator/celix/trunk/deployment_admin/private/src/deployment_admin.c?rev=1245362&r1=1245361&r2=1245362&view=diff
==============================================================================
--- incubator/celix/trunk/deployment_admin/private/src/deployment_admin.c
(original)
+++ incubator/celix/trunk/deployment_admin/private/src/deployment_admin.c Fri
Feb 17 10:00:44 2012
@@ -23,7 +23,11 @@
#include "resource_processor.h"
-#define VERSIONS "http://localhost:8080/deployment/test/versions"
+#define IDENTIFICATION_ID "deployment_admin.identification"
+#define DISCOVERY_URL "deployment_admin.url"
+// "http://localhost:8080/deployment/"
+
+#define VERSIONS "/versions"
static void *APR_THREAD_FUNC deploymentAdmin_poll(apr_thread_t *thd, void
*deploymentAdmin);
celix_status_t deploymentAdmin_download(char * url, char **inputFile);
@@ -53,7 +57,24 @@ celix_status_t deploymentAdmin_create(ap
(*admin)->context = context;
(*admin)->current = NULL;
(*admin)->packages = hashMap_create(string_hash, NULL,
string_equals, NULL);
- apr_thread_create(&(*admin)->poller, NULL,
deploymentAdmin_poll, *admin, subpool);
+ (*admin)->targetIdentification = NULL;
+ (*admin)->pollUrl = NULL;
+ bundleContext_getProperty(context, IDENTIFICATION_ID,
&(*admin)->targetIdentification);
+ if ((*admin)->targetIdentification == NULL ) {
+ printf("Target name must be set using
\"deployment_admin.identification\"\n");
+ status = CELIX_ILLEGAL_ARGUMENT;
+ } else {
+ char *url = NULL;
+ bundleContext_getProperty(context, DISCOVERY_URL, &url);
+ if (url == NULL) {
+ printf("URL must be set using
\"deployment_admin.url\"\n");
+ status = CELIX_ILLEGAL_ARGUMENT;
+ } else {
+ (*admin)->pollUrl = apr_pstrcat(subpool, url,
(*admin)->targetIdentification, VERSIONS);
+
+ apr_thread_create(&(*admin)->poller, NULL,
deploymentAdmin_poll, *admin, subpool);
+ }
+ }
}
return status;
@@ -74,11 +95,11 @@ static void *APR_THREAD_FUNC deploymentA
printf("install version: %s\n", last);
char *request = NULL;
if (admin->current == NULL) {
- request = apr_pstrcat(admin->pool, VERSIONS,
"/", last, NULL);
+ request = apr_pstrcat(admin->pool,
admin->pollUrl, "/", last, NULL);
} else {
// We do not yet support fix packages
//request = apr_pstrcat(admin->pool, VERSIONS,
"/", last, "?current=", admin->current, NULL);
- request = apr_pstrcat(admin->pool, VERSIONS,
"/", last, NULL);
+ request = apr_pstrcat(admin->pool,
admin->pollUrl, "/", last, NULL);
}
printf("Request: %s\n", request);
@@ -180,7 +201,7 @@ celix_status_t deploymentAdmin_readVersi
chunk.memory = malloc(1);
chunk.size = 0;
if (curl) {
- curl_easy_setopt(curl, CURLOPT_URL, VERSIONS);
+ curl_easy_setopt(curl, CURLOPT_URL, admin->pollUrl);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,
deploymentAdmin_parseVersions);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &chunk);
curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);