From f6d69d0a00dfbac4cb6a8a323050a27929a43d4b Mon Sep 17 00:00:00 2001
From: Sergey Vasilenko <svasilenko@mirantis.com>
Date: Wed, 16 Nov 2016 22:24:43 +0300
Subject: [PATCH] Add ability to define network backend for Calico.

This patch introduce `calico_network_backend` global variable,
which allow to describe alternative network backend.
Default behavior is unchanged.
---
 docs/calico.md                                         | 10 ++++++++++
 .../calico/templates/calico-node.service.j2            |  4 ++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/docs/calico.md b/docs/calico.md
index a8bffc0db..ab4211664 100644
--- a/docs/calico.md
+++ b/docs/calico.md
@@ -50,6 +50,16 @@ or for versions prior *v1.0.0*:
 calicoctl endpoint show --detail
 ```
 
+##### Optionnal : Define network backend
+
+In some cases you may want to define Calico network backend. Allowed values are 'bird', 'gobgp' or 'none'. Bird is a default value.
+
+To re-define you need to edit the inventory and add a group variable `calico_network_backend`
+
+```
+calico_network_backend: none
+```
+
 ##### Optionnal : BGP Peering with border routers
 
 In some cases you may want to route the pods subnet and so NAT is not needed on the nodes.
diff --git a/roles/network_plugin/calico/templates/calico-node.service.j2 b/roles/network_plugin/calico/templates/calico-node.service.j2
index 87a51fac8..afd225beb 100644
--- a/roles/network_plugin/calico/templates/calico-node.service.j2
+++ b/roles/network_plugin/calico/templates/calico-node.service.j2
@@ -15,9 +15,9 @@ ExecStart={{ bin_dir }}/calicoctl node --ip={{ip | default(ansible_default_ipv4.
 {% endif %}
 {% else %}
 {% if inventory_hostname in groups['kube-node'] and peer_with_router|default(false)%}
-ExecStart={{ bin_dir }}/calicoctl node run --ip={{ip | default(ansible_default_ipv4.address) }} --as={{ local_as }} --node-image={{ calico_node_image_repo }}:{{ calico_node_image_tag }}
+ExecStart={{ bin_dir }}/calicoctl node run --ip={{ip | default(ansible_default_ipv4.address) }} --as={{ local_as }} --node-image={{ calico_node_image_repo }}:{{ calico_node_image_tag }} {% if calico_network_backend is defined %}--backend={{calico_network_backend }}{% endif %}
 {%     else %}
-ExecStart={{ bin_dir }}/calicoctl node run --ip={{ip | default(ansible_default_ipv4.address) }} --node-image={{ calico_node_image_repo }}:{{ calico_node_image_tag }}
+ExecStart={{ bin_dir }}/calicoctl node run --ip={{ip | default(ansible_default_ipv4.address) }} --node-image={{ calico_node_image_repo }}:{{ calico_node_image_tag }} {% if calico_network_backend is defined %}--backend={{calico_network_backend }}{% endif %}
 {% endif %}
 {% endif %}
 Restart=always
-- 
GitLab