Bläddra i källkod

Merge pull request #781 from sdodson/xpaas-1.1

Update xpaas streams and templates for their v1.1.0 release
Brenton Leanhardt 9 år sedan
förälder
incheckning
f87de0f367
33 ändrade filer med 3585 tillägg och 1918 borttagningar
  1. 4 3
      roles/openshift_examples/examples-sync.sh
  2. 35 28
      roles/openshift_examples/files/examples/xpaas-streams/jboss-image-streams.json
  3. 325 0
      roles/openshift_examples/files/examples/xpaas-templates/amq62-basic.json
  4. 121 39
      roles/openshift_examples/files/examples/xpaas-templates/amq6-persistent.json
  5. 343 0
      roles/openshift_examples/files/examples/xpaas-templates/amq62-persistent.json
  6. 134 37
      roles/openshift_examples/files/examples/xpaas-templates/amq6.json
  7. 118 105
      roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-persistent-sti.json
  8. 113 103
      roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-sti.json
  9. 67 66
      roles/openshift_examples/files/examples/xpaas-templates/eap6-basic-sti.json
  10. 79 74
      roles/openshift_examples/files/examples/xpaas-templates/eap6-https-sti.json
  11. 116 92
      roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-persistent-sti.json
  12. 106 85
      roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-sti.json
  13. 113 88
      roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-persistent-sti.json
  14. 108 86
      roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-sti.json
  15. 111 89
      roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-persistent-sti.json
  16. 102 83
      roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-sti.json
  17. 56 34
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-basic-sti.json
  18. 68 42
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-https-sti.json
  19. 106 62
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-persistent-sti.json
  20. 96 92
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-persistent-sti.json
  21. 108 63
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-persistent-sti.json
  22. 98 93
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-persistent-sti.json
  23. 102 60
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-persistent-sti.json
  24. 92 53
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-sti.json
  25. 56 34
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-basic-sti.json
  26. 68 42
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-https-sti.json
  27. 136 55
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-sti.json
  28. 96 55
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-sti.json
  29. 138 56
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-sti.json
  30. 98 56
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-sti.json
  31. 132 53
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-sti.json
  32. 90 90
      roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-persistent-sti.json
  33. 50 0
      roles/openshift_examples/tasks/main.yml

+ 4 - 3
roles/openshift_examples/examples-sync.sh

@@ -5,6 +5,7 @@
 #
 # This script should be run from openshift-ansible/roles/openshift_examples
 
+XPAAS_VERSION=ose-v1.1.0
 EXAMPLES_BASE=$(pwd)/files/examples
 find files/examples -name '*.json' -delete
 find files/examples -name '*.yaml' -delete
@@ -17,7 +18,7 @@ wget https://github.com/openshift/rails-ex/archive/master.zip -O rails-ex-master
 wget https://github.com/openshift/nodejs-ex/archive/master.zip -O nodejs-ex-master.zip
 wget https://github.com/openshift/dancer-ex/archive/master.zip -O dancer-ex-master.zip
 wget https://github.com/openshift/cakephp-ex/archive/master.zip -O cakephp-ex-master.zip
-wget https://github.com/jboss-openshift/application-templates/archive/ose-v1.0.2.zip -O application-templates-master.zip
+wget https://github.com/jboss-openshift/application-templates/archive/${XPAAS_VERSION}.zip -O application-templates-master.zip
 unzip origin-master.zip
 unzip django-ex-master.zip
 unzip rails-ex-master.zip
@@ -33,8 +34,8 @@ cp rails-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/
 cp nodejs-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/
 cp dancer-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/
 cp cakephp-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates/
-mv application-templates-master/jboss-image-streams.json ${EXAMPLES_BASE}/xpaas-streams/
-find application-templates-master/ -name '*.json' ! -wholename '*secret*' -exec mv {} ${EXAMPLES_BASE}/xpaas-templates/ \;
+mv application-templates-${XPAAS_VERSION}/jboss-image-streams.json ${EXAMPLES_BASE}/xpaas-streams/
+find application-templates-${XPAAS_VERSION}/ -name '*.json' ! -wholename '*secret*' -exec mv {} ${EXAMPLES_BASE}/xpaas-templates/ \;
 
 wget https://raw.githubusercontent.com/openshift/origin-metrics/master/metrics.yaml                            -O ${EXAMPLES_BASE}/infrastructure-templates/origin/metrics-deployer.yaml
 cp ${EXAMPLES_BASE}/infrastructure-templates/origin/metrics-*.yaml                                                ${EXAMPLES_BASE}/infrastructure-templates/enterprise/

+ 35 - 28
roles/openshift_examples/files/examples/xpaas-streams/jboss-image-streams.json

@@ -12,19 +12,21 @@
             "kind": "ImageStream",
             "apiVersion": "v1",
             "metadata": {
-                "name": "jboss-webserver3-tomcat7-openshift"
+                "name": "jboss-webserver30-tomcat7-openshift"
             },
             "spec": {
-                "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/tomcat7-openshift",
+                "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/webserver30-tomcat7-openshift",
                 "tags": [
                     {
-                        "name": "3.0",
+                        "name": "1.1",
                         "annotations": {
-                            "description": "JBoss Web Server v3 Tomcat 7 STI images.",
+                            "description": "JBoss Web Server 3.0 Tomcat 7 S2I images.",
                             "iconClass": "icon-jboss",
-                            "tags": "java",
-                            "supports":"tomcat7:3.0,java",
-                            "version": "3.0"
+                            "tags": "builder,tomcat,tomcat7,java,jboss,xpaas",
+                            "supports":"tomcat7:3.0,tomcat:7,java:8,xpaas:1.1",
+                            "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git",
+                            "sampleContextDir": "tomcat-websocket-chat",
+                            "version": "1.1"
                         }
                     }
                 ]
@@ -34,19 +36,21 @@
             "kind": "ImageStream",
             "apiVersion": "v1",
             "metadata": {
-                "name": "jboss-webserver3-tomcat8-openshift"
+                "name": "jboss-webserver30-tomcat8-openshift"
             },
             "spec": {
-                "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/tomcat8-openshift",
+                "dockerImageRepository": "registry.access.redhat.com/jboss-webserver-3/webserver30-tomcat8-openshift",
                 "tags": [
                     {
-                        "name": "3.0",
+                        "name": "1.1",
                         "annotations": {
-                            "description": "JBoss Web Server v3 Tomcat 8 STI images.",
+                            "description": "JBoss Web Server 3.0 Tomcat 8 S2I images.",
                             "iconClass": "icon-jboss",
-                            "tags": "java",
-                            "supports":"tomcat8:3.0,java",
-                            "version": "3.0"
+                            "tags": "builder,tomcat,tomcat8,java,jboss,xpaas",
+                            "supports":"tomcat8:3.0,tomcat:8,java:8,xpaas:1.1",
+                            "sampleRepo": "https://github.com/jboss-openshift/openshift-quickstarts.git",
+                            "sampleContextDir": "tomcat-websocket-chat",
+                            "version": "1.1"
                         }
                     }
                 ]
@@ -56,19 +60,22 @@
             "kind": "ImageStream",
             "apiVersion": "v1",
             "metadata": {
-                "name": "jboss-eap6-openshift"
+                "name": "jboss-eap64-openshift"
             },
             "spec": {
-                "dockerImageRepository": "registry.access.redhat.com/jboss-eap-6/eap-openshift",
+                "dockerImageRepository": "registry.access.redhat.com/jboss-eap-6/eap64-openshift",
                 "tags": [
                     {
-                        "name": "6.4",
+                        "name": "1.1",
                         "annotations": {
-                            "description": "JBoss EAP 6 STI images.",
+                            "description": "JBoss EAP 6.4 S2I images.",
                             "iconClass": "icon-jboss",
-                            "tags": "javaee",
-                            "supports":"eap:6.4,jee,java",
-                            "version": "6.4"
+                            "tags": "builder,eap,javaee,java,jboss,xpaas",
+                            "supports":"eap:6.4,javaee:6,java:8,xpaas:1.1",
+                            "sampleRepo": "https://github.com/jboss-developer/jboss-eap-quickstarts.git",
+                            "sampleContextDir": "kitchensink",
+                            "sampleRef": "6.4.x",
+                            "version": "1.1"
                         }
                     }
                 ]
@@ -78,19 +85,19 @@
             "kind": "ImageStream",
             "apiVersion": "v1",
             "metadata": {
-                "name": "jboss-amq-6"
+                "name": "jboss-amq-62"
             },
             "spec": {
-                "dockerImageRepository": "registry.access.redhat.com/jboss-amq-6/amq-openshift",
+                "dockerImageRepository": "registry.access.redhat.com/jboss-amq-6/amq62-openshift",
                 "tags": [
                     {
-                        "name": "6.2",
+                        "name": "1.1",
                         "annotations": {
-                            "description": "JBoss ActiveMQ 6 broker image.",
+                            "description": "JBoss A-MQ 6.2 broker image.",
                             "iconClass": "icon-jboss",
-                            "tags": "javaee",
-                            "supports":"amq:6.2,jee,java",
-                            "version": "6.2"
+                            "tags": "messaging,amq,jboss,xpaas",
+                            "supports":"amq:6.2,messaging,xpaas:1.1",
+                            "version": "1.1"
                         }
                     }
                 ]

+ 325 - 0
roles/openshift_examples/files/examples/xpaas-templates/amq62-basic.json

@@ -0,0 +1,325 @@
+{
+    "kind": "Template",
+    "apiVersion": "v1",
+    "metadata": {
+        "annotations": {
+            "description": "Application template for JBoss A-MQ brokers. These can be deployed as standalone or in a mesh. This template doesn't feature SSL support.",
+            "iconClass": "icon-jboss",
+            "tags": "messaging,amq,jboss,xpaas",
+            "version": "1.1.0"
+        },
+        "name": "amq62-basic"
+    },
+    "labels": {
+        "template": "amq62-basic",
+        "xpaas": "1.1.0"
+    },
+    "parameters": [
+        {
+            "description": "The name for the application.",
+            "name": "APPLICATION_NAME",
+            "value": "broker",
+            "required": true
+        },
+        {
+            "description": "Protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`.",
+            "name": "MQ_PROTOCOL",
+            "value": "openwire",
+            "required": false
+        },
+        {
+            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. If left empty, queues will be still created dynamically.",
+            "name": "MQ_QUEUES",
+            "value": "",
+            "required": false
+        },
+        {
+            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. If left empty, topics will be still created dynamically.",
+            "name": "MQ_TOPICS",
+            "value": "",
+            "required": false
+        },
+        {
+            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.",
+            "name": "MQ_USERNAME",
+            "from": "user[a-zA-Z0-9]{3}",
+            "generate": "expression",
+            "required": false
+        },
+        {
+            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.",
+            "name": "MQ_PASSWORD",
+            "from": "[a-zA-Z0-9]{8}",
+            "generate": "expression",
+            "required": false
+        },
+        {
+            "description": "User name for admin user. If left empty, it will be generated.",
+            "name": "AMQ_ADMIN_USERNAME",
+            "from": "user[a-zA-Z0-9]{3}",
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Password for admin user. If left empty, it will be generated.",
+            "name": "AMQ_ADMIN_PASSWORD",
+            "from": "[a-zA-Z0-9]{8}",
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "The discovery agent type to use for discovering mesh endpoints.  'dns' will use OpenShift's DNS service to resolve endpoints.  'kube' will use Kubernetes REST API to resolve service endpoints.  If using 'kube' the service account for the pod must have the 'view' role, which can be added via 'oc policy add-role-to-user view system:serviceaccount:<namespace>:default' where <namespace> is the project namespace.",
+            "name": "AMQ_MESH_DISCOVERY_TYPE",
+            "value": "kube",
+            "required": false
+        },
+        {
+            "description": "The A-MQ storage usage limit",
+            "name": "AMQ_STORAGE_USAGE_LIMIT",
+            "value": "100 gb",
+            "required": false
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
+        }
+    ],
+    "objects": [
+        {
+            "kind": "Service",
+            "apiVersion": "v1",
+            "spec": {
+                "ports": [
+                    {
+                        "port": 5672,
+                        "targetPort": 5672
+                    }
+                ],
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                }
+            },
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-amqp",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "The broker's AMQP port."
+                }
+            }
+        },
+        {
+            "kind": "Service",
+            "apiVersion": "v1",
+            "spec": {
+                "ports": [
+                    {
+                        "port": 1883,
+                        "targetPort": 1883
+                    }
+                ],
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                }
+            },
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-mqtt",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "The broker's MQTT port."
+                }
+            }
+        },
+        {
+            "kind": "Service",
+            "apiVersion": "v1",
+            "spec": {
+                "ports": [
+                    {
+                        "port": 61613,
+                        "targetPort": 61613
+                    }
+                ],
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                }
+            },
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-stomp",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "The broker's STOMP port."
+                }
+            }
+        },
+        {
+            "kind": "Service",
+            "apiVersion": "v1",
+            "spec": {
+                "ports": [
+                    {
+                        "port": 61616,
+                        "targetPort": 61616
+                    }
+                ],
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                }
+            },
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-tcp",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "The broker's OpenWire port."
+                }
+            }
+        },
+        {
+            "kind": "DeploymentConfig",
+            "apiVersion": "v1",
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                }
+            },
+            "spec": {
+                "strategy": {
+                    "type": "Recreate"
+                },
+                "triggers": [
+                    {
+                        "type": "ImageChange",
+                        "imageChangeParams": {
+                            "automatic": true,
+                            "containerNames": [
+                                "${APPLICATION_NAME}-amq"
+                            ],
+                            "from": {
+                                "kind": "ImageStreamTag",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                                "name": "jboss-amq-62:1.1"
+                            }
+                        }
+                    },
+                    {
+                        "type": "ConfigChange"
+                    }
+                ],
+                "replicas": 1,
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                },
+                "template": {
+                    "metadata": {
+                        "name": "${APPLICATION_NAME}-amq",
+                        "labels": {
+                            "deploymentConfig": "${APPLICATION_NAME}-amq",
+                            "application": "${APPLICATION_NAME}"
+                        }
+                    },
+                    "spec": {
+                        "terminationGracePeriodSeconds": 60,
+                        "containers": [
+                            {
+                                "name": "${APPLICATION_NAME}-amq",
+                                "image": "jboss-amq-62",
+                                "imagePullPolicy": "Always",
+                                "readinessProbe": {
+                                    "exec": {
+                                        "command": [
+                                            "/bin/bash",
+                                            "-c",
+                                            "curl -s -L -u ${AMQ_ADMIN_USERNAME}:${AMQ_ADMIN_PASSWORD} 'http://localhost:8161/hawtio/jolokia/read/org.apache.activemq:type=Broker,brokerName=*,service=Health/CurrentStatus' | grep -q '\"CurrentStatus\" *: *\"Good\"'"
+                                        ]
+                                    }
+                                },
+                                "ports": [
+                                    {
+                                        "name": "amqp",
+                                        "containerPort": 5672,
+                                        "protocol": "TCP"
+                                    },
+                                    {
+                                        "name": "mqtt",
+                                        "containerPort": 1883,
+                                        "protocol": "TCP"
+                                    },
+                                    {
+                                        "name": "stomp",
+                                        "containerPort": 61613,
+                                        "protocol": "TCP"
+                                    },
+                                    {
+                                        "name": "tcp",
+                                        "containerPort": 61616,
+                                        "protocol": "TCP"
+                                    }
+                                ],
+                                "env": [
+                                    {
+                                        "name": "AMQ_USER",
+                                        "value": "${MQ_USERNAME}"
+                                    },
+                                    {
+                                        "name": "AMQ_PASSWORD",
+                                        "value": "${MQ_PASSWORD}"
+                                    },
+                                    {
+                                        "name": "AMQ_TRANSPORTS",
+                                        "value": "${MQ_PROTOCOL}"
+                                    },
+                                    {
+                                        "name": "AMQ_QUEUES",
+                                        "value": "${MQ_QUEUES}"
+                                    },
+                                    {
+                                        "name": "AMQ_TOPICS",
+                                        "value": "${MQ_TOPICS}"
+                                    },
+                                    {
+                                        "name": "AMQ_ADMIN_USERNAME",
+                                        "value": "${AMQ_ADMIN_USERNAME}"
+                                    },
+                                    {
+                                        "name": "AMQ_ADMIN_PASSWORD",
+                                        "value": "${AMQ_ADMIN_PASSWORD}"
+                                    },
+                                    {
+                                        "name": "AMQ_MESH_DISCOVERY_TYPE",
+                                        "value": "${AMQ_MESH_DISCOVERY_TYPE}"
+                                    },
+                                    {
+                                        "name": "AMQ_MESH_SERVICE_NAME",
+                                        "value": "${APPLICATION_NAME}-amq-tcp"
+                                    },
+                                    {
+                                        "name": "AMQ_MESH_SERVICE_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
+                                    },
+                                    {
+                                        "name": "AMQ_STORAGE_USAGE_LIMIT",
+                                        "value": "${AMQ_STORAGE_USAGE_LIMIT}"
+                                    }
+                                ]
+                            }
+                        ]
+                    }
+                }
+            }
+        }
+    ]
+}

