From 68fafd030d822ecc3313f70dc249715527999251 Mon Sep 17 00:00:00 2001
From: Smaine Kahlouch <smaine.kahlouch@arkena.com>
Date: Wed, 23 Mar 2016 17:27:06 +0100
Subject: [PATCH] choose between gce and aws cloud providers

---
 .travis.yml                                   |  2 +-
 inventory/group_vars/all.yml                  |  5 +++++
 requirements.yml                              | 10 +++-------
 roles/kubernetes/preinstall/tasks/main.yml    |  5 +++++
 roles/network_plugin/calico/defaults/main.yml |  4 +++-
 roles/network_plugin/calico/tasks/main.yml    |  6 +++---
 tests/support/aws.groovy                      |  2 +-
 7 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 7718318e6..00e27304e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -128,7 +128,7 @@ script:
     -e cloud_region=${CLOUD_REGION}
 
     # Create cluster
-  - "$HOME/.local/bin/ansible-playbook -i inventory/inventory.ini -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root -e '{\"cloud_provider\": true}'  $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} cluster.yml"
+  - "$HOME/.local/bin/ansible-playbook -i inventory/inventory.ini -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root -e cloud_provider=gce  $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} cluster.yml"
     # Tests Cases
     ## Test Master API
   - $HOME/.local/bin/ansible-playbook -i inventory/inventory.ini tests/testcases/010_check-apiserver.yml $LOG_LEVEL
diff --git a/inventory/group_vars/all.yml b/inventory/group_vars/all.yml
index 0b239af7d..0fe6b5d86 100644
--- a/inventory/group_vars/all.yml
+++ b/inventory/group_vars/all.yml
@@ -101,6 +101,11 @@ dns_domain: "{{ cluster_name }}"
 skydns_server: "{{ kube_service_addresses|ipaddr('net')|ipaddr(3)|ipaddr('address') }}"
 dns_server: "{{ kube_service_addresses|ipaddr('net')|ipaddr(2)|ipaddr('address') }}"
 
+# There are some changes specific to the cloud providers
+# for instance we need to encapsulate packets with some network plugins
+# If set the possible values are either 'gce' or 'aws'
+# cloud_provider:
+
 # For multi masters architecture:
 # kube-proxy doesn't support multiple apiservers for the time being so you'll need to configure your own loadbalancer
 # This domain name will be inserted into the /etc/hosts file of all servers
diff --git a/requirements.yml b/requirements.yml
index da00d4dd9..6f5f931e6 100644
--- a/requirements.yml
+++ b/requirements.yml
@@ -1,17 +1,13 @@
 ---
-- src: https://gitlab.com/kubespray-ansibl8s/k8s-common.git
+- src: https://gitlab.com/kubespray-ansibl8s/k8s-dashboard.git
   path: roles/apps
   scm: git
 
-- src: https://gitlab.com/kubespray-ansibl8s/k8s-kubedns.git
-  path: roles/apps
-  scm: git
-
-- src: https://gitlab.com/kubespray-ansibl8s/k8s-kube-ui.git
+- src: https://gitlab.com/kubespray-ansibl8s/k8s-common.git
   path: roles/apps
   scm: git
 
-- src: https://gitlab.com/kubespray-ansibl8s/k8s-fabric8.git
+- src: https://gitlab.com/kubespray-ansibl8s/k8s-kubedns.git
   path: roles/apps
   scm: git
 
diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml
index 0bcc03e0a..be9515a2d 100644
--- a/roles/kubernetes/preinstall/tasks/main.yml
+++ b/roles/kubernetes/preinstall/tasks/main.yml
@@ -46,6 +46,11 @@
     owner: kube
   when: ansible_service_mgr in ["sysvinit","upstart"]
 
+- name: check cloud_provider value
+  fail:
+    msg: "If set the 'cloud_provider' var must be set eithe to 'gce' or 'aws'"
+  when: cloud_provider is defined and cloud_provider not in ['gce', 'aws']
+
 - name: Create cni directories
   file:
     path: "{{ item }}"
diff --git a/roles/network_plugin/calico/defaults/main.yml b/roles/network_plugin/calico/defaults/main.yml
index 5aa701249..91a281106 100644
--- a/roles/network_plugin/calico/defaults/main.yml
+++ b/roles/network_plugin/calico/defaults/main.yml
@@ -1,4 +1,6 @@
 ---
 # Enables Internet connectivity from containers
 nat_outgoing: true
-# cloud_provider: no
+
+# cloud_provider can only be set to 'gce' or 'aws'
+# cloud_provider:
diff --git a/roles/network_plugin/calico/tasks/main.yml b/roles/network_plugin/calico/tasks/main.yml
index d2f477032..c112bbdc7 100644
--- a/roles/network_plugin/calico/tasks/main.yml
+++ b/roles/network_plugin/calico/tasks/main.yml
@@ -51,19 +51,19 @@
 - name: Calico | Configure calico network pool
   command: "{{ bin_dir }}/calicoctl pool add {{ kube_pods_subnet }}"
   run_once: true
-  when: calico_conf.status == 404 and (cloud_provider is not defined or cloud_provider != True)
+  when: calico_conf.status == 404 and cloud_provider is not defined
         and not nat_outgoing|default(false) or
         (nat_outgoing|default(false) and peer_with_router|default(false))
 
 - name: Calico | Configure calico network pool for cloud
   command: "{{ bin_dir }}/calicoctl pool add {{ kube_pods_subnet }} --ipip --nat-outgoing"
   run_once: true
-  when: calico_conf.status == 404 and cloud_provider is defined and cloud_provider == True
+  when: calico_conf.status == 404 and cloud_provider is defined
 
 - name: Calico | Configure calico network pool with nat outgoing
   command: "{{ bin_dir}}/calicoctl pool add {{ kube_pods_subnet }} --nat-outgoing"
   run_once: true
-  when: calico_conf.status == 404 and (cloud_provider is not defined or cloud_provider != True)
+  when: calico_conf.status == 404 and cloud_provider is not defined
         and nat_outgoing|default(false) and not peer_with_router|default(false)
 
 - name: Calico | Get calico configuration from etcd
diff --git a/tests/support/aws.groovy b/tests/support/aws.groovy
index 1d472b845..e49b3517b 100644
--- a/tests/support/aws.groovy
+++ b/tests/support/aws.groovy
@@ -58,7 +58,7 @@ def install_cluster(inventory_path, credentialsId, network_plugin) {
         extraVars: [
             kube_network_plugin: network_plugin
         ],
-        extras: "-e '{\"cloud_provider\": true}'",
+        extras: "-e cloud_provider=aws",
         colorized: true
     )
 }
-- 
GitLab