Browse code

Add RHSCL 2.3 docker images to image streams

Adds PHP 7.0, Perl 5.24, MySQL 5.7 and Redis 3.2 based on CentOS 7 and RHEL 7
Adds also Redis templates inspired by PostgreSQL template
Bindata updated using update-generated-bootstrap-bindata.sh
Fix test to expect php 7.0 in image stream
Updating examples_test.go to list the two new Redis templates

Honza Horak authored on 2016/11/23 17:41:29
Showing 7 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,191 @@
0
+{
1
+  "kind": "Template",
2
+  "apiVersion": "v1",
3
+  "metadata": {
4
+    "name": "redis-ephemeral",
5
+    "creationTimestamp": null,
6
+    "annotations": {
7
+      "openshift.io/display-name": "Redis (Ephemeral)",
8
+      "description": "Redis in-memory data structure store, without persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/redis-container/blob/master/3.2.\n\nWARNING: Any data stored will be lost upon pod destruction. Only use this template for testing",
9
+      "iconClass": "icon-redis",
10
+      "tags": "database,redis"
11
+    }
12
+  },
13
+  "message": "The following service(s) have been created in your project: ${DATABASE_SERVICE_NAME}.\n\n       Password: ${REDIS_PASSWORD}\n Connection URL: redis://${DATABASE_SERVICE_NAME}:6379/\n\nFor more information about using this template, including OpenShift considerations, see https://github.com/sclorg/redis-container/blob/master/3.2.",
14
+  "labels": {
15
+    "template": "redis-ephemeral-template"
16
+  },
17
+  "objects": [
18
+    {
19
+      "kind": "Service",
20
+      "apiVersion": "v1",
21
+      "metadata": {
22
+        "name": "${DATABASE_SERVICE_NAME}",
23
+        "creationTimestamp": null
24
+      },
25
+      "spec": {
26
+        "ports": [
27
+          {
28
+            "name": "redis",
29
+            "protocol": "TCP",
30
+            "port": 6379,
31
+            "targetPort": 6379,
32
+            "nodePort": 0
33
+          }
34
+        ],
35
+        "selector": {
36
+          "name": "${DATABASE_SERVICE_NAME}"
37
+        },
38
+        "type": "ClusterIP",
39
+        "sessionAffinity": "None"
40
+      },
41
+      "status": {
42
+        "loadBalancer": {}
43
+      }
44
+    },
45
+    {
46
+      "kind": "DeploymentConfig",
47
+      "apiVersion": "v1",
48
+      "metadata": {
49
+        "name": "${DATABASE_SERVICE_NAME}",
50
+        "creationTimestamp": null
51
+      },
52
+      "spec": {
53
+        "strategy": {
54
+          "type": "Recreate"
55
+        },
56
+        "triggers": [
57
+          {
58
+            "type": "ImageChange",
59
+            "imageChangeParams": {
60
+              "automatic": true,
61
+              "containerNames": [
62
+                "redis"
63
+              ],
64
+              "from": {
65
+                "kind": "ImageStreamTag",
66
+                "name": "redis:${REDIS_VERSION}",
67
+                "namespace": "${NAMESPACE}"
68
+              },
69
+              "lastTriggeredImage": ""
70
+            }
71
+          },
72
+          {
73
+            "type": "ConfigChange"
74
+          }
75
+        ],
76
+        "replicas": 1,
77
+        "selector": {
78
+          "name": "${DATABASE_SERVICE_NAME}"
79
+        },
80
+        "template": {
81
+          "metadata": {
82
+            "creationTimestamp": null,
83
+            "labels": {
84
+              "name": "${DATABASE_SERVICE_NAME}"
85
+            }
86
+          },
87
+          "spec": {
88
+            "containers": [
89
+              {
90
+                "name": "redis",
91
+                "image": " ",
92
+                "ports": [
93
+                  {
94
+                    "containerPort": 6379,
95
+                    "protocol": "TCP"
96
+                  }
97
+                ],
98
+                "readinessProbe": {
99
+                  "timeoutSeconds": 1,
100
+                  "initialDelaySeconds": 5,
101
+                  "exec": {
102
+                    "command": [ "/bin/sh", "-i", "-c", "test \"$(redis-cli -h 127.0.0.1 -a $REDIS_PASSWORD ping)\" == \"PONG\""]
103
+                  }
104
+                },
105
+                "livenessProbe": {
106
+                  "timeoutSeconds": 1,
107
+                  "initialDelaySeconds": 30,
108
+                  "tcpSocket": {
109
+                    "port": 6379
110
+                  }
111
+                },
112
+                "env": [
113
+                  {
114
+                    "name": "REDIS_PASSWORD",
115
+                    "value": "${REDIS_PASSWORD}"
116
+                  }
117
+                ],
118
+                "resources": {
119
+                  "limits": {
120
+                    "memory": "${MEMORY_LIMIT}"
121
+                  }
122
+                },
123
+                "volumeMounts": [
124
+                  {
125
+                    "name": "${DATABASE_SERVICE_NAME}-data",
126
+                    "mountPath": "/var/lib/redis/data"
127
+                  }
128
+                ],
129
+                "terminationMessagePath": "/dev/termination-log",
130
+                "imagePullPolicy": "IfNotPresent",
131
+                "capabilities": {},
132
+                "securityContext": {
133
+                  "capabilities": {},
134
+                  "privileged": false
135
+                }
136
+              }
137
+            ],
138
+            "volumes": [
139
+              {
140
+                "name": "${DATABASE_SERVICE_NAME}-data",
141
+                "emptyDir": {
142
+                  "medium": ""
143
+                }
144
+              }
145
+            ],
146
+            "restartPolicy": "Always",
147
+            "dnsPolicy": "ClusterFirst"
148
+          }
149
+        }
150
+      },
151
+      "status": {}
152
+    }
153
+  ],
154
+  "parameters": [
155
+    {
156
+      "name": "MEMORY_LIMIT",
157
+      "displayName": "Memory Limit",
158
+      "description": "Maximum amount of memory the container can use.",
159
+      "value": "512Mi"
160
+    },
161
+    {
162
+      "name": "NAMESPACE",
163
+      "displayName": "Namespace",
164
+      "description": "The OpenShift Namespace where the ImageStream resides.",
165
+      "value": "openshift"
166
+    },
167
+    {
168
+      "name": "DATABASE_SERVICE_NAME",
169
+      "displayName": "Database Service Name",
170
+      "description": "The name of the OpenShift Service exposed for the database.",
171
+      "value": "redis",
172
+      "required": true
173
+    },
174
+    {
175
+      "name": "REDIS_PASSWORD",
176
+      "displayName": "Redis Connection Password",
177
+      "description": "Password for the Redis connection user.",
178
+      "generate": "expression",
179
+      "from": "[a-zA-Z0-9]{16}",
180
+      "required": true
181
+    },
182
+    {
183
+      "name": "REDIS_VERSION",
184
+      "displayName": "Version of Redis Image",
185
+      "description": "Version of Redis image to be used (3.2 or latest).",
186
+      "value": "3.2",
187
+      "required": true
188
+    }
189
+  ]
190
+}
0 191
new file mode 100644
... ...
@@ -0,0 +1,215 @@
0
+{
1
+  "kind": "Template",
2
+  "apiVersion": "v1",
3
+  "metadata": {
4
+    "name": "redis-persistent",
5
+    "creationTimestamp": null,
6
+    "annotations": {
7
+      "openshift.io/display-name": "Redis (Persistent)",
8
+      "description": "Redis in-memory data structure store, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/redis-container/blob/master/3.2.\n\nNOTE: You must have persistent volumes available in your cluster to use this template.",
9
+      "iconClass": "icon-redis",
10
+      "tags": "database,redis"
11
+    }
12
+  },
13
+  "message": "The following service(s) have been created in your project: ${DATABASE_SERVICE_NAME}.\n\n       Password: ${REDIS_PASSWORD}\n Connection URL: redis://${DATABASE_SERVICE_NAME}:6379/\n\nFor more information about using this template, including OpenShift considerations, see https://github.com/sclorg/redis-container/blob/master/3.2.",
14
+  "labels": {
15
+    "template": "redis-persistent-template"
16
+  },
17
+  "objects": [
18
+    {
19
+      "kind": "Service",
20
+      "apiVersion": "v1",
21
+      "metadata": {
22
+        "name": "${DATABASE_SERVICE_NAME}",
23
+        "creationTimestamp": null
24
+      },
25
+      "spec": {
26
+        "ports": [
27
+          {
28
+            "name": "redis",
29
+            "protocol": "TCP",
30
+            "port": 6379,
31
+            "targetPort": 6379,
32
+            "nodePort": 0
33
+          }
34
+        ],
35
+        "selector": {
36
+          "name": "${DATABASE_SERVICE_NAME}"
37
+        },
38
+        "type": "ClusterIP",
39
+        "sessionAffinity": "None"
40
+      },
41
+      "status": {
42
+        "loadBalancer": {}
43
+      }
44
+    },
45
+    {
46
+      "kind": "PersistentVolumeClaim",
47
+      "apiVersion": "v1",
48
+      "metadata": {
49
+        "name": "${DATABASE_SERVICE_NAME}"
50
+      },
51
+      "spec": {
52
+        "accessModes": [
53
+          "ReadWriteOnce"
54
+        ],
55
+        "resources": {
56
+          "requests": {
57
+            "storage": "${VOLUME_CAPACITY}"
58
+          }
59
+        }
60
+      }
61
+    },
62
+    {
63
+      "kind": "DeploymentConfig",
64
+      "apiVersion": "v1",
65
+      "metadata": {
66
+        "name": "${DATABASE_SERVICE_NAME}",
67
+        "creationTimestamp": null
68
+      },
69
+      "spec": {
70
+        "strategy": {
71
+          "type": "Recreate"
72
+        },
73
+        "triggers": [
74
+          {
75
+            "type": "ImageChange",
76
+            "imageChangeParams": {
77
+              "automatic": true,
78
+              "containerNames": [
79
+                "redis"
80
+              ],
81
+              "from": {
82
+                "kind": "ImageStreamTag",
83
+                "name": "redis:${REDIS_VERSION}",
84
+                "namespace": "${NAMESPACE}"
85
+              },
86
+              "lastTriggeredImage": ""
87
+            }
88
+          },
89
+          {
90
+            "type": "ConfigChange"
91
+          }
92
+        ],
93
+        "replicas": 1,
94
+        "selector": {
95
+          "name": "${DATABASE_SERVICE_NAME}"
96
+        },
97
+        "template": {
98
+          "metadata": {
99
+            "creationTimestamp": null,
100
+            "labels": {
101
+              "name": "${DATABASE_SERVICE_NAME}"
102
+            }
103
+          },
104
+          "spec": {
105
+            "containers": [
106
+              {
107
+                "name": "redis",
108
+                "image": " ",
109
+                "ports": [
110
+                  {
111
+                    "containerPort": 6379,
112
+                    "protocol": "TCP"
113
+                  }
114
+                ],
115
+                "readinessProbe": {
116
+                  "timeoutSeconds": 1,
117
+                  "initialDelaySeconds": 5,
118
+                  "exec": {
119
+                    "command": [ "/bin/sh", "-i", "-c", "test \"$(redis-cli -h 127.0.0.1 -a $REDIS_PASSWORD ping)\" == \"PONG\""]
120
+                  }
121
+                },
122
+                "livenessProbe": {
123
+                  "timeoutSeconds": 1,
124
+                  "initialDelaySeconds": 30,
125
+                  "tcpSocket": {
126
+                    "port": 6379
127
+                  }
128
+                },
129
+                "env": [
130
+                  {
131
+                    "name": "REDIS_PASSWORD",
132
+                    "value": "${REDIS_PASSWORD}"
133
+                  }
134
+                ],
135
+                "resources": {
136
+                  "limits": {
137
+                    "memory": "${MEMORY_LIMIT}"
138
+                  }
139
+                },
140
+                "volumeMounts": [
141
+                  {
142
+                    "name": "${DATABASE_SERVICE_NAME}-data",
143
+                    "mountPath": "/var/lib/redis/data"
144
+                  }
145
+                ],
146
+                "terminationMessagePath": "/dev/termination-log",
147
+                "imagePullPolicy": "IfNotPresent",
148
+                "capabilities": {},
149
+                "securityContext": {
150
+                  "capabilities": {},
151
+                  "privileged": false
152
+                }
153
+              }
154
+            ],
155
+            "volumes": [
156
+              {
157
+                "name": "${DATABASE_SERVICE_NAME}-data",
158
+                "persistentVolumeClaim": {
159
+                  "claimName": "${DATABASE_SERVICE_NAME}"
160
+                }
161
+              }
162
+            ],
163
+            "restartPolicy": "Always",
164
+            "dnsPolicy": "ClusterFirst"
165
+          }
166
+        }
167
+      },
168
+      "status": {}
169
+    }
170
+  ],
171
+  "parameters": [
172
+    {
173
+      "name": "MEMORY_LIMIT",
174
+      "displayName": "Memory Limit",
175
+      "description": "Maximum amount of memory the container can use.",
176
+      "value": "512Mi"
177
+    },
178
+    {
179
+      "name": "NAMESPACE",
180
+      "displayName": "Namespace",
181
+      "description": "The OpenShift Namespace where the ImageStream resides.",
182
+      "value": "openshift"
183
+    },
184
+    {
185
+      "name": "DATABASE_SERVICE_NAME",
186
+      "displayName": "Database Service Name",
187
+      "description": "The name of the OpenShift Service exposed for the database.",
188
+      "value": "redis",
189
+      "required": true
190
+    },
191
+    {
192
+      "name": "REDIS_PASSWORD",
193
+      "displayName": "Redis Connection Password",
194
+      "description": "Password for the Redis connection user.",
195
+      "generate": "expression",
196
+      "from": "[a-zA-Z0-9]{16}",
197
+      "required": true
198
+    },
199
+    {
200
+      "name": "VOLUME_CAPACITY",
201
+      "displayName": "Volume Capacity",
202
+      "description": "Volume space available for data, e.g. 512Mi, 2Gi.",
203
+      "value": "1Gi",
204
+      "required": true
205
+    },
206
+    {
207
+      "name": "REDIS_VERSION",
208
+      "displayName": "Version of Redis Image",
209
+      "description": "Version of Redis image to be used (3.2 or latest).",
210
+      "value": "3.2",
211
+      "required": true
212
+    }
213
+  ]
214
+}
... ...
@@ -102,10 +102,12 @@ func TestExampleObjectSchemas(t *testing.T) {
102 102
 			"postgresql-persistent-template": &templateapi.Template{},
103 103
 			"mongodb-persistent-template":    &templateapi.Template{},
104 104
 			"mariadb-persistent-template":    &templateapi.Template{},
105
+			"redis-persistent-template":      &templateapi.Template{},
105 106
 			"mysql-ephemeral-template":       &templateapi.Template{},
106 107
 			"postgresql-ephemeral-template":  &templateapi.Template{},
107 108
 			"mongodb-ephemeral-template":     &templateapi.Template{},
108 109
 			"mariadb-ephemeral-template":     &templateapi.Template{},
110
+			"redis-ephemeral-template":       &templateapi.Template{},
109 111
 		},