+ 121 - 39
roles/openshift_examples/files/examples/xpaas-templates/amq6-persistent.json

@@ -3,82 +3,117 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "description": "Application template for ActiveMQ brokers using persistent storage."
+            "description": "Application template for JBoss A-MQ brokers. These are deployed as standalone and use persistent storage for saving messages. This template supports SSL and requires usage of OpenShift secrets.",
+            "iconClass": "icon-jboss",
+            "tags": "messaging,amq,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "amq6-persistent"
+        "name": "amq62-persistent-ssl"
     },
     "labels": {
-        "template": "amq6-persistent"
+        "template": "amq62-persistent-ssl",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "ActiveMQ Release version, e.g. 6.2, etc.",
-            "name": "AMQ_RELEASE",
-            "value": "6.2"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "broker"
+            "value": "broker",
+            "required": true
         },
         {
-            "description": "Protocol to configure.  Only openwire is supported by EAP.  amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP",
+            "description": "Protocols to configure, separated by commas.  Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`.  SSL variants of these protocols will be configured automaticaly.",
             "name": "MQ_PROTOCOL",
-            "value": "openwire"
+            "value": "openwire",
+            "required": false
         },
         {
-            "description": "Queue names",
+            "description": "Queue names, separated by commas.  These queues will be automatically created when the broker starts.  If left empty, queues will be still created dynamically.",
             "name": "MQ_QUEUES",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
-            "description": "Topic names",
+            "description": "Topic names, separated by commas.  These topics will be automatically created when the broker starts.  If left empty, topics will be still created dynamically.",
             "name": "MQ_TOPICS",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Size of persistent storage for database volume.",
             "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "512Mi",
+            "required": true
         },
         {
-            "description": "Broker user name",
+            "description": "User name for standard broker user.  It is required for connecting to the broker.  If left empty, it will be generated.",
             "name": "MQ_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": false
         },
         {
-            "description": "Broker user password",
+            "description": "Password for standard broker user.  It is required for connecting to the broker.  If left empty, it will be generated.",
             "name": "MQ_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": false
         },
         {
-            "description": "ActiveMQ Admin User",
+            "description": "User name for admin user.  If left empty, it will be generated.",
             "name": "AMQ_ADMIN_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "ActiveMQ Admin Password",
+            "description": "Password for admin user.  If left empty, it will be generated.",
             "name": "AMQ_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Name of a secret containing SSL related files",
             "name": "AMQ_SECRET",
-            "value": "amq-app-secret"
+            "value": "amq-app-secret",
+            "required": true
         },
         {
             "description": "SSL trust store filename",
             "name": "AMQ_TRUSTSTORE",
-            "value": "broker.ts"
+            "value": "broker.ts",
+            "required": true
+        },
+        {
+            "description": "SSL trust store password",
+            "name": "AMQ_TRUSTSTORE_PASSWORD",
+            "value": "",
+            "required": true
         },
         {
             "description": "SSL key store filename",
             "name": "AMQ_KEYSTORE",
-            "value": "broker.ks"
+            "value": "broker.ks",
+            "required": true
+        },
+        {
+            "description": "Password for accessing SSL keystore",
+            "name": "AMQ_KEYSTORE_PASSWORD",
+            "value": "",
+            "required": true
+        },
+        {
+            "description": "The A-MQ storage usage limit",
+            "name": "AMQ_STORAGE_USAGE_LIMIT",
+            "value": "100 gb",
+            "required": false
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -102,7 +137,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's amqp port."
+                    "description": "The broker's AMQP port."
                 }
             }
         },
@@ -126,7 +161,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's amqp ssl port."
+                    "description": "The broker's AMQP SSL port."
                 }
             }
         },
@@ -150,7 +185,31 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's mqtt port."
+                    "description": "The broker's MQTT port."
+                }
+            }
+        },
+        {
+            "kind": "Service",
+            "apiVersion": "v1",
+            "spec": {
+                "ports": [
+                    {
+                        "port": 8883,
+                        "targetPort": 8883
+                    }
+                ],
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                }
+            },
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-mqtt-ssl",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "The broker's MQTT SSL port."
                 }
             }
         },
@@ -174,7 +233,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's stomp port."
+                    "description": "The broker's STOMP port."
                 }
             }
         },
@@ -198,7 +257,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's stomp ssl port."
+                    "description": "The broker's STOMP SSL port."
                 }
             }
         },
@@ -222,7 +281,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's tcp (openwire) port."
+                    "description": "The broker's OpenWire port."
                 }
             }
         },
@@ -246,7 +305,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's tcp ssl (openwire) port."
+                    "description": "The broker's OpenWire (SSL) port."
                 }
             }
         },
@@ -273,10 +332,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
-                                "name": "jboss-amq-6:${AMQ_RELEASE}"
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                                "name": "jboss-amq-62:1.1"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -293,10 +355,11 @@
                     },
                     "spec": {
                         "serviceAccount": "amq-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-amq",
-                                "image": "jboss-amq-6",
+                                "image": "jboss-amq-62",
                                 "imagePullPolicy": "Always",
                                 "volumeMounts": [
                                     {
@@ -335,6 +398,11 @@
                                         "protocol": "TCP"
                                     },
                                     {
+                                        "name": "mqtt-ssl",
+                                        "containerPort": 8883,
+                                        "protocol": "TCP"
+                                    },
+                                    {
                                         "name": "stomp",
                                         "containerPort": 61613,
                                         "protocol": "TCP"
@@ -365,7 +433,7 @@
                                         "value": "${MQ_PASSWORD}"
                                     },
                                     {
-                                        "name": "AMQ_PROTOCOLS",
+                                        "name": "AMQ_TRANSPORTS",
                                         "value": "${MQ_PROTOCOL}"
                                     },
                                     {
@@ -393,8 +461,20 @@
                                         "value": "${AMQ_TRUSTSTORE}"
                                     },
                                     {
+                                        "name": "AMQ_TRUSTSTORE_PASSWORD",
+                                        "value": "${AMQ_TRUSTSTORE_PASSWORD}"
+                                    },
+                                    {
                                         "name": "AMQ_KEYSTORE",
                                         "value": "${AMQ_KEYSTORE}"
+                                    },
+                                    {
+                                        "name": "AMQ_KEYSTORE_PASSWORD",
+                                        "value": "${AMQ_KEYSTORE_PASSWORD}"
+                                    },
+                                    {
+                                        "name": "AMQ_STORAGE_USAGE_LIMIT",
+                                        "value": "${AMQ_STORAGE_USAGE_LIMIT}"
                                     }
                                 ]
                             }
@@ -427,7 +507,9 @@
                 }
             },
             "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
                 "resources": {
                     "requests": {
                         "storage": "${VOLUME_CAPACITY}"

+ 343 - 0
roles/openshift_examples/files/examples/xpaas-templates/amq62-persistent.json

@@ -0,0 +1,343 @@
+{
+    "kind": "Template",
+    "apiVersion": "v1",
+    "metadata": {
+        "annotations": {
+            "description": "Application template for JBoss A-MQ brokers. These can be deployed as standalone and use persistent storage for saving messages. This template doesn't feature SSL support.",
+            "iconClass": "icon-jboss",
+            "tags": "messaging,amq,jboss,xpaas",
+            "version": "1.1.0"
+        },
+        "name": "amq62-persistent"
+    },
+    "labels": {
+        "template": "amq62-persistent",
+        "xpaas": "1.1.0"
+    },
+    "parameters": [
+        {
+            "description": "The name for the application.",
+            "name": "APPLICATION_NAME",
+            "value": "broker",
+            "required": true
+        },
+        {
+            "description": "Protocols to configure, separated by commas.  Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`.",
+            "name": "MQ_PROTOCOL",
+            "value": "openwire",
+            "required": false
+        },
+        {
+            "description": "Queue names, separated by commas.  These queues will be automatically created when the broker starts.  If left empty, queues will be still created dynamically.",
+            "name": "MQ_QUEUES",
+            "value": "",
+            "required": false
+        },
+        {
+            "description": "Topic names, separated by commas.  These topics will be automatically created when the broker starts.  If left empty, topics will be still created dynamically.",
+            "name": "MQ_TOPICS",
+            "value": "",
+            "required": false
+        },
+        {
+            "description": "Size of persistent storage for database volume.",
+            "name": "VOLUME_CAPACITY",
+            "value": "512Mi",
+            "required": true
+        },
+        {
+            "description": "User name for standard broker user.  It is required for connecting to the broker.  If left empty, it will be generated.",
+            "name": "MQ_USERNAME",
+            "from": "user[a-zA-Z0-9]{3}",
+            "generate": "expression",
+            "required": false
+        },
+        {
+            "description": "Password for standard broker user.  It is required for connecting to the broker.  If left empty, it will be generated.",
+            "name": "MQ_PASSWORD",
+            "from": "[a-zA-Z0-9]{8}",
+            "generate": "expression",
+            "required": false
+        },
+        {
+            "description": "User name for admin user.  If left empty, it will be generated.",
+            "name": "AMQ_ADMIN_USERNAME",
+            "from": "user[a-zA-Z0-9]{3}",
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Password for admin user.  If left empty, it will be generated.",
+            "name": "AMQ_ADMIN_PASSWORD",
+            "from": "[a-zA-Z0-9]{8}",
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "The A-MQ storage usage limit",
+            "name": "AMQ_STORAGE_USAGE_LIMIT",
+            "value": "100 gb",
+            "required": false
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
+        }
+    ],
+    "objects": [
+        {
+            "kind": "Service",
+            "apiVersion": "v1",
+            "spec": {
+                "ports": [
+                    {
+                        "port": 5672,
+                        "targetPort": 5672
+                    }
+                ],
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                }
+            },
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-amqp",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "The broker's AMQP port."
+                }
+            }
+        },
+        {
+            "kind": "Service",
+            "apiVersion": "v1",
+            "spec": {
+                "ports": [
+                    {
+                        "port": 1883,
+                        "targetPort": 1883
+                    }
+                ],
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                }
+            },
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-mqtt",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "The broker's MQTT port."
+                }
+            }
+        },
+        {
+            "kind": "Service",
+            "apiVersion": "v1",
+            "spec": {
+                "ports": [
+                    {
+                        "port": 61613,
+                        "targetPort": 61613
+                    }
+                ],
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                }
+            },
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-stomp",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "The broker's STOMP port."
+                }
+            }
+        },
+        {
+            "kind": "Service",
+            "apiVersion": "v1",
+            "spec": {
+                "ports": [
+                    {
+                        "port": 61616,
+                        "targetPort": 61616
+                    }
+                ],
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                }
+            },
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-tcp",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "The broker's OpenWire port."
+                }
+            }
+        },
+        {
+            "kind": "DeploymentConfig",
+            "apiVersion": "v1",
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                }
+            },
+            "spec": {
+                "strategy": {
+                    "type": "Recreate"
+                },
+                "triggers": [
+                    {
+                        "type": "ImageChange",
+                        "imageChangeParams": {
+                            "automatic": true,
+                            "containerNames": [
+                                "${APPLICATION_NAME}-amq"
+                            ],
+                            "from": {
+                                "kind": "ImageStreamTag",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                                "name": "jboss-amq-62:1.1"
+                            }
+                        }
+                    },
+                    {
+                        "type": "ConfigChange"
+                    }
+                ],
+                "replicas": 1,
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                },
+                "template": {
+                    "metadata": {
+                        "name": "${APPLICATION_NAME}-amq",
+                        "labels": {
+                            "deploymentConfig": "${APPLICATION_NAME}-amq",
+                            "application": "${APPLICATION_NAME}"
+                        }
+                    },
+                    "spec": {
+                        "terminationGracePeriodSeconds": 60,
+                        "containers": [
+                            {
+                                "name": "${APPLICATION_NAME}-amq",
+                                "image": "jboss-amq-62",
+                                "imagePullPolicy": "Always",
+                                "volumeMounts": [
+                                    {
+                                        "mountPath": "/opt/amq/data/kahadb",
+                                        "name": "${APPLICATION_NAME}-amq-pvol"
+                                    }
+                                ],
+                                "readinessProbe": {
+                                    "exec": {
+                                        "command": [
+                                            "/bin/bash",
+                                            "-c",
+                                            "curl -s -L -u ${AMQ_ADMIN_USERNAME}:${AMQ_ADMIN_PASSWORD} 'http://localhost:8161/hawtio/jolokia/read/org.apache.activemq:type=Broker,brokerName=*,service=Health/CurrentStatus' | grep -q '\"CurrentStatus\" *: *\"Good\"'"
+                                        ]
+                                    }
+                                },
+                                "ports": [
+                                    {
+                                        "name": "amqp",
+                                        "containerPort": 5672,
+                                        "protocol": "TCP"
+                                    },
+                                    {
+                                        "name": "mqtt",
+                                        "containerPort": 1883,
+                                        "protocol": "TCP"
+                                    },
+                                    {
+                                        "name": "stomp",
+                                        "containerPort": 61613,
+                                        "protocol": "TCP"
+                                    },
+                                    {
+                                        "name": "tcp",
+                                        "containerPort": 61616,
+                                        "protocol": "TCP"
+                                    }
+                                ],
+                                "env": [
+                                    {
+                                        "name": "AMQ_USER",
+                                        "value": "${MQ_USERNAME}"
+                                    },
+                                    {
+                                        "name": "AMQ_PASSWORD",
+                                        "value": "${MQ_PASSWORD}"
+                                    },
+                                    {
+                                        "name": "AMQ_TRANSPORTS",
+                                        "value": "${MQ_PROTOCOL}"
+                                    },
+                                    {
+                                        "name": "AMQ_QUEUES",
+                                        "value": "${MQ_QUEUES}"
+                                    },
+                                    {
+                                        "name": "AMQ_TOPICS",
+                                        "value": "${MQ_TOPICS}"
+                                    },
+                                    {
+                                        "name": "AMQ_ADMIN_USERNAME",
+                                        "value": "${AMQ_ADMIN_USERNAME}"
+                                    },
+                                    {
+                                        "name": "AMQ_ADMIN_PASSWORD",
+                                        "value": "${AMQ_ADMIN_PASSWORD}"
+                                    },
+                                    {
+                                        "name": "AMQ_STORAGE_USAGE_LIMIT",
+                                        "value": "${AMQ_STORAGE_USAGE_LIMIT}"
+                                    }
+                                ]
+                            }
+                        ],
+                        "volumes": [
+                            {
+                                "name": "${APPLICATION_NAME}-amq-pvol",
+                                "persistentVolumeClaim": {
+                                    "claimName": "${APPLICATION_NAME}-amq-claim"
+                                }
+                            }
+                        ]
+                    }
+                }
+            }
+        },
+        {
+            "apiVersion": "v1",
+            "kind": "PersistentVolumeClaim",
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-claim",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                }
+            },
+            "spec": {
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
+                "resources": {
+                    "requests": {
+                        "storage": "${VOLUME_CAPACITY}"
+                    }
+                }
+            }
+        }
+    ]
+}

