From 47d1b3a71526d9b224e7591b4454d9fc7341525a Mon Sep 17 00:00:00 2001
From: Monty Taylor <mordred@inaugust.com>
Date: Mon, 28 Aug 2017 19:34:16 -0500
Subject: [PATCH] Add roles for adding and removing launchpadlib credentials

Change-Id: I5bf80922026d9e68a396effe89bb2d6ea5cbdec0
---
 roles/add-launchpad-credentials/README.rst    | 20 +++++++++++++++++++
 .../add-launchpad-credentials/tasks/main.yaml | 16 +++++++++++++++
 .../templates/creds.j2                        |  5 +++++
 roles/remove-launchpad-credentials/README.rst |  7 +++++++
 .../tasks/main.yaml                           |  7 +++++++
 5 files changed, 55 insertions(+)
 create mode 100644 roles/add-launchpad-credentials/README.rst
 create mode 100644 roles/add-launchpad-credentials/tasks/main.yaml
 create mode 100644 roles/add-launchpad-credentials/templates/creds.j2
 create mode 100644 roles/remove-launchpad-credentials/README.rst
 create mode 100644 roles/remove-launchpad-credentials/tasks/main.yaml

diff --git a/roles/add-launchpad-credentials/README.rst b/roles/add-launchpad-credentials/README.rst
new file mode 100644
index 000000000..68236b3e8
--- /dev/null
+++ b/roles/add-launchpad-credentials/README.rst
@@ -0,0 +1,20 @@
+Add launchpadlib credentials and launchpadlib to a host
+
+**Role Variables**
+
+.. zuul:rolevar:: lp_creds
+
+   Complex argument which contains the information needed to log in
+   to Launchpad. It is expected that this argument comes from a `Secret`.
+
+  .. zuul:rolevar:: access_token
+
+     Launchpad access token
+
+  .. zuul:rolevar:: access_secret
+
+     Launchpad access secret
+
+  .. zuul:rolevar:: consumer_key
+
+     Launchpad consumer key
diff --git a/roles/add-launchpad-credentials/tasks/main.yaml b/roles/add-launchpad-credentials/tasks/main.yaml
new file mode 100644
index 000000000..3f1cdf345
--- /dev/null
+++ b/roles/add-launchpad-credentials/tasks/main.yaml
@@ -0,0 +1,16 @@
+- name: Ensure launchpadlib directory
+  file:
+    path: ~/.launchpadlib
+    state: directory
+
+- name: Write credentials
+  template:
+    path: ~/.launchpadlib/creds
+    mode: 0600
+    src: creds.j2
+
+- name: Install launchpadlib
+  package:
+    name: python-launchpadlib
+    state: present
+  become: yes
diff --git a/roles/add-launchpad-credentials/templates/creds.j2 b/roles/add-launchpad-credentials/templates/creds.j2
new file mode 100644
index 000000000..89fc22fc6
--- /dev/null
+++ b/roles/add-launchpad-credentials/templates/creds.j2
@@ -0,0 +1,5 @@
+[1]
+access_token = {{ lp_creds.access_token }}
+access_secret = {{ lp_creds.access_secret }}
+consumer_key = {{ lp_creds.consumer_key }}
+consumer_secret =
diff --git a/roles/remove-launchpad-credentials/README.rst b/roles/remove-launchpad-credentials/README.rst
new file mode 100644
index 000000000..fd0376060
--- /dev/null
+++ b/roles/remove-launchpad-credentials/README.rst
@@ -0,0 +1,7 @@
+Remove launchpadlib credentials from a host
+
+**Role Variables**
+
+.. zuul:rolevar:: launchpadlib_credentials
+
+   Path to the file containing the credentials.
diff --git a/roles/remove-launchpad-credentials/tasks/main.yaml b/roles/remove-launchpad-credentials/tasks/main.yaml
new file mode 100644
index 000000000..c8b11286e
--- /dev/null
+++ b/roles/remove-launchpad-credentials/tasks/main.yaml
@@ -0,0 +1,7 @@
+- name: Remove the launchpadlib credentials
+  command: shred ~/.launchpadlib/creds
+
+- name: Remove launchpadlib directory
+  file:
+    path: ~/.launchpadlib
+    state: absent