110 112
 		"../test/extended/testdata/ldap": {
111 113
 			"ldapserver-buildconfig":         &buildapi.BuildConfig{},
... ...
@@ -241,7 +241,7 @@
241 241
             },
242 242
             "from": {
243 243
               "kind": "ImageStreamTag",
244
-              "name": "5.6"
244
+              "name": "7.0"
245 245
             }
246 246
           },
247 247
           {
... ...
@@ -275,6 +275,22 @@
275 275
               "kind": "DockerImage",
276 276
               "name": "centos/php-56-centos7:latest"
277 277
             }
278
+          },
279
+          {
280
+            "name": "7.0",
281
+            "annotations": {
282
+              "openshift.io/display-name": "PHP 7.0",
283
+              "description": "Build and run PHP 7.0 applications on CentOS 7. For more information about using this builder image, including OpenShift considerations, see https://github.com/sclorg/s2i-php-container/blob/master/7.0/README.md.",
284
+              "iconClass": "icon-php",
285
+              "tags": "builder,php",
286
+              "supports":"php:7.0,php",
287
+              "version": "7.0",
288
+              "sampleRepo": "https://github.com/openshift/cakephp-ex.git"
289
+            },
290
+            "from": {
291
+              "kind": "DockerImage",
292
+              "name": "centos/php-70-centos7:latest"
293
+            }
278 294
           }