+ 134 - 37
roles/openshift_examples/files/examples/xpaas-templates/amq6.json

@@ -3,77 +3,117 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "description": "Application template for ActiveMQ brokers."
+            "description": "Application template for JBoss A-MQ brokers. These can be deployed as standalone or in a mesh. This template supports SSL and requires usage of OpenShift secrets.",
+            "iconClass": "icon-jboss",
+            "tags": "messaging,amq,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "amq6"
+        "name": "amq62-ssl"
     },
     "labels": {
-        "template": "amq6"
+        "template": "amq62-ssl",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "ActiveMQ Release version, e.g. 6.2, etc.",
-            "name": "AMQ_RELEASE",
-            "value": "6.2"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "broker"
+            "value": "broker",
+            "required": true
         },
         {
-            "description": "Protocol to configure.  Only openwire is supported by EAP.  amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP",
+            "description": "Protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. SSL variants of these protocols will be configured automaticaly.",
             "name": "MQ_PROTOCOL",
-            "value": "openwire"
+            "value": "openwire",
+            "required": false
         },
         {
-            "description": "Queue names",
+            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. If left empty, queues will be still created dynamically.",
             "name": "MQ_QUEUES",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
-            "description": "Topic names",
+            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. If left empty, topics will be still created dynamically.",
             "name": "MQ_TOPICS",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
-            "description": "Broker user name",
+            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.",
             "name": "MQ_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": false
         },
         {
-            "description": "Broker user password",
+            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.",
             "name": "MQ_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": false
         },
         {
-            "description": "ActiveMQ Admin User",
+            "description": "User name for admin user. If left empty, it will be generated.",
             "name": "AMQ_ADMIN_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "ActiveMQ Admin Password",
+            "description": "Password for admin user. If left empty, it will be generated.",
             "name": "AMQ_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Name of a secret containing SSL related files",
             "name": "AMQ_SECRET",
-            "value": "amq-app-secret"
+            "value": "amq-app-secret",
+            "required": true
         },
         {
             "description": "SSL trust store filename",
             "name": "AMQ_TRUSTSTORE",
-            "value": "broker.ts"
+            "value": "broker.ts",
+            "required": true
+        },
+        {
+            "description": "SSL trust store password",
+            "name": "AMQ_TRUSTSTORE_PASSWORD",
+            "value": "",
+            "required": true
         },
         {
             "description": "SSL key store filename",
             "name": "AMQ_KEYSTORE",
-            "value": "broker.ks"
+            "value": "broker.ks",
+            "required": true
+        },
+        {
+            "description": "Password for accessing SSL keystore",
+            "name": "AMQ_KEYSTORE_PASSWORD",
+            "value": "",
+            "required": true
+        },
+        {
+            "description": "The discovery agent type to use for discovering mesh endpoints.  'dns' will use OpenShift's DNS service to resolve endpoints.  'kube' will use Kubernetes REST API to resolve service endpoints.  If using 'kube' the service account for the pod must have the 'view' role, which can be added via 'oc policy add-role-to-user view system:serviceaccount:<namespace>:default' where <namespace> is the project namespace.",
+            "name": "AMQ_MESH_DISCOVERY_TYPE",
+            "value": "kube",
+            "required": false
+        },
+        {
+            "description": "The A-MQ storage usage limit",
+            "name": "AMQ_STORAGE_USAGE_LIMIT",
+            "value": "100 gb",
+            "required": false
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -97,7 +137,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's amqp port."
+                    "description": "The broker's AMQP port."
                 }
             }
         },
@@ -121,7 +161,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's amqp ssl port."
+                    "description": "The broker's AMQP SSL port."
                 }
             }
         },
@@ -145,7 +185,31 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's mqtt port."
+                    "description": "The broker's MQTT port."
+                }
+            }
+        },
+        {
+            "kind": "Service",
+            "apiVersion": "v1",
+            "spec": {
+                "ports": [
+                    {
+                        "port": 8883,
+                        "targetPort": 8883
+                    }
+                ],
+                "selector": {
+                    "deploymentConfig": "${APPLICATION_NAME}-amq"
+                }
+            },
+            "metadata": {
+                "name": "${APPLICATION_NAME}-amq-mqtt-ssl",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "The broker's MQTT SSL port."
                 }
             }
         },
@@ -169,7 +233,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's stomp port."
+                    "description": "The broker's STOMP port."
                 }
             }
         },
@@ -193,7 +257,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's stomp ssl port."
+                    "description": "The broker's STOMP SSL port."
                 }
             }
         },
@@ -217,7 +281,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's tcp (openwire) port."
+                    "description": "The broker's OpenWire port."
                 }
             }
         },
@@ -241,7 +305,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's tcp ssl (openwire) port."
+                    "description": "The broker's OpenWire (SSL) port."
                 }
             }
         },
@@ -268,10 +332,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
-                                "name": "jboss-amq-6:${AMQ_RELEASE}"
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                                "name": "jboss-amq-62:1.1"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -288,10 +355,11 @@
                     },
                     "spec": {
                         "serviceAccount": "amq-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-amq",
-                                "image": "jboss-amq-6",
+                                "image": "jboss-amq-62",
                                 "imagePullPolicy": "Always",
                                 "volumeMounts": [
                                     {
@@ -326,6 +394,11 @@
                                         "protocol": "TCP"
                                     },
                                     {
+                                        "name": "mqtt-ssl",
+                                        "containerPort": 8883,
+                                        "protocol": "TCP"
+                                    },
+                                    {
                                         "name": "stomp",
                                         "containerPort": 61613,
                                         "protocol": "TCP"
@@ -356,7 +429,7 @@
                                         "value": "${MQ_PASSWORD}"
                                     },
                                     {
-                                        "name": "AMQ_PROTOCOLS",
+                                        "name": "AMQ_TRANSPORTS",
                                         "value": "${MQ_PROTOCOL}"
                                     },
                                     {
@@ -376,10 +449,22 @@
                                         "value": "${AMQ_ADMIN_PASSWORD}"
                                     },
                                     {
+                                        "name": "AMQ_MESH_DISCOVERY_TYPE",
+                                        "value": "${AMQ_MESH_DISCOVERY_TYPE}"
+                                    },
+                                    {
                                         "name": "AMQ_MESH_SERVICE_NAME",
                                         "value": "${APPLICATION_NAME}-amq-tcp"
                                     },
                                     {
+                                        "name": "AMQ_MESH_SERVICE_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
+                                    },
+                                    {
                                         "name": "AMQ_KEYSTORE_TRUSTSTORE_DIR",
                                         "value": "/etc/amq-secret-volume"
                                     },
@@ -388,8 +473,20 @@
                                         "value": "${AMQ_TRUSTSTORE}"
                                     },
                                     {
+                                        "name": "AMQ_TRUSTSTORE_PASSWORD",
+                                        "value": "${AMQ_TRUSTSTORE_PASSWORD}"
+                                    },
+                                    {
                                         "name": "AMQ_KEYSTORE",
                                         "value": "${AMQ_KEYSTORE}"
+                                    },
+                                    {
+                                        "name": "AMQ_KEYSTORE_PASSWORD",
+                                        "value": "${AMQ_KEYSTORE_PASSWORD}"
+                                    },
+                                    {
+                                        "name": "AMQ_STORAGE_USAGE_LIMIT",
+                                        "value": "${AMQ_STORAGE_USAGE_LIMIT}"
                                     }
                                 ]
                             }

+ 118 - 105
roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-persistent-sti.json

@@ -3,129 +3,149 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "description": "Application template for EAP 6 A-MQ applications with persistent storage built using STI.",
-            "iconClass" : "icon-jboss"
+            "description": "Application template for EAP 6 A-MQ applications with persistent storage built using S2I.",
+            "iconClass": "icon-jboss",
+            "tags": "eap,amq,javaee,java,messaging,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "eap6-amq-persistent-sti"
+        "name": "eap64-amq-persistent-s2i"
     },
     "labels": {
-        "template": "eap6-amq-persistent-sti"
+        "template": "eap64-amq-persistent-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "EAP Release version, e.g. 6.4, etc.",
-            "name": "EAP_RELEASE",
-            "value": "6.4"
-        },
-        {
-            "description": "ActiveMQ Release version, e.g. 6.2, etc.",
-            "name": "AMQ_RELEASE",
-            "value": "6.2"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "eap-app"
+            "value": "eap-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "helloworld-mdb",
+            "required": false
         },
         {
             "description": "Size of persistent storage for database volume.",
             "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "512Mi",
+            "required": true
         },
         {
             "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/ConnectionFactory",
             "name": "MQ_JNDI",
-            "value": "java:/ConnectionFactory"
+            "value": "java:/ConnectionFactory",
+            "required": false
         },
         {
-            "description": "Protocol to configure.  Only openwire is supported by EAP.  amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP",
+            "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.",
             "name": "MQ_PROTOCOL",
-            "value": "openwire"
+            "value": "openwire",
+            "required": false
         },
         {
-            "description": "Queue names",
+            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.",
             "name": "MQ_QUEUES",
-            "value": ""
+            "value": "HELLOWORLDMDBQueue",
+            "required": false
         },
         {
-            "description": "Topic names",
+            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.",
             "name": "MQ_TOPICS",
-            "value": ""
+            "value": "HELLOWORLDMDBTopic",
+            "required": false
         },
         {
             "description": "The name of the secret containing the keystore file",
             "name": "EAP_HTTPS_SECRET",
-            "value": "eap-app-secret"
+            "value": "eap-app-secret",
+            "required": false
         },
         {
             "description": "The name of the keystore file within the secret",
             "name": "EAP_HTTPS_KEYSTORE",
-            "value": "keystore.jks"
+            "value": "keystore.jks",
+            "required": false
         },
         {
             "description": "The name associated with the server certificate",
             "name": "EAP_HTTPS_NAME",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The password for the keystore and certificate",
             "name": "EAP_HTTPS_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
-            "description": "Broker user name",
+            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.",
             "name": "MQ_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": false
         },
         {
-            "description": "Broker user password",
+            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.",
             "name": "MQ_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": false
         },
         {
-            "description": "ActiveMQ Admin User",
+            "description": "User name for broker admin. If left empty, it will be generated.",
             "name": "AMQ_ADMIN_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "ActiveMQ Admin Password",
+            "description": "Password for broker admin. If left empty, it will be generated.",
             "name": "AMQ_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -149,7 +169,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The web server's http port."
+                    "description": "The web server's HTTP port."
                 }
             }
         },
@@ -173,32 +193,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The web server's https port."
-                }
-            }
-        },
-        {
-            "kind": "Service",
-            "apiVersion": "v1",
-            "spec": {
-                "ports": [
-                    {
-                        "port": 8888,
-                        "targetPort": 8888
-                    }
-                ],
-                "portalIP": "None",
-                "selector": {
-                    "deploymentConfig": "${APPLICATION_NAME}"
-                }
-            },
-            "metadata": {
-                "name": "${APPLICATION_NAME}-ping",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                },
-                "annotations": {
-                    "description": "Ping service for clustered applications."
+                    "description": "The web server's HTTPS port."
                 }
             }
         },
@@ -222,25 +217,25 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's tcp (openwire) port."
+                    "description": "The broker's OpenWire port."
                 }
             }
         },
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-              "name": "${APPLICATION_NAME}-http-route",
-              "labels": {
-                  "application": "${APPLICATION_NAME}"
-              },
-              "annotations": {
-                  "description": "Route for application's http service."
-              }
+                "name": "${APPLICATION_NAME}",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "Route for application's HTTP service."
+                }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -249,23 +244,23 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "Route for application's https service."
+                    "description": "Route for application's HTTPS service."
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -292,18 +287,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-eap6-openshift:${EAP_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-eap64-openshift:1.1"
                         }
                     }
                 },
