https://github.com/projectatomic/atomicapp/blob/master/atomicapp/providers/openshift.py#L66
request: GET http://example.com/oapi/v1
response:
HTTP/1.1 200 OK
Cache-Control: no-store
Content-Type: application/json
Date: Wed, 16 Dec 2015 16:53:43 GMT
Transfer-Encoding: chunked
{
"groupVersion": "v1",
"resources": [
{
"name": "buildconfigs",
"namespaced": true
},
{
"name": "buildconfigs/instantiate",
"namespaced": true
},
{
"name": "buildconfigs/instantiatebinary",
"namespaced": true
},
{
"name": "buildconfigs/webhooks",
"namespaced": true
},
{
"name": "builds",
"namespaced": true
},
{
"name": "builds/clone",
"namespaced": true
},
{
"name": "builds/log",
"namespaced": true
},
{
"name": "clusternetworks",
"namespaced": false
},
{
"name": "clusterpolicies",
"namespaced": false
},
{
"name": "clusterpolicybindings",
"namespaced": false
},
{
"name": "clusterrolebindings",
"namespaced": false
},
{
"name": "clusterroles",
"namespaced": false
},
{
"name": "deploymentconfigrollbacks",
"namespaced": true
},
{
"name": "deploymentconfigs",
"namespaced": true
},
{
"name": "deploymentconfigs/log",
"namespaced": true
},
{
"name": "deploymentconfigs/scale",
"namespaced": true
},
{
"name": "generatedeploymentconfigs",
"namespaced": true
},
{
"name": "groups",
"namespaced": false
},
{
"name": "hostsubnets",
"namespaced": false
},
{
"name": "identities",
"namespaced": false
},
{
"name": "images",
"namespaced": false
},
{
"name": "imagestreamimages",
"namespaced": true
},
{
"name": "imagestreammappings",
"namespaced": true
},
{
"name": "imagestreams",
"namespaced": true
},
{
"name": "imagestreams/status",
"namespaced": true
},
{
"name": "imagestreamtags",
"namespaced": true
},
{
"name": "localresourceaccessreviews",
"namespaced": true
},
{
"name": "localsubjectaccessreviews",
"namespaced": true
},
{
"name": "netnamespaces",
"namespaced": false
},
{
"name": "oauthaccesstokens",
"namespaced": false
},
{
"name": "oauthauthorizetokens",
"namespaced": false
},
{
"name": "oauthclientauthorizations",
"namespaced": false
},
{
"name": "oauthclients",
"namespaced": false
},
{
"name": "policies",
"namespaced": true
},
{
"name": "policybindings",
"namespaced": true
},
{
"name": "processedtemplates",
"namespaced": true
},
{
"name": "projectrequests",
"namespaced": false
},
{
"name": "projects",
"namespaced": false
},
{
"name": "resourceaccessreviews",
"namespaced": true
},
{
"name": "rolebindings",
"namespaced": true
},
{
"name": "roles",
"namespaced": true
},
{
"name": "routes",
"namespaced": true
},
{
"name": "routes/status",
"namespaced": true
},
{
"name": "subjectaccessreviews",
"namespaced": true
},
{
"name": "templates",
"namespaced": true
},
{
"name": "useridentitymappings",
"namespaced": false
},
{
"name": "users",
"namespaced": false
}
]
}https://github.com/projectatomic/atomicapp/blob/master/atomicapp/providers/openshift.py#L75
request: http://example.com/api/v1
response:
HTTP/1.1 200 OK
Cache-Control: no-store
Content-Type: application/json
Date: Wed, 16 Dec 2015 16:52:46 GMT
Transfer-Encoding: chunked
{
"groupVersion": "v1",
"resources": [
{
"name": "bindings",
"namespaced": true
},
{
"name": "componentstatuses",
"namespaced": true
},
{
"name": "endpoints",
"namespaced": true
},
{
"name": "events",
"namespaced": true
},
{
"name": "limitranges",
"namespaced": true
},
{
"name": "namespaces",
"namespaced": false
},
{
"name": "namespaces/finalize",
"namespaced": false
},
{
"name": "namespaces/status",
"namespaced": false
},
{
"name": "nodes",
"namespaced": false
},
{
"name": "nodes/status",
"namespaced": false
},
{
"name": "persistentvolumeclaims",
"namespaced": true
},
{
"name": "persistentvolumeclaims/status",
"namespaced": true
},
{
"name": "persistentvolumes",
"namespaced": false
},
{
"name": "persistentvolumes/status",
"namespaced": false
},
{
"name": "pods",
"namespaced": true
},
{
"name": "pods/attach",
"namespaced": true
},
{
"name": "pods/binding",
"namespaced": true
},
{
"name": "pods/exec",
"namespaced": true
},
{
"name": "pods/log",
"namespaced": true
},
{
"name": "pods/portforward",
"namespaced": true
},
{
"name": "pods/proxy",
"namespaced": true
},
{
"name": "pods/status",
"namespaced": true
},
{
"name": "podtemplates",
"namespaced": true
},
{
"name": "replicationcontrollers",
"namespaced": true
},
{
"name": "replicationcontrollers/status",
"namespaced": true
},
{
"name": "resourcequotas",
"namespaced": true
},
{
"name": "resourcequotas/status",
"namespaced": true
},
{
"name": "secrets",
"namespaced": true
},
{
"name": "securitycontextconstraints",
"namespaced": false
},
{
"name": "serviceaccounts",
"namespaced": true
},
{
"name": "services",
"namespaced": true
}
]
}https://github.com/projectatomic/atomicapp/blob/master/atomicapp/providers/openshift.py#L120
request: POST "https://example.com/oapi/v1/namespaces/example/routes"
data:
{
"apiVersion": "v1",
"kind": "Route",
"metadata": {
"labels": {
"app": "nonroot-nginx"
},
"name": "nonroot-nginx"
},
"spec": {
"port": {
"targetPort": "8080"
},
"to": {
"kind": "Service",
"name": "nonroot-nginx"
}
}
}response:
HTTP/1.1 201 Created
Cache-Control: no-store
Content-Length: 516
Content-Type: application/json
Date: Wed, 16 Dec 2015 17:18:20 GMT
{
"apiVersion": "v1",
"kind": "Route",
"metadata": {
"annotations": {
"openshift.io/host.generated": "true"
},
"creationTimestamp": "2015-12-16T17:18:20Z",
"labels": {
"app": "nonroot-nginx"
},
"name": "nonroot-nginx",
"namespace": "testing",
"resourceVersion": "21376879",
"selfLink": "/oapi/v1/namespaces/testing/routes/nonroot-nginx",
"uid": "016cdb9b-a419-11e5-bbd9-0e2e65752393"
},
"spec": {
"host": "nonroot-nginx-testing.e8ca.engint.openshiftapps.com",
"port": {
"targetPort": "8080"
},
"to": {
"kind": "Service",
"name": "nonroot-nginx"
}
},
"status": {}
}https://github.com/projectatomic/atomicapp/blob/master/atomicapp/providers/openshift.py#L190
request: POST http://example.com/oapi/v1/namespaces/example/processedtemplates
data:
{
"apiVersion": "v1",
"kind": "Template",
"metadata": {
"name": "nonroot-nginx-template"
},
"parameters": [
{
"name": "lbl1",
"description": "test label",
"required": true,
"value": "label1"
}
],
"objects": [
{
"apiVersion": "v1",
"kind": "DeploymentConfig",
"metadata": {
"labels": {
"app": "nonroot-nginx",
"lbl1": "${lbl1}"
},
"name": "nonroot-nginx"
},
"spec": {
"replicas": 1,
"selector": {
"app": "nonroot-nginx",
"deploymentconfig": "nonroot-nginx"
},
"template": {
"metadata": {
"labels": {
"app": "nonroot-nginx",
"deploymentconfig": "nonroot-nginx"
}
},
"spec": {
"containers": [
{
"image": "tomaskral/nonroot-nginx",
"imagePullPolicy": "IfNotPresent",
"name": "nonroot-nginx",
"ports": [
{
"containerPort": 8080,
"name": "8080-tcp",
"protocol": "TCP"
}
]
}
]
}
},
"triggers": [
{
"type": "ConfigChange"
}
]
}
},
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"creationTimestamp": null,
"labels": {
"app": "nonroot-nginx"
},
"name": "nonroot-nginx"
},
"spec": {
"ports": [
{
"name": "8080-tcp",
"port": 8080,
"protocol": "TCP",
"targetPort": 8080
}
],
"selector": {
"app": "nonroot-nginx",
"deploymentconfig": "nonroot-nginx"
},
"sessionAffinity": "None",
"type": "ClusterIP"
},
"status": {
"loadBalancer": {}
}
},
{
"apiVersion": "v1",
"kind": "Route",
"metadata": {
"labels": {
"app": "nonroot-nginx"
},
"name": "nonroot-nginx"
},
"spec": {
"port": {
"targetPort": "8080"
},
"to": {
"kind": "Service",
"name": "nonroot-nginx"
}
}
}
]
}{
"apiVersion": "v1",
"kind": "Template",
"metadata": {
"name": "nonroot-nginx-template"
},
"parameters": [
{
"name": "lbl1",
"description": "test label",
"required": true,
"value": "label1"
}
],
"objects": [
{
"apiVersion": "v1",
"kind": "DeploymentConfig",
"metadata": {
"labels": {
"app": "nonroot-nginx",
"lbl1": "${lbl1}"
},
"name": "nonroot-nginx"
},
"spec": {
"replicas": 1,
"selector": {
"app": "nonroot-nginx",
"deploymentconfig": "nonroot-nginx"
},
"template": {
"metadata": {
"labels": {
"app": "nonroot-nginx",
"deploymentconfig": "nonroot-nginx"
}
},
"spec": {
"containers": [
{
"image": "tomaskral/nonroot-nginx",
"imagePullPolicy": "IfNotPresent",
"name": "nonroot-nginx",
"ports": [
{
"containerPort": 8080,
"name": "8080-tcp",
"protocol": "TCP"
}
]
}
]
}
},
"triggers": [
{
"type": "ConfigChange"
}
]
}
},
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"creationTimestamp": null,
"labels": {
"app": "nonroot-nginx"
},
"name": "nonroot-nginx"
},
"spec": {
"ports": [
{
"name": "8080-tcp",
"port": 8080,
"protocol": "TCP",
"targetPort": 8080
}
],
"selector": {
"app": "nonroot-nginx",
"deploymentconfig": "nonroot-nginx"
},
"sessionAffinity": "None",
"type": "ClusterIP"
},
"status": {
"loadBalancer": {}
}
},
{
"apiVersion": "v1",
"kind": "Route",
"metadata": {
"labels": {
"app": "nonroot-nginx"
},
"name": "nonroot-nginx"
},
"spec": {
"port": {
"targetPort": "8080"
},
"to": {
"kind": "Service",
"name": "nonroot-nginx"
}
}
}
]
}response:
HTTP/1.1 201 Created
Cache-Control: no-store
Content-Length: 1373
Content-Type: application/json
Date: Wed, 16 Dec 2015 17:22:06 GMT
{
"apiVersion": "v1",
"kind": "Template",
"metadata": {
"creationTimestamp": null,
"name": "nonroot-nginx-template",
"selfLink": "/oapi/v1/namespaces/processedtemplates/nonroot-nginx-template"
},
"objects": [
{
"apiVersion": "v1",
"kind": "DeploymentConfig",
"metadata": {
"labels": {
"app": "nonroot-nginx",
"lbl1": "label1"
},
"name": "nonroot-nginx"
},
"spec": {
"replicas": 1,
"selector": {
"app": "nonroot-nginx",
"deploymentconfig": "nonroot-nginx"
},
"template": {
"metadata": {
"labels": {
"app": "nonroot-nginx",
"deploymentconfig": "nonroot-nginx"
}
},
"spec": {
"containers": [
{
"image": "tomaskral/nonroot-nginx",
"imagePullPolicy": "IfNotPresent",
"name": "nonroot-nginx",
"ports": [
{
"containerPort": 8080,
"name": "8080-tcp",
"protocol": "TCP"
}
]
}
]
}
},
"triggers": [
{
"type": "ConfigChange"
}
]
}
},
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"creationTimestamp": null,
"labels": {
"app": "nonroot-nginx"
},
"name": "nonroot-nginx"
},
"spec": {
"ports": [
{
"name": "8080-tcp",
"port": 8080,
"protocol": "TCP",
"targetPort": 8080
}
],
"selector": {
"app": "nonroot-nginx",
"deploymentconfig": "nonroot-nginx"
},
"sessionAffinity": "None",
"type": "ClusterIP"
},
"status": {
"loadBalancer": {}
}
},
{
"apiVersion": "v1",
"kind": "Route",
"metadata": {
"labels": {
"app": "nonroot-nginx"
},
"name": "nonroot-nginx"
},
"spec": {
"port": {
"targetPort": "8080"
},
"to": {
"kind": "Service",
"name": "nonroot-nginx"
}
}
}
],
"parameters": [
{
"description": "test label",
"name": "lbl1",
"required": true,
"value": "label1"
}
]
}