279 295
         ]
280 296
       }
... ...
@@ -717,6 +733,47 @@
717 717
       "kind": "ImageStream",
718 718
       "apiVersion": "v1",
719 719
       "metadata": {
720
+        "name": "redis",
721
+        "annotations": {
722
+          "openshift.io/display-name": "Redis"
723
+        }
724
+      },
725
+      "spec": {
726
+        "tags": [
727
+          {
728
+            "name": "latest",
729
+            "annotations": {
730
+              "openshift.io/display-name": "Redis (Latest)",
731
+              "description": "Provides a Redis database on CentOS 7. For more information about using this database image, including OpenShift considerations, see https://github.com/sclorg/redis-container/tree/master/3.2/README.md.\n\nWARNING: By selecting this tag, your application will automatically update to use the latest version of Redis available on OpenShift, including major versions updates.",
732
+              "iconClass": "icon-redis",
733
+              "tags": "redis"
734
+            },
735
+            "from": {
736
+              "kind": "ImageStreamTag",
737
+              "name": "3.2"
738
+            }
739
+          },
740
+          {
741
+            "name": "3.2",
742
+            "annotations": {
743
+              "openshift.io/display-name": "Redis 3.2",
744
+              "description": "Provides a Redis 3.2 database on CentOS 7. For more information about using this database image, including OpenShift considerations, see https://github.com/sclorg/redis-container/tree/master/3.2/README.md.",
745
+              "iconClass": "icon-redis",
746
+              "tags": "redis",
747
+              "version": "3.2"
748
+            },
749
+            "from": {
750
+              "kind": "DockerImage",
751
+              "name": "centos/redis-32-centos7:latest"
752
+            }
753
+          }
754
+        ]
755
+      }
756
+     },
757
+     {
758
+      "kind": "ImageStream",
759
+      "apiVersion": "v1",
760
+      "metadata": {
720 761
         "name": "jenkins",
721 762
         "annotations": {
722 763
           "openshift.io/display-name": "Jenkins"
... ...
@@ -275,6 +275,22 @@
275 275
               "kind": "DockerImage",
276 276
               "name": "registry.access.redhat.com/rhscl/php-56-rhel7:latest"
277 277
             }
278
+          },
279
+          {
280
+            "name": "7.0",
281
+            "annotations": {
282
+              "openshift.io/display-name": "PHP 7.0",
283
+              "description": "Build and run PHP 7.0 applications on RHEL 7. For more information about using this builder image, including OpenShift considerations, see https://github.com/sclorg/s2i-php-container/blob/master/7.0/README.md.",
284
+              "iconClass": "icon-php",
285
+              "tags": "builder,php",
286
+              "supports":"php:7.0,php",
287
+              "version": "7.0",
288
+              "sampleRepo": "https://github.com/openshift/cakephp-ex.git"
289
+            },
290
+            "from": {
291
+              "kind": "DockerImage",
292
+              "name": "registry.access.redhat.com/rhscl/php-70-rhel7:latest"
293
+            }
278 294
           }
279 295
         ]