@@ -317,18 +313,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -359,6 +358,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -375,6 +377,7 @@
                     },
                     "spec": {
                         "serviceAccount": "eap-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -443,12 +446,16 @@
                                         "value": "${MQ_TOPICS}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME",
-                                        "value": "${APPLICATION_NAME}-ping"
+                                        "name": "OPENSHIFT_KUBE_PING_LABELS",
+                                        "value": "application=${APPLICATION_NAME}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT",
-                                        "value": "8888"
+                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
                                     },
                                     {
                                         "name": "EAP_HTTPS_KEYSTORE_DIR",
@@ -504,10 +511,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
-                                "name": "jboss-amq-6:${AMQ_RELEASE}"
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                                "name": "jboss-amq-62:1.1"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -523,10 +533,11 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-amq",
-                                "image": "jboss-amq-6",
+                                "image": "jboss-amq-62",
                                 "imagePullPolicy": "Always",
                                 "readinessProbe": {
                                     "exec": {
@@ -590,7 +601,7 @@
                                         "value": "${MQ_PASSWORD}"
                                     },
                                     {
-                                        "name": "AMQ_PROTOCOLS",
+                                        "name": "AMQ_TRANSPORTS",
                                         "value": "${MQ_PROTOCOL}"
                                     },
                                     {
@@ -634,7 +645,9 @@
                 }
             },
             "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
                 "resources": {
                     "requests": {
                         "storage": "${VOLUME_CAPACITY}"

+ 113 - 103
roles/openshift_examples/files/examples/xpaas-templates/eap6-amq-sti.json

@@ -3,124 +3,143 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "description": "Application template for EAP 6 A-MQ applications built using STI.",
-            "iconClass" : "icon-jboss"
+            "description": "Application template for EAP 6 A-MQ applications built using S2I.",
+            "iconClass": "icon-jboss",
+            "tags": "eap,amq,javaee,java,messaging,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "eap6-amq-sti"
+        "name": "eap64-amq-s2i"
     },
     "labels": {
-        "template": "eap6-amq-sti"
+        "template": "eap64-amq-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "EAP Release version, e.g. 6.4, etc.",
-            "name": "EAP_RELEASE",
-            "value": "6.4"
-        },
-        {
-            "description": "ActiveMQ Release version, e.g. 6.2, etc.",
-            "name": "AMQ_RELEASE",
-            "value": "6.2"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "eap-app"
+            "value": "eap-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "helloworld-mdb",
+            "required": false
         },
         {
             "description": "JNDI name for connection factory used by applications to connect to the broker, e.g. java:/ConnectionFactory",
             "name": "MQ_JNDI",
-            "value": "java:/ConnectionFactory"
+            "value": "java:/ConnectionFactory",
+            "required": false
         },
         {
-            "description": "Protocol to configure.  Only openwire is supported by EAP.  amqp, amqp+ssl, mqtt, stomp, stomp+ssl, and ssl are not supported by EAP",
+            "description": "Broker protocols to configure, separated by commas. Allowed values are: `openwire`, `amqp`, `stomp` and `mqtt`. Only `openwire` is supported by EAP.",
             "name": "MQ_PROTOCOL",
-            "value": "openwire"
+            "value": "openwire",
+            "required": false
         },
         {
-            "description": "Queue names",
+            "description": "Queue names, separated by commas. These queues will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.",
             "name": "MQ_QUEUES",
-            "value": ""
+            "value": "HELLOWORLDMDBQueue",
+            "required": false
         },
         {
-            "description": "Topic names",
+            "description": "Topic names, separated by commas. These topics will be automatically created when the broker starts. Also, they will be made accessible as JNDI resources in EAP.",
             "name": "MQ_TOPICS",
-            "value": ""
+            "value": "HELLOWORLDMDBTopic",
+            "required": false
         },
         {
             "description": "The name of the secret containing the keystore file",
             "name": "EAP_HTTPS_SECRET",
-            "value": "eap-app-secret"
+            "value": "eap-app-secret",
+            "required": false
         },
         {
             "description": "The name of the keystore file within the secret",
             "name": "EAP_HTTPS_KEYSTORE",
-            "value": "keystore.jks"
+            "value": "keystore.jks",
+            "required": false
         },
         {
             "description": "The name associated with the server certificate",
             "name": "EAP_HTTPS_NAME",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The password for the keystore and certificate",
             "name": "EAP_HTTPS_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
-            "description": "Broker user name",
+            "description": "User name for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.",
             "name": "MQ_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": false
         },
         {
-            "description": "Broker user password",
+            "description": "Password for standard broker user. It is required for connecting to the broker. If left empty, it will be generated.",
             "name": "MQ_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": false
         },
         {
-            "description": "ActiveMQ Admin User",
+            "description": "User name for broker admin. If left empty, it will be generated.",
             "name": "AMQ_ADMIN_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "ActiveMQ Admin Password",
+            "description": "Password for broker admin. If left empty, it will be generated.",
             "name": "AMQ_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -144,7 +163,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The web server's http port."
+                    "description": "The web server's HTTP port."
                 }
             }
         },
@@ -168,32 +187,7 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The web server's https port."
-                }
-            }
-        },
-        {
-            "kind": "Service",
-            "apiVersion": "v1",
-            "spec": {
-                "ports": [
-                    {
-                        "port": 8888,
-                        "targetPort": 8888
-                    }
-                ],
-                "portalIP": "None",
-                "selector": {
-                    "deploymentConfig": "${APPLICATION_NAME}"
-                }
-            },
-            "metadata": {
-                "name": "${APPLICATION_NAME}-ping",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                },
-                "annotations": {
-                    "description": "Ping service for clustered applications."
+                    "description": "The web server's HTTPS port."
                 }
             }
         },
@@ -217,25 +211,25 @@
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "The broker's tcp (openwire) port."
+                    "description": "The broker's OpenWire port."
                 }
             }
         },
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-              "name": "${APPLICATION_NAME}-http-route",
-              "labels": {
-                  "application": "${APPLICATION_NAME}"
-              },
-              "annotations": {
-                  "description": "Route for application's http service."
-              }
+                "name": "${APPLICATION_NAME}",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                },
+                "annotations": {
+                    "description": "Route for application's HTTP service."
+                }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -244,23 +238,23 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
                 "annotations": {
-                    "description": "Route for application's https service."
+                    "description": "Route for application's HTTPS service."
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -287,18 +281,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-eap6-openshift:${EAP_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-eap64-openshift:1.1"
                         }
                     }
                 },
@@ -312,18 +307,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -354,6 +352,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -370,6 +371,7 @@
                     },
                     "spec": {
                         "serviceAccount": "eap-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -438,12 +440,16 @@
                                         "value": "${MQ_TOPICS}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME",
-                                        "value": "${APPLICATION_NAME}-ping"
+                                        "name": "OPENSHIFT_KUBE_PING_LABELS",
+                                        "value": "application=${APPLICATION_NAME}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT",
-                                        "value": "8888"
+                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
                                     },
                                     {
                                         "name": "EAP_HTTPS_KEYSTORE_DIR",
@@ -499,10 +505,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
-                                "name": "jboss-amq-6:${AMQ_RELEASE}"
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                                "name": "jboss-amq-62:1.1"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -518,10 +527,11 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-amq",
-                                "image": "jboss-amq-6",
+                                "image": "jboss-amq-62",
                                 "imagePullPolicy": "Always",
                                 "readinessProbe": {
                                     "exec": {
@@ -579,7 +589,7 @@
                                         "value": "${MQ_PASSWORD}"
                                     },
                                     {
-                                        "name": "AMQ_PROTOCOLS",
+                                        "name": "AMQ_TRANSPORTS",
                                         "value": "${MQ_PROTOCOL}"
                                     },
                                     {

+ 67 - 66
roles/openshift_examples/files/examples/xpaas-templates/eap6-basic-sti.json

@@ -3,72 +3,86 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-jboss",
-            "description": "Application template for EAP 6 applications built using STI."
+            "iconClass": "icon-jboss",
+            "description": "Application template for EAP 6 applications built using S2I.",
+            "tags": "eap,javaee,java,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "eap6-basic-sti"
+        "name": "eap64-basic-s2i"
     },
     "labels": {
-        "template": "eap6-basic-sti"
+        "template": "eap64-basic-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "EAP Release version, e.g. 6.4, etc.",
-            "name": "EAP_RELEASE",
-            "value": "6.4"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "eap-app"
+            "value": "eap-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI",
-            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "6.4.x"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "6.4.x",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": "kitchensink"
+            "name": "CONTEXT_DIR",
+            "value": "kitchensink",
+            "required": false
         },
         {
             "description": "Queue names",
             "name": "HORNETQ_QUEUES",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Topic names",
             "name": "HORNETQ_TOPICS",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "HornetQ cluster admin password",
             "name": "HORNETQ_CLUSTER_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -97,36 +111,11 @@
             }
         },
         {
-            "kind": "Service",
-            "apiVersion": "v1",
-            "spec": {
-                "ports": [
-                    {
-                        "port": 8888,
-                        "targetPort": 8888
-                    }
-                ],
-                "portalIP": "None",
-                "selector": {
-                    "deploymentConfig": "${APPLICATION_NAME}"
-                }
-            },
-            "metadata": {
-                "name": "${APPLICATION_NAME}-ping",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                },
-                "annotations": {
-                    "description": "Ping service for clustered applications."
-                }
-            }
-        },
-        {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -135,7 +124,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -164,18 +153,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-eap6-openshift:${EAP_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-eap64-openshift:1.1"
                         }
                     }
                 },
@@ -189,18 +179,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -231,6 +224,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -246,6 +242,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -274,12 +271,16 @@
                                 ],
                                 "env": [
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME",
-                                        "value": "${APPLICATION_NAME}-ping"
+                                        "name": "OPENSHIFT_KUBE_PING_LABELS",
+                                        "value": "application=${APPLICATION_NAME}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT",
-                                        "value": "8888"
+                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
                                     },
                                     {
                                         "name": "HORNETQ_CLUSTER_PASSWORD",
@@ -301,4 +302,4 @@
             }
         }
     ]
-}
+}

+ 79 - 74
roles/openshift_examples/files/examples/xpaas-templates/eap6-https-sti.json

@@ -3,92 +3,110 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-jboss",
-            "description": "Application template for EAP 6 applications built using STI."
+            "iconClass": "icon-jboss",
+            "description": "Application template for EAP 6 applications built using S2I.",
+            "tags": "eap,javaee,java,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "eap6-https-sti"
+        "name": "eap64-https-s2i"
     },
     "labels": {
-        "template": "eap6-https-sti"
+        "template": "eap64-https-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "EAP Release version, e.g. 6.4, etc.",
-            "name": "EAP_RELEASE",
-            "value": "6.4"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "eap-app"
+            "value": "eap-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI",
-            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-developer/jboss-eap-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "6.4.x"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "6.4.x",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": "kitchensink"
+            "name": "CONTEXT_DIR",
+            "value": "kitchensink",
+            "required": false
         },
         {
             "description": "Queue names",
             "name": "HORNETQ_QUEUES",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Topic names",
             "name": "HORNETQ_TOPICS",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The name of the secret containing the keystore file",
             "name": "EAP_HTTPS_SECRET",
-            "value": "eap-app-secret"
+            "value": "eap-app-secret",
+            "required": true
         },
         {
             "description": "The name of the keystore file within the secret",
             "name": "EAP_HTTPS_KEYSTORE",
-            "value": "keystore.jks"
+            "value": "keystore.jks",
+            "required": false
         },
         {
             "description": "The name associated with the server certificate",
             "name": "EAP_HTTPS_NAME",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The password for the keystore and certificate",
             "name": "EAP_HTTPS_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "HornetQ cluster admin password",
             "name": "HORNETQ_CLUSTER_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -141,36 +159,11 @@
             }
         },
         {
-            "kind": "Service",
-            "apiVersion": "v1",
-            "spec": {
-                "ports": [
-                    {
-                        "port": 8888,
-                        "targetPort": 8888
-                    }
-                ],
-                "portalIP": "None",
-                "selector": {
-                    "deploymentConfig": "${APPLICATION_NAME}"
-                }
-            },
-            "metadata": {
-                "name": "${APPLICATION_NAME}-ping",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                },
-                "annotations": {
-                    "description": "Ping service for clustered applications."
-                }
-            }
-        },
-        {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -179,7 +172,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -188,9 +181,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -199,12 +192,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -231,18 +224,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-eap6-openshift:${EAP_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-eap64-openshift:1.1"
                         }
                     }
                 },
@@ -256,18 +250,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -298,6 +295,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -314,6 +314,7 @@
                     },
                     "spec": {
                         "serviceAccount": "eap-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -354,12 +355,16 @@
                                 ],
                                 "env": [
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME",
-                                        "value": "${APPLICATION_NAME}-ping"
+                                        "name": "OPENSHIFT_KUBE_PING_LABELS",
+                                        "value": "application=${APPLICATION_NAME}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT",
-                                        "value": "8888"
+                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
                                     },
                                     {
                                         "name": "EAP_HTTPS_KEYSTORE_DIR",
@@ -405,4 +410,4 @@
             }
         }
     ]
-}
+}

+ 116 - 92
roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-persistent-sti.json

@@ -3,148 +3,179 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "description": "Application template for EAP 6 MongDB applications with persistent storage built using STI.",
-            "iconClass" : "icon-jboss"
+            "description": "Application template for EAP 6 MongDB applications with persistent storage built using S2I.",
+            "iconClass": "icon-jboss",
+            "tags": "eap,mongodb,javaee,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "eap6-mongodb-persistent-sti"
+        "name": "eap64-mongodb-persistent-s2i"
     },
     "labels": {
-        "template": "eap6-mongodb-persistent-sti"
+        "template": "eap64-mongodb-persistent-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "EAP Release version, e.g. 6.4, etc.",
-            "name": "EAP_RELEASE",
-            "value": "6.4"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "eap-app"
+            "value": "eap-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-mongodb",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "Size of persistent storage for database volume.",
             "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "512Mi",
+            "required": true
         },
         {
             "description": "Queue names",
             "name": "HORNETQ_QUEUES",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Topic names",
             "name": "HORNETQ_TOPICS",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The name of the secret containing the keystore file",
             "name": "EAP_HTTPS_SECRET",
-            "value": "eap-app-secret"
+            "value": "eap-app-secret",
+            "required": false
         },
         {
             "description": "The name of the keystore file within the secret",
             "name": "EAP_HTTPS_KEYSTORE",
-            "value": "keystore.jks"
+            "value": "keystore.jks",
+            "required": false
         },
         {
             "description": "The name associated with the server certificate",
             "name": "EAP_HTTPS_NAME",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The password for the keystore and certificate",
             "name": "EAP_HTTPS_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Disable data file preallocation.",
-            "name": "MONGODB_NOPREALLOC"
+            "name": "MONGODB_NOPREALLOC",
+            "required": false
         },
         {
             "description": "Set MongoDB to use a smaller default data file size.",
-            "name": "MONGODB_SMALLFILES"
+            "name": "MONGODB_SMALLFILES",
+            "required": false
         },
         {
             "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.",
-            "name": "MONGODB_QUIET"
+            "name": "MONGODB_QUIET",
+            "required": false
         },
         {
             "description": "HornetQ cluster admin password",
             "name": "HORNETQ_CLUSTER_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database admin password",
             "name": "DB_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -202,31 +233,6 @@
             "spec": {
                 "ports": [
                     {
-                        "port": 8888,
-                        "targetPort": 8888
-                    }
-                ],
-                "portalIP": "None",
-                "selector": {
-                    "deploymentConfig": "${APPLICATION_NAME}"
-                }
-            },
-            "metadata": {
-                "name": "${APPLICATION_NAME}-ping",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                },
-                "annotations": {
-                    "description": "Ping service for clustered applications."
-                }
-            }
-        },
-        {
-            "kind": "Service",
-            "apiVersion": "v1",
-            "spec": {
-                "ports": [
-                    {
                         "port": 27017,
                         "targetPort": 27017
                     }
@@ -248,9 +254,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -259,7 +265,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -268,9 +274,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -279,12 +285,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -311,18 +317,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-eap6-openshift:${EAP_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-eap64-openshift:1.1"
                         }
                     }
                 },
@@ -336,18 +343,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -378,6 +388,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -394,6 +407,7 @@
                     },
                     "spec": {
                         "serviceAccount": "eap-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -470,12 +484,16 @@
                                         "value": "${DB_TX_ISOLATION}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME",
-                                        "value": "${APPLICATION_NAME}-ping"
+                                        "name": "OPENSHIFT_KUBE_PING_LABELS",
+                                        "value": "application=${APPLICATION_NAME}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT",
-                                        "value": "8888"
+                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
                                     },
                                     {
                                         "name": "EAP_HTTPS_KEYSTORE_DIR",
@@ -543,10 +561,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mongodb:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -562,6 +583,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mongodb",
@@ -574,11 +596,11 @@
                                     }
                                 ],
                                 "volumeMounts": [
-                                     {
-                                         "mountPath": "/var/lib/mongodb/data",
-                                         "name": "${APPLICATION_NAME}-mongodb-pvol"
-                                     }
-                                 ],
+                                    {
+                                        "mountPath": "/var/lib/mongodb/data",
+                                        "name": "${APPLICATION_NAME}-mongodb-pvol"
+                                    }
+                                ],
                                 "env": [
                                     {
                                         "name": "MONGODB_USER",
@@ -633,7 +655,9 @@
                 }
             },
             "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
                 "resources": {
                     "requests": {
                         "storage": "${VOLUME_CAPACITY}"
@@ -642,4 +666,4 @@
             }
         }
     ]
