From 833794feefde5999acb89127a06659ad2822b265 Mon Sep 17 00:00:00 2001
From: Hugo Blom <bl0m1@users.noreply.github.com>
Date: Wed, 11 Mar 2020 13:13:36 +0100
Subject: [PATCH] [Openstack] Cleanup the old in-tree openstack cloud provider
 (#5742)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Added playbook to migrate openstack cloud provider

* remove old cloud provider config

* Rewrite provisioned-by annotation on Cinder PVs

* update indents

Co-authored-by: Jonathan Süssemilch Poulain <jonathan@sofiero.net>
---
 extra_playbooks/files/get_cinder_pvs.sh       |  2 ++
 .../migrate_openstack_provider.yml            | 28 +++++++++++++++++++
 2 files changed, 30 insertions(+)
 create mode 100644 extra_playbooks/files/get_cinder_pvs.sh
 create mode 100644 extra_playbooks/migrate_openstack_provider.yml

diff --git a/extra_playbooks/files/get_cinder_pvs.sh b/extra_playbooks/files/get_cinder_pvs.sh
new file mode 100644
index 000000000..73a088ebc
--- /dev/null
+++ b/extra_playbooks/files/get_cinder_pvs.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+kubectl get pv -o go-template --template='{{ range .items }}{{ $metadata := .metadata }}{{ with $value := index .metadata.annotations "pv.kubernetes.io/provisioned-by" }}{{ if eq $value "kubernetes.io/cinder" }}{{printf "%s\n" $metadata.name}}{{ end }}{{ end }}{{ end }}'
diff --git a/extra_playbooks/migrate_openstack_provider.yml b/extra_playbooks/migrate_openstack_provider.yml
new file mode 100644
index 000000000..114e4cf0c
--- /dev/null
+++ b/extra_playbooks/migrate_openstack_provider.yml
@@ -0,0 +1,28 @@
+---
+- hosts: kube-node:kube-master
+  tasks:
+    - name: Remove old cloud provider config
+      file:
+        path: "{{ item }}"
+        state: absent
+      with_items:
+        - /etc/kubernetes/cloud_config
+- hosts: kube-master[0]
+  tasks:
+    - name: Include kubespray-default variables
+      include_vars: ../roles/kubespray-defaults/defaults/main.yaml
+    - name: Copy get_cinder_pvs.sh to master
+      copy:
+        src: get_cinder_pvs.sh
+        dest: /tmp
+        mode: u+rwx
+    - name: Get PVs provisioned by in-tree cloud provider
+      command: /tmp/get_cinder_pvs.sh
+      register: pvs
+    - name: Remove get_cinder_pvs.sh
+      file:
+        path: /tmp/get_cinder_pvs.sh
+        state: absent
+    - name: Rewrite the "pv.kubernetes.io/provisioned-by" annotation
+      command: "{{ bin_dir }}/kubectl annotate --overwrite pv {{ item }} pv.kubernetes.io/provisioned-by=cinder.csi.openstack.org"
+      loop: "{{ pvs.stdout_lines | list }}"
-- 
GitLab