|
|
60de42 |
From 5c25d7cae4de3d66792d90178c8b1f57a9cddf12 Mon Sep 17 00:00:00 2001
|
|
|
60de42 |
From: Andrew Beekhof <andrew@beekhof.net>
|
|
|
60de42 |
Date: Fri, 31 Mar 2017 11:41:52 +1100
|
|
|
60de42 |
Subject: [PATCH] PE: Containers: Allow custom docker run commands
|
|
|
60de42 |
|
|
|
60de42 |
---
|
|
|
60de42 |
lib/pengine/container.c | 18 +++++++++++-------
|
|
|
60de42 |
lib/pengine/variant.h | 1 +
|
|
|
60de42 |
xml/resources-2.8.rng | 2 +-
|
|
|
60de42 |
3 files changed, 13 insertions(+), 8 deletions(-)
|
|
|
60de42 |
|
|
|
60de42 |
diff --git a/lib/pengine/container.c b/lib/pengine/container.c
|
|
|
60de42 |
index ed63b80..388dd88 100644
|
|
|
60de42 |
--- a/lib/pengine/container.c
|
|
|
60de42 |
+++ b/lib/pengine/container.c
|
|
|
60de42 |
@@ -222,6 +209,12 @@ create_docker_resource(
|
|
|
60de42 |
offset += snprintf(buffer+offset, max-offset, " --net=%s", data->docker_network);
|
|
|
60de42 |
}
|
|
|
60de42 |
|
|
|
60de42 |
+ if(data->control_port) {
|
|
|
60de42 |
+ offset += snprintf(buffer+offset, max-offset, " -e PCMK_remote_port=%s", data->control_port);
|
|
|
60de42 |
+ } else {
|
|
|
60de42 |
+ offset += snprintf(buffer+offset, max-offset, " -e PCMK_remote_port=%d", DEFAULT_REMOTE_PORT);
|
|
|
60de42 |
+ }
|
|
|
60de42 |
+
|
|
|
60de42 |
for(GListPtr pIter = data->mounts; pIter != NULL; pIter = pIter->next) {
|
|
|
60de42 |
container_mount_t *mount = pIter->data;
|
|
|
60de42 |
|
|
|
60de42 |
@@ -276,15 +263,11 @@ create_docker_resource(
|
|
|
60de42 |
free(dbuffer);
|
|
|
60de42 |
|
|
|
60de42 |
if(tuple->child) {
|
|
|
60de42 |
- char *command = NULL;
|
|
|
60de42 |
-
|
|
|
60de42 |
- if(data->control_port) {
|
|
|
60de42 |
- command = crm_strdup_printf(SBIN_DIR"/pacemaker_remoted -p %s", data->control_port);
|
|
|
60de42 |
+ if(data->docker_run_command) {
|
|
|
60de42 |
+ create_nvp(xml_obj, "run_cmd", data->docker_run_command);
|
|
|
60de42 |
} else {
|
|
|
60de42 |
- command = crm_strdup_printf(SBIN_DIR"/pacemaker_remoted -p %d", DEFAULT_REMOTE_PORT);
|
|
|
60de42 |
+ create_nvp(xml_obj, "run_cmd", SBIN_DIR"/pacemaker_remoted");
|
|
|
60de42 |
}
|
|
|
60de42 |
- create_nvp(xml_obj, "run_cmd", command);
|
|
|
60de42 |
- free(command);
|
|
|
60de42 |
|
|
|
60de42 |
/* TODO: Allow users to specify their own?
|
|
|
60de42 |
*
|
|
|
60de42 |
@@ -486,6 +470,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set)
|
|
|
60de42 |
clear_bit(rsc->flags, pe_rsc_unique);
|
|
|
60de42 |
}
|
|
|
60de42 |
|
|
|
60de42 |
+ container_data->docker_run_command = crm_element_value_copy(xml_obj, "run-command");
|
|
|
60de42 |
container_data->docker_run_options = crm_element_value_copy(xml_obj, "options");
|
|
|
60de42 |
container_data->image = crm_element_value_copy(xml_obj, "image");
|
|
|
60de42 |
container_data->docker_network = crm_element_value_copy(xml_obj, "network");
|
|
|
60de42 |
@@ -886,6 +863,7 @@ container_free(resource_t * rsc)
|
|
|
60de42 |
free(container_data->ip_range_start);
|
|
|
60de42 |
free(container_data->docker_network);
|
|
|
60de42 |
free(container_data->docker_run_options);
|
|
|
60de42 |
+ free(container_data->docker_run_command);
|
|
|
60de42 |
free(container_data->docker_host_options);
|
|
|
60de42 |
|
|
|
60de42 |
g_list_free_full(container_data->tuples, (GDestroyNotify)tuple_free);
|
|
|
60de42 |
diff --git a/lib/pengine/variant.h b/lib/pengine/variant.h
|
|
|
60de42 |
index aa2a1b7..c8fe159 100644
|
|
|
60de42 |
--- a/lib/pengine/variant.h
|
|
|
60de42 |
+++ b/lib/pengine/variant.h
|
|
|
60de42 |
@@ -99,6 +99,7 @@ typedef struct container_variant_data_s {
|
|
|
60de42 |
char *ip_range_start;
|
|
|
60de42 |
char *docker_host_options;
|
|
|
60de42 |
char *docker_run_options;
|
|
|
60de42 |
+ char *docker_run_command;
|
|
|
60de42 |
|
|
|
60de42 |
resource_t *child;
|
|
|
60de42 |
|
|
|
60de42 |
diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng
|
|
|
60de42 |
index 870e804..5c83e07 100644
|
|
|
60de42 |
--- a/xml/resources-2.8.rng
|
|
|
60de42 |
+++ b/xml/resources-2.8.rng
|
|
|
60de42 |
@@ -84,6 +84,9 @@
|
|
|
60de42 |
<optional>
|
|
|
60de42 |
<attribute name="masters"><data type="integer"/></attribute>
|
|
|
60de42 |
</optional>
|
|
|
60de42 |
+ <optional>
|
|
|
60de42 |
+ <attribute name="run-command"> <text/></attribute>
|
|
|
60de42 |
+ </optional>
|
|
|
60de42 |
<optional>
|
|
|
60de42 |
<attribute name="network"><text/></attribute>
|
|
|
60de42 |
</optional>
|
|
|
60de42 |
--
|
|
|
60de42 |
1.8.3.1
|
|
|
60de42 |
|