-}
+}

+ 106 - 85
roles/openshift_examples/files/examples/xpaas-templates/eap6-mongodb-sti.json

@@ -3,143 +3,173 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "description": "Application template for EAP 6 MongDB applications built using STI.",
-            "iconClass" : "icon-jboss"
+            "description": "Application template for EAP 6 MongDB applications built using S2I.",
+            "iconClass": "icon-jboss",
+            "tags": "eap,mongodb,javaee,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "eap6-mongodb-sti"
+        "name": "eap64-mongodb-s2i"
     },
     "labels": {
-        "template": "eap6-mongodb-sti"
+        "template": "eap64-mongodb-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "EAP Release version, e.g. 6.4, etc.",
-            "name": "EAP_RELEASE",
-            "value": "6.4"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "eap-app"
+            "value": "eap-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-mongodb",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "Queue names",
             "name": "HORNETQ_QUEUES",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Topic names",
             "name": "HORNETQ_TOPICS",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The name of the secret containing the keystore file",
             "name": "EAP_HTTPS_SECRET",
-            "value": "eap-app-secret"
+            "value": "eap-app-secret",
+            "required": false
         },
         {
             "description": "The name of the keystore file within the secret",
             "name": "EAP_HTTPS_KEYSTORE",
-            "value": "keystore.jks"
+            "value": "keystore.jks",
+            "required": false
         },
         {
             "description": "The name associated with the server certificate",
             "name": "EAP_HTTPS_NAME",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The password for the keystore and certificate",
             "name": "EAP_HTTPS_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Disable data file preallocation.",
-            "name": "MONGODB_NOPREALLOC"
+            "name": "MONGODB_NOPREALLOC",
+            "required": false
         },
         {
             "description": "Set MongoDB to use a smaller default data file size.",
-            "name": "MONGODB_SMALLFILES"
+            "name": "MONGODB_SMALLFILES",
+            "required": false
         },
         {
             "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.",
-            "name": "MONGODB_QUIET"
+            "name": "MONGODB_QUIET",
+            "required": false
         },
         {
             "description": "HornetQ cluster admin password",
             "name": "HORNETQ_CLUSTER_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database admin password",
             "name": "DB_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -197,31 +227,6 @@
             "spec": {
                 "ports": [
                     {
-                        "port": 8888,
-                        "targetPort": 8888
-                    }
-                ],
-                "portalIP": "None",
-                "selector": {
-                    "deploymentConfig": "${APPLICATION_NAME}"
-                }
-            },
-            "metadata": {
-                "name": "${APPLICATION_NAME}-ping",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                },
-                "annotations": {
-                    "description": "Ping service for clustered applications."
-                }
-            }
-        },
-        {
-            "kind": "Service",
-            "apiVersion": "v1",
-            "spec": {
-                "ports": [
-                    {
                         "port": 27017,
                         "targetPort": 27017
                     }
@@ -243,9 +248,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -254,7 +259,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -263,9 +268,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -274,12 +279,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -306,18 +311,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-eap6-openshift:${EAP_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-eap64-openshift:1.1"
                         }
                     }
                 },
@@ -331,18 +337,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -373,6 +382,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -389,6 +401,7 @@
                     },
                     "spec": {
                         "serviceAccount": "eap-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -465,12 +478,16 @@
                                         "value": "${DB_TX_ISOLATION}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME",
-                                        "value": "${APPLICATION_NAME}-ping"
+                                        "name": "OPENSHIFT_KUBE_PING_LABELS",
+                                        "value": "application=${APPLICATION_NAME}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT",
-                                        "value": "8888"
+                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
                                     },
                                     {
                                         "name": "EAP_HTTPS_KEYSTORE_DIR",
@@ -538,10 +555,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mongodb:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -557,6 +577,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mongodb",
@@ -605,4 +626,4 @@
             }
         }
     ]
-}
+}

+ 113 - 88
roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-persistent-sti.json

@@ -3,150 +3,182 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "description": "Application template for EAP 6 MySQL applications with persistent storage built using STI.",
-            "iconClass" : "icon-jboss"
+            "description": "Application template for EAP 6 MySQL applications with persistent storage built using S2I.",
+            "iconClass": "icon-jboss",
+            "tags": "eap,mysql,javaee,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "eap6-mysql-persistent-sti"
+        "name": "eap64-mysql-persistent-s2i"
     },
     "labels": {
-        "template": "eap6-mysql-persistent-sti"
+        "template": "eap64-mysql-persistent-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "EAP Release version, e.g. 6.4, etc.",
-            "name": "EAP_RELEASE",
-            "value": "6.4"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "eap-app"
+            "value": "eap-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "Size of persistent storage for database volume.",
             "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "512Mi",
+            "required": true
         },
         {
             "description": "Queue names",
             "name": "HORNETQ_QUEUES",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Topic names",
             "name": "HORNETQ_TOPICS",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The name of the secret containing the keystore file",
             "name": "EAP_HTTPS_SECRET",
-            "value": "eap-app-secret"
+            "value": "eap-app-secret",
+            "required": false
         },
         {
             "description": "The name of the keystore file within the secret",
             "name": "EAP_HTTPS_KEYSTORE",
-            "value": "keystore.jks"
+            "value": "keystore.jks",
+            "required": false
         },
         {
             "description": "The name associated with the server certificate",
             "name": "EAP_HTTPS_NAME",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The password for the keystore and certificate",
             "name": "EAP_HTTPS_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Sets how the table names are stored and compared.",
-            "name": "MYSQL_LOWER_CASE_TABLE_NAMES"
+            "name": "MYSQL_LOWER_CASE_TABLE_NAMES",
+            "required": false
         },
         {
             "description": "The maximum permitted number of simultaneous client connections.",
-            "name": "MYSQL_MAX_CONNECTIONS"
+            "name": "MYSQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "The minimum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MIN_WORD_LEN"
+            "name": "MYSQL_FT_MIN_WORD_LEN",
+            "required": false
         },
         {
             "description": "The maximum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MAX_WORD_LEN"
+            "name": "MYSQL_FT_MAX_WORD_LEN",
+            "required": false
         },
         {
             "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.",
-            "name": "MYSQL_AIO"
+            "name": "MYSQL_AIO",
+            "required": false
         },
         {
             "description": "HornetQ cluster admin password",
             "name": "HORNETQ_CLUSTER_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -204,31 +236,6 @@
             "spec": {
                 "ports": [
                     {
-                        "port": 8888,
-                        "targetPort": 8888
-                    }
-                ],
-                "portalIP": "None",
-                "selector": {
-                    "deploymentConfig": "${APPLICATION_NAME}"
-                }
-            },
-            "metadata": {
-                "name": "${APPLICATION_NAME}-ping",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                },
-                "annotations": {
-                    "description": "Ping service for clustered applications."
-                }
-            }
-        },
-        {
-            "kind": "Service",
-            "apiVersion": "v1",
-            "spec": {
-                "ports": [
-                    {
                         "port": 3306,
                         "targetPort": 3306
                     }
@@ -250,9 +257,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -261,7 +268,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -270,9 +277,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -281,12 +288,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -313,18 +320,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-eap6-openshift:${EAP_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-eap64-openshift:1.1"
                         }
                     }
                 },
@@ -338,18 +346,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -380,6 +391,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -396,6 +410,7 @@
                     },
                     "spec": {
                         "serviceAccount": "eap-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -472,12 +487,16 @@
                                         "value": "${DB_TX_ISOLATION}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME",
-                                        "value": "${APPLICATION_NAME}-ping"
+                                        "name": "OPENSHIFT_KUBE_PING_LABELS",
+                                        "value": "application=${APPLICATION_NAME}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT",
-                                        "value": "8888"
+                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
                                     },
                                     {
                                         "name": "EAP_HTTPS_KEYSTORE_DIR",
@@ -545,10 +564,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mysql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -564,6 +586,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mysql",
@@ -639,7 +662,9 @@
                 }
             },
             "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
                 "resources": {
                     "requests": {
                         "storage": "${VOLUME_CAPACITY}"
@@ -648,4 +673,4 @@
             }
         }
     ]
-}
+}

+ 108 - 86
roles/openshift_examples/files/examples/xpaas-templates/eap6-mysql-sti.json

@@ -3,145 +3,176 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "description": "Application template for EAP 6 MySQL applications built using STI.",
-            "iconClass" : "icon-jboss"
+            "description": "Application template for EAP 6 MySQL applications built using S2I.",
+            "iconClass": "icon-jboss",
+            "tags": "eap,mysql,javaee,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "eap6-mysql-sti"
+        "name": "eap64-mysql-s2i"
     },
     "labels": {
-        "template": "eap6-mysql-sti"
+        "template": "eap64-mysql-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "EAP Release version, e.g. 6.4, etc.",
-            "name": "EAP_RELEASE",
-            "value": "6.4"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "eap-app"
+            "value": "eap-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mysql",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "Queue names",
             "name": "HORNETQ_QUEUES",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Topic names",
             "name": "HORNETQ_TOPICS",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The name of the secret containing the keystore file",
             "name": "EAP_HTTPS_SECRET",
-            "value": "eap-app-secret"
+            "value": "eap-app-secret",
+            "required": false
         },
         {
             "description": "The name of the keystore file within the secret",
             "name": "EAP_HTTPS_KEYSTORE",
-            "value": "keystore.jks"
+            "value": "keystore.jks",
+            "required": false
         },
         {
             "description": "The name associated with the server certificate",
             "name": "EAP_HTTPS_NAME",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The password for the keystore and certificate",
             "name": "EAP_HTTPS_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Sets how the table names are stored and compared.",
-            "name": "MYSQL_LOWER_CASE_TABLE_NAMES"
+            "name": "MYSQL_LOWER_CASE_TABLE_NAMES",
+            "required": false
         },
         {
             "description": "The maximum permitted number of simultaneous client connections.",
-            "name": "MYSQL_MAX_CONNECTIONS"
+            "name": "MYSQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "The minimum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MIN_WORD_LEN"
+            "name": "MYSQL_FT_MIN_WORD_LEN",
+            "required": false
         },
         {
             "description": "The maximum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MAX_WORD_LEN"
+            "name": "MYSQL_FT_MAX_WORD_LEN",
+            "required": false
         },
         {
             "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.",
-            "name": "MYSQL_AIO"
+            "name": "MYSQL_AIO",
+            "required": false
         },
         {
             "description": "HornetQ cluster admin password",
             "name": "HORNETQ_CLUSTER_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -199,31 +230,6 @@
             "spec": {
                 "ports": [
                     {
-                        "port": 8888,
-                        "targetPort": 8888
-                    }
-                ],
-                "portalIP": "None",
-                "selector": {
-                    "deploymentConfig": "${APPLICATION_NAME}"
-                }
-            },
-            "metadata": {
-                "name": "${APPLICATION_NAME}-ping",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                },
-                "annotations": {
-                    "description": "Ping service for clustered applications."
-                }
-            }
-        },
-        {
-            "kind": "Service",
-            "apiVersion": "v1",
-            "spec": {
-                "ports": [
-                    {
                         "port": 3306,
                         "targetPort": 3306
                     }
@@ -245,9 +251,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -256,7 +262,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -265,9 +271,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -276,12 +282,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -308,18 +314,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-eap6-openshift:${EAP_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-eap64-openshift:1.1"
                         }
                     }
                 },
@@ -333,18 +340,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -375,6 +385,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -391,6 +404,7 @@
                     },
                     "spec": {
                         "serviceAccount": "eap-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -467,12 +481,16 @@
                                         "value": "${DB_TX_ISOLATION}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME",
-                                        "value": "${APPLICATION_NAME}-ping"
+                                        "name": "OPENSHIFT_KUBE_PING_LABELS",
+                                        "value": "application=${APPLICATION_NAME}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT",
-                                        "value": "8888"
+                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
                                     },
                                     {
                                         "name": "EAP_HTTPS_KEYSTORE_DIR",
@@ -540,10 +558,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mysql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -559,6 +580,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mysql",
@@ -611,4 +633,4 @@
             }
         }
     ]
-}
+}

+ 111 - 89
roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-persistent-sti.json

@@ -3,138 +3,167 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "description": "Application template for EAP 6 PostgreSQL applications with persistent storage built using STI.",
-            "iconClass" : "icon-jboss"
+            "description": "Application template for EAP 6 PostgreSQL applications with persistent storage built using S2I.",
+            "iconClass": "icon-jboss",
+            "tags": "eap,postgresql,javaee,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "eap6-postgresql-persistent-sti"
+        "name": "eap64-postgresql-persistent-s2i"
     },
     "labels": {
-        "template": "eap6-postgresql-persistent-sti"
+        "template": "eap64-postgresql-persistent-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "EAP Release version, e.g. 6.4, etc.",
-            "name": "EAP_RELEASE",
-            "value": "6.4"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "eap-app"
+            "value": "eap-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "Size of persistent storage for database volume.",
             "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "512Mi",
+            "required": true
         },
         {
             "description": "Queue names",
             "name": "HORNETQ_QUEUES",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Topic names",
             "name": "HORNETQ_TOPICS",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The name of the secret containing the keystore file",
             "name": "EAP_HTTPS_SECRET",
-            "value": "eap-app-secret"
+            "value": "eap-app-secret",
+            "required": false
         },
         {
             "description": "The name of the keystore file within the secret",
             "name": "EAP_HTTPS_KEYSTORE",
-            "value": "keystore.jks"
+            "value": "keystore.jks",
+            "required": false
         },
         {
             "description": "The name associated with the server certificate",
             "name": "EAP_HTTPS_NAME",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The password for the keystore and certificate",
             "name": "EAP_HTTPS_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.",
-            "name": "POSTGRESQL_MAX_CONNECTIONS"
+            "name": "POSTGRESQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "Configures how much memory is dedicated to PostgreSQL for caching data.",
-            "name": "POSTGRESQL_SHARED_BUFFERS"
+            "name": "POSTGRESQL_SHARED_BUFFERS",
+            "required": false
         },
         {
             "description": "HornetQ cluster admin password",
             "name": "HORNETQ_CLUSTER_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -192,31 +221,6 @@
             "spec": {
                 "ports": [
                     {
-                        "port": 8888,
-                        "targetPort": 8888
-                    }
-                ],
-                "portalIP": "None",
-                "selector": {
-                    "deploymentConfig": "${APPLICATION_NAME}"
-                }
-            },
-            "metadata": {
-                "name": "${APPLICATION_NAME}-ping",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                },
-                "annotations": {
-                    "description": "Ping service for clustered applications."
-                }
-            }
-        },
-        {
-            "kind": "Service",
-            "apiVersion": "v1",
-            "spec": {
-                "ports": [
-                    {
                         "port": 5432,
                         "targetPort": 5432
                     }
@@ -238,9 +242,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -249,7 +253,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -258,9 +262,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -269,12 +273,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -301,18 +305,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-eap6-openshift:${EAP_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-eap64-openshift:1.1"
                         }
                     }
                 },
@@ -326,18 +331,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -368,6 +376,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -384,6 +395,7 @@
                     },
                     "spec": {
                         "serviceAccount": "eap-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -460,12 +472,16 @@
                                         "value": "${DB_TX_ISOLATION}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME",
-                                        "value": "${APPLICATION_NAME}-ping"
+                                        "name": "OPENSHIFT_KUBE_PING_LABELS",
+                                        "value": "application=${APPLICATION_NAME}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT",
-                                        "value": "8888"
+                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
                                     },
                                     {
                                         "name": "EAP_HTTPS_KEYSTORE_DIR",
@@ -533,10 +549,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "postgresql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -552,6 +571,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-postgresql",
@@ -564,10 +584,10 @@
                                     }
                                 ],
                                 "volumeMounts": [
-                                     {
-                                         "mountPath": "/var/lib/pgsql/data",
-                                         "name": "${APPLICATION_NAME}-postgresql-pvol"
-                                     }
+                                    {
+                                        "mountPath": "/var/lib/pgsql/data",
+                                        "name": "${APPLICATION_NAME}-postgresql-pvol"
+                                    }
                                 ],
                                 "env": [
                                     {
@@ -615,7 +635,9 @@
                 }
             },
             "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
                 "resources": {
                     "requests": {
                         "storage": "${VOLUME_CAPACITY}"
@@ -624,4 +646,4 @@
             }
         }
     ]