280 296
       }
... ...
@@ -624,6 +640,47 @@
624 624
       "kind": "ImageStream",
625 625
       "apiVersion": "v1",
626 626
       "metadata": {
627
+        "name": "redis",
628
+        "annotations": {
629
+          "openshift.io/display-name": "Redis"
630
+        }
631
+      },
632
+      "spec": {
633
+        "tags": [
634
+          {
635
+            "name": "latest",
636
+            "annotations": {
637
+              "openshift.io/display-name": "Redis (Latest)",
638
+              "description": "Provides a Redis database on RHEL 7. For more information about using this database image, including OpenShift considerations, see https://github.com/sclorg/redis-container/tree/master/3.2/README.md.\n\nWARNING: By selecting this tag, your application will automatically update to use the latest version of Redis available on OpenShift, including major versions updates.",
639
+              "iconClass": "icon-redis",
640
+              "tags": "redis"
641
+            },
642
+            "from": {
643
+              "kind": "ImageStreamTag",
644
+              "name": "3.2"
645
+            }
646
+          },
647
+          {
648
+            "name": "3.2",
649
+            "annotations": {
650
+              "openshift.io/display-name": "Redis 3.2",
651
+              "description": "Provides a Redis 3.2 database on RHEL 7. For more information about using this database image, including OpenShift considerations, see https://github.com/sclorg/redis-container/tree/master/3.2/README.md.",
652
+              "iconClass": "icon-redis",
653
+              "tags": "redis",
654
+              "version": "3.2"
655
+            },
656
+            "from": {
657
+              "kind": "DockerImage",
658
+              "name": "registry.access.redhat.com/rhscl/redis-32-rhel7:latest"
659
+            }
660
+          }
661
+        ]
662
+      }
663
+     },
664
+     {
665
+      "kind": "ImageStream",
666
+      "apiVersion": "v1",
667
+      "metadata": {
627 668
         "name": "jenkins",
628 669
         "annotations": {
629 670
           "openshift.io/display-name": "Jenkins"
... ...
@@ -10,6 +10,8 @@
10 10
 // examples/db-templates/mysql-persistent-template.json
11 11
 // examples/db-templates/postgresql-ephemeral-template.json
12 12
 // examples/db-templates/postgresql-persistent-template.json
13
+// examples/db-templates/redis-ephemeral-template.json
14
+// examples/db-templates/redis-persistent-template.json
13 15
 // examples/jenkins/jenkins-ephemeral-template.json
14 16
 // examples/jenkins/jenkins-persistent-template.json
15 17
 // examples/jenkins/pipeline/bluegreen-pipeline.yaml
... ...
@@ -309,7 +311,7 @@ var _examplesImageStreamsImageStreamsCentos7Json = []byte(`{
309 309
             },
310 310
             "from": {
311 311
               "kind": "ImageStreamTag",
312
-              "name": "5.6"
312
+              "name": "7.0"
313 313
             }
314 314
           },
315 315
           {
... ...
@@ -343,6 +345,22 @@ var _examplesImageStreamsImageStreamsCentos7Json = []byte(`{
343 343
               "kind": "DockerImage",
344 344
               "name": "centos/php-56-centos7:latest"
345 345
             }
346
+          },
347
+          {
348
+            "name": "7.0",
349
+            "annotations": {
350
+              "openshift.io/display-name": "PHP 7.0",
351
+              "description": "Build and run PHP 7.0 applications on CentOS 7. For more information about using this builder image, including OpenShift considerations, see https://github.com/sclorg/s2i-php-container/blob/master/7.0/README.md.",
352
+              "iconClass": "icon-php",
353
+              "tags": "builder,php",
354
+              "supports":"php:7.0,php",
355
+              "version": "7.0",
356
+              "sampleRepo": "https://github.com/openshift/cakephp-ex.git"
357
+            },
358
+            "from": {
359
+              "kind": "DockerImage",
360
+              "name": "centos/php-70-centos7:latest"
361
+            }
346 362
           }
347 363
         ]
348 364
       }
... ...
@@ -785,6 +803,47 @@ var _examplesImageStreamsImageStreamsCentos7Json = []byte(`{
785 785
       "kind": "ImageStream",
786 786
       "apiVersion": "v1",
787 787
       "metadata": {
788
+        "name": "redis",
789
+        "annotations": {
790
+          "openshift.io/display-name": "Redis"
791
+        }
792
+      },
793
+      "spec": {
794
+        "tags": [
795
+          {
796
+            "name": "latest",
797
+            "annotations": {
798
+              "openshift.io/display-name": "Redis (Latest)",
799
+              "description": "Provides a Redis database on CentOS 7. For more information about using this database image, including OpenShift considerations, see https://github.com/sclorg/redis-container/tree/master/3.2/README.md.\n\nWARNING: By selecting this tag, your application will automatically update to use the latest version of Redis available on OpenShift, including major versions updates.",
800
+              "iconClass": "icon-redis",
801
+              "tags": "redis"
802
+            },
803
+            "from": {
804
+              "kind": "ImageStreamTag",
805
+              "name": "3.2"
806
+            }
807
+          },
808
+          {
809
+            "name": "3.2",
810
+            "annotations": {
811
+              "openshift.io/display-name": "Redis 3.2",
812
+              "description": "Provides a Redis 3.2 database on CentOS 7. For more information about using this database image, including OpenShift considerations, see https://github.com/sclorg/redis-container/tree/master/3.2/README.md.",
813
+              "iconClass": "icon-redis",
814
+              "tags": "redis",
815
+              "version": "3.2"
816
+            },
817
+            "from": {
818
+              "kind": "DockerImage",
819
+              "name": "centos/redis-32-centos7:latest"
820
+            }
821
+          }
822
+        ]
823
+      }
824
+     },
825
+     {
826
+      "kind": "ImageStream",
827
+      "apiVersion": "v1",
828
+      "metadata": {
788 829
         "name": "jenkins",
789 830
         "annotations": {
790 831
           "openshift.io/display-name": "Jenkins"
... ...
@@ -1132,6 +1191,22 @@ var _examplesImageStreamsImageStreamsRhel7Json = []byte(`{
1132 1132
               "kind": "DockerImage",
1133 1133
               "name": "registry.access.redhat.com/rhscl/php-56-rhel7:latest"
1134 1134
             }
1135
+          },
1136
+          {
1137
+            "name": "7.0",
1138
+            "annotations": {
1139
+              "openshift.io/display-name": "PHP 7.0",
1140
+              "description": "Build and run PHP 7.0 applications on RHEL 7. For more information about using this builder image, including OpenShift considerations, see https://github.com/sclorg/s2i-php-container/blob/master/7.0/README.md.",
1141
+              "iconClass": "icon-php",
1142
+              "tags": "builder,php",
1143
+              "supports":"php:7.0,php",
1144
+              "version": "7.0",
1145
+              "sampleRepo": "https://github.com/openshift/cakephp-ex.git"
1146
+            },
1147
+            "from": {
1148
+              "kind": "DockerImage",
1149
+              "name": "registry.access.redhat.com/rhscl/php-70-rhel7:latest"
1150
+            }
1135 1151
           }
1136 1152
         ]
