From 223042b5637a82f15bac86804c8e6264ca3a6679 Mon Sep 17 00:00:00 2001
From: Jorge Morales <jorgemoralespou@gmail.com>
Date: Wed, 18 Jul 2018 20:31:51 +0200
Subject: [PATCH] Updated parksmap to not rely on customized content not in standard repo

---
 ansible/roles/ocp-workload-parksmap-demo/tasks/workload.yml              |   58 +++++++++++++
 ansible/roles/ocp-workload-parksmap-demo/files/workshopper-template.yaml |  135 ++++++++++++++++++++++++---------
 ansible/roles/ocp-workload-parksmap-demo/readme.adoc                     |    2 
 3 files changed, 153 insertions(+), 42 deletions(-)

diff --git a/ansible/roles/ocp-workload-parksmap-demo/files/workshopper-template.yaml b/ansible/roles/ocp-workload-parksmap-demo/files/workshopper-template.yaml
index c6ef672..531b887 100644
--- a/ansible/roles/ocp-workload-parksmap-demo/files/workshopper-template.yaml
+++ b/ansible/roles/ocp-workload-parksmap-demo/files/workshopper-template.yaml
@@ -1,37 +1,94 @@
 kind: Template
 apiVersion: v1
 metadata:
-  name: guide
+  name: starter-guides
   annotations:
     description: Template to deploy a workshop guide with workshopper. Look into any of the workshops for the used variables that can be defined in the configMap.
 parameters:
+- name: APPNAME
+  description: Application name
+  value: starter-guides
+  displayName: Application name
+  required: true
 - name: CONTENT_URL_PREFIX