-}
+}

+ 102 - 83
roles/openshift_examples/files/examples/xpaas-templates/eap6-postgresql-sti.json

@@ -3,133 +3,161 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "description": "Application template for EAP 6 PostgreSQL applications built using STI.",
-            "iconClass" : "icon-jboss"
+            "description": "Application template for EAP 6 PostgreSQL applications built using S2I.",
+            "iconClass": "icon-jboss",
+            "tags": "eap,postgresql,javaee,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "eap6-postgresql-sti"
+        "name": "eap64-postgresql-s2i"
     },
     "labels": {
-        "template": "eap6-postgresql-sti"
+        "template": "eap64-postgresql-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "EAP Release version, e.g. 6.4, etc.",
-            "name": "EAP_RELEASE",
-            "value": "6.4"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "eap-app"
+            "value": "eap-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/postgresql",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "Queue names",
             "name": "HORNETQ_QUEUES",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Topic names",
             "name": "HORNETQ_TOPICS",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The name of the secret containing the keystore file",
             "name": "EAP_HTTPS_SECRET",
-            "value": "eap-app-secret"
+            "value": "eap-app-secret",
+            "required": false
         },
         {
             "description": "The name of the keystore file within the secret",
             "name": "EAP_HTTPS_KEYSTORE",
-            "value": "keystore.jks"
+            "value": "keystore.jks",
+            "required": false
         },
         {
             "description": "The name associated with the server certificate",
             "name": "EAP_HTTPS_NAME",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "The password for the keystore and certificate",
             "name": "EAP_HTTPS_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.",
-            "name": "POSTGRESQL_MAX_CONNECTIONS"
+            "name": "POSTGRESQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "Configures how much memory is dedicated to PostgreSQL for caching data.",
-            "name": "POSTGRESQL_SHARED_BUFFERS"
+            "name": "POSTGRESQL_SHARED_BUFFERS",
+            "required": false
         },
         {
             "description": "HornetQ cluster admin password",
             "name": "HORNETQ_CLUSTER_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -187,31 +215,6 @@
             "spec": {
                 "ports": [
                     {
-                        "port": 8888,
-                        "targetPort": 8888
-                    }
-                ],
-                "portalIP": "None",
-                "selector": {
-                    "deploymentConfig": "${APPLICATION_NAME}"
-                }
-            },
-            "metadata": {
-                "name": "${APPLICATION_NAME}-ping",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                },
-                "annotations": {
-                    "description": "Ping service for clustered applications."
-                }
-            }
-        },
-        {
-            "kind": "Service",
-            "apiVersion": "v1",
-            "spec": {
-                "ports": [
-                    {
                         "port": 5432,
                         "targetPort": 5432
                     }
@@ -233,9 +236,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -244,7 +247,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -253,9 +256,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -264,12 +267,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -296,18 +299,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-eap6-openshift:${EAP_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-eap64-openshift:1.1"
                         }
                     }
                 },
@@ -321,18 +325,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -363,6 +370,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -379,6 +389,7 @@
                     },
                     "spec": {
                         "serviceAccount": "eap-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -455,12 +466,16 @@
                                         "value": "${DB_TX_ISOLATION}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_NAME",
-                                        "value": "${APPLICATION_NAME}-ping"
+                                        "name": "OPENSHIFT_KUBE_PING_LABELS",
+                                        "value": "application=${APPLICATION_NAME}"
                                     },
                                     {
-                                        "name": "OPENSHIFT_DNS_PING_SERVICE_PORT",
-                                        "value": "8888"
+                                        "name": "OPENSHIFT_KUBE_PING_NAMESPACE",
+                                        "valueFrom": {
+                                            "fieldRef": {
+                                                "fieldPath": "metadata.namespace"
+                                            }
+                                        }
                                     },
                                     {
                                         "name": "EAP_HTTPS_KEYSTORE_DIR",
@@ -528,10 +543,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "postgresql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -547,6 +565,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-postgresql",
@@ -587,4 +606,4 @@
             }
         }
     ]
-}
+}

+ 56 - 34
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-basic-sti.json

@@ -3,67 +3,81 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS applications built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS applications built using S2I.",
+            "tags": "tomcat,tomcat7,java,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat7-basic-sti"
+        "name": "jws30-tomcat7-basic-s2i"
     },
     "labels": {
-        "template": "jws-tomcat7-basic-sti"
+        "template": "jws30-tomcat7-basic-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "tomcat-websocket-chat",
+            "required": false
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -94,9 +108,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -105,7 +119,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -134,18 +148,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat7-openshift:1.1"
                         }
                     }
                 },
@@ -159,18 +174,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -201,6 +219,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -216,6 +237,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",

+ 68 - 42
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-https-sti.json

@@ -3,87 +3,105 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS applications built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS applications built using S2I.",
+            "tags": "tomcat,tomcat7,java,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat8-basic-sti"
+        "name": "jws30-tomcat7-https-s2i"
     },
     "labels": {
-        "template": "jws-tomcat8-basic-sti"
+        "template": "jws30-tomcat7-https-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "tomcat-websocket-chat",
+            "required": false
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -138,9 +156,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -149,7 +167,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -158,9 +176,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -169,12 +187,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -201,18 +219,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat7-openshift:1.1"
                         }
                     }
                 },
@@ -226,18 +245,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -268,6 +290,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -284,6 +309,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",

+ 106 - 62
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-persistent-sti.json

@@ -3,144 +3,174 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS MongoDB applications with persistent storage built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS MongoDB applications with persistent storage built using S2I.",
+            "tags": "tomcat,tomcat7,mongodb,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat7-mongodb-persistent-sti"
+        "name": "jws30-tomcat7-mongodb-persistent-s2i"
     },
     "labels": {
-        "template": "jws-tomcat7-mongodb-persistent-sti"
+        "template": "jws30-tomcat7-mongodb-persistent-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-mongodb",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "Size of persistent storage for database volume.",
             "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "512Mi",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Disable data file preallocation.",
-            "name": "MONGODB_NOPREALLOC"
+            "name": "MONGODB_NOPREALLOC",
+            "required": false
         },
         {
             "description": "Set MongoDB to use a smaller default data file size.",
-            "name": "MONGODB_SMALLFILES"
+            "name": "MONGODB_SMALLFILES",
+            "required": false
         },
         {
             "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.",
-            "name": "MONGODB_QUIET"
+            "name": "MONGODB_QUIET",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database admin password",
             "name": "DB_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -219,9 +249,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -230,7 +260,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -239,9 +269,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -250,12 +280,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -282,18 +312,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat7-openshift:1.1"
                         }
                     }
                 },
@@ -307,18 +338,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -349,6 +383,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -365,6 +402,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -497,10 +535,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mongodb:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -516,6 +557,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mongodb",
@@ -528,11 +570,11 @@
                                     }
                                 ],
                                 "volumeMounts": [
-                                     {
-                                         "mountPath": "/var/lib/mongodb/data",
-                                         "name": "${APPLICATION_NAME}-mongodb-pvol"
-                                     }
-                                 ],
+                                    {
+                                        "mountPath": "/var/lib/mongodb/data",
+                                        "name": "${APPLICATION_NAME}-mongodb-pvol"
+                                    }
+                                ],
                                 "env": [
                                     {
                                         "name": "MONGODB_USER",
@@ -587,7 +629,9 @@
                 }
             },
             "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
                 "resources": {
                     "requests": {
                         "storage": "${VOLUME_CAPACITY}"
@@ -596,4 +640,4 @@
             }
         }
     ]
-}
+}

+ 96 - 92
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-persistent-sti.json

@@ -3,144 +3,168 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS MongoDB applications with persistent storage built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS MongoDB applications built using S2I.",
+            "tags": "tomcat,tomcat7,mongodb,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat8-mongodb-persistent-sti"
+        "name": "jws30-tomcat7-mongodb-s2i"
     },
     "labels": {
-        "template": "jws-tomcat8-mongodb-persistent-sti"
+        "template": "jws30-tomcat7-mongodb-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-mongodb",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
-        },
-        {
-            "description": "Size of persistent storage for database volume.",
-            "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "root",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Disable data file preallocation.",
-            "name": "MONGODB_NOPREALLOC"
+            "name": "MONGODB_NOPREALLOC",
+            "required": false
         },
         {
             "description": "Set MongoDB to use a smaller default data file size.",
-            "name": "MONGODB_SMALLFILES"
+            "name": "MONGODB_SMALLFILES",
+            "required": false
         },
         {
             "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.",
-            "name": "MONGODB_QUIET"
+            "name": "MONGODB_QUIET",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database admin password",
             "name": "DB_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -219,9 +243,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -230,7 +254,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -239,9 +263,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -250,12 +274,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -282,18 +306,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat7-openshift:1.1"
                         }
                     }
                 },
@@ -307,18 +332,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -349,6 +377,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -365,6 +396,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -497,10 +529,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mongodb:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -516,6 +551,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mongodb",
@@ -527,12 +563,6 @@
                                         "protocol": "TCP"
                                     }
                                 ],
-                                "volumeMounts": [
-                                     {
-                                         "mountPath": "/var/lib/mongodb/data",
-                                         "name": "${APPLICATION_NAME}-mongodb-pvol"
-                                     }
-                                 ],
                                 "env": [
                                     {
                                         "name": "MONGODB_USER",
@@ -564,36 +594,10 @@
                                     }
                                 ]
                             }
-                        ],
-                        "volumes": [
-                            {
-                                "name": "${APPLICATION_NAME}-mongodb-pvol",
-                                "persistentVolumeClaim": {
-                                    "claimName": "${APPLICATION_NAME}-mongodb-claim"
-                                }
-                            }
                         ]
                     }
                 }
             }
-        },
-        {
-            "apiVersion": "v1",
-            "kind": "PersistentVolumeClaim",
-            "metadata": {
-                "name": "${APPLICATION_NAME}-mongodb-claim",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                }
-            },
-            "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
-                "resources": {
-                    "requests": {
-                        "storage": "${VOLUME_CAPACITY}"
-                    }
-                }
-            }
         }
     ]
-}
+}

+ 108 - 63
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-persistent-sti.json

@@ -3,146 +3,177 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS MySQL applications with persistent storage built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS MySQL applications with persistent storage built using S2I.",
+            "tags": "tomcat,tomcat7,mysql,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat7-mysql-persistent-sti"
+        "name": "jws30-tomcat7-mysql-persistent-s2i"
     },
     "labels": {
-        "template": "jws-tomcat7-mysql-persistent-sti"
+        "template": "jws30-tomcat7-mysql-persistent-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "Size of persistent storage for database volume.",
             "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "512Mi",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Sets how the table names are stored and compared.",
-            "name": "MYSQL_LOWER_CASE_TABLE_NAMES"
+            "name": "MYSQL_LOWER_CASE_TABLE_NAMES",
+            "required": false
         },
         {
             "description": "The maximum permitted number of simultaneous client connections.",
-            "name": "MYSQL_MAX_CONNECTIONS"
+            "name": "MYSQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "The minimum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MIN_WORD_LEN"
+            "name": "MYSQL_FT_MIN_WORD_LEN",
+            "required": false
         },
         {
             "description": "The maximum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MAX_WORD_LEN"
+            "name": "MYSQL_FT_MAX_WORD_LEN",
+            "required": false
         },
         {
             "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.",
-            "name": "MYSQL_AIO"
+            "name": "MYSQL_AIO",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -221,9 +252,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -232,7 +263,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -241,9 +272,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -252,12 +283,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -284,18 +315,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat7-openshift:1.1"
                         }
                     }
                 },
@@ -309,18 +341,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -351,6 +386,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -367,6 +405,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -495,10 +534,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mysql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -514,6 +556,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mysql",
@@ -525,11 +568,11 @@
                                     }
                                 ],
                                 "volumeMounts": [
-                                     {
-                                         "mountPath": "/var/lib/mysql/data",
-                                         "name": "${APPLICATION_NAME}-mysql-pvol"
-                                     }
-                                 ],
+                                    {
+                                        "mountPath": "/var/lib/mysql/data",
+                                        "name": "${APPLICATION_NAME}-mysql-pvol"
+                                    }
+                                ],
                                 "env": [
                                     {
                                         "name": "MYSQL_USER",
@@ -588,7 +631,9 @@
                 }
             },
             "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
                 "resources": {
                     "requests": {
                         "storage": "${VOLUME_CAPACITY}"
@@ -597,4 +642,4 @@
             }
         }
     ]
-}
+}

+ 98 - 93
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-persistent-sti.json

@@ -3,146 +3,171 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS MySQL applications with persistent storage built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS MySQL applications built using S2I.",
+            "tags": "tomcat,tomcat7,mysql,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat8-mysql-persistent-sti"
+        "name": "jws30-tomcat7-mysql-s2i"
     },
     "labels": {
-        "template": "jws-tomcat8-mysql-persistent-sti"
+        "template": "jws30-tomcat7-mysql-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
-        },
-        {
-            "description": "Size of persistent storage for database volume.",
-            "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "root",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Sets how the table names are stored and compared.",
-            "name": "MYSQL_LOWER_CASE_TABLE_NAMES"
+            "name": "MYSQL_LOWER_CASE_TABLE_NAMES",
+            "required": false
         },
         {
             "description": "The maximum permitted number of simultaneous client connections.",
-            "name": "MYSQL_MAX_CONNECTIONS"
+            "name": "MYSQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "The minimum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MIN_WORD_LEN"
+            "name": "MYSQL_FT_MIN_WORD_LEN",
+            "required": false
         },
         {
             "description": "The maximum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MAX_WORD_LEN"
+            "name": "MYSQL_FT_MAX_WORD_LEN",
+            "required": false
         },
         {
             "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.",
-            "name": "MYSQL_AIO"
+            "name": "MYSQL_AIO",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -221,9 +246,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -232,7 +257,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -241,9 +266,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -252,12 +277,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -284,18 +309,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat7-openshift:1.1"
                         }
                     }
                 },
