Blame SOURCES/046-bundle-run-command.patch

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