[SEBA-83]

Create charts/docs for Persistent Storage
- Ceph (block volumes, and shared filesystem) using Rook
- Local mounted volumes with local-provisioner
- Local directories with local-directory

Change-Id: I65e8a55ca4fbdb6c9754beec6b7ce5ea010ad642
diff --git a/storage/local-directory/Chart.yaml b/storage/local-directory/Chart.yaml
new file mode 100644
index 0000000..d343bf9
--- /dev/null
+++ b/storage/local-directory/Chart.yaml
@@ -0,0 +1,17 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: local-directory
+version: 0.1.0-dev0
diff --git a/storage/local-directory/local-directory-playbook.yaml b/storage/local-directory/local-directory-playbook.yaml
new file mode 100644
index 0000000..0c03add
--- /dev/null
+++ b/storage/local-directory/local-directory-playbook.yaml
@@ -0,0 +1,41 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This playbook will create directories needed by the local-directories helm
+# chart that will be turned into k8s PersistentVolumes
+#
+# For dev use only - use real volumes/disks in production
+
+- hosts: all
+  become: yes
+
+  vars:
+    helm_values_file: ./values.yaml
+
+  tasks:
+    - name: Read yaml from helm_values_file
+      set_fact:
+        helm_values: "{{ lookup('file', helm_values_file) | from_yaml }}"
+
+    - name: Create directories on nodes
+      when: item.host == ansible_hostname
+      file:
+        path: "{{ item.directory }}"
+        state: directory
+        owner: root
+        group: root
+        mode: 0755
+      with_items: "{{ helm_values.volumes }}"
+
diff --git a/storage/local-directory/templates/NOTES.txt b/storage/local-directory/templates/NOTES.txt
new file mode 100644
index 0000000..7cf053a
--- /dev/null
+++ b/storage/local-directory/templates/NOTES.txt
@@ -0,0 +1,9 @@
+A StorageClass was created: {{ .Values.storageClassName }}
+
+The following PersistentVolumes were created using directories on these nodes:
+
+# PV Name, Host, Size, Host Directory
+{{- range $volume := .Values.volumes }}
+{{ $volume.name }}, {{ $volume.host}}, {{ $volume.size }}, {{ $volume.directory }}
+{{- end }}
+
diff --git a/storage/local-directory/templates/localdirs.yaml b/storage/local-directory/templates/localdirs.yaml
new file mode 100644
index 0000000..04a9f51
--- /dev/null
+++ b/storage/local-directory/templates/localdirs.yaml
@@ -0,0 +1,46 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+kind: StorageClass
+apiVersion: storage.k8s.io/v1
+metadata:
+  name: {{ .Values.storageClassName }}
+provisioner: kubernetes.io/no-provisioner
+volumeBindingMode: WaitForFirstConsumer
+
+{{- range $volume := .Values.volumes }}
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+  name: {{ $volume.name }}
+spec:
+  capacity:
+    storage: {{ $volume.size }}
+  accessModes:
+    - ReadWriteOnce
+  persistentVolumeReclaimPolicy: Retain
+  storageClassName: {{ $.Values.storageClassName }}
+  local:
+    path: {{ $volume.directory }}
+  nodeAffinity:
+    required:
+      nodeSelectorTerms:
+        - matchExpressions:
+          - key: kubernetes.io/hostname
+            operator: In
+            values:
+            - {{ $volume.host }}
+{{- end }}
diff --git a/storage/local-directory/values.yaml b/storage/local-directory/values.yaml
new file mode 100644
index 0000000..fbafd9b
--- /dev/null
+++ b/storage/local-directory/values.yaml
@@ -0,0 +1,27 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+storageClassName: local-directory
+
+volumes:
+  - name: "small-pv"
+    size: "2Gi"
+    host: "node1"
+    directory: "/var/kubernetes_local_directories/small-pv"
+  - name: "large-pv"
+    size: "10Gi"
+    host: "node1"
+    directory: "/var/kubernetes_local_directories/large-pv"
+