@@ -309,18 +335,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -351,6 +380,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -367,6 +399,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -495,10 +528,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mysql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -514,6 +550,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mysql",
@@ -524,12 +561,6 @@
                                         "protocol": "TCP"
                                     }
                                 ],
-                                "volumeMounts": [
-                                     {
-                                         "mountPath": "/var/lib/mysql/data",
-                                         "name": "${APPLICATION_NAME}-mysql-pvol"
-                                     }
-                                 ],
                                 "env": [
                                     {
                                         "name": "MYSQL_USER",
@@ -565,36 +596,10 @@
                                     }
                                 ]
                             }
-                        ],
-                        "volumes": [
-                            {
-                                "name": "${APPLICATION_NAME}-mysql-pvol",
-                                "persistentVolumeClaim": {
-                                    "claimName": "${APPLICATION_NAME}-mysql-claim"
-                                }
-                            }
                         ]
                     }
                 }
             }
-        },
-        {
-            "apiVersion": "v1",
-            "kind": "PersistentVolumeClaim",
-            "metadata": {
-                "name": "${APPLICATION_NAME}-mysql-claim",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                }
-            },
-            "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
-                "resources": {
-                    "requests": {
-                        "storage": "${VOLUME_CAPACITY}"
-                    }
-                }
-            }
         }
     ]
-}
+}

+ 102 - 60
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-persistent-sti.json

@@ -3,134 +3,162 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS PostgreSQL applications with persistent storage built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS PostgreSQL applications with persistent storage built using S2I.",
+            "tags": "tomcat,tomcat7,postgresql,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat7-postgresql-persistent-sti"
+        "name": "jws30-tomcat7-postgresql-persistent-s2i"
     },
     "labels": {
-        "template": "jws-tomcat7-postgresql-persistent-sti"
+        "template": "jws30-tomcat7-postgresql-persistent-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "Size of persistent storage for database volume.",
             "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "512Mi",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.",
-            "name": "POSTGRESQL_MAX_CONNECTIONS"
+            "name": "POSTGRESQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "Configures how much memory is dedicated to PostgreSQL for caching data.",
-            "name": "POSTGRESQL_SHARED_BUFFERS"
+            "name": "POSTGRESQL_SHARED_BUFFERS",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -209,9 +237,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -220,7 +248,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -229,9 +257,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -240,12 +268,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -272,18 +300,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat7-openshift:1.1"
                         }
                     }
                 },
@@ -297,18 +326,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -339,6 +371,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -355,6 +390,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -483,10 +519,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "postgresql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -502,6 +541,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-postgresql",
@@ -513,11 +553,11 @@
                                     }
                                 ],
                                 "volumeMounts": [
-                                     {
-                                         "mountPath": "/var/lib/pgsql/data",
-                                         "name": "${APPLICATION_NAME}-postgresql-pvol"
-                                     }
-                                 ],
+                                    {
+                                        "mountPath": "/var/lib/pgsql/data",
+                                        "name": "${APPLICATION_NAME}-postgresql-pvol"
+                                    }
+                                ],
                                 "env": [
                                     {
                                         "name": "POSTGRESQL_USER",
@@ -564,7 +604,9 @@
                 }
             },
             "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
                 "resources": {
                     "requests": {
                         "storage": "${VOLUME_CAPACITY}"
@@ -573,4 +615,4 @@
             }
         }
     ]
-}
+}

+ 92 - 53
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-sti.json

@@ -3,129 +3,156 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS PostgreSQL applications built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS PostgreSQL applications built using S2I.",
+            "tags": "tomcat,tomcat7,postgresql,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat8-postgresql-sti"
+        "name": "jws30-tomcat7-postgresql-s2i"
     },
     "labels": {
-        "template": "jws-tomcat8-postgresql-sti"
+        "template": "jws30-tomcat7-postgresql-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.",
-            "name": "POSTGRESQL_MAX_CONNECTIONS"
+            "name": "POSTGRESQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "Configures how much memory is dedicated to PostgreSQL for caching data.",
-            "name": "POSTGRESQL_SHARED_BUFFERS"
+            "name": "POSTGRESQL_SHARED_BUFFERS",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -204,9 +231,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -215,7 +242,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -224,9 +251,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -235,12 +262,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -267,18 +294,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat7-openshift:1.1"
                         }
                     }
                 },
@@ -292,18 +320,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -334,6 +365,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -350,6 +384,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -478,10 +513,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "postgresql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -497,6 +535,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-postgresql",
@@ -536,4 +575,4 @@
             }
         }
     ]
-}
+}

+ 56 - 34
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-basic-sti.json

@@ -3,67 +3,81 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS applications built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS applications built using S2I.",
+            "tags": "tomcat,tomcat8,java,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat8-basic-sti"
+        "name": "jws30-tomcat8-basic-s2i"
     },
     "labels": {
-        "template": "jws-tomcat8-basic-sti"
+        "template": "jws30-tomcat8-basic-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "tomcat-websocket-chat",
+            "required": false
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -94,9 +108,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -105,7 +119,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -134,18 +148,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat8-openshift:1.1"
                         }
                     }
                 },
@@ -159,18 +174,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -201,6 +219,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -216,6 +237,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",

+ 68 - 42
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-https-sti.json

@@ -3,87 +3,105 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS applications built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS applications built using S2I.",
+            "tags": "tomcat,tomcat8,java,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat7-basic-sti"
+        "name": "jws30-tomcat8-https-s2i"
     },
     "labels": {
-        "template": "jws-tomcat7-basic-sti"
+        "template": "jws30-tomcat8-https-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts.git",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "tomcat-websocket-chat",
+            "required": false
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -138,9 +156,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -149,7 +167,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -158,9 +176,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -169,12 +187,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -201,18 +219,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat8-openshift:1.1"
                         }
                     }
                 },
@@ -226,18 +245,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -268,6 +290,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -284,6 +309,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",

+ 136 - 55
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mongodb-sti.json

@@ -3,139 +3,174 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS MongoDB applications built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS MongoDB applications with persistent storage built using S2I.",
+            "tags": "tomcat,tomcat8,mongodb,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat7-mongodb-sti"
+        "name": "jws30-tomcat8-mongodb-persistent-s2i"
     },
     "labels": {
-        "template": "jws-tomcat7-mongodb-sti"
+        "template": "jws30-tomcat8-mongodb-persistent-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-mongodb",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
+        },
+        {
+            "description": "Size of persistent storage for database volume.",
+            "name": "VOLUME_CAPACITY",
+            "value": "512Mi",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Disable data file preallocation.",
-            "name": "MONGODB_NOPREALLOC"
+            "name": "MONGODB_NOPREALLOC",
+            "required": false
         },
         {
             "description": "Set MongoDB to use a smaller default data file size.",
-            "name": "MONGODB_SMALLFILES"
+            "name": "MONGODB_SMALLFILES",
+            "required": false
         },
         {
             "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.",
-            "name": "MONGODB_QUIET"
+            "name": "MONGODB_QUIET",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database admin password",
             "name": "DB_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -214,9 +249,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -225,7 +260,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -234,9 +269,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -245,12 +280,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -277,18 +312,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat8-openshift:1.1"
                         }
                     }
                 },
@@ -302,18 +338,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -344,6 +383,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -360,6 +402,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -492,10 +535,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mongodb:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -511,6 +557,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mongodb",
@@ -522,6 +569,12 @@
                                         "protocol": "TCP"
                                     }
                                 ],
+                                "volumeMounts": [
+                                    {
+                                        "mountPath": "/var/lib/mongodb/data",
+                                        "name": "${APPLICATION_NAME}-mongodb-pvol"
+                                    }
+                                ],
                                 "env": [
                                     {
                                         "name": "MONGODB_USER",
@@ -553,10 +606,38 @@
                                     }
                                 ]
                             }
+                        ],
+                        "volumes": [
+                            {
+                                "name": "${APPLICATION_NAME}-mongodb-pvol",
+                                "persistentVolumeClaim": {
+                                    "claimName": "${APPLICATION_NAME}-mongodb-claim"
+                                }
+                            }
                         ]
                     }
                 }
             }
+        },
+        {
+            "apiVersion": "v1",
+            "kind": "PersistentVolumeClaim",
+            "metadata": {
+                "name": "${APPLICATION_NAME}-mongodb-claim",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                }
+            },
+            "spec": {
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
+                "resources": {
+                    "requests": {
+                        "storage": "${VOLUME_CAPACITY}"
+                    }
+                }
+            }
         }
     ]
-}
+}

+ 96 - 55
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mongodb-sti.json

@@ -3,139 +3,168 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS MongoDB applications built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS MongoDB applications built using S2I.",
+            "tags": "tomcat,tomcat8,mongodb,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat8-mongodb-sti"
+        "name": "jws30-tomcat8-mongodb-s2i"
     },
     "labels": {
-        "template": "jws-tomcat8-mongodb-sti"
+        "template": "jws30-tomcat8-mongodb-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-mongodb",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Disable data file preallocation.",
-            "name": "MONGODB_NOPREALLOC"
+            "name": "MONGODB_NOPREALLOC",
+            "required": false
         },
         {
             "description": "Set MongoDB to use a smaller default data file size.",
-            "name": "MONGODB_SMALLFILES"
+            "name": "MONGODB_SMALLFILES",
+            "required": false
         },
         {
             "description": "Runs MongoDB in a quiet mode that attempts to limit the amount of output.",
-            "name": "MONGODB_QUIET"
+            "name": "MONGODB_QUIET",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database admin password",
             "name": "DB_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -214,9 +243,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -225,7 +254,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -234,9 +263,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -245,12 +274,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -277,18 +306,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat8-openshift:1.1"
                         }
                     }
                 },
@@ -302,18 +332,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -344,6 +377,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -360,6 +396,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -492,10 +529,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mongodb:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -511,6 +551,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mongodb",
@@ -559,4 +600,4 @@
             }
         }
     ]
-}
+}

+ 138 - 56
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-mysql-sti.json

@@ -3,141 +3,177 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS MySQL applications built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS MySQL applications with persistent storage built using S2I.",
+            "tags": "tomcat,tomcat8,mysql,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat7-mysql-sti"
+        "name": "jws30-tomcat8-mysql-persistent-s2i"
     },
     "labels": {
-        "template": "jws-tomcat7-mysql-sti"
+        "template": "jws30-tomcat8-mysql-persistent-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
+        },
+        {
+            "description": "Size of persistent storage for database volume.",
+            "name": "VOLUME_CAPACITY",
+            "value": "512Mi",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Sets how the table names are stored and compared.",
-            "name": "MYSQL_LOWER_CASE_TABLE_NAMES"
+            "name": "MYSQL_LOWER_CASE_TABLE_NAMES",
+            "required": false
         },
         {
             "description": "The maximum permitted number of simultaneous client connections.",
-            "name": "MYSQL_MAX_CONNECTIONS"
+            "name": "MYSQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "The minimum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MIN_WORD_LEN"
+            "name": "MYSQL_FT_MIN_WORD_LEN",
+            "required": false
         },
         {
             "description": "The maximum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MAX_WORD_LEN"
+            "name": "MYSQL_FT_MAX_WORD_LEN",
+            "required": false
         },
         {
             "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.",
-            "name": "MYSQL_AIO"
+            "name": "MYSQL_AIO",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -216,9 +252,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -227,7 +263,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -236,9 +272,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -247,12 +283,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -279,18 +315,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat8-openshift:1.1"
                         }
                     }
                 },
@@ -304,18 +341,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -346,6 +386,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -362,6 +405,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -490,10 +534,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mysql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -509,6 +556,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mysql",
@@ -519,6 +567,12 @@
                                         "protocol": "TCP"
                                     }
                                 ],
+                                "volumeMounts": [
+                                    {
+                                        "mountPath": "/var/lib/mysql/data",
+                                        "name": "${APPLICATION_NAME}-mysql-pvol"
+                                    }
+                                ],
                                 "env": [
                                     {
                                         "name": "MYSQL_USER",
@@ -554,10 +608,38 @@
                                     }
                                 ]
                             }
+                        ],
+                        "volumes": [
+                            {
+                                "name": "${APPLICATION_NAME}-mysql-pvol",
+                                "persistentVolumeClaim": {
+                                    "claimName": "${APPLICATION_NAME}-mysql-claim"
+                                }
+                            }
                         ]
                     }
                 }
             }
+        },
+        {
+            "apiVersion": "v1",
+            "kind": "PersistentVolumeClaim",
+            "metadata": {
+                "name": "${APPLICATION_NAME}-mysql-claim",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                }
+            },
+            "spec": {
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
+                "resources": {
+                    "requests": {
+                        "storage": "${VOLUME_CAPACITY}"
+                    }
+                }
+            }
         }
     ]
-}
+}

+ 98 - 56
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-mysql-sti.json

@@ -3,141 +3,171 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS MySQL applications built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS MySQL applications built using S2I.",
+            "tags": "tomcat,tomcat8,mysql,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat8-mysql-sti"
+        "name": "jws30-tomcat8-mysql-s2i"
     },
     "labels": {
-        "template": "jws-tomcat8-mysql-sti"
+        "template": "jws30-tomcat8-mysql-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "Sets how the table names are stored and compared.",
-            "name": "MYSQL_LOWER_CASE_TABLE_NAMES"
+            "name": "MYSQL_LOWER_CASE_TABLE_NAMES",
+            "required": false
         },
         {
             "description": "The maximum permitted number of simultaneous client connections.",
-            "name": "MYSQL_MAX_CONNECTIONS"
+            "name": "MYSQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "The minimum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MIN_WORD_LEN"
+            "name": "MYSQL_FT_MIN_WORD_LEN",
+            "required": false
         },
         {
             "description": "The maximum length of the word to be included in a FULLTEXT index.",
-            "name": "MYSQL_FT_MAX_WORD_LEN"
+            "name": "MYSQL_FT_MAX_WORD_LEN",
+            "required": false
         },
         {
             "description": "Controls the innodb_use_native_aio setting value if the native AIO is broken.",
-            "name": "MYSQL_AIO"
+            "name": "MYSQL_AIO",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -216,9 +246,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -227,7 +257,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -236,9 +266,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -247,12 +277,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -279,18 +309,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat8-openshift:1.1"
                         }
                     }
                 },
@@ -304,18 +335,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -346,6 +380,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -362,6 +399,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -490,10 +528,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "mysql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -509,6 +550,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-mysql",
@@ -560,4 +602,4 @@
             }
         }
     ]
-}
+}

+ 132 - 53
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat7-postgresql-sti.json

@@ -3,129 +3,162 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS PostgreSQL applications built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS PostgreSQL applications with persistent storage built using S2I.",
+            "tags": "tomcat,tomcat8,postgresql,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat7-postgresql-sti"
+        "name": "jws30-tomcat8-postgresql-persistent-s2i"
     },
     "labels": {
-        "template": "jws-tomcat7-postgresql-sti"
+        "template": "jws30-tomcat8-postgresql-persistent-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
+            "value": "root",
+            "required": true
+        },
+        {
+            "description": "Size of persistent storage for database volume.",
+            "name": "VOLUME_CAPACITY",
+            "value": "512Mi",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.",
-            "name": "POSTGRESQL_MAX_CONNECTIONS"
+            "name": "POSTGRESQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "Configures how much memory is dedicated to PostgreSQL for caching data.",
-            "name": "POSTGRESQL_SHARED_BUFFERS"
+            "name": "POSTGRESQL_SHARED_BUFFERS",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -204,9 +237,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -215,7 +248,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -224,9 +257,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -235,12 +268,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -267,18 +300,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat7-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat8-openshift:1.1"
                         }
                     }
                 },
