Add deckhand design_ref support
* Add ability to fetch design from Deckhand * Add functional testing for Deckhand design_ref integration * Update complete example to work with changes to Ceph chart Change-Id: Ice25a27b340e68a8ab38a23021cd91e032ca537b
This commit is contained in:
parent
bb54517404
commit
eeee591f8e
charts/promenade
examples
basic
complete
promenade
requirements-direct.txttests/unit/api
tools
g2
lib
manifests
stages
gate/config-templates
@ -17,6 +17,34 @@ limitations under the License.
|
|||||||
|
|
||||||
{{- if .Values.manifests.configmap_etc }}
|
{{- if .Values.manifests.configmap_etc }}
|
||||||
{{- $envAll := . }}
|
{{- $envAll := . }}
|
||||||
|
|
||||||
|
{{- if empty .Values.conf.promenade.keystone_authtoken.auth_uri -}}
|
||||||
|
{{- tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | set .Values.conf.promenade.keystone_authtoken "auth_uri" | quote | trunc 0 -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
# FIXME(sh8121att) fix for broken keystonemiddleware oslo config gen in newton - will remove in future
|
||||||
|
{{- if empty .Values.conf.promenade.keystone_authtoken.auth_url -}}
|
||||||
|
{{- tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup"| set .Values.conf.promenade.keystone_authtoken "auth_url" | quote | trunc 0 -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $userIdentity := .Values.endpoints.identity.auth.user -}}
|
||||||
|
|
||||||
|
{{- if empty .Values.conf.promenade.keystone_authtoken.project_name -}}
|
||||||
|
{{- set .Values.conf.promenade.keystone_authtoken "project_name" $userIdentity.project_name | quote | trunc 0 -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if empty .Values.conf.promenade.keystone_authtoken.project_domain_name -}}
|
||||||
|
{{- set .Values.conf.promenade.keystone_authtoken "project_domain_name" $userIdentity.project_domain_name | quote | trunc 0 -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if empty .Values.conf.promenade.keystone_authtoken.user_domain_name -}}
|
||||||
|
{{- set .Values.conf.promenade.keystone_authtoken "user_domain_name" $userIdentity.user_domain_name | quote | trunc 0 -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if empty .Values.conf.promenade.keystone_authtoken.username -}}
|
||||||
|
{{- set .Values.conf.promenade.keystone_authtoken "username" $userIdentity.username | quote | trunc 0 -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if empty .Values.conf.promenade.keystone_authtoken.password -}}
|
||||||
|
{{- set .Values.conf.promenade.keystone_authtoken "password" $userIdentity.password | quote | trunc 0 -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
@ -25,4 +53,6 @@ metadata:
|
|||||||
data:
|
data:
|
||||||
api-paste.ini: |+
|
api-paste.ini: |+
|
||||||
{{ include "helm-toolkit.utils.to_ini" .Values.conf.paste | indent 4 }}
|
{{ include "helm-toolkit.utils.to_ini" .Values.conf.paste | indent 4 }}
|
||||||
|
promenade.conf: |+
|
||||||
|
{{ include "helm-toolkit.utils.to_ini" .Values.conf.promenade | indent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
@ -61,6 +61,10 @@ spec:
|
|||||||
mountPath: /etc/promenade/api-paste.ini
|
mountPath: /etc/promenade/api-paste.ini
|
||||||
subPath: api-paste.ini
|
subPath: api-paste.ini
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
- name: promenade-etc
|
||||||
|
mountPath: /etc/promenade/promenade.conf
|
||||||
|
subPath: promenade.conf
|
||||||
|
readOnly: true
|
||||||
volumes:
|
volumes:
|
||||||
- name: promenade-etc
|
- name: promenade-etc
|
||||||
configMap:
|
configMap:
|
||||||
|
@ -13,6 +13,12 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
conf:
|
conf:
|
||||||
|
promenade:
|
||||||
|
keystone_authtoken:
|
||||||
|
delay_auth_decision: true
|
||||||
|
auth_type: password
|
||||||
|
auth_section: keystone_authtoken
|
||||||
|
|
||||||
paste:
|
paste:
|
||||||
pipeline:main:
|
pipeline:main:
|
||||||
pipeline: authtoken promenade-api
|
pipeline: authtoken promenade-api
|
||||||
@ -22,6 +28,7 @@ conf:
|
|||||||
forged_roles: admin
|
forged_roles: admin
|
||||||
paste.filter_factory: promenade.control.middleware:noauth_filter_factory
|
paste.filter_factory: promenade.control.middleware:noauth_filter_factory
|
||||||
app:promenade-api:
|
app:promenade-api:
|
||||||
|
disable: ""
|
||||||
paste.app_factory: promenade.promenade:paste_start_promenade
|
paste.app_factory: promenade.promenade:paste_start_promenade
|
||||||
|
|
||||||
images:
|
images:
|
||||||
|
11
examples/basic/LayeringPolicy.yaml
Normal file
11
examples/basic/LayeringPolicy.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
schema: deckhand/LayeringPolicy/v1
|
||||||
|
metadata:
|
||||||
|
schema: metadata/Control/v1
|
||||||
|
name: layering-policy
|
||||||
|
data:
|
||||||
|
layerOrder:
|
||||||
|
- global
|
||||||
|
- type
|
||||||
|
- site
|
||||||
|
...
|
@ -6,6 +6,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
release_prefix: ucp
|
release_prefix: ucp
|
||||||
chart_groups:
|
chart_groups:
|
||||||
@ -22,6 +23,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: Kubernetes proxy
|
description: Kubernetes proxy
|
||||||
sequenced: true
|
sequenced: true
|
||||||
@ -35,6 +37,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: Container networking via Calico
|
description: Container networking via Calico
|
||||||
sequenced: true
|
sequenced: true
|
||||||
@ -49,6 +52,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: Cluster DNS
|
description: Cluster DNS
|
||||||
chart_group:
|
chart_group:
|
||||||
@ -61,6 +65,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: Kubernetes components
|
description: Kubernetes components
|
||||||
chart_group:
|
chart_group:
|
||||||
@ -76,6 +81,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: UCP platform components
|
description: UCP platform components
|
||||||
chart_group:
|
chart_group:
|
||||||
@ -85,6 +91,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: helm-toolkit
|
name: helm-toolkit
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: helm-toolkit
|
chart_name: helm-toolkit
|
||||||
release: helm-toolkit
|
release: helm-toolkit
|
||||||
@ -551,6 +561,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -651,6 +662,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -722,6 +734,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -783,6 +796,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -1022,6 +1036,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: promenade
|
chart_name: promenade
|
||||||
release: promenade
|
release: promenade
|
||||||
|
@ -6,6 +6,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
config:
|
config:
|
||||||
insecure-registries:
|
insecure-registries:
|
||||||
|
@ -6,6 +6,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
hostname: n0
|
hostname: n0
|
||||||
ip: 192.168.77.10
|
ip: 192.168.77.10
|
||||||
|
@ -6,6 +6,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
files:
|
files:
|
||||||
- path: /opt/kubernetes/bin/kubelet
|
- path: /opt/kubernetes/bin/kubelet
|
||||||
|
@ -6,6 +6,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
arguments:
|
arguments:
|
||||||
- --cni-bin-dir=/opt/cni/bin
|
- --cni-bin-dir=/opt/cni/bin
|
||||||
|
@ -6,6 +6,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
dns:
|
dns:
|
||||||
cluster_domain: cluster.local
|
cluster_domain: cluster.local
|
||||||
|
11
examples/complete/LayeringPolicy.yaml
Normal file
11
examples/complete/LayeringPolicy.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
schema: deckhand/LayeringPolicy/v1
|
||||||
|
metadata:
|
||||||
|
schema: metadata/Control/v1
|
||||||
|
name: layering-policy
|
||||||
|
data:
|
||||||
|
layerOrder:
|
||||||
|
- global
|
||||||
|
- type
|
||||||
|
- site
|
||||||
|
...
|
@ -6,6 +6,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
release_prefix: ucp
|
release_prefix: ucp
|
||||||
chart_groups:
|
chart_groups:
|
||||||
@ -24,6 +25,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: Kubernetes proxy
|
description: Kubernetes proxy
|
||||||
sequenced: true
|
sequenced: true
|
||||||
@ -37,6 +39,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: Container networking via Calico
|
description: Container networking via Calico
|
||||||
sequenced: true
|
sequenced: true
|
||||||
@ -51,6 +54,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: Cluster DNS
|
description: Cluster DNS
|
||||||
chart_group:
|
chart_group:
|
||||||
@ -63,6 +67,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: Ceph Storage
|
description: Ceph Storage
|
||||||
sequenced: true
|
sequenced: true
|
||||||
@ -77,6 +82,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: Kubernetes components
|
description: Kubernetes components
|
||||||
chart_group:
|
chart_group:
|
||||||
@ -92,6 +98,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: UCP Infrastructure
|
description: UCP Infrastructure
|
||||||
sequenced: false
|
sequenced: false
|
||||||
@ -101,7 +108,6 @@ data:
|
|||||||
- ucp-keystone
|
- ucp-keystone
|
||||||
- maas-postgresql
|
- maas-postgresql
|
||||||
- maas
|
- maas
|
||||||
- ucp-etcd-rabbitmq
|
|
||||||
- ucp-rabbitmq
|
- ucp-rabbitmq
|
||||||
- ucp-barbican
|
- ucp-barbican
|
||||||
- ingress
|
- ingress
|
||||||
@ -114,6 +120,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
description: UCP platform components
|
description: UCP platform components
|
||||||
chart_group:
|
chart_group:
|
||||||
@ -127,6 +134,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: helm-toolkit
|
name: helm-toolkit
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: helm-toolkit
|
chart_name: helm-toolkit
|
||||||
release: helm-toolkit
|
release: helm-toolkit
|
||||||
@ -151,6 +162,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -207,6 +219,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -451,6 +464,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -514,6 +528,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -593,6 +608,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -693,6 +709,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -764,6 +781,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -825,6 +843,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
substitutions:
|
substitutions:
|
||||||
-
|
-
|
||||||
src:
|
src:
|
||||||
@ -1061,6 +1080,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: ceph
|
name: ceph
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: ceph
|
chart_name: ceph
|
||||||
release: ceph
|
release: ceph
|
||||||
@ -1069,17 +1092,11 @@ data:
|
|||||||
wait:
|
wait:
|
||||||
timeout: 3600
|
timeout: 3600
|
||||||
install:
|
install:
|
||||||
no_hooks: false
|
no_hooks: true
|
||||||
upgrade:
|
upgrade:
|
||||||
no_hooks: false
|
no_hooks: false
|
||||||
pre:
|
pre:
|
||||||
delete:
|
delete:
|
||||||
- name: ceph-bootstrap
|
|
||||||
type: job
|
|
||||||
labels:
|
|
||||||
- application: ceph
|
|
||||||
- component: bootstrap
|
|
||||||
- release_group: armada-ucp
|
|
||||||
- name: ceph-mds-keyring-generator
|
- name: ceph-mds-keyring-generator
|
||||||
type: job
|
type: job
|
||||||
labels:
|
labels:
|
||||||
@ -1133,6 +1150,7 @@ data:
|
|||||||
storage_secrets: true
|
storage_secrets: true
|
||||||
ceph: true
|
ceph: true
|
||||||
rbd_provisioner: true
|
rbd_provisioner: true
|
||||||
|
cephfs_provisioner: true
|
||||||
client_secrets: false
|
client_secrets: false
|
||||||
rgw_keystone_user_and_endpoints: false
|
rgw_keystone_user_and_endpoints: false
|
||||||
bootstrap:
|
bootstrap:
|
||||||
@ -1148,6 +1166,7 @@ data:
|
|||||||
ceph_config_helper: docker.io/port/ceph-config-helper:v1.7.5
|
ceph_config_helper: docker.io/port/ceph-config-helper:v1.7.5
|
||||||
ceph_daemon: docker.io/ceph/daemon:tag-build-master-luminous-ubuntu-16.04
|
ceph_daemon: docker.io/ceph/daemon:tag-build-master-luminous-ubuntu-16.04
|
||||||
ceph_rbd_provisioner: quay.io/external_storage/rbd-provisioner:v0.1.1
|
ceph_rbd_provisioner: quay.io/external_storage/rbd-provisioner:v0.1.1
|
||||||
|
ceph_cephfs_provisioner: quay.io/external_storage/cephfs-provisioner:v0.1.1
|
||||||
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
||||||
ks_endpoints: docker.io/kolla/ubuntu-source-heat-engine:3.0.3
|
ks_endpoints: docker.io/kolla/ubuntu-source-heat-engine:3.0.3
|
||||||
ks_service: docker.io/kolla/ubuntu-source-heat-engine:3.0.3
|
ks_service: docker.io/kolla/ubuntu-source-heat-engine:3.0.3
|
||||||
@ -1164,6 +1183,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: ucp-ceph-config
|
name: ucp-ceph-config
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: ucp-ceph-config
|
chart_name: ucp-ceph-config
|
||||||
release: ucp-ceph-config
|
release: ucp-ceph-config
|
||||||
@ -1213,6 +1236,7 @@ data:
|
|||||||
deployment:
|
deployment:
|
||||||
storage_secrets: false
|
storage_secrets: false
|
||||||
ceph: false
|
ceph: false
|
||||||
|
cephfs_provisioner: false
|
||||||
rbd_provisioner: false
|
rbd_provisioner: false
|
||||||
client_secrets: true
|
client_secrets: true
|
||||||
rgw_keystone_user_and_endpoints: false
|
rgw_keystone_user_and_endpoints: false
|
||||||
@ -1228,6 +1252,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: ucp-mariadb
|
name: ucp-mariadb
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: ucp-mariadb
|
chart_name: ucp-mariadb
|
||||||
release: ucp-mariadb
|
release: ucp-mariadb
|
||||||
@ -1261,6 +1289,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: ucp-memcached
|
name: ucp-memcached
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: ucp-memcached
|
chart_name: ucp-memcached
|
||||||
release: ucp-memcached
|
release: ucp-memcached
|
||||||
@ -1288,6 +1320,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: ucp-keystone
|
name: ucp-keystone
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: ucp-keystone
|
chart_name: ucp-keystone
|
||||||
release: keystone
|
release: keystone
|
||||||
@ -1345,6 +1381,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: maas-postgresql
|
name: maas-postgresql
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: maas-postgresql
|
chart_name: maas-postgresql
|
||||||
release: maas-postgresql
|
release: maas-postgresql
|
||||||
@ -1381,6 +1421,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: maas
|
name: maas
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: maas
|
chart_name: maas
|
||||||
release: maas
|
release: maas
|
||||||
@ -1392,15 +1436,13 @@ data:
|
|||||||
values:
|
values:
|
||||||
images:
|
images:
|
||||||
tags:
|
tags:
|
||||||
|
bootstrap: sthussey/maas-region-controller:2.3
|
||||||
db_init: docker.io/postgres:9.5
|
db_init: docker.io/postgres:9.5
|
||||||
db_sync: quay.io/attcomdev/maas-region:latest
|
db_sync: sthussey/maas-region-controller:2.3
|
||||||
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
|
||||||
maas_cache: docker.io/sthussey/maas-cache:cachetest
|
|
||||||
maas_rack: quay.io/attcomdev/maas-rack:latest
|
|
||||||
maas_region: quay.io/attcomdev/maas-region:latest
|
|
||||||
bootstrap: quay.io/attcomdev/maas-region:latest
|
|
||||||
export_api_key: quay.io/attcomdev/maas-region:latest
|
|
||||||
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
||||||
|
export_api_key: sthussey/maas-region-controller:2.3
|
||||||
|
maas_rack: sthussey/maas-rack-controller:2.3
|
||||||
|
maas_region: sthussey/maas-region-controller:2.3
|
||||||
labels:
|
labels:
|
||||||
rack:
|
rack:
|
||||||
node_selector_key: ucp-control-plane
|
node_selector_key: ucp-control-plane
|
||||||
@ -1419,7 +1461,7 @@ data:
|
|||||||
port: 31900
|
port: 31900
|
||||||
conf:
|
conf:
|
||||||
drydock:
|
drydock:
|
||||||
bootaction_url: http://${DRYDOCK_NODE_IP}:${DRYDOCK_NODE_PORT}/api/v1.0/bootactions/nodes/
|
bootaction_url: http://192.168.77.10:31000/api/v1.0/bootactions/nodes/
|
||||||
maas:
|
maas:
|
||||||
credentials:
|
credentials:
|
||||||
secret:
|
secret:
|
||||||
@ -1446,44 +1488,13 @@ data:
|
|||||||
- helm-toolkit
|
- helm-toolkit
|
||||||
---
|
---
|
||||||
schema: armada/Chart/v1
|
schema: armada/Chart/v1
|
||||||
metadata:
|
|
||||||
schema: metadata/Document/v1
|
|
||||||
name: ucp-etcd-rabbitmq
|
|
||||||
data:
|
|
||||||
chart_name: ucp-etcd-rabbitmq
|
|
||||||
release: etcd-rabbitmq
|
|
||||||
namespace: ucp
|
|
||||||
install:
|
|
||||||
no_hooks: false
|
|
||||||
upgrade:
|
|
||||||
no_hooks: false
|
|
||||||
pre:
|
|
||||||
delete: []
|
|
||||||
post:
|
|
||||||
delete: []
|
|
||||||
create: []
|
|
||||||
values:
|
|
||||||
pod:
|
|
||||||
replicas:
|
|
||||||
etcd: 1
|
|
||||||
labels:
|
|
||||||
node_selector_key: ucp-control-plane
|
|
||||||
node_selector_value: enabled
|
|
||||||
images:
|
|
||||||
tags:
|
|
||||||
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
|
||||||
etcd: gcr.io/google_containers/etcd-amd64:2.2.5
|
|
||||||
source:
|
|
||||||
type: git
|
|
||||||
location: https://git.openstack.org/openstack/openstack-helm
|
|
||||||
subpath: etcd
|
|
||||||
dependencies:
|
|
||||||
- helm-toolkit
|
|
||||||
---
|
|
||||||
schema: armada/Chart/v1
|
|
||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: ucp-rabbitmq
|
name: ucp-rabbitmq
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: ucp-rabbitmq
|
chart_name: ucp-rabbitmq
|
||||||
release: rabbitmq
|
release: rabbitmq
|
||||||
@ -1500,7 +1511,7 @@ data:
|
|||||||
values:
|
values:
|
||||||
images:
|
images:
|
||||||
tags:
|
tags:
|
||||||
rabbitmq: quay.io/attcomdev/fuel-mcp-rabbitmq:ocata-unstable
|
rabbitmq: docker.io/rabbitmq:3.7
|
||||||
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
||||||
pod:
|
pod:
|
||||||
replicas:
|
replicas:
|
||||||
@ -1519,6 +1530,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: ucp-barbican
|
name: ucp-barbican
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: ucp-barbican
|
chart_name: ucp-barbican
|
||||||
release: barbican
|
release: barbican
|
||||||
@ -1562,6 +1577,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: ingress
|
name: ingress
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: ingress
|
chart_name: ingress
|
||||||
release: ingress
|
release: ingress
|
||||||
@ -1580,10 +1599,10 @@ data:
|
|||||||
images:
|
images:
|
||||||
tags:
|
tags:
|
||||||
entrypoint: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
entrypoint: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
||||||
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
# https://github.com/kubernetes/ingress-nginx/blob/09524cd3363693463da5bf4a9bb3900da435ad05/Changelog.md#090
|
||||||
# https://github.com/kubernetes/ingress/blob/master/controllers/nginx/Changelog.md
|
ingress: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.9.0
|
||||||
ingress: gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.8
|
|
||||||
error_pages: gcr.io/google_containers/defaultbackend:1.0
|
error_pages: gcr.io/google_containers/defaultbackend:1.0
|
||||||
|
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
||||||
source:
|
source:
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/openstack/openstack-helm
|
location: https://github.com/openstack/openstack-helm
|
||||||
@ -1596,6 +1615,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: tiller
|
name: tiller
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: tiller
|
chart_name: tiller
|
||||||
release: tiller
|
release: tiller
|
||||||
@ -1623,6 +1646,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: deckhand
|
name: deckhand
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: deckhand
|
chart_name: deckhand
|
||||||
release: deckhand
|
release: deckhand
|
||||||
@ -1664,6 +1691,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: drydock
|
name: drydock
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: drydock
|
chart_name: drydock
|
||||||
release: drydock
|
release: drydock
|
||||||
@ -1716,6 +1747,7 @@ metadata:
|
|||||||
layeringDefinition:
|
layeringDefinition:
|
||||||
abstract: false
|
abstract: false
|
||||||
layer: site
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: promenade
|
chart_name: promenade
|
||||||
release: promenade
|
release: promenade
|
||||||
@ -1724,17 +1756,6 @@ data:
|
|||||||
wait:
|
wait:
|
||||||
timeout: 600
|
timeout: 600
|
||||||
values:
|
values:
|
||||||
conf:
|
|
||||||
paste:
|
|
||||||
filter:authtoken:
|
|
||||||
paste.filter_factory: 'keystonemiddleware.auth_token:filter_factory'
|
|
||||||
admin_password: password
|
|
||||||
admin_tenant_name: service
|
|
||||||
admin_user: promenade
|
|
||||||
delay_auth_decision: true
|
|
||||||
identity_uri: 'http://keystone-api.ucp.svc.cluster.local/'
|
|
||||||
service_token_roles_required: true
|
|
||||||
|
|
||||||
images:
|
images:
|
||||||
tags:
|
tags:
|
||||||
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.2.1
|
||||||
@ -1755,6 +1776,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: armada
|
name: armada
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: armada
|
chart_name: armada
|
||||||
release: armada
|
release: armada
|
||||||
@ -1794,6 +1819,10 @@ schema: armada/Chart/v1
|
|||||||
metadata:
|
metadata:
|
||||||
schema: metadata/Document/v1
|
schema: metadata/Document/v1
|
||||||
name: shipyard
|
name: shipyard
|
||||||
|
layeringDefinition:
|
||||||
|
abstract: false
|
||||||
|
layer: site
|
||||||
|
storagePolicy: cleartext
|
||||||
data:
|
data:
|
||||||
chart_name: shipyard
|
chart_name: shipyard
|
||||||
release: shipyard
|
release: shipyard
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
from . import exceptions, logging, validation
|
from . import exceptions, logging, validation
|
||||||
|
from .design_ref import get_documents
|
||||||
import copy
|
import copy
|
||||||
import jinja2
|
import jinja2
|
||||||
import jsonpath_ng
|
import jsonpath_ng
|
||||||
import requests
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
__all__ = ['Configuration']
|
__all__ = ['Configuration']
|
||||||
@ -35,10 +35,7 @@ class Configuration:
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_design_ref(cls, design_ref):
|
def from_design_ref(cls, design_ref):
|
||||||
response = requests.get(design_ref)
|
documents = get_documents(design_ref)
|
||||||
response.raise_for_status()
|
|
||||||
|
|
||||||
documents = list(yaml.safe_load_all(response.text))
|
|
||||||
validation.check_schemas(documents)
|
validation.check_schemas(documents)
|
||||||
|
|
||||||
return cls(documents=documents)
|
return cls(documents=documents)
|
||||||
|
42
promenade/design_ref.py
Normal file
42
promenade/design_ref.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
from . import logging
|
||||||
|
from oslo_config import cfg
|
||||||
|
import keystoneauth1.identity.v3
|
||||||
|
import keystoneauth1.session
|
||||||
|
import requests
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
__all__ = ['get_documents']
|
||||||
|
|
||||||
|
_DECKHAND_PREFIX = 'deckhand+'
|
||||||
|
|
||||||
|
DH_TIMEOUT = 10 * 60 # 10 Minute timeout for fetching from Deckhand.
|
||||||
|
|
||||||
|
|
||||||
|
def get_documents(design_ref):
|
||||||
|
LOG.debug('Fetching design_ref="%s"', design_ref)
|
||||||
|
if design_ref.startswith(_DECKHAND_PREFIX):
|
||||||
|
response = _get_from_deckhand(design_ref)
|
||||||
|
else:
|
||||||
|
response = _get_from_basic_web(design_ref)
|
||||||
|
LOG.debug('Got response for design_ref="%s"', design_ref)
|
||||||
|
|
||||||
|
response.raise_for_status()
|
||||||
|
|
||||||
|
return list(yaml.safe_load_all(response.text))
|
||||||
|
|
||||||
|
|
||||||
|
def _get_from_basic_web(design_ref):
|
||||||
|
return requests.get(design_ref)
|
||||||
|
|
||||||
|
|
||||||
|
def _get_from_deckhand(design_ref):
|
||||||
|
keystone_args = {}
|
||||||
|
for attr in ('auth_url', 'password', 'project_domain_name', 'project_name',
|
||||||
|
'username', 'user_domain_name'):
|
||||||
|
keystone_args[attr] = cfg.CONF.get('keystone_authtoken', {}).get(attr)
|
||||||
|
auth = keystoneauth1.identity.v3.Password(**keystone_args)
|
||||||
|
session = keystoneauth1.session.Session(auth=auth)
|
||||||
|
|
||||||
|
return session.get(design_ref[len(_DECKHAND_PREFIX):], timeout=DH_TIMEOUT)
|
@ -215,7 +215,7 @@ class PromenadeException(Exception):
|
|||||||
if self.trace or debug:
|
if self.trace or debug:
|
||||||
LOG.exception(self.description)
|
LOG.exception(self.description)
|
||||||
else:
|
else:
|
||||||
LOG.error(self.description)
|
LOG.error(self.title + (self.description or ''))
|
||||||
|
|
||||||
|
|
||||||
class ApiError(PromenadeException):
|
class ApiError(PromenadeException):
|
||||||
@ -238,6 +238,7 @@ class InvalidFormatError(PromenadeException):
|
|||||||
|
|
||||||
class ValidationException(PromenadeException):
|
class ValidationException(PromenadeException):
|
||||||
title = 'Validation Error'
|
title = 'Validation Error'
|
||||||
|
status = falcon.HTTP_400
|
||||||
|
|
||||||
|
|
||||||
def massage_error_list(error_list, placeholder_description):
|
def massage_error_list(error_list, placeholder_description):
|
||||||
|
@ -1,5 +1,33 @@
|
|||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
|
import keystoneauth1.loading
|
||||||
|
|
||||||
OPTIONS = []
|
OPTIONS = []
|
||||||
|
|
||||||
cfg.CONF.register_opts(OPTIONS)
|
|
||||||
|
def setup(disable=None):
|
||||||
|
if disable is None:
|
||||||
|
disable = []
|
||||||
|
else:
|
||||||
|
disable = disable.split()
|
||||||
|
|
||||||
|
for name, func in GROUPS.items():
|
||||||
|
if name not in disable:
|
||||||
|
func()
|
||||||
|
|
||||||
|
cfg.CONF([], project='promenade')
|
||||||
|
|
||||||
|
|
||||||
|
def register_application():
|
||||||
|
cfg.CONF.register_opts(OPTIONS)
|
||||||
|
|
||||||
|
|
||||||
|
def register_keystone_auth():
|
||||||
|
cfg.CONF.register_opts(
|
||||||
|
keystoneauth1.loading.get_auth_plugin_conf_options('password'),
|
||||||
|
group='keystone_authtoken')
|
||||||
|
|
||||||
|
|
||||||
|
GROUPS = {
|
||||||
|
'promenade': register_application,
|
||||||
|
'keystone': register_keystone_auth,
|
||||||
|
}
|
||||||
|
@ -154,10 +154,11 @@ class PKI:
|
|||||||
'metadata': {
|
'metadata': {
|
||||||
'schema': 'metadata/Document/v1',
|
'schema': 'metadata/Document/v1',
|
||||||
'name': name,
|
'name': name,
|
||||||
'layerinDefinition': {
|
'layeringDefinition': {
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
'layer': 'site',
|
'layer': 'site',
|
||||||
},
|
},
|
||||||
|
'storagePolicy': 'cleartext',
|
||||||
},
|
},
|
||||||
'data': block_literal(data),
|
'data': block_literal(data),
|
||||||
}
|
}
|
||||||
|
@ -11,15 +11,15 @@
|
|||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
from oslo_config import cfg
|
|
||||||
from promenade.control import api
|
from promenade.control import api
|
||||||
from promenade import options # noqa
|
from promenade import options
|
||||||
from promenade import logging
|
from promenade import logging
|
||||||
from promenade import policy
|
from promenade import policy
|
||||||
|
|
||||||
|
|
||||||
def start_promenade():
|
def start_promenade(disable=""):
|
||||||
cfg.CONF()
|
options.setup(disable=disable)
|
||||||
|
|
||||||
# Setup root logger
|
# Setup root logger
|
||||||
logging.setup(verbose=True)
|
logging.setup(verbose=True)
|
||||||
|
|
||||||
@ -33,7 +33,4 @@ def start_promenade():
|
|||||||
|
|
||||||
# Initialization compatible with PasteDeploy
|
# Initialization compatible with PasteDeploy
|
||||||
def paste_start_promenade(global_conf, **kwargs):
|
def paste_start_promenade(global_conf, **kwargs):
|
||||||
return promenade
|
return start_promenade(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
promenade = start_promenade()
|
|
||||||
|
@ -3,6 +3,7 @@ falcon==1.2.0
|
|||||||
jinja2==2.9.6
|
jinja2==2.9.6
|
||||||
jsonpath-ng==1.4.3
|
jsonpath-ng==1.4.3
|
||||||
jsonschema==2.6.0
|
jsonschema==2.6.0
|
||||||
|
keystoneauth1==3.2.0
|
||||||
keystonemiddleware==4.17.0
|
keystonemiddleware==4.17.0
|
||||||
kubernetes==3.0.0
|
kubernetes==3.0.0
|
||||||
oslo.context==2.19.2
|
oslo.context==2.19.2
|
||||||
|
@ -17,12 +17,12 @@ from falcon import testing
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from promenade.control import health_api
|
from promenade.control import health_api
|
||||||
from promenade.promenade import promenade
|
from promenade import promenade
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def client():
|
def client():
|
||||||
return testing.TestClient(promenade)
|
return testing.TestClient(promenade.start_promenade(disable='keystone'))
|
||||||
|
|
||||||
|
|
||||||
def test_get_health(client):
|
def test_get_health(client):
|
||||||
|
@ -17,12 +17,12 @@ from falcon import testing
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from promenade.control.api import VersionsResource
|
from promenade.control.api import VersionsResource
|
||||||
from promenade.promenade import promenade
|
from promenade import promenade
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def client():
|
def client():
|
||||||
return testing.TestClient(promenade)
|
return testing.TestClient(promenade.start_promenade(disable='keystone'))
|
||||||
|
|
||||||
|
|
||||||
def test_get_versions(client):
|
def test_get_versions(client):
|
||||||
|
@ -26,6 +26,10 @@ EOBODY
|
|||||||
rsync_cmd "${TEMP_DIR}/${REQUEST_BODY_PATH}" "${VIA}:/root/${REQUEST_BODY_PATH}"
|
rsync_cmd "${TEMP_DIR}/${REQUEST_BODY_PATH}" "${VIA}:/root/${REQUEST_BODY_PATH}"
|
||||||
|
|
||||||
ssh_cmd "${VIA}" curl -isS \
|
ssh_cmd "${VIA}" curl -isS \
|
||||||
|
--fail \
|
||||||
|
--max-time 60 \
|
||||||
|
--retry 10 \
|
||||||
|
--retry-delay 15 \
|
||||||
-H 'Content-Type: application/json' \
|
-H 'Content-Type: application/json' \
|
||||||
-d "@/root/${REQUEST_BODY_PATH}" \
|
-d "@/root/${REQUEST_BODY_PATH}" \
|
||||||
"${KEYSTONE_URL}/v3/auth/tokens" | grep 'X-Subject-Token' | awk '{print $2}' | sed "s;';;g" | sed "s;\r;;g"
|
"${KEYSTONE_URL}/v3/auth/tokens" | grep 'X-Subject-Token' | awk '{print $2}' | sed "s;';;g" | sed "s;\r;;g"
|
||||||
|
@ -7,7 +7,7 @@ registry_down() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
registry_list_images() {
|
registry_list_images() {
|
||||||
FILES=($(find "$(config_configuration)" -type f -name '*.yaml'))
|
FILES=($(echo "$(config_configuration)" | xargs -n 1 -I DIRNAME find DIRNAME -type f -name '*.yaml'))
|
||||||
|
|
||||||
HOSTNAME_REGEX='[a-zA-Z0-9][a-zA-Z0-9_-]{0,62}'
|
HOSTNAME_REGEX='[a-zA-Z0-9][a-zA-Z0-9_-]{0,62}'
|
||||||
DOMAIN_NAME_REGEX="${HOSTNAME_REGEX}(\.${HOSTNAME_REGEX})*"
|
DOMAIN_NAME_REGEX="${HOSTNAME_REGEX}(\.${HOSTNAME_REGEX})*"
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"configuration": [
|
"configuration": [
|
||||||
"examples/basic"
|
"examples/basic",
|
||||||
|
"promenade/schemas"
|
||||||
],
|
],
|
||||||
"stages": [
|
"stages": [
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"configuration": [
|
"configuration": [
|
||||||
"examples/complete"
|
"examples/complete",
|
||||||
|
"promenade/schemas"
|
||||||
],
|
],
|
||||||
"stages": [
|
"stages": [
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"configuration": [
|
"configuration": [
|
||||||
"examples/complete"
|
"examples/complete",
|
||||||
|
"promenade/schemas"
|
||||||
],
|
],
|
||||||
"stages": [
|
"stages": [
|
||||||
{
|
{
|
||||||
@ -27,12 +28,20 @@
|
|||||||
"name": "Genesis",
|
"name": "Genesis",
|
||||||
"script": "genesis.sh"
|
"script": "genesis.sh"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Load Site Configuration",
|
||||||
|
"script": "load-site-config.sh",
|
||||||
|
"arguments": [
|
||||||
|
"-v", "n0"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Join Master",
|
"name": "Join Master",
|
||||||
"script": "join-nodes.sh",
|
"script": "join-nodes.sh",
|
||||||
"arguments": [
|
"arguments": [
|
||||||
"-v", "n0",
|
"-v", "n0",
|
||||||
"-t",
|
"-t",
|
||||||
|
"-d", "1",
|
||||||
"-n", "n1",
|
"-n", "n1",
|
||||||
"-l", "calico-etcd=enabled",
|
"-l", "calico-etcd=enabled",
|
||||||
"-l", "kubernetes-apiserver=enabled",
|
"-l", "kubernetes-apiserver=enabled",
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"configuration": [
|
"configuration": [
|
||||||
"examples/basic"
|
"examples/basic",
|
||||||
|
"promenade/schemas"
|
||||||
],
|
],
|
||||||
"stages": [
|
"stages": [
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"configuration": [
|
"configuration": [
|
||||||
"examples/complete"
|
"examples/basic",
|
||||||
|
"promenade/schemas"
|
||||||
],
|
],
|
||||||
"stages": [
|
"stages": [
|
||||||
{
|
{
|
||||||
|
@ -20,4 +20,5 @@ docker run --rm -t \
|
|||||||
-o scripts \
|
-o scripts \
|
||||||
config/*.yaml
|
config/*.yaml
|
||||||
|
|
||||||
|
mkdir -p "${TEMP_DIR}/nginx/"
|
||||||
cat "${TEMP_DIR}"/config/*.yaml > "${TEMP_DIR}/nginx/promenade.yaml"
|
cat "${TEMP_DIR}"/config/*.yaml > "${TEMP_DIR}/nginx/promenade.yaml"
|
||||||
|
@ -7,10 +7,11 @@ source "${GATE_UTILS}"
|
|||||||
OUTPUT_DIR="${TEMP_DIR}/config"
|
OUTPUT_DIR="${TEMP_DIR}/config"
|
||||||
mkdir -p "${OUTPUT_DIR}"
|
mkdir -p "${OUTPUT_DIR}"
|
||||||
chmod 777 "${OUTPUT_DIR}"
|
chmod 777 "${OUTPUT_DIR}"
|
||||||
|
OUTPUT_FILE="${OUTPUT_DIR}/combined.yaml"
|
||||||
|
|
||||||
for source_dir in $(config_configuration); do
|
for source_dir in $(config_configuration); do
|
||||||
log Copying configuration from "${source_dir}"
|
log Copying configuration from "${source_dir}"
|
||||||
cp "${WORKSPACE}/${source_dir}"/*.yaml "${OUTPUT_DIR}"
|
cat "${WORKSPACE}/${source_dir}"/*.yaml >> "${OUTPUT_FILE}"
|
||||||
done
|
done
|
||||||
|
|
||||||
registry_replace_references "${OUTPUT_DIR}"/*.yaml
|
registry_replace_references "${OUTPUT_DIR}"/*.yaml
|
||||||
|
@ -9,12 +9,17 @@ declare -a LABELS
|
|||||||
declare -a NODES
|
declare -a NODES
|
||||||
|
|
||||||
GET_KEYSTONE_TOKEN=0
|
GET_KEYSTONE_TOKEN=0
|
||||||
|
USE_DECKHAND=0
|
||||||
|
|
||||||
while getopts "e:l:n:tv:" opt; do
|
while getopts "d:e:l:n:tv:" opt; do
|
||||||
case "${opt}" in
|
case "${opt}" in
|
||||||
e)
|
e)
|
||||||
ETCD_CLUSTERS+=("${OPTARG}")
|
ETCD_CLUSTERS+=("${OPTARG}")
|
||||||
;;
|
;;
|
||||||
|
d)
|
||||||
|
USE_DECKHAND=1
|
||||||
|
DECKHAND_REVISION=${OPTARG}
|
||||||
|
;;
|
||||||
l)
|
l)
|
||||||
LABELS+=("${OPTARG}")
|
LABELS+=("${OPTARG}")
|
||||||
;;
|
;;
|
||||||
@ -58,7 +63,11 @@ render_curl_url() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
BASE_URL="${BASE_PROM_URL}/api/v1.0/join-scripts"
|
BASE_URL="${BASE_PROM_URL}/api/v1.0/join-scripts"
|
||||||
DESIGN_REF="design_ref=http://192.168.77.1:7777/promenade.yaml"
|
if [[ ${USE_DECKHAND} == 1 ]]; then
|
||||||
|
DESIGN_REF="design_ref=deckhand%2Bhttp://deckhand-int.ucp.svc.cluster.local:9000/api/v1.0/revisions/${DECKHAND_REVISION}/rendered-documents"
|
||||||
|
else
|
||||||
|
DESIGN_REF="design_ref=http://192.168.77.1:7777/promenade.yaml"
|
||||||
|
fi
|
||||||
HOST_PARAMS="hostname=${NAME}&ip=$(config_vm_ip "${NAME}")"
|
HOST_PARAMS="hostname=${NAME}&ip=$(config_vm_ip "${NAME}")"
|
||||||
|
|
||||||
echo "${BASE_URL}?${DESIGN_REF}&${HOST_PARAMS}${LABEL_PARAMS}"
|
echo "${BASE_URL}?${DESIGN_REF}&${HOST_PARAMS}${LABEL_PARAMS}"
|
||||||
|
38
tools/g2/stages/load-site-config.sh
Executable file
38
tools/g2/stages/load-site-config.sh
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
source "${GATE_UTILS}"
|
||||||
|
|
||||||
|
while getopts "v:" opt; do
|
||||||
|
case "${opt}" in
|
||||||
|
v)
|
||||||
|
VIA=${OPTARG}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
if [ $# -gt 0 ]; then
|
||||||
|
echo "Unknown arguments specified: ${*}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
TOKEN=$(os_ks_get_token "${VIA}")
|
||||||
|
|
||||||
|
DECKHAND_URL=http://deckhand-int.ucp.svc.cluster.local:9000/api/v1.0/buckets/prom/documents
|
||||||
|
|
||||||
|
rsync_cmd "${TEMP_DIR}/nginx/promenade.yaml" "${VIA}:/root/promenade/promenade.yaml"
|
||||||
|
ssh_cmd "${VIA}" curl -v \
|
||||||
|
--fail \
|
||||||
|
--max-time 300 \
|
||||||
|
--retry 10 \
|
||||||
|
--retry-delay 15 \
|
||||||
|
-H "X-Auth-Token: ${TOKEN}" \
|
||||||
|
-H "Content-Type: application/x-yaml" \
|
||||||
|
-T "/root/promenade/promenade.yaml" \
|
||||||
|
"${DECKHAND_URL}"
|
11
tools/gate/config-templates/LayeringPolicy.yaml
Normal file
11
tools/gate/config-templates/LayeringPolicy.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
schema: deckhand/LayeringPolicy/v1
|
||||||
|
metadata:
|
||||||
|
schema: metadata/Control/v1
|
||||||
|
name: layering-policy
|
||||||
|
data:
|
||||||
|
layerOrder:
|
||||||
|
- global
|
||||||
|
- type
|
||||||
|
- site
|
||||||
|
...
|
1
tox.ini
1
tox.ini
@ -29,6 +29,7 @@ commands =
|
|||||||
yapf -ir {toxinidir}/promenade {toxinidir}/tests
|
yapf -ir {toxinidir}/promenade {toxinidir}/tests
|
||||||
|
|
||||||
[testenv:freeze]
|
[testenv:freeze]
|
||||||
|
basepython=python3.5
|
||||||
deps = -r{toxinidir}/requirements-direct.txt
|
deps = -r{toxinidir}/requirements-direct.txt
|
||||||
recreate = True
|
recreate = True
|
||||||
whitelist_externals = sh
|
whitelist_externals = sh
|
||||||
|
Loading…
x
Reference in New Issue
Block a user