1. Proposed title of this feature request
Support multiple project templates
2. What is the nature and description of the request?
To have the ability to inject multiple project templates (https://docs.redhat.com/en/documentation/openshift_container_platform/4.16/html-single/building_applications/index#modifying-template-for-new-projects_configuring-project-creation) and make them usable from YAML manifests as well as CLI. The behavior shall be similar to how storageclasses behave, i.e. you will have a default template and can select a different one if you have sufficient permissions to do so.
Some examples are:
```
oc new-project --template=platform-admin
oc new-project --template=developer
oc -n openshift-config get template
NAME DESCRIPTION PARAMETERS OBJECTS
developer (default) 5 (5 blank) 4
platform-admin 5 (5 blank) 4
oc -n openshift-config get template developer -oyaml
apiVersion: template.openshift.io/v1
kind: Template
metadata:
name: developer
objects:
<...>
oc -n openshift-config get template platform-admin -oyaml
apiVersion: template.openshift.io/v1
kind: Template
metadata:
name: platform-admin
objects:
<...>
```
To use it from a YAML manifest template, you shall either be able to use a label or a dedicated resource parameter in a Project
```
apiVersion: project.openshift.io/v1
kind: Project
metadata:
name: my-developer-project
labels:
projectTemplate: developer
—
apiVersion: project.openshift.io/v1
kind: Project
metadata:
name: my-developer-project
projectTemplate: developer
```
Similar is true for a ProjectRequest
```
apiVersion: project.openshift.io/v1
kind: ProjectRequest
metadata:
name: my-developer-project
labels:
projectTemplate: developer
description: '${NAMESPACE_DESCRIPTION}'
displayName: '${NAMESPACE_DISPLAY_NAME}'
—
apiVersion: project.openshift.io/v1
kind: ProjectRequest
metadata:
name: my-developer-project
description: '${NAMESPACE_DESCRIPTION}'
displayName: '${NAMESPACE_DISPLAY_NAME}'
projectTemplate: developer
```
3. Why does the customer need this? (List the business requirements here)
Provide more flexibility when utilizing the bootstrap projects for different roles.
4. List any affected packages or components.
Project templates