@@ -292,18 +326,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -334,6 +371,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -350,6 +390,7 @@
                     },
                     "spec": {
                         "serviceAccount": "jws-service-account",
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}",
@@ -478,10 +519,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "postgresql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -497,6 +541,7 @@
                         }
                     },
                     "spec": {
+                        "terminationGracePeriodSeconds": 60,
                         "containers": [
                             {
                                 "name": "${APPLICATION_NAME}-postgresql",
@@ -507,6 +552,12 @@
                                         "protocol": "TCP"
                                     }
                                 ],
+                                "volumeMounts": [
+                                    {
+                                        "mountPath": "/var/lib/pgsql/data",
+                                        "name": "${APPLICATION_NAME}-postgresql-pvol"
+                                    }
+                                ],
                                 "env": [
                                     {
                                         "name": "POSTGRESQL_USER",
@@ -530,10 +581,38 @@
                                     }
                                 ]
                             }
+                        ],
+                        "volumes": [
+                            {
+                                "name": "${APPLICATION_NAME}-postgresql-pvol",
+                                "persistentVolumeClaim": {
+                                    "claimName": "${APPLICATION_NAME}-postgresql-claim"
+                                }
+                            }
                         ]
                     }
                 }
             }
+        },
+        {
+            "apiVersion": "v1",
+            "kind": "PersistentVolumeClaim",
+            "metadata": {
+                "name": "${APPLICATION_NAME}-postgresql-claim",
+                "labels": {
+                    "application": "${APPLICATION_NAME}"
+                }
+            },
+            "spec": {
+                "accessModes": [
+                    "ReadWriteOnce"
+                ],
+                "resources": {
+                    "requests": {
+                        "storage": "${VOLUME_CAPACITY}"
+                    }
+                }
+            }
         }
     ]
-}
+}

+ 90 - 90
roles/openshift_examples/files/examples/xpaas-templates/jws-tomcat8-postgresql-persistent-sti.json

@@ -3,134 +3,156 @@
     "apiVersion": "v1",
     "metadata": {
         "annotations": {
-            "iconClass" : "icon-tomcat",
-            "description": "Application template for JWS PostgreSQL applications with persistent storage built using STI."
+            "iconClass": "icon-tomcat",
+            "description": "Application template for JWS PostgreSQL applications built using S2I.",
+            "tags": "tomcat,tomcat8,postgresql,java,database,jboss,xpaas",
+            "version": "1.1.0"
         },
-        "name": "jws-tomcat8-postgresql-persistent-sti"
+        "name": "jws30-tomcat8-postgresql-s2i"
     },
     "labels": {
-        "template": "jws-tomcat8-postgresql-persistent-sti"
+        "template": "jws30-tomcat8-postgresql-s2i",
+        "xpaas": "1.1.0"
     },
     "parameters": [
         {
-            "description": "JWS Release version, e.g. 3.0, 2.1, etc.",
-            "name": "JWS_RELEASE",
-            "value": "3.0"
-        },
-        {
             "description": "The name for the application.",
             "name": "APPLICATION_NAME",
-            "value": "jws-app"
+            "value": "jws-app",
+            "required": true
         },
         {
             "description": "Custom hostname for service routes.  Leave blank for default hostname, e.g.: <application-name>.<project>.<default-domain-suffix>",
-            "name": "APPLICATION_HOSTNAME",
-            "value": ""
+            "name": "APPLICATION_DOMAIN",
+            "value": "",
+            "required": false
         },
         {
             "description": "Git source URI for application",
-            "name": "GIT_URI"
+            "name": "SOURCE_REPOSITORY_URL",
+            "value": "https://github.com/jboss-openshift/openshift-quickstarts",
+            "required": true
         },
         {
             "description": "Git branch/tag reference",
-            "name": "GIT_REF",
-            "value": "master"
+            "name": "SOURCE_REPOSITORY_REF",
+            "value": "1.1",
+            "required": false
         },
         {
             "description": "Path within Git project to build; empty for root project directory.",
-            "name": "GIT_CONTEXT_DIR",
-            "value": ""
+            "name": "CONTEXT_DIR",
+            "value": "todolist/todolist-jdbc",
+            "required": false
         },
         {
             "description": "Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/mongodb",
             "name": "DB_JNDI",
-            "value": ""
+            "value": "java:jboss/datasources/TodoListDS",
+            "required": false
         },
         {
             "description": "Database name",
             "name": "DB_DATABASE",
-            "value": "root"
-        },
-        {
-            "description": "Size of persistent storage for database volume.",
-            "name": "VOLUME_CAPACITY",
-            "value": "512Mi"
+            "value": "root",
+            "required": true
         },
         {
             "description": "The name of the secret containing the certificate files",
             "name": "JWS_HTTPS_SECRET",
-            "value": "jws-app-secret"
+            "value": "jws-app-secret",
+            "required": true
         },
         {
             "description": "The name of the certificate file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE",
-            "value": "server.crt"
+            "value": "server.crt",
+            "required": false
         },
         {
             "description": "The name of the certificate key file within the secret",
             "name": "JWS_HTTPS_CERTIFICATE_KEY",
-            "value": "server.key"
+            "value": "server.key",
+            "required": false
         },
         {
             "description": "The certificate password",
             "name": "JWS_HTTPS_CERTIFICATE_PASSWORD",
-            "value": ""
+            "value": "",
+            "required": false
         },
         {
             "description": "Sets xa-pool/min-pool-size for the configured datasource.",
-            "name": "DB_MIN_POOL_SIZE"
+            "name": "DB_MIN_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets xa-pool/max-pool-size for the configured datasource.",
-            "name": "DB_MAX_POOL_SIZE"
+            "name": "DB_MAX_POOL_SIZE",
+            "required": false
         },
         {
             "description": "Sets transaction-isolation for the configured datasource.",
-            "name": "DB_TX_ISOLATION"
+            "name": "DB_TX_ISOLATION",
+            "required": false
         },
         {
             "description": "The maximum number of client connections allowed. This also sets the maximum number of prepared transactions.",
-            "name": "POSTGRESQL_MAX_CONNECTIONS"
+            "name": "POSTGRESQL_MAX_CONNECTIONS",
+            "required": false
         },
         {
             "description": "Configures how much memory is dedicated to PostgreSQL for caching data.",
-            "name": "POSTGRESQL_SHARED_BUFFERS"
+            "name": "POSTGRESQL_SHARED_BUFFERS",
+            "required": false
         },
         {
             "description": "Database user name",
             "name": "DB_USERNAME",
             "from": "user[a-zA-Z0-9]{3}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Database user password",
             "name": "DB_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin User",
             "name": "JWS_ADMIN_USERNAME",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "JWS Admin Password",
             "name": "JWS_ADMIN_PASSWORD",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
-            "description": "Github trigger secret",
-            "name": "GITHUB_TRIGGER_SECRET",
+            "description": "GitHub trigger secret",
+            "name": "GITHUB_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
         },
         {
             "description": "Generic build trigger secret",
-            "name": "GENERIC_TRIGGER_SECRET",
+            "name": "GENERIC_WEBHOOK_SECRET",
             "from": "[a-zA-Z0-9]{8}",
-            "generate": "expression"
+            "generate": "expression",
+            "required": true
+        },
+        {
+            "description": "Namespace in which the ImageStreams for Red Hat Middleware images are installed. These ImageStreams are normally installed in the openshift namespace. You should only need to modify this if you've installed the ImageStreams in a different namespace/project.",
+            "name": "IMAGE_STREAM_NAMESPACE",
+            "value": "openshift",
+            "required": true
         }
     ],
     "objects": [
@@ -209,9 +231,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-http-route",
+            "id": "${APPLICATION_NAME}-http",
             "metadata": {
-                "name": "${APPLICATION_NAME}-http-route",
+                "name": "${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -220,7 +242,7 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "${APPLICATION_NAME}"
                 }
@@ -229,9 +251,9 @@
         {
             "kind": "Route",
             "apiVersion": "v1",
-            "id": "${APPLICATION_NAME}-https-route",
+            "id": "${APPLICATION_NAME}-https",
             "metadata": {
-                "name": "${APPLICATION_NAME}-https-route",
+                "name": "secure-${APPLICATION_NAME}",
                 "labels": {
                     "application": "${APPLICATION_NAME}"
                 },
@@ -240,12 +262,12 @@
                 }
             },
             "spec": {
-                "host": "${APPLICATION_HOSTNAME}",
+                "host": "${APPLICATION_DOMAIN}",
                 "to": {
                     "name": "secure-${APPLICATION_NAME}"
                 },
                 "tls": {
-                    "termination" : "passthrough"
+                    "termination": "passthrough"
                 }
             }
         },
@@ -272,18 +294,19 @@
                 "source": {
                     "type": "Git",
                     "git": {
-                        "uri": "${GIT_URI}",
-                        "ref": "${GIT_REF}"
+                        "uri": "${SOURCE_REPOSITORY_URL}",
+                        "ref": "${SOURCE_REPOSITORY_REF}"
                     },
-                    "contextDir":"${GIT_CONTEXT_DIR}"
+                    "contextDir": "${CONTEXT_DIR}"
                 },
                 "strategy": {
                     "type": "Source",
                     "sourceStrategy": {
+                        "forcePull": true,
                         "from": {
                             "kind": "ImageStreamTag",
-                            "namespace": "openshift",
-                            "name": "jboss-webserver3-tomcat8-openshift:${JWS_RELEASE}"
+                            "namespace": "${IMAGE_STREAM_NAMESPACE}",
+                            "name": "jboss-webserver30-tomcat8-openshift:1.1"
                         }
                     }
                 },
@@ -297,18 +320,21 @@
                     {
                         "type": "GitHub",
                         "github": {
-                            "secret": "${GITHUB_TRIGGER_SECRET}"
+                            "secret": "${GITHUB_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "Generic",
                         "generic": {
-                            "secret": "${GENERIC_TRIGGER_SECRET}"
+                            "secret": "${GENERIC_WEBHOOK_SECRET}"
                         }
                     },
                     {
                         "type": "ImageChange",
                         "imageChange": {}
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ]
             }
@@ -339,6 +365,9 @@
                                 "name": "${APPLICATION_NAME}"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -483,10 +512,13 @@
                             ],
                             "from": {
                                 "kind": "ImageStreamTag",
-                                "namespace": "openshift",
+                                "namespace": "${IMAGE_STREAM_NAMESPACE}",
                                 "name": "postgresql:latest"
                             }
                         }
+                    },
+                    {
+                        "type": "ConfigChange"
                     }
                 ],
                 "replicas": 1,
@@ -512,12 +544,6 @@
                                         "protocol": "TCP"
                                     }
                                 ],
-                                "volumeMounts": [
-                                     {
-                                         "mountPath": "/var/lib/pgsql/data",
-                                         "name": "${APPLICATION_NAME}-postgresql-pvol"
-                                     }
-                                 ],
                                 "env": [
                                     {
                                         "name": "POSTGRESQL_USER",
@@ -541,36 +567,10 @@
                                     }
                                 ]
                             }
-                        ],
-                        "volumes": [
-                            {
-                                "name": "${APPLICATION_NAME}-postgresql-pvol",
-                                "persistentVolumeClaim": {
-                                    "claimName": "${APPLICATION_NAME}-postgresql-claim"
-                                }
-                            }
                         ]
                     }
                 }
             }
-        },
-        {
-            "apiVersion": "v1",
-            "kind": "PersistentVolumeClaim",
-            "metadata": {
-                "name": "${APPLICATION_NAME}-postgresql-claim",
-                "labels": {
-                    "application": "${APPLICATION_NAME}"
-                }
-            },
-            "spec": {
-                "accessModes": [ "ReadWriteOnce" ],
-                "resources": {
-                    "requests": {
-                        "storage": "${VOLUME_CAPACITY}"
-                    }
-                }
-            }
         }
     ]
-}
+}

+ 50 - 0
roles/openshift_examples/tasks/main.yml

@@ -53,6 +53,56 @@
   failed_when: "'already exists' not in oex_import_infrastructure.stderr and oex_import_infrastructure.rc != 0"
   changed_when: false
 
+# The 1.1 release of the xpaas content for OpenShift renamed all the templates
+- name: Remove old xpaas templates from filesystem
+  file:
+    path: "{{ xpaas_templates_base }}/{{ item }}"
+    state: absent
+  with_items:
+    - amq6-persistent.json
+    - amq6.json
+    - eap6-amq-persistent-sti.json
+    - eap6-amq-sti.json
+    - eap6-basic-sti.json
+    - eap6-https-sti.json
+    - eap6-mongodb-persistent-sti.json
+    - eap6-mongodb-sti.json
+    - eap6-mysql-persistent-sti.json
+    - eap6-mysql-sti.json
+    - eap6-postgresql-persistent-sti.json
+    - eap6-postgresql-sti.json
+    - jws-tomcat7-basic-sti.json
+    - jws-tomcat7-https-sti.json
+    - jws-tomcat7-mongodb-sti.json
+    - jws-tomcat7-mongodb-persistent-sti.json
+    - jws-tomcat7-mysql-persistent-sti.json
+    - jws-tomcat7-mysql-sti.json
+    - jws-tomcat7-postgresql-persistent-sti.json
+    - jws-tomcat8-postgresql-persistent-sti.json
+    - jws-tomcat8-basic-sti.json
+    - jws-tomcat8-https-sti.json
+    - jws-tomcat8-mongodb-sti.json
+    - jws-tomcat8-mongodb-persistent-sti.json
+    - jws-tomcat8-mysql-sti.json
+    - jws-tomcat8-mysql-persistent-sti.json
+    - jws-tomcat8-postgresql-sti.json
+    - jws-tomcat7-postgresql-sti.json
+
+- name: Remove old xpaas templates from openshift namespace
+  command: >
+    {{ openshift.common.client_binary }} -n openshift delete
+    templates/amq6 templates/amq6-persistent templates/eap6-amq-persistent-sti templates/eap6-amq-sti \
+    templates/eap6-basic-sti templates/eap6-basic-sti templates/eap6-mongodb-persistent-sti templates/eap6-mongodb-sti \
+    templates/eap6-mysql-persistent-sti templates/eap6-mysql-sti templates/eap6-postgresql-persistent-sti \
+    templates/eap6-postgresql-sti templates/jws-tomcat7-basic-sti templates/jws-tomcat7-basic-sti \
+    templates/jws-tomcat7-mongodb-persistent-sti templates/jws-tomcat7-mongodb-sti \
+    templates/jws-tomcat7-mysql-persistent-sti templates/jws-tomcat7-mysql-sti \
+    templates/jws-tomcat7-postgresql-persistent-sti templates/jws-tomcat7-postgresql-sti \
+    templates/jws-tomcat8-basic-sti templates/jws-tomcat8-basic-sti templates/jws-tomcat8-mongodb-persistent-sti
+  when: openshift_examples_load_xpaas | bool
+  register: oex_delete_old_xpaas_templates
+  failed_when: "'not found' not in oex_delete_old_xpaas_templates.stderr and oex_delete_old_xpaas_templates.rc != 0"
+  changed_when: false
 
 - name: Import xPaas image streams
   command: >