1137 1153
       }
... ...
@@ -1481,6 +1556,47 @@ var _examplesImageStreamsImageStreamsRhel7Json = []byte(`{
1481 1481
       "kind": "ImageStream",
1482 1482
       "apiVersion": "v1",
1483 1483
       "metadata": {
1484
+        "name": "redis",
1485
+        "annotations": {
1486
+          "openshift.io/display-name": "Redis"
1487
+        }
1488
+      },
1489
+      "spec": {
1490
+        "tags": [
1491
+          {
1492
+            "name": "latest",
1493
+            "annotations": {
1494
+              "openshift.io/display-name": "Redis (Latest)",
1495
+              "description": "Provides a Redis database on RHEL 7. For more information about using this database image, including OpenShift considerations, see https://github.com/sclorg/redis-container/tree/master/3.2/README.md.\n\nWARNING: By selecting this tag, your application will automatically update to use the latest version of Redis available on OpenShift, including major versions updates.",
1496
+              "iconClass": "icon-redis",
1497
+              "tags": "redis"
1498
+            },
1499
+            "from": {
1500
+              "kind": "ImageStreamTag",
1501
+              "name": "3.2"
1502
+            }
1503
+          },
1504
+          {
1505
+            "name": "3.2",
1506
+            "annotations": {
1507
+              "openshift.io/display-name": "Redis 3.2",
1508
+              "description": "Provides a Redis 3.2 database on RHEL 7. For more information about using this database image, including OpenShift considerations, see https://github.com/sclorg/redis-container/tree/master/3.2/README.md.",
1509
+              "iconClass": "icon-redis",
1510
+              "tags": "redis",
1511
+              "version": "3.2"
1512
+            },
1513
+            "from": {
1514
+              "kind": "DockerImage",
1515
+              "name": "registry.access.redhat.com/rhscl/redis-32-rhel7:latest"
1516
+            }
1517
+          }
1518
+        ]
1519
+      }
1520
+     },
1521
+     {
1522
+      "kind": "ImageStream",
1523
+      "apiVersion": "v1",
1524
+      "metadata": {
1484 1525
         "name": "jenkins",
1485 1526
         "annotations": {
1486 1527
           "openshift.io/display-name": "Jenkins"
... ...
@@ -3694,6 +3810,446 @@ func examplesDbTemplatesPostgresqlPersistentTemplateJson() (*asset, error) {
3694 3694
 	return a, nil
3695 3695
 }
3696 3696
 
3697
+var _examplesDbTemplatesRedisEphemeralTemplateJson = []byte(`{
3698
+  "kind": "Template",
3699
+  "apiVersion": "v1",
3700
+  "metadata": {
3701
+    "name": "redis-ephemeral",
3702
+    "creationTimestamp": null,
3703
+    "annotations": {
3704
+      "openshift.io/display-name": "Redis (Ephemeral)",
3705
+      "description": "Redis in-memory data structure store, without persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/redis-container/blob/master/3.2.\n\nWARNING: Any data stored will be lost upon pod destruction. Only use this template for testing",
3706
+      "iconClass": "icon-redis",
3707
+      "tags": "database,redis"
3708
+    }
3709
+  },
3710
+  "message": "The following service(s) have been created in your project: ${DATABASE_SERVICE_NAME}.\n\n       Password: ${REDIS_PASSWORD}\n Connection URL: redis://${DATABASE_SERVICE_NAME}:6379/\n\nFor more information about using this template, including OpenShift considerations, see https://github.com/sclorg/redis-container/blob/master/3.2.",
3711
+  "labels": {
3712
+    "template": "redis-ephemeral-template"
3713
+  },
3714
+  "objects": [
3715
+    {
3716
+      "kind": "Service",
3717
+      "apiVersion": "v1",
3718
+      "metadata": {
3719
+        "name": "${DATABASE_SERVICE_NAME}",
3720
+        "creationTimestamp": null
3721
+      },
3722
+      "spec": {
3723
+        "ports": [
3724
+          {
3725
+            "name": "redis",
3726
+            "protocol": "TCP",
3727
+            "port": 6379,
3728
+            "targetPort": 6379,
3729
+            "nodePort": 0
3730
+          }
3731
+        ],
3732
+        "selector": {
3733
+          "name": "${DATABASE_SERVICE_NAME}"
3734
+        },
3735
+        "type": "ClusterIP",
3736
+        "sessionAffinity": "None"
3737
+      },
3738
+      "status": {
3739
+        "loadBalancer": {}
3740
+      }
3741
+    },
3742
+    {
3743
+      "kind": "DeploymentConfig",
3744
+      "apiVersion": "v1",
3745
+      "metadata": {
3746
+        "name": "${DATABASE_SERVICE_NAME}",
3747
+        "creationTimestamp": null
3748
+      },
3749
+      "spec": {
3750
+        "strategy": {
3751
+          "type": "Recreate"
3752
+        },
3753
+        "triggers": [
3754
+          {
3755
+            "type": "ImageChange",
3756
+            "imageChangeParams": {
3757
+              "automatic": true,
3758
+              "containerNames": [
3759
+                "redis"
3760
+              ],
3761
+              "from": {
3762
+                "kind": "ImageStreamTag",
3763
+                "name": "redis:${REDIS_VERSION}",
3764
+                "namespace": "${NAMESPACE}"
3765
+              },
3766
+              "lastTriggeredImage": ""
3767
+            }
3768
+          },
3769
+          {
3770
+            "type": "ConfigChange"
3771
+          }
3772
+        ],
3773
+        "replicas": 1,
3774
+        "selector": {
3775
+          "name": "${DATABASE_SERVICE_NAME}"
3776
+        },
3777
+        "template": {
3778
+          "metadata": {
3779
+            "creationTimestamp": null,
3780
+            "labels": {
3781
+              "name": "${DATABASE_SERVICE_NAME}"
3782
+            }
3783
+          },
3784
+          "spec": {
3785
+            "containers": [
3786
+              {
3787
+                "name": "redis",
3788
+                "image": " ",
3789
+                "ports": [
3790
+                  {
3791
+                    "containerPort": 6379,
3792
+                    "protocol": "TCP"
3793
+                  }
3794
+                ],
3795
+                "readinessProbe": {
3796
+                  "timeoutSeconds": 1,
3797
+                  "initialDelaySeconds": 5,
3798
+                  "exec": {
3799
+                    "command": [ "/bin/sh", "-i", "-c", "test \"$(redis-cli -h 127.0.0.1 -a $REDIS_PASSWORD ping)\" == \"PONG\""]
3800
+                  }
3801
+                },
3802
+                "livenessProbe": {
3803
+                  "timeoutSeconds": 1,
3804
+                  "initialDelaySeconds": 30,
3805
+                  "tcpSocket": {
3806
+                    "port": 6379
3807
+                  }
3808
+                },
3809
+                "env": [
3810
+                  {
3811
+                    "name": "REDIS_PASSWORD",
3812
+                    "value": "${REDIS_PASSWORD}"
3813
+                  }
3814
+                ],
3815
+                "resources": {
3816
+                  "limits": {
3817
+                    "memory": "${MEMORY_LIMIT}"
3818
+                  }
3819
+                },
3820
+                "volumeMounts": [
3821
+                  {
3822
+                    "name": "${DATABASE_SERVICE_NAME}-data",
3823
+                    "mountPath": "/var/lib/redis/data"
3824
+                  }
3825
+                ],
3826
+                "terminationMessagePath": "/dev/termination-log",
3827
+                "imagePullPolicy": "IfNotPresent",
3828
+                "capabilities": {},
3829
+                "securityContext": {
3830
+                  "capabilities": {},
3831
+                  "privileged": false
3832
+                }
3833
+              }
3834
+            ],
3835
+            "volumes": [
3836
+              {
3837
+                "name": "${DATABASE_SERVICE_NAME}-data",
3838
+                "emptyDir": {
3839
+                  "medium": ""
3840
+                }
3841
+              }
3842
+            ],
3843
+            "restartPolicy": "Always",
3844
+            "dnsPolicy": "ClusterFirst"
3845
+          }
3846
+        }
3847
+      },
3848
+      "status": {}
3849
+    }
3850
+  ],
3851
+  "parameters": [
3852
+    {
3853
+      "name": "MEMORY_LIMIT",
3854
+      "displayName": "Memory Limit",
3855
+      "description": "Maximum amount of memory the container can use.",
3856
+      "value": "512Mi"
3857
+    },
3858
+    {
3859
+      "name": "NAMESPACE",
3860
+      "displayName": "Namespace",
3861
+      "description": "The OpenShift Namespace where the ImageStream resides.",
3862
+      "value": "openshift"
3863
+    },
3864
+    {
3865
+      "name": "DATABASE_SERVICE_NAME",
3866
+      "displayName": "Database Service Name",
3867
+      "description": "The name of the OpenShift Service exposed for the database.",
3868
+      "value": "redis",
3869
+      "required": true
3870
+    },
3871
+    {
3872
+      "name": "REDIS_PASSWORD",
3873
+      "displayName": "Redis Connection Password",
3874
+      "description": "Password for the Redis connection user.",
3875
+      "generate": "expression",
3876
+      "from": "[a-zA-Z0-9]{16}",
3877
+      "required": true
3878
+    },
3879
+    {
3880
+      "name": "REDIS_VERSION",
3881
+      "displayName": "Version of Redis Image",
3882
+      "description": "Version of Redis image to be used (3.2 or latest).",
3883
+      "value": "3.2",
3884
+      "required": true
3885
+    }
3886
+  ]
3887
+}
3888
+`)
3889
+
3890
+func examplesDbTemplatesRedisEphemeralTemplateJsonBytes() ([]byte, error) {
3891
+	return _examplesDbTemplatesRedisEphemeralTemplateJson, nil
3892
+}
3893
+
3894
+func examplesDbTemplatesRedisEphemeralTemplateJson() (*asset, error) {
3895
+	bytes, err := examplesDbTemplatesRedisEphemeralTemplateJsonBytes()
3896
+	if err != nil {
3897
+		return nil, err
3898
+	}
3899
+
3900
+	info := bindataFileInfo{name: "examples/db-templates/redis-ephemeral-template.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
3901
+	a := &asset{bytes: bytes, info:  info}
3902
+	return a, nil
3903
+}
3904
+
3905
+var _examplesDbTemplatesRedisPersistentTemplateJson = []byte(`{
3906
+  "kind": "Template",
3907
+  "apiVersion": "v1",
3908
+  "metadata": {
3909
+    "name": "redis-persistent",
3910
+    "creationTimestamp": null,
3911
+    "annotations": {
3912
+      "openshift.io/display-name": "Redis (Persistent)",
3913
+      "description": "Redis in-memory data structure store, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/redis-container/blob/master/3.2.\n\nNOTE: You must have persistent volumes available in your cluster to use this template.",
3914
+      "iconClass": "icon-redis",
3915
+      "tags": "database,redis"
3916
+    }
3917
+  },
3918
+  "message": "The following service(s) have been created in your project: ${DATABASE_SERVICE_NAME}.\n\n       Password: ${REDIS_PASSWORD}\n Connection URL: redis://${DATABASE_SERVICE_NAME}:6379/\n\nFor more information about using this template, including OpenShift considerations, see https://github.com/sclorg/redis-container/blob/master/3.2.",
3919
+  "labels": {
3920
+    "template": "redis-persistent-template"
3921
+  },
3922
+  "objects": [
3923
+    {
3924
+      "kind": "Service",
3925
+      "apiVersion": "v1",
3926
+      "metadata": {
3927
+        "name": "${DATABASE_SERVICE_NAME}",
3928
+        "creationTimestamp": null
3929
+      },
3930
+      "spec": {
3931
+        "ports": [
3932
+          {
3933
+            "name": "redis",
3934
+            "protocol": "TCP",
3935
+            "port": 6379,
3936
+            "targetPort": 6379,
3937
+            "nodePort": 0
3938
+          }
3939
+        ],
3940
+        "selector": {
3941
+          "name": "${DATABASE_SERVICE_NAME}"
3942
+        },
3943
+        "type": "ClusterIP",
3944
+        "sessionAffinity": "None"
3945
+      },
3946
+      "status": {
3947
+        "loadBalancer": {}
3948
+      }
3949
+    },
3950
+    {
3951
+      "kind": "PersistentVolumeClaim",
3952
+      "apiVersion": "v1",
3953
+      "metadata": {
3954
+        "name": "${DATABASE_SERVICE_NAME}"
3955
+      },
3956
+      "spec": {
3957
+        "accessModes": [
3958
+          "ReadWriteOnce"
3959
+        ],
3960
+        "resources": {
3961
+          "requests": {
3962
+            "storage": "${VOLUME_CAPACITY}"
3963
+          }
3964
+        }
3965
+      }
3966
+    },
3967
+    {
3968
+      "kind": "DeploymentConfig",
3969
+      "apiVersion": "v1",
3970
+      "metadata": {
3971
+        "name": "${DATABASE_SERVICE_NAME}",
3972
+        "creationTimestamp": null
3973
+      },
3974
+      "spec": {
3975
+        "strategy": {
3976
+          "type": "Recreate"
3977
+        },
3978
+        "triggers": [
3979
+          {
3980
+            "type": "ImageChange",
3981
+            "imageChangeParams": {
3982
+              "automatic": true,
3983
+              "containerNames": [
3984
+                "redis"
3985
+              ],
3986
+              "from": {
3987
+                "kind": "ImageStreamTag",
3988
+                "name": "redis:${REDIS_VERSION}",
3989
+                "namespace": "${NAMESPACE}"
3990
+              },
3991
+              "lastTriggeredImage": ""
3992
+            }
3993
+          },
3994
+          {
3995
+            "type": "ConfigChange"
3996
+          }
3997
+        ],
3998
+        "replicas": 1,
3999
+        "selector": {
4000
+          "name": "${DATABASE_SERVICE_NAME}"
4001
+        },
4002
+        "template": {
4003
+          "metadata": {
4004
+            "creationTimestamp": null,
4005
+            "labels": {
4006
+              "name": "${DATABASE_SERVICE_NAME}"
4007
+            }
4008
+          },
4009
+          "spec": {
4010
+            "containers": [
4011
+              {
4012
+                "name": "redis",
4013
+                "image": " ",
4014
+                "ports": [
4015
+                  {
4016
+                    "containerPort": 6379,
4017
+                    "protocol": "TCP"
4018
+                  }
4019
+                ],
4020
+                "readinessProbe": {
4021
+                  "timeoutSeconds": 1,
4022
+                  "initialDelaySeconds": 5,
4023
+                  "exec": {
4024
+                    "command": [ "/bin/sh", "-i", "-c", "test \"$(redis-cli -h 127.0.0.1 -a $REDIS_PASSWORD ping)\" == \"PONG\""]
4025
+                  }
4026
+                },
4027
+                "livenessProbe": {
4028
+                  "timeoutSeconds": 1,
4029
+                  "initialDelaySeconds": 30,
4030
+                  "tcpSocket": {
4031
+                    "port": 6379
4032
+                  }
4033
+                },
4034
+                "env": [
4035
+                  {
4036
+                    "name": "REDIS_PASSWORD",
4037
+                    "value": "${REDIS_PASSWORD}"
4038
+                  }
4039
+                ],
4040
+                "resources": {
4041
+                  "limits": {
4042
+                    "memory": "${MEMORY_LIMIT}"
4043
+                  }
4044
+                },
4045
+                "volumeMounts": [
4046
+                  {
4047
+                    "name": "${DATABASE_SERVICE_NAME}-data",
4048
+                    "mountPath": "/var/lib/redis/data"
4049
+                  }
4050
+                ],
4051
+                "terminationMessagePath": "/dev/termination-log",
4052
+                "imagePullPolicy": "IfNotPresent",
4053
+                "capabilities": {},
4054
+                "securityContext": {
4055
+                  "capabilities": {},
4056
+                  "privileged": false
4057
+                }
4058
+              }
4059
+            ],
4060
+            "volumes": [
4061
+              {
4062
+                "name": "${DATABASE_SERVICE_NAME}-data",
4063
+                "persistentVolumeClaim": {
4064
+                  "claimName": "${DATABASE_SERVICE_NAME}"
4065
+                }
4066
+              }
4067
+            ],
4068
+            "restartPolicy": "Always",
4069
+            "dnsPolicy": "ClusterFirst"
4070
+          }
4071
+        }
4072
+      },
4073
+      "status": {}
4074
+    }
4075
+  ],
4076
+  "parameters": [
4077
+    {
4078
+      "name": "MEMORY_LIMIT",
4079
+      "displayName": "Memory Limit",
4080
+      "description": "Maximum amount of memory the container can use.",
4081
+      "value": "512Mi"
4082
+    },
4083
+    {
4084
+      "name": "NAMESPACE",
4085
+      "displayName": "Namespace",
4086
+      "description": "The OpenShift Namespace where the ImageStream resides.",
4087
+      "value": "openshift"
4088
+    },
4089
+    {
4090
+      "name": "DATABASE_SERVICE_NAME",
4091
+      "displayName": "Database Service Name",
4092
+      "description": "The name of the OpenShift Service exposed for the database.",
4093
+      "value": "redis",
4094
+      "required": true
4095
+    },
4096
+    {
4097
+      "name": "REDIS_PASSWORD",
4098
+      "displayName": "Redis Connection Password",
4099
+      "description": "Password for the Redis connection user.",
4100
+      "generate": "expression",
4101
+      "from": "[a-zA-Z0-9]{16}",
4102
+      "required": true
4103
+    },
4104
+    {
4105
+      "name": "VOLUME_CAPACITY",
4106
+      "displayName": "Volume Capacity",
4107
+      "description": "Volume space available for data, e.g. 512Mi, 2Gi.",
4108
+      "value": "1Gi",
4109
+      "required": true
4110
+    },
4111
+    {
4112
+      "name": "REDIS_VERSION",
4113
+      "displayName": "Version of Redis Image",
4114
+      "description": "Version of Redis image to be used (3.2 or latest).",
4115
+      "value": "3.2",
4116
+      "required": true
4117
+    }
4118
+  ]
4119
+}
4120
+`)
4121
+
4122
+func examplesDbTemplatesRedisPersistentTemplateJsonBytes() ([]byte, error) {
4123
+	return _examplesDbTemplatesRedisPersistentTemplateJson, nil
4124
+}
4125
+
4126
+func examplesDbTemplatesRedisPersistentTemplateJson() (*asset, error) {
4127
+	bytes, err := examplesDbTemplatesRedisPersistentTemplateJsonBytes()
4128
+	if err != nil {
4129
+		return nil, err
4130
+	}
4131
+
4132
+	info := bindataFileInfo{name: "examples/db-templates/redis-persistent-template.json", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
4133
+	a := &asset{bytes: bytes, info:  info}
4134
+	return a, nil
4135
+}
4136
+
3697 4137
 var _examplesJenkinsJenkinsEphemeralTemplateJson = []byte(`{
3698 4138
   "kind": "Template",
3699 4139
   "apiVersion": "v1",
... ...
@@ -8604,6 +9160,8 @@ var _bindata = map[string]func() (*asset, error){
8604 8604
 	"examples/db-templates/mysql-persistent-template.json": examplesDbTemplatesMysqlPersistentTemplateJson,
8605 8605
 	"examples/db-templates/postgresql-ephemeral-template.json": examplesDbTemplatesPostgresqlEphemeralTemplateJson,
8606 8606
 	"examples/db-templates/postgresql-persistent-template.json": examplesDbTemplatesPostgresqlPersistentTemplateJson,
8607
+	"examples/db-templates/redis-ephemeral-template.json": examplesDbTemplatesRedisEphemeralTemplateJson,
8608
+	"examples/db-templates/redis-persistent-template.json": examplesDbTemplatesRedisPersistentTemplateJson,
8607 8609
 	"examples/jenkins/jenkins-ephemeral-template.json": examplesJenkinsJenkinsEphemeralTemplateJson,
8608 8610
 	"examples/jenkins/jenkins-persistent-template.json": examplesJenkinsJenkinsPersistentTemplateJson,
8609 8611
 	"examples/jenkins/pipeline/bluegreen-pipeline.yaml": examplesJenkinsPipelineBluegreenPipelineYaml,
... ...
@@ -8677,6 +9235,10 @@ var _bintree = &bintree{nil, map[string]*bintree{
8677 8677
 			}},
8678 8678
 			"postgresql-persistent-template.json": &bintree{examplesDbTemplatesPostgresqlPersistentTemplateJson, map[string]*bintree{
8679 8679
 			}},
8680
+			"redis-ephemeral-template.json": &bintree{examplesDbTemplatesRedisEphemeralTemplateJson, map[string]*bintree{
8681
+			}},
8682
+			"redis-persistent-template.json": &bintree{examplesDbTemplatesRedisPersistentTemplateJson, map[string]*bintree{
8683
+			}},
8680 8684
 		}},
8681 8685
 		"image-streams": &bintree{nil, map[string]*bintree{
8682 8686
 			"image-streams-centos7.json": &bintree{examplesImageStreamsImageStreamsCentos7Json, map[string]*bintree{
... ...
@@ -200,7 +200,7 @@ os::cmd::expect_success_and_text 'oc new-app --search --image-stream=mongodb' "T
200 200
 os::cmd::expect_success_and_text 'oc new-app --search --image-stream=mysql' "Tags:\s+5.5, 5.6, 5.7, latest"
201 201
 os::cmd::expect_success_and_text 'oc new-app --search --image-stream=nodejs' "Tags:\s+4, latest"
202 202
 os::cmd::expect_success_and_text 'oc new-app --search --image-stream=perl' "Tags:\s+5.16, 5.20, 5.24, latest"
203
-os::cmd::expect_success_and_text 'oc new-app --search --image-stream=php' "Tags:\s+5.5, 5.6, latest"
203
+os::cmd::expect_success_and_text 'oc new-app --search --image-stream=php' "Tags:\s+5.5, 5.6, 7.0, latest"
204 204
 os::cmd::expect_success_and_text 'oc new-app --search --image-stream=postgresql' "Tags:\s+9.2, 9.4, 9.5, latest"
205 205
 os::cmd::expect_success_and_text 'oc new-app -S --image-stream=python' "Tags:\s+2.7, 3.3, 3.4, 3.5, latest"
206 206
 os::cmd::expect_success_and_text 'oc new-app -S --image-stream=ruby' "Tags:\s+2.0, 2.2, 2.3, latest"