-  description: Console url (e.g. https://raw.githubusercontent.com/osevg/workshopper-content/36)
-  value:  
+  description: Console url (e.g. https://raw.githubusercontent.com/openshift-labs/starter-guides/ocp-3.9)
+  value: https://raw.githubusercontent.com/openshift-labs/starter-guides/ocp-3.9
   displayName: Content URL prefix
   required: true
 - name: WORKSHOPS_URLS
-  description: Workshop definition url (e.g. https://raw.githubusercontent.com/osevg/workshopper-content/36/_workshops/training.yml)
-  value:  
+  description: Workshop definition url (e.g. https://raw.githubusercontent.com/openshift-labs/starter-guides/ocp-3.9/_workshops/training.yml)
+  value: file:///workshop/workshop.yml
   displayName: Workshop Url
   required: true
 - name: CONSOLE_ADDRESS
-  description: Console url (e.g. master.mycluster.openshiftworkshop.com or console.mycluster.gce.pixy.io:8443)
-  value:  
+  description: Console url (e.g. https://master.mycluster.openshiftworkshop.com or https://console.mycluster.gce.pixy.io:8443)
+  value:
   displayName: Console url
   required: true
 - name: ROUTER_ADDRESS
   description: Application subdomain (e.g. apps.mycluster.openshiftworkshop.com or apps.mycluster.gce.pixy.io)
-  value: 
+  value:
   displayName: Application subdomain
   required: true
+- name: USER_PROJECT
+  description: User project name
+  value: 
+  displayName: User project name
+  required: true
+- name: INFRA_PROJECT
+  description: Infra project name
+  value: 
+  displayName: Infra project name
+  required: true
 objects:
+- kind: ConfigMap
+  apiVersion: v1
+  metadata:
+    name: ${APPNAME}
+    labels:
+      app: ${APPNAME}
+      role: config
+  data:
+    WORKSHOPS_URLS: ${WORKSHOPS_URLS}
+    workshop.yml: |+
+      ---
+      id: workshop
+      name: Developing Java Applications on OpenShift - Starter Lab
+
+      content:
+        url: ${CONTENT_URL_PREFIX}
+
+      vars:
+        CONSOLE_ADDRESS: ${CONSOLE_ADDRESS}
+        ROUTER_ADDRESS: ${ROUTER_ADDRESS}
+        INFRA_PROJECT: ${INFRA_PROJECT}
+        USER_NAME: developer
+        USER_PASSWORD: developer
+        USER_PROJECT: ${USER_PROJECT}
+
+      modules:
+        activate:
+        - common-parksmap-architecture
+        - parksmap-docker
+        - parksmap-scaling
+        - parksmap-routes
+        - parksmap-logging
+        - parksmap-permissions
+        - parksmap-rsh
+        - nationalparks-java
+        - nationalparks-databases
+        - nationalparks-application-health
+        - nationalparks-codechanges-gogs
+        - mlbparks-templates
+        - mlbparks-clustering
+        - mlbparks-binary-build
+        - mlbparks-debugging
 - kind: ImageStream
   apiVersion: v1
   metadata:
     name: workshopper
     labels:
-      app: guides
+      app: ${APPNAME}
   spec:
     lookupPolicy:
       local: false
@@ -46,14 +103,14 @@
 - kind: DeploymentConfig
   apiVersion: v1
   metadata:
-    name: guides
+    name: ${APPNAME}
     labels:
-      app: guides
+      app: ${APPNAME}
   spec:
     replicas: 1
     selector:
-      app: guides
-      deploymentconfig: guides
+      app: ${APPNAME}
+      deploymentconfig: ${APPNAME}
     strategy:
       activeDeadlineSeconds: 21600
       resources: {}
@@ -67,14 +124,14 @@
     template:
       metadata:
         labels:
-          app: guides
-          deploymentconfig: guides
+          app: ${APPNAME}
+          deploymentconfig: ${APPNAME}
       spec:
         containers:
         - image: workshopper
           envFrom:
             - configMapRef:
-                name: guides
+                name: ${APPNAME}
           imagePullPolicy: IfNotPresent
           livenessProbe:
             failureThreshold: 5
@@ -86,7 +143,7 @@
             periodSeconds: 10
             successThreshold: 1
             timeoutSeconds: 1
-          name: guides
+          name: ${APPNAME}
           ports:
           - containerPort: 8080
             protocol: TCP
@@ -100,21 +157,35 @@
             periodSeconds: 10
             successThreshold: 1
             timeoutSeconds: 1
-          resources: {}
+          resources:
+            limits:
+              cpu: 500m
+              memory: 512Mi
+            requests:
+              cpu: 50m
+              memory: 256Mi
           terminationMessagePath: /dev/termination-log
           terminationMessagePolicy: File
+          volumeMounts:
+          - mountPath: /workshop
+            name: volume-config
         dnsPolicy: ClusterFirst
         restartPolicy: Always
         schedulerName: default-scheduler
         securityContext: {}
         terminationGracePeriodSeconds: 30
+        volumes:
+        - configMap:
+            defaultMode: 420
+            name: ${APPNAME}
+          name: volume-config
     test: false
     triggers:
     - type: ConfigChange
     - imageChangeParams:
         automatic: true
         containerNames:
-        - guides
+        - ${APPNAME}
         from:
           kind: ImageStreamTag
           name: workshopper:latest
@@ -122,9 +193,9 @@
 - kind: Service
   apiVersion: v1
   metadata:
-    name: guides
+    name: ${APPNAME}
     labels:
-      app: guides
+      app: ${APPNAME}
   spec:
     ports:
     - name: 8080-tcp
@@ -132,34 +203,22 @@
       protocol: TCP
       targetPort: 8080
     selector:
-      app: guides
-      deploymentconfig: guides
+      app: ${APPNAME}
+      deploymentconfig: ${APPNAME}
     sessionAffinity: None
     type: ClusterIP
 - kind: Route
   apiVersion: v1
   metadata:
-    name: guides
+    name: ${APPNAME}
     labels:
-      app: guides
+      app: ${APPNAME}
   spec:
     host:
     port:
       targetPort: 8080-tcp
     to:
       kind: Service
-      name: guides
+      name: ${APPNAME}
       weight: 100
     wildcardPolicy: None
-- kind: ConfigMap
-  apiVersion: v1
-  metadata:
-    name: guides
-    labels:
-      app: guides
-      role: config
-  data:
-    CONTENT_URL_PREFIX: ${CONTENT_URL_PREFIX}
-    WORKSHOPS_URLS: ${WORKSHOPS_URLS}
-    CONSOLE_ADDRESS: ${CONSOLE_ADDRESS}
-    ROUTER_ADDRESS: ${ROUTER_ADDRESS}
\ No newline at end of file
diff --git a/ansible/roles/ocp-workload-parksmap-demo/readme.adoc b/ansible/roles/ocp-workload-parksmap-demo/readme.adoc
index 72eb032..1c68468 100644
--- a/ansible/roles/ocp-workload-parksmap-demo/readme.adoc
+++ b/ansible/roles/ocp-workload-parksmap-demo/readme.adoc
@@ -51,7 +51,7 @@
 to run these playbooks.
 
 ----
-HOST_GUID=dev37
+HOST_GUID=dev39
 TARGET_HOST="bastion.$HOST_GUID.openshift.opentlc.com"
 OCP_USERNAME="jmorales-redhat.com"
 SSH_USER="opentlc-mgr"
diff --git a/ansible/roles/ocp-workload-parksmap-demo/tasks/workload.yml b/ansible/roles/ocp-workload-parksmap-demo/tasks/workload.yml
index 339efac..2330acb 100644
--- a/ansible/roles/ocp-workload-parksmap-demo/tasks/workload.yml
+++ b/ansible/roles/ocp-workload-parksmap-demo/tasks/workload.yml
@@ -27,17 +27,69 @@
 
 - name: Deploy the guide to follow
   shell: |
-          oc new-app guide \
-          -p CONTENT_URL_PREFIX=https://raw.githubusercontent.com/osevg/workshopper-content/master \
-          -p WORKSHOPS_URLS=https://raw.githubusercontent.com/jorgemoralespou/workshopper-content/GPE/_workshops/gpe-parksmap-demo.yml \
+          oc new-app starter-guides \
           -p CONSOLE_ADDRESS={{ocp_master}} \
           -p ROUTER_ADDRESS={{ocp_apps_domain}} \
+          -p USER_PROJECT={{ocp_project}} \
+          -p INFRA_PROJECT={{ocp_project_completed}} \
           -n "{{ocp_project_completed}}"
 
 - name: Print where's the guide
   debug:
     msg: "Guide has been installed in http://guides-{{ocp_project_completed}}.{{ocp_apps_domain}}"
 
+#####
+# Gogs
+#####
+- set_fact:
+    gogs_hostname: "gogs-{{ ocp_project_completed }}.{{ ocp_apps_domain }}"
+
+- import_role:
+    name: openshift_gogs
+  vars:
+    project_name: "{{ ocp_project_completed }}"
+    gogs_route: "{{ gogs_hostname }}"
+    gogs_user: "developer"
+    gogs_password: "developer"
+    clean_deploy: false
+# Clone required project in Gogs
+#
+- name: "Create local repository to push to git (Java version)"
+  command: git clone https://github.com/openshift-roadshow/nationalparks.git
+  args:
+    chdir: "/tmp/{{guid}}"
+
+- name: Check if repository nationalparks exists in git for user "developer"
+  uri:
+    url: http://{{ gogs_hostname }}/api/v1/repos/developer/nationalparks
+    user: "developer"
+    password: "developer"
+    force_basic_auth: true
+    status_code: 200,404
+  register: repo_result
+
+- name: Create git repository nationalparks for user "developer"
+  uri:
+    url: http://{{ gogs_hostname }}/api/v1/user/repos
+    method: POST
+    body: '{"name": "nationalparks", "private": false}'
+    body_format: json
+    user: "developer"
+    password: "developer"
+    status_code: 200,201
+    force_basic_auth: true
+  when: repo_result.status != 200
+
+- name: Push nationalparks to git repository in Gogs for user "developer"
+  shell: |
+    git remote add developer http://developer:developer@{{ gogs_hostname }}/developer/nationalparks.git
+    git config --local user.email "developer@example.com"
+    git config --local user.name "developer"
+    git push -f --all developer
+  args:
+    chdir: "/tmp/{{guid}}/nationalparks"
+  when: repo_result.status != 200
+
 - name: Annotate the completed project as requested by user
   shell: "oc annotate namespace {{ocp_project_completed}} openshift.io/requester={{ocp_username}} --overwrite"
 

--
Gitblit v1.9.3