diff options
Diffstat (limited to 'kubernetes')
667 files changed, 19470 insertions, 37098 deletions
diff --git a/kubernetes/README.md b/kubernetes/README.md index 9c315cbafe..9d8d4cc9ab 100644 --- a/kubernetes/README.md +++ b/kubernetes/README.md @@ -18,7 +18,7 @@ Step 1. Clone the OOM repository from ONAP gerrit: > cd oom/kubernetes ``` -Step 2. Customize the oom/kubernetes/onap parent chart, like the values.yaml file, to suit your deployment. You may want to selectively enable or disable ONAP components by changing the subchart **enabled** flags to *true* or *false*. +Step 2. Customize the oom/kubernetes/onap parent chart, like the values.yaml file, to suit your deployment. You may want to selectively enable or disable ONAP components by changing the subchart **enabled** flags to *true* or *false*. The .yaml file for OpenStackEncryptedPassword should be the MSO ecnrypted value of the openstack tenant password ``` Example: ... @@ -32,8 +32,8 @@ so: # Service Orchestrator enabled: true ... ``` - Step 3. To setup a local Helm repository to serve up the local ONAP charts: + [Note: ensure helm init has been executed on the node, or run helm init --client-only] ``` > helm serve & ``` @@ -64,7 +64,7 @@ Setup of this Helm repository is a one time activity. If you make changes to you Step 6. Once the repo is setup, installation of ONAP can be done with a single command: ``` -> helm install local/onap -name dev --namespace onap +> helm install local/onap --name dev --namespace onap ``` **Note:** the **--namespace onap** is currently required while all onap helm charts are migrated to version 2.0. After this activity is complete, namespaces will be optional. diff --git a/kubernetes/aaf/resources/config/aaf-cs-data/ecomp.cql b/kubernetes/aaf/charts/aaf-cs/resources/config/aaf-cs-data/ecomp.cql index 6fddf65001..6fddf65001 100644 --- a/kubernetes/aaf/resources/config/aaf-cs-data/ecomp.cql +++ b/kubernetes/aaf/charts/aaf-cs/resources/config/aaf-cs-data/ecomp.cql diff --git a/kubernetes/aaf/resources/config/aaf-cs-data/identities.dat b/kubernetes/aaf/charts/aaf-cs/resources/config/aaf-cs-data/identities.dat index 98bf99a3d1..98bf99a3d1 100644 --- a/kubernetes/aaf/resources/config/aaf-cs-data/identities.dat +++ b/kubernetes/aaf/charts/aaf-cs/resources/config/aaf-cs-data/identities.dat diff --git a/kubernetes/aaf/resources/config/aaf-cs-data/identities.idx b/kubernetes/aaf/charts/aaf-cs/resources/config/aaf-cs-data/identities.idx Binary files differindex 78fc0a5693..78fc0a5693 100644 --- a/kubernetes/aaf/resources/config/aaf-cs-data/identities.idx +++ b/kubernetes/aaf/charts/aaf-cs/resources/config/aaf-cs-data/identities.idx diff --git a/kubernetes/aaf/resources/config/aaf-cs-data/init.cql b/kubernetes/aaf/charts/aaf-cs/resources/config/aaf-cs-data/init.cql index 81700f830c..81700f830c 100644 --- a/kubernetes/aaf/resources/config/aaf-cs-data/init.cql +++ b/kubernetes/aaf/charts/aaf-cs/resources/config/aaf-cs-data/init.cql diff --git a/kubernetes/aaf/charts/aaf-cs/templates/deployment.yaml b/kubernetes/aaf/charts/aaf-cs/templates/deployment.yaml index 80b99b20b6..15e574f511 100644 --- a/kubernetes/aaf/charts/aaf-cs/templates/deployment.yaml +++ b/kubernetes/aaf/charts/aaf-cs/templates/deployment.yaml @@ -36,7 +36,7 @@ spec: hostname: {{ include "common.name" . }} containers: - args: - image: "{{ .Values.repository | default .Values.global.repository }}/{{ .Values.image }}" + image: "{{ include "common.repository" . }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} name: {{ include "common.name" . }} volumeMounts: diff --git a/kubernetes/aaf/charts/aaf-cs/values.yaml b/kubernetes/aaf/charts/aaf-cs/values.yaml index ea5445fa2e..89b83cd169 100644 --- a/kubernetes/aaf/charts/aaf-cs/values.yaml +++ b/kubernetes/aaf/charts/aaf-cs/values.yaml @@ -18,10 +18,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== - -# If mountPath is over NFS (e.g. /dockerdata-nfs is NFS mounted between the nodes), uncomment following lines. -# persistence: -# mountPath: /dockerdata + ################################################################# # Application configuration defaults. diff --git a/kubernetes/aaf/charts/sms/Chart.yaml b/kubernetes/aaf/charts/sms/Chart.yaml new file mode 100644 index 0000000000..962ef38650 --- /dev/null +++ b/kubernetes/aaf/charts/sms/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP Secret Management Service +name: sms +version: 2.0.0 diff --git a/kubernetes/aaf/charts/sms/charts/vault/Chart.yaml b/kubernetes/aaf/charts/sms/charts/vault/Chart.yaml new file mode 100644 index 0000000000..bf1af999d4 --- /dev/null +++ b/kubernetes/aaf/charts/sms/charts/vault/Chart.yaml @@ -0,0 +1,19 @@ +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: Chart to launch Vault as SMS backend +name: vault +appVersion: 0.9.5 +version: 2.0.0 diff --git a/kubernetes/aaf/charts/sms/charts/vault/templates/configmap.yaml b/kubernetes/aaf/charts/sms/charts/vault/templates/configmap.yaml new file mode 100644 index 0000000000..daf8cadc46 --- /dev/null +++ b/kubernetes/aaf/charts/sms/charts/vault/templates/configmap.yaml @@ -0,0 +1,41 @@ +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-vault + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +data: + config.json: | + {{ .Values.config.vault | toJson }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-consul + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +data: + config.json: | + {{ .Values.config.consul | toJson }} diff --git a/kubernetes/aaf/charts/sms/charts/vault/templates/pv.yaml b/kubernetes/aaf/charts/sms/charts/vault/templates/pv.yaml new file mode 100644 index 0000000000..37ed28ee9d --- /dev/null +++ b/kubernetes/aaf/charts/sms/charts/vault/templates/pv.yaml @@ -0,0 +1,37 @@ +{{/* +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }} +{{- end -}}
\ No newline at end of file diff --git a/kubernetes/aaf/charts/sms/charts/vault/templates/pvc.yaml b/kubernetes/aaf/charts/sms/charts/vault/templates/pvc.yaml new file mode 100644 index 0000000000..e6aacd1b96 --- /dev/null +++ b/kubernetes/aaf/charts/sms/charts/vault/templates/pvc.yaml @@ -0,0 +1,48 @@ +{{/* +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{- if .Values.persistence.annotations }} + annotations: +{{ toYaml .Values.persistence.annotations | indent 4 }} +{{- end }} +spec: + selector: + matchLabels: + name: {{ include "common.fullname" . }} + accessModes: + - {{ .Values.persistence.accessMode }} + resources: + requests: + storage: {{ .Values.persistence.size }} +{{- if .Values.persistence.storageClass }} +{{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" +{{- end }} +{{- end }} +{{- end -}} diff --git a/kubernetes/aaf/charts/sms/charts/vault/templates/service.yaml b/kubernetes/aaf/charts/sms/charts/vault/templates/service.yaml new file mode 100644 index 0000000000..1ba8580840 --- /dev/null +++ b/kubernetes/aaf/charts/sms/charts/vault/templates/service.yaml @@ -0,0 +1,39 @@ +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + - name: {{ .Values.service.name }} + {{if eq .Values.service.type "NodePort" -}} + port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default "302" }}{{ .Values.service.nodePort }} + {{- else -}} + port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + {{- end}} + protocol: TCP + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/aaf/charts/sms/charts/vault/templates/statefulset.yaml b/kubernetes/aaf/charts/sms/charts/vault/templates/statefulset.yaml new file mode 100644 index 0000000000..26f03044ac --- /dev/null +++ b/kubernetes/aaf/charts/sms/charts/vault/templates/statefulset.yaml @@ -0,0 +1,78 @@ +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apps/v1beta1 +kind: StatefulSet +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + serviceName: + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - image: "{{ include "common.repository" . }}/{{ .Values.image.vault }}" + name: {{ include "common.name" . }} + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + command: ["vault","server","-config","/vault/config/config.json"] + ports: + - containerPort: {{ .Values.service.internalPort }} + volumeMounts: + - mountPath: /vault/config/config.json + name: {{ include "common.fullname" . }}-vault + subPath: config.json + - mountPath: /etc/localtime + name: localtime + readOnly: true + + - image: "{{ include "common.repository" . }}/{{ .Values.image.consul }}" + name: {{ include "common.name" . }}-backend + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + command: ["consul","agent","-server","-client","0.0.0.0","-bootstrap-expect=1","-config-file","/consul/config/config.json"] + ports: + - name: http + containerPort: 8500 + volumeMounts: + - mountPath: /consul/data + name: {{ include "common.fullname" . }}-consuldata + - mountPath: /consul/config/config.json + name: {{ include "common.fullname" . }}-consulconfiguration + subPath: config.json + - mountPath: /etc/localtime + name: localtime + readOnly: true + volumes: + - name: {{ include "common.fullname" . }}-consuldata + persistentVolumeClaim: + claimName: {{ include "common.fullname" . }} + - name: {{ include "common.fullname" . }}-consulconfiguration + configMap: + name: {{ include "common.fullname" . }}-consul + - name: {{ include "common.fullname" . }}-vault + configMap: + name: {{ include "common.fullname" . }}-vault + - name: localtime + hostPath: + path: /etc/localtime + diff --git a/kubernetes/aaf/charts/sms/charts/vault/values.yaml b/kubernetes/aaf/charts/sms/charts/vault/values.yaml new file mode 100644 index 0000000000..331bc434b4 --- /dev/null +++ b/kubernetes/aaf/charts/sms/charts/vault/values.yaml @@ -0,0 +1,112 @@ +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + persistence: {} + +# application image +repository: docker.io +image: + consul: consul:1.0.6 + vault: vault:0.9.6 +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +################################################################# +# Application configuration defaults. +################################################################# +config: + consul: + server: true + log_level: INFO + server: true + data_dir: '/consul/data' + ports: + http: 8500 + https: -1 + + vault: + storage: + consul: + address: localhost:8500 + path: smsvault + listener: + tcp: + address: '[::]:8200' + tls_disable: true + disable_mlock: true + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +persistence: + enabled: true + + volumeReclaimPolicy: Retain + + accessMode: ReadWriteMany + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: sms/consul/data + +service: + type: NodePort + name: aaf-sms-db + internalPort: 8200 + nodePort: 44 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/aaf/charts/sms/templates/configmap.yaml b/kubernetes/aaf/charts/sms/templates/configmap.yaml new file mode 100644 index 0000000000..72ce6fbadb --- /dev/null +++ b/kubernetes/aaf/charts/sms/templates/configmap.yaml @@ -0,0 +1,27 @@ +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +data: + smsconfig.json: | + {{ .Values.config | toJson }} diff --git a/kubernetes/aaf/charts/sms/templates/deployment.yaml b/kubernetes/aaf/charts/sms/templates/deployment.yaml new file mode 100644 index 0000000000..e5381a0f0c --- /dev/null +++ b/kubernetes/aaf/charts/sms/templates/deployment.yaml @@ -0,0 +1,78 @@ +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - image: "{{ .Values.repository }}/{{ .Values.image }}" + name: {{ include "common.name" . }} + imagePullPolicy: {{ .Values.pullPolicy }} + command: ["/sms/bin/sms"] + workingDir: /sms/ + ports: + - containerPort: {{ .Values.service.internalPort }} + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /sms/smsconfig.json + name: {{ include "common.name" .}} + subPath: smsconfig.json + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name : {{ include "common.name" . }} + configMap: + name: {{ include "common.fullname" . }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aaf/charts/sms/templates/service.yaml b/kubernetes/aaf/charts/sms/templates/service.yaml new file mode 100644 index 0000000000..1ba8580840 --- /dev/null +++ b/kubernetes/aaf/charts/sms/templates/service.yaml @@ -0,0 +1,39 @@ +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + - name: {{ .Values.service.name }} + {{if eq .Values.service.type "NodePort" -}} + port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default "302" }}{{ .Values.service.nodePort }} + {{- else -}} + port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + {{- end}} + protocol: TCP + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/aaf/charts/sms/values.yaml b/kubernetes/aaf/charts/sms/values.yaml new file mode 100644 index 0000000000..0c537c525a --- /dev/null +++ b/kubernetes/aaf/charts/sms/values.yaml @@ -0,0 +1,95 @@ +# Copyright 2018 Intel Corporation, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/aaf/sms +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +# Example: +config: + smsdbaddress: "http://aaf-sms-db:8200" + cafile: "/sms/auth/selfsignedca.pem" + servercert: "/sms/auth/server.cert" + serverkey: "/sms/auth/server.key" + disable_tls: true + +# subchart configuration +vault: + nameOverride: smsdb + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 20 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 20 + +service: + type: NodePort + name: aaf-sms + internalPort: 10443 + nodePort: 43 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/aaf/charts/aaf-cs/resources/config/aaf-data/identities.dat b/kubernetes/aaf/resources/config/aaf-data/identities.dat index 95eb51d1be..95eb51d1be 100644 --- a/kubernetes/aaf/charts/aaf-cs/resources/config/aaf-data/identities.dat +++ b/kubernetes/aaf/resources/config/aaf-data/identities.dat diff --git a/kubernetes/aaf/templates/deployment.yaml b/kubernetes/aaf/templates/deployment.yaml index 03506b52eb..2a4e7d2348 100644 --- a/kubernetes/aaf/templates/deployment.yaml +++ b/kubernetes/aaf/templates/deployment.yaml @@ -52,7 +52,7 @@ spec: - env: - name: CASSANDRA_CLUSTER value: cassandra_container - image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + image: "{{ include "common.repository" . }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} volumeMounts: - mountPath: /data diff --git a/kubernetes/aaf/values.yaml b/kubernetes/aaf/values.yaml index 4f9c1c6da0..5f231003b1 100644 --- a/kubernetes/aaf/values.yaml +++ b/kubernetes/aaf/values.yaml @@ -17,10 +17,9 @@ ################################################################# global: nodePortPrefix: 302 - repository: nexus3.onap.org:10001 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 # If mountPath is over NFS (e.g. /dockerdata-nfs is NFS mounted between the nodes), uncomment following lines. # persistence: diff --git a/kubernetes/aai/charts/gizmo/.helmignore b/kubernetes/aai/charts/aai-babel/.helmignore index f0c1319444..f0c1319444 100644 --- a/kubernetes/aai/charts/gizmo/.helmignore +++ b/kubernetes/aai/charts/aai-babel/.helmignore diff --git a/kubernetes/aai/charts/champ/Chart.yaml b/kubernetes/aai/charts/aai-babel/Chart.yaml index a4ee888fce..3b0e33f1c9 100644 --- a/kubernetes/aai/charts/champ/Chart.yaml +++ b/kubernetes/aai/charts/aai-babel/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: Champ microservice -name: champ +description: Babel microservice +name: aai-babel version: 2.0.0 diff --git a/kubernetes/aai/charts/champ/requirements.yaml b/kubernetes/aai/charts/aai-babel/requirements.yaml index 9552dfd9e0..9552dfd9e0 100644 --- a/kubernetes/aai/charts/champ/requirements.yaml +++ b/kubernetes/aai/charts/aai-babel/requirements.yaml diff --git a/kubernetes/aai/charts/aai-babel/resources/config/artifact-generator.properties b/kubernetes/aai/charts/aai-babel/resources/config/artifact-generator.properties new file mode 100644 index 0000000000..1d7e5fa01a --- /dev/null +++ b/kubernetes/aai/charts/aai-babel/resources/config/artifact-generator.properties @@ -0,0 +1,264 @@ +#action widget details +AAI.model-version-id.action=fd7fb09e-d930-41b9-b83f-cfde9df48640 +AAI.model-invariant-id.action=af593b4b-490e-4665-ad74-2f6351c0a7ce +#action-data widget details +AAI.model-invariant-id.action-data=9551346c-7d8b-4daf-9926-b93e96e2344a +AAI.model-version-id.action-data=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd +#allotted-resource widget details +AAI.model-invariant-id.allotted-resource=f6d6a23d-a1a9-48ff-8419-b6530da2d381 +AAI.model-version-id.allotted-resource=7ad0915f-25c0-4a70-b9bc-185a75f87564 +#availability-zone widget details +AAI.model-version-id.availability-zone=6c092fb1-21b2-456b-9e01-67fb4de1896e +AAI.model-invariant-id.availability-zone=61b88c01-d819-41c0-8e21-7fd7ba47148e +#az-and-dvs-switches widget details +AAI.model-version-id.az-and-dvs-switches=b2dea88d-78a0-49bf-95c9-5819df08e966 +AAI.model-invariant-id.az-and-dvs-switches=53dc00d4-e6d9-48ec-b6cc-3d3797e9b896 +#class-of-service widget details +AAI.model-version-id.class-of-service=d2fb27cc-15eb-4c4e-828e-71d41aaecc5b +AAI.model-invariant-id.class-of-service=18094b19-d16d-4822-8acf-e92c6aefa178 +#cloud-region widget details +AAI.model-version-id.cloud-region=2a160989-b202-47dd-874b-4a0f275998f7 +AAI.model-invariant-id.cloud-region=425b2158-e51d-4509-9945-dad4556474a3 +#complex widget details +AAI.model-invariant-id.complex=af91c2f7-35fc-43cf-a13d-443f385b2353 +AAI.model-version-id.complex=3a8ab1ee-9220-4fe8-b89c-9251d160ddc2 +#connector widget details +AAI.model-version-id.connector=22104c9f-29fd-462f-be07-96cd6b46dd33 +AAI.model-invariant-id.connector=4c01c948-7607-4d66-8a6c-99c2c2717936 +#constrained-element-set widget details +AAI.model-invariant-id.constrained-element-set=c0292b4f-ee97-40cc-8c2e-f967c48f5701 +AAI.model-version-id.constrained-element-set=01102126-9c04-4a89-945b-b131e61e95d7 +#ctag-assignment widget details +AAI.model-version-id.ctag-assignment=44e5cb1f-0938-41aa-b766-d4595109fe89 +AAI.model-invariant-id.ctag-assignment=fcb8d46b-b656-4ad6-8fa4-22cef74b443f +#ctag-pool widget details +AAI.model-invariant-id.ctag-pool=46c51d4e-d67e-4a9c-b1f5-49b1e9c6fcaa +AAI.model-version-id.ctag-pool=2056c41f-23b9-4de7-9f50-819adad37d76 +#customer widget details +AAI.model-invariant-id.customer=c1d4305f-cdbd-4bbe-9069-a2f4978fd89e +AAI.model-version-id.customer=d4df5c27-98a1-4812-a8aa-c17f055b7a3f +#cvlan-tag-entry widget details +AAI.model-version-id.cvlan-tag-entry=c3878ffb-8d85-4114-bee6-e4074a9db10b +AAI.model-invariant-id.cvlan-tag-entry=245cf4b0-7cc5-4eea-bbd9-753e939adcab +#dvs-switch widget details +AAI.model-invariant-id.dvs-switch=98fbb471-1f86-428e-bd8a-c8a25de6fa23 +AAI.model-version-id.dvs-switch=4cb44ae8-e3ab-452a-9f95-bcc8a44c55ea +#edge-prop-names widget details +AAI.model-invariant-id.edge-prop-names=7a08cad4-8759-46a5-8245-095d1ba57ac6 +AAI.model-version-id.edge-prop-names=f0442326-8201-4d0e-857c-74b4ddcbfc9f +#element-choice-set widget details +AAI.model-invariant-id.element-choice-set=9a011958-7165-47a3-b872-00951d1f09ae +AAI.model-version-id.element-choice-set=af27fbfd-598d-44da-aeae-0f9d3a5fcd6a +#entitlement widget details +AAI.model-version-id.entitlement=7e27ba2e-b7db-4e13-9fae-d142152ef98a +AAI.model-invariant-id.entitlement=ae75b5a0-d5e1-4f3a-b8fb-37626a753da3 +#flavor widget details +AAI.model-invariant-id.flavor=bace8d1c-a261-4041-9e37-823117415d0f +AAI.model-version-id.flavor=36200fb5-f251-4f5d-a520-7c5ad5c2cd4b +#generic-vnf widget details +AAI.model-version-id.generic-vnf=93a6166f-b3d5-4f06-b4ba-aed48d009ad9 +AAI.model-invariant-id.generic-vnf=acc6edd8-a8d4-4b93-afaa-0994068be14c +#group-assignment widget details +AAI.model-invariant-id.group-assignment=7cc05f25-7ba2-42b7-a237-c5662a1689e1 +AAI.model-version-id.group-assignment=fe578080-ce19-4604-8760-fc264fbb2565 +#image widget details +AAI.model-version-id.image=f6a038c2-820c-42ba-8c2b-375e24e8f932 +AAI.model-invariant-id.image=3f4c7204-739b-4bbb-87a7-8a6856439c90 +#include-node-filter widget details +AAI.model-invariant-id.include-node-filter=2a2d8ad2-af0a-4e1f-9982-0c899e7dc827 +AAI.model-version-id.include-node-filter=f05f804d-7057-4ffe-bdc5-39f2f0c9c9fd +#instance-group widget details +AAI.model-version-id.instance-group=8e6ee9dc-9017-444a-83b3-219edb018128 +AAI.model-invariant-id.instance-group=3bf1e610-45f7-4ad6-b833-ca4c5ee6a3fd +#inventory-item widget details +AAI.model-invariant-id.inventory-item=cd57d844-9017-4078-aa19-926935a3d77c +AAI.model-version-id.inventory-item=69957f4a-2155-4b95-8d72-d6dd9b88b27b +#inventory-item-data widget details +AAI.model-version-id.inventory-item-data=0e54bb87-bd6e-4a2b-ad1c-6d935b87ae51 +AAI.model-invariant-id.inventory-item-data=87a383ae-cf03-432e-a9de-04e6a622d0fd +#ipsec-configuration widget details +AAI.model-invariant-id.ipsec-configuration=aca4c310-cb45-42bd-9f88-73e40ba7b962 +AAI.model-version-id.ipsec-configuration=d949fd10-36bf-408a-ac7a-cad5004d2e0d +#key-data widget details +AAI.model-version-id.key-data=c23ea04d-1a3b-453d-bc49-a6c783a5e92b +AAI.model-invariant-id.key-data=f5faa464-c2f2-4cc3-89d2-a90452dc3a07 +#l3-interface-ipv4-address-list widget details +AAI.model-version-id.l3-interface-ipv4-address-list=41e76b6f-1e06-4fd4-82cd-81c50fc4574b +AAI.model-invariant-id.l3-interface-ipv4-address-list=aad85df2-09be-40fa-b867-16415e4e10e2 +#l3-interface-ipv6-address-list widget details +AAI.model-invariant-id.l3-interface-ipv6-address-list=82966045-43ee-4982-8307-7e9610866140 +AAI.model-version-id.l3-interface-ipv6-address-list=d040621d-541a-477b-bb1b-a2b61b14e295 +#l3-network widget details +AAI.model-version-id.l3-network=9111f20f-e680-4001-b83f-19a2fc23bfc1 +AAI.model-invariant-id.l3-network=3d560d81-57d0-438b-a2a1-5334dba0651a +#lag-interface widget details +AAI.model-version-id.lag-interface=ce95f7c3-b61b-4758-ae9e-7e943b1c103d +AAI.model-invariant-id.lag-interface=e0ee9bde-c1fc-4651-a95d-8e0597bf7d70 +#lag-link widget details +AAI.model-version-id.lag-link=d29a087a-af59-4053-a3f8-0f95a92faa75 +AAI.model-invariant-id.lag-link=86ffe6e5-4d0e-4cec-80b5-5c38aa3eff98 +#license widget details +AAI.model-invariant-id.license=b9a9b337-1f86-42d3-b9f9-f987a089507c +AAI.model-version-id.license=6889274b-a1dc-40ab-9090-93677e13e2e6 +#license-key-resource widget details +AAI.model-invariant-id.license-key-resource=9022ebfe-b54f-4911-a6b2-8c3f5ec189b7 +AAI.model-version-id.license-key-resource=24b25f8c-b8bd-4c62-9421-87c12667aac9 +#l-interface widget details +AAI.model-version-id.l-interface=a32613fd-18b9-459e-aab8-fffb3912966a +AAI.model-invariant-id.l-interface=cea0a982-8d55-4093-921e-418fbccf7060 +#logical-link widget details +AAI.model-version-id.logical-link=a1481a38-f8ba-4ae4-bdf1-06c2c6af4c54 +AAI.model-invariant-id.logical-link=fe012535-2c31-4a39-a739-612374c638a0 +#metadatum widget details +AAI.model-invariant-id.metadatum=86dbb63a-265e-4614-993f-6771c30b56a5 +AAI.model-version-id.metadatum=6bae950e-8939-41d3-a6a7-251b03e4c1fc +#model widget details +AAI.model-invariant-id.model=06d1418a-5faa-452d-a94b-a2829df5f67b +AAI.model-version-id.model=1f51c05c-b164-4c27-9c03-5cbb239fd6be +#model-constraint widget details +AAI.model-invariant-id.model-constraint=c28966f3-e758-4483-b37b-a90b05d3dd33 +AAI.model-version-id.model-constraint=ad70dd19-f156-4fb5-a865-97b5563b0d37 +#model-element widget details +AAI.model-invariant-id.model-element=2076e726-3577-477a-a300-7fa65cd4df11 +AAI.model-version-id.model-element=753e813a-ba9e-4a1d-ab34-b2f6dc6eec0c +#multicast-configuration widget details +AAI.model-invariant-id.multicast-configuration=ea78c9e3-514d-4a0a-9162-13837fa54c35 +AAI.model-version-id.multicast-configuration=666a06ee-4b57-46df-bacf-908da8f10c3f +#named-query widget details +AAI.model-version-id.named-query=5c3b7c33-afa3-4be5-8da7-1a5ac6f99896 +AAI.model-invariant-id.named-query=80b712fd-0ad3-4180-a99c-8c995cf1cc32 +#named-query-element widget details +AAI.model-version-id.named-query-element=204c641a-3494-48c8-979a-86856f5fd32a +AAI.model-invariant-id.named-query-element=3c504d40-b847-424c-9d25-4fb7e0a3e994 +#network-policy widget details +AAI.model-invariant-id.network-policy=6aa05779-94d7-4d8b-9bee-59ef2ab0c246 +AAI.model-version-id.network-policy=a0ccd9dc-7062-4940-9bcc-e91dd28af510 +#network-profile widget details +AAI.model-version-id.network-profile=01f45471-4240-498c-a9e1-235dc0b8b4a6 +AAI.model-invariant-id.network-profile=2734b44a-b8a2-40f6-957d-6256589e5d00 +#newvce widget details +AAI.model-version-id.newvce=7c79e11f-a408-4593-aa86-ba948a1236af +AAI.model-invariant-id.newvce=4b05ec9c-c55d-4987-83ff-e08d6ddb694f +#oam-network widget details +AAI.model-invariant-id.oam-network=2851cf01-9c40-4064-87d4-6184a6fcff35 +AAI.model-version-id.oam-network=f4fb34f3-fd6e-4a8f-a3fb-4ab61a343b79 +#physical-link widget details +AAI.model-invariant-id.physical-link=c822d81f-822f-4304-9623-1025b53da568 +AAI.model-version-id.physical-link=9c523936-95b4-4d7f-9f53-6bdfe0cf2c05 +#p-interface widget details +AAI.model-invariant-id.p-interface=94043c37-4e73-439c-a790-0fdd697924cd +AAI.model-version-id.p-interface=d2cdb2d0-fc1f-4a57-a89e-591b1c4e3754 +#pnf widget details +AAI.model-version-id.pnf=e9f1fa7d-c839-418a-9601-03dc0d2ad687 +AAI.model-invariant-id.pnf=862b25a1-262a-4961-bdaa-cdc55d69785a +#port-group widget details +AAI.model-version-id.port-group=03e8bb6b-b48a-46ae-b5d4-e5af577e6844 +AAI.model-invariant-id.port-group=8ce940fb-55d7-4230-9e7f-a56cc2741f77 +#property-constraint widget details +AAI.model-version-id.property-constraint=81706bbd-981e-4362-ae20-995cbcb2d995 +AAI.model-invariant-id.property-constraint=f4a863c3-6886-470a-a6ae-05723837ea45 +#pserver widget details +AAI.model-invariant-id.pserver=6d932c8f-463b-4e76-83fb-87acfbaa2e2d +AAI.model-version-id.pserver=72f0d495-bc27-4653-9e1a-eef76bd34bc9 +#related-lookup widget details +AAI.model-invariant-id.related-lookup=468f6f5b-2996-41bb-b2a3-7cf9613ebb9b +AAI.model-version-id.related-lookup=0988bab5-bf4f-4938-a419-ab249867d12a +#reserved-prop-names widget details +AAI.model-invariant-id.reserved-prop-names=0c3e0ba3-618c-498d-9127-c8d42b00170f +AAI.model-version-id.reserved-prop-names=ac49d26d-9163-430e-934a-13b738a04f5c +#result-data widget details +AAI.model-version-id.result-data=4e9b50aa-5227-4f6f-b489-62e6bbc03c79 +AAI.model-invariant-id.result-data=ff656f23-6185-406f-9006-4b26834f3e1c +#route-table-reference widget details +AAI.model-version-id.route-table-reference=fed7e326-03a7-45ff-a3f2-471470d268c4 +AAI.model-invariant-id.route-table-reference=a8614b63-2636-4c4f-98df-fd448c4241db +#routing-instance widget details +AAI.model-invariant-id.routing-instance=1c2ded4f-8b01-4193-829c-966847dfec3e +AAI.model-version-id.routing-instance=3ccbcbc7-d19e-44d5-a52f-7e18aa8d69fa +#secondary-filter widget details +AAI.model-version-id.secondary-filter=1380619d-dd1a-4cec-b755-c6407833e065 +AAI.model-invariant-id.secondary-filter=738ff299-6290-4c00-8998-bd0e96a07b93 +#segmentation-assignment widget details +AAI.model-invariant-id.segmentation-assignment=6e814aee-46e1-4583-a9d4-0049bfd2b59b +AAI.model-version-id.segmentation-assignment=c5171ae0-44fb-4c04-b482-d56702241a44 +#service widget details +AAI.model-version-id.service=ecce2c42-3957-4ae0-9442-54bc6afe27b6 +AAI.model-invariant-id.service=07a3a60b-1b6c-4367-8173-8014386f89e3 +#service-capability widget details +AAI.model-invariant-id.service-capability=b1a7cc05-d19d-443b-a5d1-733e325c4232 +AAI.model-version-id.service-capability=f9cfec1b-18da-4bba-bd83-4b26cca115cd +#service-instance widget details +AAI.model-invariant-id.service-instance=82194af1-3c2c-485a-8f44-420e22a9eaa4 +AAI.model-version-id.service-instance=46b92144-923a-4d20-b85a-3cbd847668a9 +#service-subscription widget details +AAI.model-invariant-id.service-subscription=2e1a602a-acd8-4f78-94ff-618b802a303b +AAI.model-version-id.service-subscription=5e68299a-79f2-4bfb-8fbc-2bae877a2459 +#site-pair widget details +AAI.model-version-id.site-pair=7106bc02-6552-4fc3-8a56-4f3df9034531 +AAI.model-invariant-id.site-pair=db63f3e6-f8d1-484e-8d5e-191600b7914b +#site-pair-set widget details +AAI.model-invariant-id.site-pair-set=5d4dae3e-b402-4bfd-909e-ece12ff75d26 +AAI.model-version-id.site-pair-set=a5c6c1bc-dc38-468e-9459-bb08f87247df +#snapshot widget details +AAI.model-version-id.snapshot=962a7c8b-687f-4d32-a775-fe098e214bcd +AAI.model-invariant-id.snapshot=24de00ef-aead-4b52-995b-0adf8d4bd90d +#sriov-vf widget details +AAI.model-version-id.sriov-vf=1e8b331f-3d4a-4160-b7aa-f4d5a8916625 +AAI.model-invariant-id.sriov-vf=04b2935f-33c4-40a9-8af0-8b52690042dc +#start-node-filter widget details +AAI.model-version-id.start-node-filter=aad96fd3-e75f-42fc-9777-3450c36f1168 +AAI.model-invariant-id.start-node-filter=083093a3-e407-447a-ba5d-7583e4d23e1d +#subnet widget details +AAI.model-version-id.subnet=f902a6bc-6be4-4fe5-8458-a6ec0056b374 +AAI.model-invariant-id.subnet=1b2c9ba7-e449-4831-ba15-3073672f5ef2 +#tagged-inventory-item-list widget details +AAI.model-invariant-id.tagged-inventory-item-list=e78a7eaa-f65d-4919-9c2b-5b258c8c4d7e +AAI.model-version-id.tagged-inventory-item-list=c246f6e2-e3a1-4697-94c0-5672a7fbbf04 +#tenant widget details +AAI.model-invariant-id.tenant=97c26c99-6870-44c1-8a07-1d900d3f4ce6 +AAI.model-version-id.tenant=abcc54bc-bb74-49dc-9043-7f7171707545 +#tunnel-xconnect widget details +AAI.model-invariant-id.tunnel-xconnect=50b9e2fa-005c-4bbe-b651-3251dece4cd8 +AAI.model-version-id.tunnel-xconnect=e7cb4ca8-e1a5-4487-a716-4ae0bcd8aef5 +#update-node-key widget details +AAI.model-version-id.update-node-key=6004cfa6-eb6d-4062-971f-b1fde6b74aa0 +AAI.model-invariant-id.update-node-key=fe81c801-f65d-408a-b2b7-a729a18f8154 +#vce widget details +AAI.model-version-id.vce=b6cf54b5-ec45-43e1-be64-97b4e1513333 +AAI.model-invariant-id.vce=bab6dceb-e7e6-4301-a5e0-a7399b48d792 +#vf-module widget details +AAI.model-invariant-id.vf-module=ef86f9c5-2165-44f3-8fc3-96018b609ea5 +AAI.model-version-id.vf-module=c00563ae-812b-4e62-8330-7c4d0f47088a +#vig-server widget details +AAI.model-version-id.vig-server=8e8c22f1-fbdf-48ea-844c-8bdeb44e7b16 +AAI.model-invariant-id.vig-server=bed7c3b7-35d0-4cd9-abde-41b20e68b28e +#virtual-data-center widget details +AAI.model-invariant-id.virtual-data-center=5150abcf-0c5f-4593-9afe-a19c48fc4824 +AAI.model-version-id.virtual-data-center=6dd43ced-d789-47af-a759-d3abc14e3ac1 +#vlan widget details +AAI.model-version-id.vlan=257d88a5-a269-4c35-944f-aca04fbdb791 +AAI.model-invariant-id.vlan=d2b1eaf1-ae59-4116-9ee4-aa0179faa4f8 +#vnfc widget details +AAI.model-invariant-id.vnfc=96129eb9-f0de-4e05-8af2-73146473f766 +AAI.model-version-id.vnfc=5761e0a7-c6df-4d8a-9ebd-b8f445054dec +#vnf-image widget details +AAI.model-invariant-id.vnf-image=f9a628ff-7aa0-40e2-a93d-02d91c950982 +AAI.model-version-id.vnf-image=c4d3e747-ba4a-4b17-9896-94c6f18c19d3 +#volume widget details +AAI.model-version-id.volume=0fbe2e8f-4d91-4415-a772-88387049b38d +AAI.model-invariant-id.volume=ddd739b4-2b25-46c4-affc-41a32af5cc42 +#volume-group widget details +AAI.model-invariant-id.volume-group=fcec1b02-b2d0-4834-aef8-d71be04717dd +AAI.model-version-id.volume-group=99d44c90-1f61-4418-b9a6-56586bf38c79 +#vpe widget details +AAI.model-invariant-id.vpe=053ec3a7-5b72-492d-b54d-123805a9b967 +AAI.model-version-id.vpe=203817d3-829c-42d4-942d-2a935478e993 +#vpls-pe widget details +AAI.model-version-id.vpls-pe=b1566228-6785-4ce1-aea2-053736f80341 +AAI.model-invariant-id.vpls-pe=457ba89b-334c-4fbd-acc4-160ac0e0cdc0 +#vpn-binding widget details +AAI.model-invariant-id.vpn-binding=9e23b675-db2b-488b-b459-57aa9857baa0 +AAI.model-version-id.vpn-binding=21a146e5-9901-448c-9197-723076770119 +#vserver widget details +AAI.model-invariant-id.vserver=ff69d4e0-a8e8-4108-bdb0-dd63217e63c7 +AAI.model-version-id.vserver=8ecb2c5d-7176-4317-a255-26274edfdd53
\ No newline at end of file diff --git a/kubernetes/aai/charts/aai-babel/resources/config/auth/auth_policy.json b/kubernetes/aai/charts/aai-babel/resources/config/auth/auth_policy.json new file mode 100644 index 0000000000..5340a6ac75 --- /dev/null +++ b/kubernetes/aai/charts/aai-babel/resources/config/auth/auth_policy.json @@ -0,0 +1,47 @@ +{"roles": [ + { + "name": "admin", + "functions": [ + { + "name": "generateArtifacts", + "methods": [{"name": "POST"}] + } + ], + "users": [ + {"username": "CN=someone.onap.org, OU=someone, O=\"ONAP ORG\", L=NA, ST=NA, C=NA"} + ] + }, + { + "name": "ops", + "functions": [{ + "name": "actions", + "methods": [{"name": "POST"}] + }], + "users": [ + {"username": "CN=someone.onap.org, OU=someone, O=\"ONAP ORG\", L=NA, ST=NA, C=NA"} + ] + }, + { + "name": "readonly", + "functions": [ + { + "name": "actions", + "methods": [{"name": "GET"}] + } + ], + "users": [ + {"username": "CN=someone.onap.org, OU=someone, O=\"ONAP ORG\", L=NA, ST=NA, C=NA"} + ] + }, + { + "name": "basicauth", + "functions": [{ + "name": "util", + "methods": [{"name": "GET"}] + }], + "users": [{ + "user": "aai", + "pass": "OBF:deadbeef" + }] + } +]} diff --git a/kubernetes/aai/charts/aai-babel/resources/config/auth/tomcat_keystore b/kubernetes/aai/charts/aai-babel/resources/config/auth/tomcat_keystore Binary files differnew file mode 100644 index 0000000000..cbec390428 --- /dev/null +++ b/kubernetes/aai/charts/aai-babel/resources/config/auth/tomcat_keystore diff --git a/kubernetes/aai/charts/aai-babel/resources/config/babel-auth.properties b/kubernetes/aai/charts/aai-babel/resources/config/babel-auth.properties new file mode 100644 index 0000000000..8bf21b0b95 --- /dev/null +++ b/kubernetes/aai/charts/aai-babel/resources/config/babel-auth.properties @@ -0,0 +1,2 @@ +auth.policy.file=/auth/auth_policy.json +auth.authentication.disable=false diff --git a/kubernetes/aai/charts/champ/templates/secrets.yaml b/kubernetes/aai/charts/aai-babel/templates/configmap.yaml index e939eb904b..ea304dc5e2 100644 --- a/kubernetes/aai/charts/champ/templates/secrets.yaml +++ b/kubernetes/aai/charts/aai-babel/templates/configmap.yaml @@ -13,10 +13,9 @@ # limitations under the License. apiVersion: v1 -kind: Secret +kind: ConfigMap metadata: - name: {{ include "common.fullname" . }}-champ-secrets + name: {{ include "common.fullname" . }}-configmap namespace: {{ include "common.namespace" . }} -type: Opaque data: -{{ tpl (.Files.Glob "resources/config/appconfig/auth/*").AsSecrets . | indent 2 }} +{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }} diff --git a/kubernetes/aai/charts/aai-babel/templates/deployment.yaml b/kubernetes/aai/charts/aai-babel/templates/deployment.yaml new file mode 100644 index 0000000000..6b1312bbdc --- /dev/null +++ b/kubernetes/aai/charts/aai-babel/templates/deployment.yaml @@ -0,0 +1,108 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: CONFIG_HOME + value: /opt/app/babel/config + - name: KEY_STORE_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }}-pass + key: KEY_STORE_PASSWORD + - name: KEY_MANAGER_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }}-pass + key: KEY_MANAGER_PASSWORD + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /opt/app/babel/config/artifact-generator.properties + name: {{ include "common.fullname" . }}-config + subPath: artifact-generator.properties + - mountPath: /opt/app/babel/config/babel-auth.properties + name: {{ include "common.fullname" . }}-config + subPath: babel-auth.properties + - mountPath: /opt/app/babel/config/auth + name: {{ include "common.fullname" . }}-secrets + - mountPath: /logs + name: {{ include "common.fullname" . }}-logs + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-config + configMap: + name: {{ include "common.fullname" . }}-configmap + items: + - key: artifact-generator.properties + path: artifact-generator.properties + - key: babel-auth.properties + path: babel-auth.properties + - name: {{ include "common.fullname" . }}-secrets + secret: + secretName: {{ include "common.fullname" . }}-babel-secrets + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-babel/templates/secrets.yaml b/kubernetes/aai/charts/aai-babel/templates/secrets.yaml new file mode 100644 index 0000000000..9875e573e1 --- /dev/null +++ b/kubernetes/aai/charts/aai-babel/templates/secrets.yaml @@ -0,0 +1,37 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-babel-secrets + namespace: {{ include "common.namespace" . }} +type: Opaque +data: +{{ tpl (.Files.Glob "resources/config/auth/*").AsSecrets . | indent 2 }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-pass + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +type: Opaque +data: + KEY_STORE_PASSWORD: {{ .Values.config.keyStorePassword | b64enc | quote }} + KEY_MANAGER_PASSWORD: {{ .Values.config.keyManagerPassword | b64enc | quote }} diff --git a/kubernetes/aai/charts/champ/templates/service.yaml b/kubernetes/aai/charts/aai-babel/templates/service.yaml index 93b0fd1254..93b0fd1254 100644 --- a/kubernetes/aai/charts/champ/templates/service.yaml +++ b/kubernetes/aai/charts/aai-babel/templates/service.yaml diff --git a/kubernetes/aai/charts/aai-babel/values.yaml b/kubernetes/aai/charts/aai-babel/values.yaml new file mode 100644 index 0000000000..bb1479b455 --- /dev/null +++ b/kubernetes/aai/charts/aai-babel/values.yaml @@ -0,0 +1,63 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + readinessImage: readiness-check:2.0.0 + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# + +# application image +image: onap/babel:1.2-STAGING-latest + +# application configuration +config: + keyStorePassword: OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o + keyManagerPassword: OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: false + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: babel + externalPort: 79 + internalPort: 9516 + nodePort: 79 + +ingress: + enabled: false + +resources: {} diff --git a/kubernetes/aai/charts/aai-cassandra/.helmignore b/kubernetes/aai/charts/aai-cassandra/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/aai/charts/aai-cassandra/Chart.yaml b/kubernetes/aai/charts/aai-cassandra/Chart.yaml new file mode 100644 index 0000000000..17694cbfff --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP AAI Cassandra +name: aai-cassandra +version: 2.0.0 diff --git a/kubernetes/aai/charts/aai-cassandra/templates/service.yaml b/kubernetes/aai/charts/aai-cassandra/templates/service.yaml new file mode 100644 index 0000000000..a4557fe187 --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/templates/service.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ template "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + clusterIP: None + type: {{ .Values.service.type }} + ports: + - name: cql + port: {{ default 9042 .Values.config.ports.cql }} + targetPort: {{ default 9042 .Values.config.ports.cql }} + - name: thrift + port: {{ default 9160 .Values.config.ports.thrift }} + targetPort: {{ default 9160 .Values.config.ports.thrift }} + {{- if .Values.config.ports.agent }} + - name: agent + port: {{ .Values.config.ports.agent }} + targetPort: {{ .Values.config.ports.agent }} + {{- end }} + selector: + app: {{ template "common.fullname" . }} diff --git a/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml b/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml new file mode 100644 index 0000000000..aa3482d293 --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml @@ -0,0 +1,115 @@ +apiVersion: apps/v1beta1 +kind: StatefulSet +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + serviceName: {{ include "common.fullname" . }} + replicas: {{ .Values.replicaCount }} + podManagementPolicy: {{ .Values.podManagementPolicy }} + updateStrategy: + type: {{ .Values.updateStrategy.type }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + containers: + - name: {{ include "common.name" . }} + image: {{ .Values.image }} + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + - containerPort: {{ .Values.service.internalPort2 }} + - containerPort: {{ .Values.service.internalPort3 }} + - containerPort: {{ .Values.service.internalPort4 }} + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + exec: + command: + - /bin/bash + - -c + - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }' + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + exec: + command: + - /bin/bash + - -c + - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }' + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + timeoutSeconds: {{ .Values.liveness.periodSeconds }} + lifecycle: + preStop: + exec: + command: ["/bin/sh", "-c", "PID=$(pidof java) && kill $PID && while ps -p $PID > /dev/null; do sleep 1; done"] + env: + {{- $seed_size := default 1 .Values.replicaCount | int -}} + {{- $global := . }} + - name: MAX_HEAP_SIZE + value: {{ .Values.config.heap.max }} + - name: HEAP_NEWSIZE + value: {{ .Values.config.heap.min }} + - name: CASSANDRA_SEEDS + value: "{{- range $i, $e := until $seed_size }}{{ template "common.fullname" $global }}-{{ $i }},{{- end }}" + - name: JVM_OPTS + value: {{ .Values.config.jvmOpts | quote }} + - name: CASSANDRA_CLUSTER_NAME + value: {{ .Values.config.clusterName | quote }} + - name: CASSANDRA_DC + value: {{ .Values.config.dataCenter | quote }} + - name: CASSANDRA_RACK + value: {{ .Values.config.rackName | quote }} + - name: CASSANDRA_AUTO_BOOTSTRAP + value: {{ .Values.config.autoBootstrap | quote }} + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + volumeMounts: + - name: cassandra-data + mountPath: /var/lib/cassandra/data + resources: +{{ toYaml .Values.resources | indent 10 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 8 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 8 }} + {{- end }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime + {{- if not .Values.persistence.enabled }} + - name: cassandra-data + emptyDir: {} + {{- else }} + volumeClaimTemplates: + - metadata: + name: cassandra-data + labels: + app: {{ template "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + annotations: + volume.beta.kubernetes.io/storage-class: {{ .Values.persistence.storageClass }} + spec: + accessModes: + - {{ .Values.persistence.accessMode | quote }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} + {{- end }} diff --git a/kubernetes/aai/charts/aai-cassandra/templates/volumes.yaml b/kubernetes/aai/charts/aai-cassandra/templates/volumes.yaml new file mode 100644 index 0000000000..0e1a3dfc26 --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/templates/volumes.yaml @@ -0,0 +1,25 @@ +#{{ if .Values.persistence.enabled }} +{{- $root := . -}} +{{ range $i, $e := until (atoi (quote $root.Values.replicaCount) | default 3) }} +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: {{ $root.Values.service.name }}-{{ $i }} + namespace: {{ $root.Release.Namespace }} + labels: + type: {{ $root.Values.persistence.storageType }} + app: {{ $root.Values.service.name }} + chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version | replace "+" "_" }} + release: {{ $root.Release.Name }} + heritage: {{ $root.Release.Service }} +spec: + capacity: + storage: {{ $root.Values.persistence.size }} + accessModes: + - {{ $root.Values.persistence.accessMode }} + hostPath: + path: {{ $root.Values.persistence.mountPath }}/{{ $root.Release.Name }}/{{ $root.Values.persistence.mountSubPath }}-{{ $i }} + persistentVolumeReclaimPolicy: {{ $root.Values.persistence.volumeReclaimPolicy }} +{{ end }} +#{{ end }}
\ No newline at end of file diff --git a/kubernetes/aai/charts/aai-cassandra/values.yaml b/kubernetes/aai/charts/aai-cassandra/values.yaml new file mode 100644 index 0000000000..884bc396a8 --- /dev/null +++ b/kubernetes/aai/charts/aai-cassandra/values.yaml @@ -0,0 +1,106 @@ +# Default values for cassandra. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: # global defaults + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + + +# application image +dockerhubRepository: registry.hub.docker.com +image: cassandra:2.1 +pullPolicy: Always + +# application configuration +config: + heap: + max: 512M + min: 100M + jvmOpts: -Dcassandra.consistent.rangemovement=false + clusterName: aai-cluster + dataCenter: Pod lab + rackName: Rack1 + autoBootstrap: true + ports: + cql: 9042 + thrift: 9160 + # If a JVM Agent is in place + # agent: 61621 + +# default number of instances +replicaCount: 3 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: aai-cassandra + internalPort: 7000 + internalPort2: 7001 + internalPort3: 7199 + internalPort4: 9042 + +podManagementPolicy: OrderedReady +updateStrategy: + type: OnDelete + +ingress: + enabled: false + +persistence: + enabled: false + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: <storageClass> + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + ## storageClass: "-" + accessMode: ReadWriteOnce + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: aai/cassandra + storageType: local + storageClass: "" + + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/aai/charts/aai-champ/Chart.yaml b/kubernetes/aai/charts/aai-champ/Chart.yaml new file mode 100644 index 0000000000..1704337efa --- /dev/null +++ b/kubernetes/aai/charts/aai-champ/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP AAI Champ microservice +name: aai-champ +version: 2.0.0 diff --git a/kubernetes/aai/charts/aai-champ/requirements.yaml b/kubernetes/aai/charts/aai-champ/requirements.yaml new file mode 100644 index 0000000000..9552dfd9e0 --- /dev/null +++ b/kubernetes/aai/charts/aai-champ/requirements.yaml @@ -0,0 +1,21 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + # local reference to common chart, as it is + # a part of this chart's package and will not + # be published independently to a repo (at this point) + repository: '@local' diff --git a/kubernetes/aai/charts/champ/resources/config/appconfig/auth/champ_policy.json b/kubernetes/aai/charts/aai-champ/resources/config/appconfig/auth/champ_policy.json index ee04a714be..ee04a714be 100644 --- a/kubernetes/aai/charts/champ/resources/config/appconfig/auth/champ_policy.json +++ b/kubernetes/aai/charts/aai-champ/resources/config/appconfig/auth/champ_policy.json diff --git a/kubernetes/aai/charts/champ/resources/config/appconfig/auth/tomcat_keystore b/kubernetes/aai/charts/aai-champ/resources/config/appconfig/auth/tomcat_keystore Binary files differindex 9eec841aa2..9eec841aa2 100644 --- a/kubernetes/aai/charts/champ/resources/config/appconfig/auth/tomcat_keystore +++ b/kubernetes/aai/charts/aai-champ/resources/config/appconfig/auth/tomcat_keystore diff --git a/kubernetes/aai/charts/champ/resources/config/appconfig/champ-api.properties b/kubernetes/aai/charts/aai-champ/resources/config/appconfig/champ-api.properties index 3b90c5522f..3b90c5522f 100644 --- a/kubernetes/aai/charts/champ/resources/config/appconfig/champ-api.properties +++ b/kubernetes/aai/charts/aai-champ/resources/config/appconfig/champ-api.properties diff --git a/kubernetes/aai/charts/champ/resources/config/dynamic/conf/champ-beans.xml b/kubernetes/aai/charts/aai-champ/resources/config/dynamic/conf/champ-beans.xml index cdf3aada40..6a66811e8c 100644 --- a/kubernetes/aai/charts/champ/resources/config/dynamic/conf/champ-beans.xml +++ b/kubernetes/aai/charts/aai-champ/resources/config/dynamic/conf/champ-beans.xml @@ -22,12 +22,17 @@ xsi:schemaLocation=" <entry key="champcore.event.stream.publisher" value-ref="champEventPublisher"/> <entry key="graph.name" value="aaigraph.dev"/> - <entry key="storage.backend" value="hbase"/> - <entry key="storage.hostname" value="hbase.{{.Release.Namespace}}"/> + <entry key="storage.backend" value="cassandra"/> + <entry key="storage.cassandra.keyspace" value="aaigraph"/> + <entry key="storage.cassandra.read-consistency-level" value="LOCAL_QUORUM"/> + <entry key="storage.cassandra.write-consistency-level" value="LOCAL_QUORUM"/> + <entry key="storage.cassandra.replication-factor" value="3"/> + <entry key="storage.cassandra.replication-strategy-class" value="org.apache.cassandra.locator.SimpleStrategy"/> - <!-- Hbase Config --> - <entry key="storage.hbase.ext.hbase.zookeeper.property.clientPort" value="2181"/> - <entry key="storage.hbase.ext.zookeeper.znode.parent" value="/hbase"/> + {{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}} + {{- $global := . }} + <entry key="storage.hostname" value="{{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-aai-cassandra-{{ $i }},{{- end }}"/> + <entry key="storage.port" value="9160"/> </util:map> <!-- Janus Implementation --> diff --git a/kubernetes/aai/charts/champ/templates/configmap.yaml b/kubernetes/aai/charts/aai-champ/templates/configmap.yaml index 8f48f199f8..a085839cc1 100644 --- a/kubernetes/aai/charts/champ/templates/configmap.yaml +++ b/kubernetes/aai/charts/aai-champ/templates/configmap.yaml @@ -15,7 +15,7 @@ apiVersion: v1 kind: ConfigMap metadata: - name: {{ include "common.fullname" . }}-configmap + name: {{ include "common.fullname" . }} namespace: {{ include "common.namespace" . }} data: {{ tpl (.Files.Glob "resources/config/appconfig/*").AsConfig . | indent 2 }} @@ -23,7 +23,7 @@ data: apiVersion: v1 kind: ConfigMap metadata: - name: {{ include "common.fullname" . }}-dynamic-configmap + name: {{ include "common.fullname" . }}-dynamic namespace: {{ include "common.namespace" . }} data: {{ tpl (.Files.Glob "resources/config/dynamic/conf/*").AsConfig . | indent 2 }} diff --git a/kubernetes/aai/charts/champ/templates/deployment.yaml b/kubernetes/aai/charts/aai-champ/templates/deployment.yaml index 23314aeee4..7176d09aeb 100644 --- a/kubernetes/aai/charts/champ/templates/deployment.yaml +++ b/kubernetes/aai/charts/aai-champ/templates/deployment.yaml @@ -30,6 +30,21 @@ spec: app: {{ include "common.name" . }} release: {{ .Release.Name }} spec: + initContainers: + - command: + - /root/ready.py + args: + - --container-name + - aai-resources + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness containers: - name: {{ include "common.name" . }} image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" @@ -55,6 +70,16 @@ spec: value: "/opt/app/champ-service/appconfig" - name: GRAPHIMPL value: "janus-deps" + - name: KEY_STORE_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }}-pass + key: KEY_STORE_PASSWORD + - name: KEY_MANAGER_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }}-pass + key: KEY_MANAGER_PASSWORD - name: SERVICE_BEANS value: "/opt/app/champ-service/dynamic/conf" volumeMounts: @@ -88,16 +113,16 @@ spec: path: /etc/localtime - name: {{ include "common.fullname" . }}-config configMap: - name: {{ include "common.fullname" . }}-configmap + name: {{ include "common.fullname" . }} items: - key: champ-api.properties path: champ-api.properties - name: {{ include "common.fullname" . }}-secrets secret: - secretName: {{ include "common.fullname" . }}-champ-secrets + secretName: {{ include "common.fullname" . }}-champ - name: {{ include "common.fullname" . }}-dynamic-config configMap: - name: {{ include "common.fullname" . }}-dynamic-configmap + name: {{ include "common.fullname" . }}-dynamic items: - key: champ-beans.xml path: champ-beans.xml diff --git a/kubernetes/aai/charts/aai-champ/templates/secrets.yaml b/kubernetes/aai/charts/aai-champ/templates/secrets.yaml new file mode 100644 index 0000000000..c0e2559db9 --- /dev/null +++ b/kubernetes/aai/charts/aai-champ/templates/secrets.yaml @@ -0,0 +1,38 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-champ + namespace: {{ include "common.namespace" . }} +type: Opaque +data: +{{ tpl (.Files.Glob "resources/config/appconfig/auth/*").AsSecrets . | indent 2 }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-pass + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +type: Opaque +data: + KEY_STORE_PASSWORD: {{ .Values.config.keyStorePassword | b64enc | quote }} + KEY_MANAGER_PASSWORD: {{ .Values.config.keyManagerPassword | b64enc | quote }} + diff --git a/kubernetes/aai/charts/aai-champ/templates/service.yaml b/kubernetes/aai/charts/aai-champ/templates/service.yaml new file mode 100644 index 0000000000..93b0fd1254 --- /dev/null +++ b/kubernetes/aai/charts/aai-champ/templates/service.yaml @@ -0,0 +1,39 @@ +# Copyright © 2018 Amdocs, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort}} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort}} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/aai/charts/champ/values.yaml b/kubernetes/aai/charts/aai-champ/values.yaml index 91a1e52091..28f28d4193 100644 --- a/kubernetes/aai/charts/champ/values.yaml +++ b/kubernetes/aai/charts/aai-champ/values.yaml @@ -16,7 +16,7 @@ # Global configuration defaults. ################################################################# global: - readinessImage: readiness-check:1.0.0 + readinessImage: readiness-check:2.0.0 loggingImage: beats/filebeat:5.5.0 ################################################################# @@ -24,7 +24,12 @@ global: ################################################################# # application image -image: onap/champ:1.2.0 +image: onap/champ:1.2-STAGING-latest + +# application configuration +config: + keyStorePassword: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 + keyManagerPassword: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 # default number of instances replicaCount: 1 @@ -48,7 +53,6 @@ readiness: service: type: NodePort name: champ - externalPort: 78 internalPort: 9522 nodePort: 78 diff --git a/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v10.xml b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v10.xml deleted file mode 100644 index 7eddd10179..0000000000 --- a/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v10.xml +++ /dev/null @@ -1,5558 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- - ============LICENSE_START======================================================= - org.openecomp.aai - ================================================================================ - Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - ================================================================================ - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ============LICENSE_END========================================================= - --> - -<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="inventory.aai.openecomp.org.v10" xml-mapping-metadata-complete="true"> - <xml-schema element-form-default="QUALIFIED"> - <xml-ns namespace-uri="http://org.openecomp.aai.inventory/v10" /> - </xml-schema> - <java-types> - <java-type name="Inventory"> - <xml-root-element name="inventory" /> - <java-attributes> - <xml-element java-attribute="search" name="search" type="inventory.aai.openecomp.org.v10.Search" /> - <xml-element java-attribute="actions" name="actions" type="inventory.aai.openecomp.org.v10.Actions" /> - <xml-element java-attribute="cloudInfrastructure" name="cloud-infrastructure" type="inventory.aai.openecomp.org.v10.CloudInfrastructure" /> - <xml-element java-attribute="business" name="business" type="inventory.aai.openecomp.org.v10.Business" /> - <xml-element java-attribute="serviceDesignAndCreation" name="service-design-and-creation" type="inventory.aai.openecomp.org.v10.ServiceDesignAndCreation" /> - <xml-element java-attribute="network" name="network" type="inventory.aai.openecomp.org.v10.Network" /> - <xml-element java-attribute="aaiInternal" name="aai-internal" type="inventory.aai.openecomp.org.v10.AaiInternal" /> - <xml-element java-attribute="nodes" name="nodes" type="inventory.aai.openecomp.org.v10.Nodes"/> - </java-attributes> - </java-type> - - <java-type name="Nodes"> - <xml-root-element name="nodes" /> - </java-type> - <java-type name="Search"> - <xml-root-element name="search" /> - <java-attributes> - <xml-element java-attribute="edgeTagQueryResult" name="edge-tag-query-result" type="inventory.aai.openecomp.org.v10.EdgeTagQueryResult" /> - <xml-element java-attribute="edgeTagQueryRequest" name="edge-tag-query-request" type="inventory.aai.openecomp.org.v10.EdgeTagQueryRequest" /> - <xml-element java-attribute="searchResults" name="search-results" type="inventory.aai.openecomp.org.v10.SearchResults" /> - <xml-element java-attribute="sdnZoneResponse" name="sdn-zone-response" type="inventory.aai.openecomp.org.v10.SdnZoneResponse" /> - </java-attributes> - </java-type> - - <java-type name="EdgeTagQueryResult"> - <xml-root-element name="edge-tag-query-result" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.openecomp.org.v10.TaggedInventoryItemList" /> - </java-attributes> - </java-type> - - <java-type name="TaggedInventoryItemList"> - <xml-root-element name="tagged-inventory-item-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItem" name="inventory-item" type="inventory.aai.openecomp.org.v10.InventoryItem" /> - </java-attributes> - </java-type> - - <java-type name="InventoryItem"> - <xml-root-element name="inventory-item" /> - <java-attributes> - <xml-element java-attribute="inventoryItemType" name="inventory-item-type" type="java.lang.String" /> - <xml-element java-attribute="inventoryItemLink" name="inventory-item-link" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItemData" name="inventory-item-data" type="inventory.aai.openecomp.org.v10.InventoryItemData" /> - <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.openecomp.org.v10.TaggedInventoryItemList" /> - </java-attributes> - </java-type> - - <java-type name="InventoryItemData"> - <xml-root-element name="inventory-item-data" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="EdgeTagQueryRequest"> - <xml-root-element name="edge-tag-query-request" /> - <java-attributes> - <xml-element java-attribute="edgeTag" name="edge-tag" type="java.lang.String" /> - <xml-element java-attribute="resultDetail" name="result-detail" type="java.lang.String" /> - <xml-element java-attribute="startNodeType" name="start-node-type" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="startNodeFilter" name="start-node-filter" type="inventory.aai.openecomp.org.v10.StartNodeFilter" /> - <xml-element container-type="java.util.ArrayList" java-attribute="includeNodeFilter" name="include-node-filter" type="inventory.aai.openecomp.org.v10.IncludeNodeFilter" /> - <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilter" name="secondary-filter" type="inventory.aai.openecomp.org.v10.SecondaryFilter" /> - </java-attributes> - </java-type> - - <java-type name="StartNodeFilter"> - <xml-root-element name="start-node-filter" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="IncludeNodeFilter"> - <xml-root-element name="include-node-filter" /> - <java-attributes> - <xml-element java-attribute="includeNodeType" name="include-node-type" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilter"> - <xml-root-element name="secondary-filter" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="filterType" name="filter-type" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="SearchResults"> - <xml-root-element name="search-results" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="resultData" name="result-data" type="inventory.aai.openecomp.org.v10.ResultData" /> - </java-attributes> - </java-type> - - <java-type name="ResultData"> - <xml-root-element name="result-data" /> - <java-attributes> - <xml-element java-attribute="resourceType" name="resource-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The specific type of node in the A&AI graph" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceLink" name="resource-link" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The URL to the specific resource" /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="SdnZoneResponse"> - <xml-root-element name="sdn-zone-response" /> - <java-attributes> - <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.openecomp.org.v10.OamNetworks" /> - <xml-element container-type="java.util.ArrayList" java-attribute="azAndDvsSwitches" name="az-and-dvs-switches" type="inventory.aai.openecomp.org.v10.AzAndDvsSwitches" /> - </java-attributes> - </java-type> - - <java-type name="AzAndDvsSwitches"> - <xml-root-element name="az-and-dvs-switches" /> - <java-attributes> - <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.openecomp.org.v10.DvsSwitches" /> - <xml-element java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.openecomp.org.v10.AvailabilityZone" /> - </java-attributes> - </java-type> - - <java-type name="Actions"> - <xml-properties> - <xml-property name="description" value="APIs that are more action related than REST (e.g., notify, update)." /> - </xml-properties> - <xml-root-element name="actions" /> - <java-attributes> - <xml-element java-attribute="update" name="update" type="inventory.aai.openecomp.org.v10.Update" /> - <xml-element java-attribute="notify" name="notify" type="inventory.aai.openecomp.org.v10.Notify" /> - </java-attributes> - </java-type> - - <java-type name="Update"> - <xml-properties> - <xml-property name="description" value="Serves a PATCH like function. Does not enforce concurrency control. Clear each usage with AAI team." /> - </xml-properties> - <xml-root-element name="update" /> - <java-attributes> - <xml-element java-attribute="updateNodeType" name="update-node-type" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="updateNodeKey" name="update-node-key" type="inventory.aai.openecomp.org.v10.UpdateNodeKey" /> - <xml-element java-attribute="updateNodeUri" name="update-node-uri" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="action" name="action" type="inventory.aai.openecomp.org.v10.Action" /> - </java-attributes> - </java-type> - - <java-type name="Action"> - <xml-root-element name="action" /> - <java-attributes> - <xml-element java-attribute="actionType" name="action-type" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="actionData" name="action-data" type="inventory.aai.openecomp.org.v10.ActionData" /> - </java-attributes> - </java-type> - - <java-type name="ActionData"> - <xml-root-element name="action-data" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="UpdateNodeKey"> - <xml-root-element name="update-node-key" /> - <java-attributes> - <xml-element java-attribute="keyName" name="key-name" type="java.lang.String" /> - <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="Notify"> - <xml-root-element name="notify" /> - <java-attributes> - <xml-element java-attribute="eventId" name="event-id" required="true" type="java.lang.String" /> - <xml-element java-attribute="nodeType" name="node-type" type="java.lang.String" /> - <xml-element java-attribute="eventTrigger" name="event-trigger" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="keyData" name="key-data" type="inventory.aai.openecomp.org.v10.KeyData" /> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="KeyData"> - <xml-root-element name="key-data" /> - <java-attributes> - <xml-element java-attribute="keyName" name="key-name" type="java.lang.String" /> - <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="CloudInfrastructure"> - <xml-properties> - <xml-property name="description" value="Namespace for cloud infrastructure." /> - </xml-properties> - <xml-root-element name="cloud-infrastructure" /> - <java-attributes> - <xml-element java-attribute="complexes" name="complexes" type="inventory.aai.openecomp.org.v10.Complexes" /> - <xml-element java-attribute="cloudRegions" name="cloud-regions" type="inventory.aai.openecomp.org.v10.CloudRegions" /> - <xml-element java-attribute="networkProfiles" name="network-profiles" type="inventory.aai.openecomp.org.v10.NetworkProfiles" /> - <xml-element java-attribute="pservers" name="pservers" type="inventory.aai.openecomp.org.v10.Pservers" /> - <xml-element java-attribute="virtualDataCenters" name="virtual-data-centers" type="inventory.aai.openecomp.org.v10.VirtualDataCenters" /> - </java-attributes> - </java-type> - - <java-type name="CloudRegions"> - <xml-root-element name="cloud-regions" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="cloudRegion" name="cloud-region" type="inventory.aai.openecomp.org.v10.CloudRegion" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="CloudRegion"> - <xml-root-element name="cloud-region" /> - <java-attributes> - <xml-element java-attribute="cloudOwner" name="cloud-owner" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudRegionId" name="cloud-region-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudType" name="cloud-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the cloud (e.g., openstack)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ownerDefinedType" name="owner-defined-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Cloud-owner defined type indicator (e.g., dcp, lcp)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudRegionVersion" name="cloud-region-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Software version employed at the site. NOTE - THIS FIELD IS NOT KEPT UP TO DATE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL of the keystone identity service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudZone" name="cloud-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Zone where the cloud is homed. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="complex name for cloud-region instance. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeGroups" name="volume-groups" type="inventory.aai.openecomp.org.v10.VolumeGroups" /> - <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.openecomp.org.v10.Tenants" /> - <xml-element java-attribute="flavors" name="flavors" type="inventory.aai.openecomp.org.v10.Flavors" /> - <xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.openecomp.org.v10.GroupAssignments" /> - <xml-element java-attribute="snapshots" name="snapshots" type="inventory.aai.openecomp.org.v10.Snapshots" /> - <xml-element java-attribute="images" name="images" type="inventory.aai.openecomp.org.v10.Images" /> - <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.openecomp.org.v10.DvsSwitches" /> - <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.openecomp.org.v10.OamNetworks" /> - <xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.openecomp.org.v10.AvailabilityZones" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="cloud-region designates an installation of a cloud cluster or region or instantiation. In AT&Ts AIC cloud, this could be an LCP or DCP. Cloud regions are uniquely identified by a composite key, cloud-owner + cloud-region-id. The format of the cloud-owner is vendor-cloudname and we will use att-aic for AT&T's AIC." /> - <xml-property name="indexedProps" value="cloud-owner,cloud-region-id,cloud-type,owner-defined-type" /> - <xml-property name="nameProps" value="owner-defined-type" /> - <xml-property name="container" value="cloud-regions" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - <java-type name="VolumeGroups"> - <xml-properties> - <xml-property name="description" value="Collection of persistent block-level storage." /> - </xml-properties> - <xml-root-element name="volume-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="volumeGroup" name="volume-group" type="inventory.aai.openecomp.org.v10.VolumeGroup" /> - </java-attributes> - </java-type> - - <java-type name="VolumeGroup"> - <xml-root-element name="volume-group" /> - <java-attributes> - <xml-element java-attribute="volumeGroupId" name="volume-group-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of volume-group." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeGroupName" name="volume-group-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the volume group." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this volume-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this volume-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfModuleModelCustomizationId" name="vf-module-model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="helps relate the volume group to the vf-module whose components will require the volume group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Persistent block-level storage." /> - <xml-property name="indexedProps" value="volume-group-name,vnf-type,heat-stack-id,volume-group-id" /> - <xml-property name="searchable" value="volume-group-id,volume-group-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="volume-groups" /> - </xml-properties> - </java-type> - - <java-type name="RelationshipList"> - <xml-root-element name="relationship-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="relationship" name="relationship" type="inventory.aai.openecomp.org.v10.Relationship" /> - </java-attributes> - </java-type> - - <java-type name="Relationship"> - <xml-root-element name="relationship" /> - <java-attributes> - <xml-element java-attribute="relatedTo" name="related-to" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="A keyword provided by A&AI to indicate type of node." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relatedLink" name="related-link" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to the object in A&AI." /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="relationshipData" name="relationship-data" type="inventory.aai.openecomp.org.v10.RelationshipData" /> - <xml-element container-type="java.util.ArrayList" java-attribute="relatedToProperty" name="related-to-property" type="inventory.aai.openecomp.org.v10.RelatedToProperty" /> - </java-attributes> - </java-type> - - <java-type name="RelatedToProperty"> - <xml-root-element name="related-to-property" /> - <java-attributes> - <xml-element java-attribute="propertyKey" name="property-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Key part of a key/value pair" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Value part of a key/value pair" /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="RelationshipData"> - <xml-root-element name="relationship-data" /> - <java-attributes> - <xml-element java-attribute="relationshipKey" name="relationship-key" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="A keyword provided by A&AI to indicate an attribute." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipValue" name="relationship-value" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Value of the attribute." /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="Complexes"> - <xml-properties> - <xml-property name="description" value="Collection of physical locations that can house cloud-regions." /> - </xml-properties> - <xml-root-element name="complexes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="complex" name="complex" type="inventory.aai.openecomp.org.v10.Complex" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Complex"> - <xml-root-element name="complex" /> - <java-attributes> - <xml-element java-attribute="physicalLocationId" name="physical-location-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier for physical location, e.g., CLLI" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dataCenterCode" name="data-center-code" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Data center code which can be an alternate way to identify a complex" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Gamma complex name for LCP instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL of the keystone identity service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="physicalLocationType" name="physical-location-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type, e.g., central office, data center." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="street1" name="street1" required="true" type="java.lang.String" /> - <xml-element java-attribute="street2" name="street2" type="java.lang.String" /> - <xml-element java-attribute="city" name="city" required="true" type="java.lang.String" /> - <xml-element java-attribute="state" name="state" type="java.lang.String" /> - <xml-element java-attribute="postalCode" name="postal-code" required="true" type="java.lang.String" /> - <xml-element java-attribute="country" name="country" required="true" type="java.lang.String" /> - <xml-element java-attribute="region" name="region" required="true" type="java.lang.String" /> - <xml-element java-attribute="latitude" name="latitude" type="java.lang.String" /> - <xml-element java-attribute="longitude" name="longitude" type="java.lang.String" /> - <xml-element java-attribute="elevation" name="elevation" type="java.lang.String" /> - <xml-element java-attribute="lata" name="lata" type="java.lang.String" /> - <xml-element java-attribute="ctagPools" name="ctag-pools" type="inventory.aai.openecomp.org.v10.CtagPools" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of physical locations that can house cloud-regions." /> - <xml-property name="indexedProps" value="identity-url,data-center-code,complex-name,physical-location-id" /> - <xml-property name="searchable" value="physical-location-id,data-center-code,complex-name,street1,street2,postal-code" /> - <xml-property name="uniqueProps" value="physical-location-id" /> - <xml-property name="container" value="complexes" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="CtagPools"> - <xml-root-element name="ctag-pools" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ctagPool" name="ctag-pool" type="inventory.aai.openecomp.org.v10.CtagPool" /> - </java-attributes> - </java-type> - - <java-type name="CtagPool"> - <xml-root-element name="ctag-pool" /> - <java-attributes> - <xml-element java-attribute="targetPe" name="target-pe" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="The Target provider edge router" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the availability zone" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ctagPoolPurpose" name="ctag-pool-purpose" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Describes what the intended purpose of this pool is." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ctagValues" name="ctag-values" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Comma separated list of ctags" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="A collection of C tags (vlan tags) grouped for a specific purpose." /> - <xml-property name="indexedProps" value="availability-zone-name" /> - <xml-property name="dependentOn" value="complex" /> - <xml-property name="container" value="ctag-pools" /> - </xml-properties> - </java-type> - - <java-type name="Tenants"> - <xml-properties> - <xml-property name="description" value="Collection of openstack tenants." /> - </xml-properties> - <xml-root-element name="tenants" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="tenant" name="tenant" type="inventory.aai.openecomp.org.v10.Tenant" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Tenant"> - <xml-root-element name="tenant" /> - <java-attributes> - <xml-element java-attribute="tenantId" name="tenant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id relative to the cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tenantName" name="tenant-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Readable name of tenant" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vservers" name="vservers" type="inventory.aai.openecomp.org.v10.Vservers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack tenant" /> - <xml-property name="nameProps" value="tenant-name" /> - <xml-property name="indexedProps" value="tenant-name,tenant-id" /> - <xml-property name="searchable" value="tenant-id,tenant-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="tenants" /> - </xml-properties> - </java-type> - - <java-type name="Vservers"> - <xml-properties> - <xml-property name="description" value="Collection of virtual Servers, aka virtual machines or VMs." /> - </xml-properties> - <xml-root-element name="vservers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vserver" name="vserver" type="inventory.aai.openecomp.org.v10.Vserver" /> - </java-attributes> - </java-type> - - <java-type name="Vserver"> - <xml-root-element name="vserver" /> - <java-attributes> - <xml-element java-attribute="vserverId" name="vserver-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier for this vserver relative to its tenant" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverName" name="vserver-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of vserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverName2" name="vserver-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternative name of vserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverSelflink" name="vserver-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumes" name="volumes" type="inventory.aai.openecomp.org.v10.Volumes" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v10.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual Servers, aka virtual machine or VM." /> - <xml-property name="nameProps" value="vserver-name" /> - <xml-property name="indexedProps" value="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2" /> - <xml-property name="searchable" value="vserver-id,vserver-name,vserver-name2" /> - <xml-property name="dependentOn" value="tenant" /> - <xml-property name="container" value="vservers" /> - </xml-properties> - </java-type> - - <java-type name="LInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of logical interfaces." /> - </xml-properties> - <xml-root-element name="l-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lInterface" name="l-interface" type="inventory.aai.openecomp.org.v10.LInterface" /> - </java-attributes> - </java-type> - - <java-type name="LInterface"> - <xml-root-element name="l-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name given to the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="E.g., CUSTOMER, UPLINK, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v6WanLinkIp" name="v6-wan-link-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="macaddr" name="macaddr" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="MAC address for the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Whether A&AI should be managing this interface of not. Could have value like CUSTOMER" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceDescription" name="interface-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Human friendly text regarding this interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isPortMirrored" name="is-port-mirrored" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not port is a mirrored." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlans" name="vlans" type="inventory.aai.openecomp.org.v10.Vlans" /> - <xml-element java-attribute="sriovVfs" name="sriov-vfs" type="inventory.aai.openecomp.org.v10.SriovVfs" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v10.LInterfaces" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.openecomp.org.v10.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.openecomp.org.v10.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Logical interfaces, e.g., a vnic." /> - <xml-property name="indexedProps" value="macaddr,interface-id,interface-name,network-name" /> - <xml-property name="dependentOn" value="generic-vnf,newvce,vpe,p-interface,vserver,lag-interface" /> - <xml-property name="container" value="l-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="SriovVfs"> - <xml-properties> - <xml-property name="description" value="Collection of SR-IOV Virtual Functions." /> - </xml-properties> - <xml-root-element name="sriov-vfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sriovVf" name="sriov-vf" type="inventory.aai.openecomp.org.v10.SriovVf" /> - </java-attributes> - </java-type> - <java-type name="SriovVf"> - <xml-root-element name="sriov-vf" /> - <java-attributes> - <xml-element java-attribute="pciId" name="pci-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="PCI ID used to identify the sriov-vf" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanFilter" name="vf-vlan-filter" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMacFilter" name="vf-mac-filter" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanStrip" name="vf-vlan-strip" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanAntiSpoofCheck" name="vf-vlan-anti-spoof-check" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMacAntiSpoofCheck" name="vf-mac-anti-spoof-check" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMirrors" name="vf-mirrors" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfBroadcastAllow" name="vf-broadcast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfUnknownMulticastAllow" name="vf-unknown-multicast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfUnknownUnicastAllow" name="vf-unknown-unicast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfInsertStag" name="vf-insert-stag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, instructs to insert outer tag after traffic comes out of VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfLinkStatus" name="vf-link-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This option is used to set the link status. Valid values as of 1607 are on, off, and auto." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="SR-IOV Virtual Function (not to be confused with virtual network function)" /> - <xml-property name="indexedProps" value="pci-id,vf-vlan-filter,vf-mac-filter,vf-vlan-strip,neutron-network-id" /> - <xml-property name="dependentOn" value="l-interface" /> - <xml-property name="container" value="sriov-vfs" /> - </xml-properties> - </java-type> - - <java-type name="L3InterfaceIpv4AddressList"> - <xml-root-element name="l3-interface-ipv4-address-list" /> - <java-attributes> - <xml-element java-attribute="l3InterfaceIpv4Address" name="l3-interface-ipv4-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="l3InterfaceIpv4PrefixLength" name="l3-interface-ipv4-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 32 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv4 Address Range" /> - <xml-property name="indexedProps" value="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="vlan,l-interface" /> - </xml-properties> - </java-type> - - <java-type name="Vlans"> - <xml-root-element name="vlans" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vlan" name="vlan" type="inventory.aai.openecomp.org.v10.Vlan" /> - </java-attributes> - </java-type> - - <java-type name="Vlan"> - <xml-root-element name="vlan" /> - <java-attributes> - <xml-element java-attribute="vlanInterface" name="vlan-interface" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="String that identifies the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanDescription" name="vlan-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to describe (the service associated with) the vlan" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="backdoorConnection" name="backdoor-connection" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Whether customer is going to use this VLAN for backdoor connection to another customer premise device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnId" name="vpn-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This indicates the customers VPN ID associated with this vlan" /> - <xml-property name="dbAlias" value="vpn-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Status of a vnf's vlan interface, on which the customer circuit resides, mastered by SDN-C." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.openecomp.org.v10.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.openecomp.org.v10.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Definition of vlan" /> - <xml-property name="indexedProps" value="vlan-interface,vlan-id-inner,vpn-id" /> - <xml-property name="uniqueProps" value="vpn-id" /> - <xml-property name="dependentOn" value="l-interface" /> - <xml-property name="container" value="vlans" /> - </xml-properties> - </java-type> - - <java-type name="L3InterfaceIpv6AddressList"> - <xml-root-element name="l3-interface-ipv6-address-list" /> - <java-attributes> - <xml-element java-attribute="l3InterfaceIpv6Address" name="l3-interface-ipv6-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="l3InterfaceIpv6PrefixLength" name="l3-interface-ipv6-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 128 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv6 Address Range" /> - <xml-property name="indexedProps" value="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="vlan,l-interface" /> - </xml-properties> - </java-type> - - <java-type name="Volumes"> - <xml-properties> - <xml-property name="description" value="Collection of ephemeral Block storage volumes." /> - </xml-properties> - <xml-root-element name="volumes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="volume" name="volume" type="inventory.aai.openecomp.org.v10.Volume" /> - </java-attributes> - </java-type> - - <java-type name="Volume"> - <xml-root-element name="volume" /> - <java-attributes> - <xml-element java-attribute="volumeId" name="volume-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of block storage volume relative to the vserver." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeSelflink" name="volume-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Ephemeral Block storage volume." /> - <xml-property name="indexedProps" value="volume-id" /> - <xml-property name="dependentOn" value="vserver" /> - <xml-property name="container" value="volumes" /> - </xml-properties> - </java-type> - - <java-type name="Flavors"> - <xml-properties> - <xml-property name="description" value="Collection of openstack flavors." /> - </xml-properties> - <xml-root-element name="flavors" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="flavor" name="flavor" type="inventory.aai.openecomp.org.v10.Flavor" /> - </java-attributes> - </java-type> - - <java-type name="Flavor"> - <xml-root-element name="flavor" /> - <java-attributes> - <xml-element java-attribute="flavorId" name="flavor-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Flavor id, expected to be unique across cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorName" name="flavor-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Flavor name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorVcpus" name="flavor-vcpus" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Number of CPUs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorRam" name="flavor-ram" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Amount of memory" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorDisk" name="flavor-disk" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Disk space" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorEphemeral" name="flavor-ephemeral" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Amount of ephemeral disk space" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorSwap" name="flavor-swap" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="amount of swap space allocation" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorIsPublic" name="flavor-is-public" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="whether flavor is available to all users or private to the tenant it was created in." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorSelflink" name="flavor-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorDisabled" name="flavor-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Boolean as to whether this flavor is no longer enabled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack flavor." /> - <xml-property name="nameProps" value="flavor-name" /> - <xml-property name="indexedProps" value="flavor-name,flavor-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="flavors" /> - </xml-properties> - </java-type> - - <java-type name="Snapshots"> - <xml-properties> - <xml-property name="description" value="Collection of openstack snapshots" /> - </xml-properties> - <xml-root-element name="snapshots" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="snapshot" name="snapshot" type="inventory.aai.openecomp.org.v10.Snapshot" /> - </java-attributes> - </java-type> - - <java-type name="Snapshot"> - <xml-root-element name="snapshot" /> - <java-attributes> - <xml-element java-attribute="snapshotId" name="snapshot-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Snapshot id, this is the key UUID assoc associated in glance with the snapshots." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotName" name="snapshot-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Snapshot name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotArchitecture" name="snapshot-architecture" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operating system architecture" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotOsDistro" name="snapshot-os-distro" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The common name of the operating system distribution in lowercase" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotOsVersion" name="snapshot-os-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The operating system version as specified by the distributor." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotSelflink" name="snapshot-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="prevSnapshotId" name="prev-snapshot-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field contains the UUID of the previous snapshot (if any)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack snapshot" /> - <xml-property name="nameProps" value="snapshot-name" /> - <xml-property name="uniqueProps" value="snapshot-id" /> - <xml-property name="indexedProps" value="application,snapshot-name,application-vendor,snapshot-id,application-version,prev-snapshot-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="snapshots" /> - </xml-properties> - </java-type> - - <java-type name="GroupAssignments"> - <xml-properties> - <xml-property name="description" value="Collection of openstack group assignments" /> - </xml-properties> - <xml-root-element name="group-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="groupAssignment" name="group-assignment" type="inventory.aai.openecomp.org.v10.GroupAssignment" /> - </java-attributes> - </java-type> - - <java-type name="GroupAssignment"> - <xml-root-element name="group-assignment" /> - <java-attributes> - <xml-element java-attribute="groupId" name="group-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Group id, expected to be unique across cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupType" name="group-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group type - the type of group this instance refers to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupName" name="group-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group name - name assigned to the group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupDescription" name="group-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group description - description of the group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack group-assignment used to store exclusivity groups (EG)." /> - <xml-property name="nameProps" value="group-name" /> - <xml-property name="indexedProps" value="group-id,group-type,group-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="group-assignments" /> - </xml-properties> - </java-type> - - <java-type name="Images"> - <xml-properties> - <xml-property name="description" value="Collectio of Openstack images." /> - </xml-properties> - <xml-root-element name="images" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="image" name="image" type="inventory.aai.openecomp.org.v10.Image" /> - </java-attributes> - </java-type> - - <java-type name="Image"> - <xml-root-element name="image" /> - <java-attributes> - <xml-element java-attribute="imageId" name="image-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Image id, expected to be unique across cloud region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageName" name="image-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Image name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageArchitecture" name="image-architecture" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operating system architecture." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageOsDistro" name="image-os-distro" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The common name of the operating system distribution in lowercase" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageOsVersion" name="image-os-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The operating system version as specified by the distributor." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageSelflink" name="image-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v10.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack image." /> - <xml-property name="nameProps" value="image-name" /> - <xml-property name="indexedProps" value="application,image-name,application-vendor,image-id,application-version" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="images" /> - </xml-properties> - </java-type> - - <java-type name="Metadata"> - <xml-properties> - <xml-property name="description" value="Collection of metadatum (key/value pairs)" /> - </xml-properties> - <xml-root-element name="metadata" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="metadatum" name="metadatum" type="inventory.aai.openecomp.org.v10.Metadatum" /> - </java-attributes> - </java-type> - - <java-type name="Metadatum"> - <xml-root-element name="metadatum" /> - <java-attributes> - <xml-element java-attribute="metaname" name="metaname" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="metaval" name="metaval" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Key/value pairs" /> - <xml-property name="indexedProps" value="metaname" /> - <xml-property name="dependentOn" value="tenant,image,service-instance,connector,model" /> - <xml-property name="container" value="metadata" /> - </xml-properties> - </java-type> - - <java-type name="DvsSwitches"> - <xml-properties> - <xml-property name="description" value="Collection of digital virtual switch metadata used for vmWare VCEs and VPEs." /> - </xml-properties> - <xml-root-element name="dvs-switches" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="dvsSwitch" name="dvs-switch" type="inventory.aai.openecomp.org.v10.DvsSwitch" /> - </java-attributes> - </java-type> - - <java-type name="DvsSwitch"> - <xml-root-element name="dvs-switch" /> - <java-attributes> - <xml-element java-attribute="switchName" name="switch-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="DVS switch name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcenterUrl" name="vcenter-url" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL used to reach the vcenter" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Digital virtual switch metadata, used by SDN-C to configure VCEs. A&AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&AI. " /> - <xml-property name="indexedProps" value="vcenter-url,switch-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="dvs-switches" /> - </xml-properties> - </java-type> - - <java-type name="NetworkProfiles"> - <xml-properties> - <xml-property name="description" value="Collection of network profiles" /> - </xml-properties> - <xml-root-element name="network-profiles" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="networkProfile" name="network-profile" type="inventory.aai.openecomp.org.v10.NetworkProfile" /> - </java-attributes> - </java-type> - - <java-type name="NetworkProfile"> - <xml-root-element name="network-profile" /> - <java-attributes> - <xml-element java-attribute="nmProfileName" name="nm-profile-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique name of network profile." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="communityString" name="community-string" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encrypted SNMP community string" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Network profile populated by SDN-GP for SNMP" /> - <xml-property name="indexedProps" value="nm-profile-name" /> - <xml-property name="container" value="network-profiles" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="Pservers"> - <xml-properties> - <xml-property name="description" value="Collection of compute hosts." /> - </xml-properties> - <xml-root-element name="pservers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pserver" name="pserver" type="inventory.aai.openecomp.org.v10.Pserver" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Pserver"> - <xml-root-element name="pserver" /> - <java-attributes> - <xml-element java-attribute="hostname" name="hostname" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Value from executing hostname on the compute node." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ptniiEquipName" name="ptnii-equip-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="PTNII name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="numberOfCpus" name="number-of-cpus" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Number of cpus" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="diskInGigabytes" name="disk-in-gigabytes" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Disk size, in GBs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ramInMegabytes" name="ram-in-megabytes" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="RAM size, in MBs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment type. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment vendor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment model. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="fqdn" name="fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Fully-qualified domain name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverSelflink" name="pserver-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to configure device, also used for troubleshooting and is IP used for traps generated by device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Serial number, may be queried" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Loopback0" name="ipaddress-v4-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Loopback0" name="ipaddress-v6-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Aim" name="ipaddress-v4-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Aim" name="ipaddress-v6-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Oam" name="ipaddress-v6-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 OAM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CANOPI's inventory status. Only set with values exactly as defined by CANOPI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverId" name="pserver-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of Pserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="internetTopology" name="internet-topology" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="internet topology of Pserver" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverName2" name="pserver-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="alternative pserver name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="purpose" name="purpose" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="purpose of pserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.openecomp.org.v10.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v10.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver." /> - <xml-property name="nameProps" value="pserver-name2" /> - <xml-property name="indexedProps" value="hostname,in-maint,pserver-id,pserver-name2,inv-status" /> - <xml-property name="searchable" value="hostname,pserver-name2,pserver-id,ipv4-oam-address" /> - <xml-property name="container" value="pservers" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="PInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of physical interfaces." /> - </xml-properties> - <xml-root-element name="p-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pInterface" name="p-interface" type="inventory.aai.openecomp.org.v10.PInterface" /> - </java-attributes> - </java-type> - - <java-type name="PInterface"> - <xml-root-element name="p-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name that identifies the physical interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portDescription" name="port-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Nature of the services and connectivity on this port." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentIdentifier" name="equipment-identifier" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CLEI or other specification for p-interface hardware." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role specification for p-interface hardware." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceType" name="interface-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the physical properties of the interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v10.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Physical interface (e.g., nic)" /> - <xml-property name="indexedProps" value="interface-name,prov-status" /> - <xml-property name="nameProps" value="prov-status" /> - <xml-property name="dependentOn" value="vpls-pe,pserver,pnf" /> - <xml-property name="container" value="p-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="LagInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of link aggregate interfaces." /> - </xml-properties> - <xml-root-element name="lag-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lagInterface" name="lag-interface" type="inventory.aai.openecomp.org.v10.LagInterface" /> - </java-attributes> - </java-type> - - <java-type name="LagInterface"> - <xml-root-element name="lag-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name that identifies the link aggregate interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceDescription" name="interface-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Human friendly text regarding this interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v10.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Link aggregate interface" /> - <xml-property name="indexedProps" value="interface-name,interface-id,interface-role" /> - <xml-property name="dependentOn" value="generic-vnf,pserver,vpe,vpls-pe,pnf" /> - <xml-property name="container" value="lag-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="OamNetworks"> - <xml-properties> - <xml-property name="description" value="Collection of OAM networks, to be deprecated shortly. Do not use for new purposes. " /> - </xml-properties> - <xml-root-element name="oam-networks" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="oamNetwork" name="oam-network" type="inventory.aai.openecomp.org.v10.OamNetwork" /> - </java-attributes> - </java-type> - - <java-type name="OamNetwork"> - <xml-root-element name="oam-network" /> - <java-attributes> - <xml-element java-attribute="networkUuid" name="network-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID of the network. Unique across a cloud-region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="cvlan-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="OAM network, to be deprecated shortly. Do not use for new purposes. " /> - <xml-property name="nameProps" value="network-name" /> - <xml-property name="indexedProps" value="cvlan-tag,network-uuid,network-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="oam-networks" /> - </xml-properties> - </java-type> - - <java-type name="AvailabilityZones"> - <xml-properties> - <xml-property name="description" value="Collection of availability zones" /> - </xml-properties> - <xml-root-element name="availability-zones" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.openecomp.org.v10.AvailabilityZone" /> - </java-attributes> - </java-type> - - <java-type name="AvailabilityZone"> - <xml-root-element name="availability-zone" /> - <java-attributes> - <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the availability zone. Unique across a cloud region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="hypervisorType" name="hypervisor-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of hypervisor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="State that indicates whether the availability zone should be used, etc. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Availability zone, a collection of compute hosts/pservers" /> - <xml-property name="indexedProps" value="availability-zone-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="availability-zones" /> - </xml-properties> - </java-type> - - <java-type name="VirtualDataCenters"> - <xml-properties> - <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context" /> - </xml-properties> - <xml-root-element name="virtual-data-centers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="virtualDataCenter" name="virtual-data-center" type="inventory.aai.openecomp.org.v10.VirtualDataCenter" /> - </java-attributes> - </java-type> - - <java-type name="VirtualDataCenter"> - <xml-root-element name="virtual-data-center" /> - <java-attributes> - <xml-element java-attribute="vdcId" name="vdc-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of the vdc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdcName" name="vdc-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the virtual data center" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context" /> - <xml-property name="nameProps" value="vdc-name" /> - <xml-property name="indexedProps" value="vdc-name,vdc-id" /> - <xml-property name="container" value="virtual-data-centers" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - - - - <java-type name="Business"> - <xml-properties> - <xml-property name="description" value="Namespace for business related constructs" /> - </xml-properties> - <xml-root-element name="business" /> - <java-attributes> - <xml-element java-attribute="connectors" name="connectors" type="inventory.aai.openecomp.org.v10.Connectors" /> - <xml-element java-attribute="customers" name="customers" type="inventory.aai.openecomp.org.v10.Customers" /> - </java-attributes> - </java-type> - - <java-type name="Connectors"> - <xml-properties> - <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets" /> - </xml-properties> - <xml-root-element name="connectors" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="connector" name="connector" type="inventory.aai.openecomp.org.v10.Connector" /> - </java-attributes> - </java-type> - - <java-type name="Connector"> - <xml-root-element name="connector" /> - <java-attributes> - <xml-element java-attribute="resourceInstanceId" name="resource-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of resource instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v10.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets" /> - <xml-property name="indexedProps" value="resource-instance-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version" /> - <xml-property name="container" value="connectors" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="Customers"> - <xml-properties> - <xml-property name="description" value="Collection of customer identifiers to provide linkage back to BSS information." /> - </xml-properties> - <xml-root-element name="customers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="customer" name="customer" type="inventory.aai.openecomp.org.v10.Customer" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Customer"> - <xml-root-element name="customer" /> - <java-attributes> - <xml-element java-attribute="globalCustomerId" name="global-customer-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Global customer id used across ECOMP to uniquely identify customer." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subscriberName" name="subscriber-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Subscriber name, an alternate way to retrieve a customer." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subscriberType" name="subscriber-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Subscriber type, a way to provide VID with only the INFRA customers." /> - <xml-property name="defaultValue" value="CUST" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceSubscriptions" name="service-subscriptions" type="inventory.aai.openecomp.org.v10.ServiceSubscriptions" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="customer identifiers to provide linkage back to BSS information." /> - <xml-property name="nameProps" value="subscriber-name" /> - <xml-property name="indexedProps" value="subscriber-name,global-customer-id,subscriber-type" /> - <xml-property name="searchable" value="global-customer-id,subscriber-name" /> - <xml-property name="uniqueProps" value="global-customer-id" /> - <xml-property name="container" value="customers" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="ServiceSubscriptions"> - <xml-properties> - <xml-property name="description" value="Collection of objects that group service instances." /> - </xml-properties> - <xml-root-element name="service-subscriptions" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceSubscription" name="service-subscription" type="inventory.aai.openecomp.org.v10.ServiceSubscription" /> - </java-attributes> - </java-type> - - <java-type name="ServiceSubscription"> - <xml-root-element name="service-subscription" /> - <java-attributes> - <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Value defined by orchestration to identify this service across ECOMP." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tempUbSubAccountId" name="temp-ub-sub-account-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This property will be deleted from A&AI in the near future. Only stop gap solution." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstances" name="service-instances" type="inventory.aai.openecomp.org.v10.ServiceInstances"> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Object that group service instances." /> - <xml-property name="indexedProps" value="service-type" /> - <xml-property name="dependentOn" value="customer" /> - <xml-property name="container" value="service-subscriptions" /> - <xml-property name="crossEntityReference" value="service-instance,service-type" /> - </xml-properties> - </java-type> - - <java-type name="ServiceInstances"> - <xml-properties> - <xml-property name="description" value="Collection of service instances" /> - </xml-properties> - <xml-root-element name="service-instances" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceInstance" name="service-instance" type="inventory.aai.openecomp.org.v10.ServiceInstance" /> - </java-attributes> - </java-type> - - <java-type name="ServiceInstance"> - <xml-root-element name="service-instance" /> - <java-attributes> - <xml-element java-attribute="serviceInstanceId" name="service-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Uniquely identifies this instance of a service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstanceName" name="service-instance-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field will store a name assigned to the service-instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthTotal" name="bandwidth-total" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the total bandwidth to be used for this service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN1 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN1 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN2 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN2 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vhnPortalUrl" name="vhn-portal-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL customers will use to access the vHN Portal." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstanceLocationId" name="service-instance-location-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="An identifier that customers assign to the location where this service is being used." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v10.Metadata" /> - <xml-element java-attribute="allottedResources" name="allotted-resources" type="inventory.aai.openecomp.org.v10.AllottedResources" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Instance of a service" /> - <xml-property name="indexedProps" value="service-instance-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,service-instance-name,service-instance-location-id,orchestration-status" /> - <xml-property name="nameProps" value="service-instance-name" /> - <xml-property name="searchable" value="service-instance-id,service-instance-name" /> - <xml-property name="uniqueProps" value="service-instance-id" /> - <xml-property name="dependentOn" value="service-subscription" /> - <xml-property name="container" value="service-instances" /> - </xml-properties> - </java-type> - - <java-type name="ServiceDesignAndCreation"> - <xml-properties> - <xml-property name="description" value="Namespace for objects managed by ASDC" /> - </xml-properties> - <xml-root-element name="service-design-and-creation" /> - <java-attributes> - <xml-element java-attribute="vnfImages" name="vnf-images" type="inventory.aai.openecomp.org.v10.VnfImages" /> - <xml-element java-attribute="services" name="services" type="inventory.aai.openecomp.org.v10.Services" /> - <xml-element java-attribute="serviceCapabilities" name="service-capabilities" type="inventory.aai.openecomp.org.v10.ServiceCapabilities" /> - <xml-element java-attribute="models" name="models" type="inventory.aai.openecomp.org.v10.Models" /> - <xml-element java-attribute="namedQueries" name="named-queries" type="inventory.aai.openecomp.org.v10.NamedQueries" /> - </java-attributes> - </java-type> - - <java-type name="VnfImages"> - <xml-properties> - <xml-property name="description" value="Collection of image objects that pertain to a VNF that doesn't have associated vservers. This is a kludge." /> - </xml-properties> - <xml-root-element name="vnf-images" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vnfImage" name="vnf-image" type="inventory.aai.openecomp.org.v10.VnfImage" /> - </java-attributes> - </java-type> - - <java-type name="VnfImage"> - <xml-root-element name="vnf-image" /> - <java-attributes> - <xml-element java-attribute="vnfImageUuid" name="vnf-image-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of this asset" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Image object that pertain to a VNF that doesn't have associated vservers. This is a kludge." /> - <xml-property name="indexedProps" value="application,vnf-image-uuid,application-vendor,application-version" /> - <xml-property name="uniqueProps" value="vnf-image-uuid" /> - <xml-property name="container" value="vnf-images" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="Services"> - <xml-properties> - <xml-property name="description" value="Collection of service model definitions. Likely to be deprecated in favor of models from ASDC." /> - </xml-properties> - <xml-root-element name="services" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="service" name="service" type="inventory.aai.openecomp.org.v10.Service" /> - </java-attributes> - </java-type> - - <java-type name="Service"> - <xml-root-element name="service" /> - <java-attributes> - <xml-element java-attribute="serviceId" name="service-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceDescription" name="service-description" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description of the service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceSelflink" name="service-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceVersion" name="service-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="service version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Stand-in for service model definitions. Likely to be deprecated in favor of models from ASDC. Does not strictly map to ASDC services." /> - <xml-property name="indexedProps" value="service-description,service-id" /> - <xml-property name="container" value="services" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="ServiceCapabilities"> - <xml-properties> - <xml-property name="description" value="Collection of service capabilities." /> - </xml-properties> - <xml-root-element name="service-capabilities" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceCapability" name="service-capability" type="inventory.aai.openecomp.org.v10.ServiceCapability" /> - </java-attributes> - </java-type> - - <java-type name="ServiceCapability"> - <xml-root-element name="service-capability" /> - <java-attributes> - <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Early definition of server/resource pairings, likely to be replaced by models. No new use should be made of this." /> - <xml-property name="indexedProps" value="service-type,vnf-type" /> - <xml-property name="container" value="service-capabilities" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="Network"> - <xml-properties> - <xml-property name="description" value="Namespace for network inventory resources." /> - </xml-properties> - <xml-root-element name="network" /> - <java-attributes> - <xml-element java-attribute="logicalLinks" name="logical-links" type="inventory.aai.openecomp.org.v10.LogicalLinks" /> - <xml-element java-attribute="sitePairSets" name="site-pair-sets" type="inventory.aai.openecomp.org.v10.SitePairSets" /> - <xml-element java-attribute="vpnBindings" name="vpn-bindings" type="inventory.aai.openecomp.org.v10.VpnBindings" /> - <xml-element java-attribute="vplsPes" name="vpls-pes" type="inventory.aai.openecomp.org.v10.VplsPes" /> - <xml-element java-attribute="multicastConfigurations" name="multicast-configurations" type="inventory.aai.openecomp.org.v10.MulticastConfigurations" /> - <xml-element java-attribute="vces" name="vces" type="inventory.aai.openecomp.org.v10.Vces" /> - <xml-element java-attribute="vpes" name="vpes" type="inventory.aai.openecomp.org.v10.Vpes" /> - <xml-element java-attribute="vnfcs" name="vnfcs" type="inventory.aai.openecomp.org.v10.Vnfcs" /> - <xml-element java-attribute="l3Networks" name="l3-networks" type="inventory.aai.openecomp.org.v10.L3Networks" /> - <xml-element java-attribute="networkPolicies" name="network-policies" type="inventory.aai.openecomp.org.v10.NetworkPolicies" /> - <xml-element java-attribute="genericVnfs" name="generic-vnfs" type="inventory.aai.openecomp.org.v10.GenericVnfs" /> - <xml-element java-attribute="lagLinks" name="lag-links" type="inventory.aai.openecomp.org.v10.LagLinks" /> - <xml-element java-attribute="newvces" name="newvces" type="inventory.aai.openecomp.org.v10.Newvces" /> - <xml-element java-attribute="pnfs" name="pnfs" type="inventory.aai.openecomp.org.v10.Pnfs" /> - <xml-element java-attribute="physicalLinks" name="physical-links" type="inventory.aai.openecomp.org.v10.PhysicalLinks" /> - <xml-element java-attribute="ipsecConfigurations" name="ipsec-configurations" type="inventory.aai.openecomp.org.v10.IpsecConfigurations" /> - <xml-element java-attribute="routeTableReferences" name="route-table-references" type="inventory.aai.openecomp.org.v10.RouteTableReferences" /> - <xml-element java-attribute="instanceGroups" name="instance-groups" type="inventory.aai.openecomp.org.v10.InstanceGroups" /> - <xml-element java-attribute="zones" name="zones" type="inventory.aai.openecomp.org.v10.Zones" /> - </java-attributes> - </java-type> - - <java-type name="LogicalLinks"> - <xml-properties> - <xml-property name="description" value="Collection of logical connections" /> - </xml-properties> - <xml-root-element name="logical-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="logicalLink" name="logical-link" type="inventory.aai.openecomp.org.v10.LogicalLink" /> - </java-attributes> - </java-type> - - <java-type name="LogicalLink"> - <xml-root-element name="logical-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkType" name="link-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of logical link, e.g., evc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4, v6, or ds for dual stack" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routingProtocol" name="routing-protocol" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="For example, static or BGP" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indication of operational status of the logical link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkRole" name="link-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indication of the network use of the logical link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkName2" name="link-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alias or alternate name (CLCI or D1 name)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkId" name="link-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the logical-link, SDNC generates this." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Circuit id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="purpose" name="purpose" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Reason for this entity, role it is playing" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Logical links generally connect l-interfaces but are used to express logical connectivity between two points" /> - <xml-property name="indexedProps" value="link-name,model-invariant-id,model-version-id,widget-model-id,widget-model-version,link-id,prov-status,circuit-id,purpose" /> - <xml-property name="uniqueProps" value="link-id" /> - <xml-property name="container" value="logical-links" /> - <xml-property name="namespace" value="network" /> - <xml-property name="searchable" value="link-name" /> - </xml-properties> - </java-type> - - <java-type name="SitePairSets"> - <xml-properties> - <xml-property name="description" value="Collection of sets of instances for probes related to generic-vnf" /> - </xml-properties> - <xml-root-element name="site-pair-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sitePairSet" name="site-pair-set" type="inventory.aai.openecomp.org.v10.SitePairSet" /> - </java-attributes> - </java-type> - - <java-type name="SitePairSet"> - <xml-root-element name="site-pair-set" /> - <java-attributes> - <xml-element java-attribute="sitePairSetId" name="site-pair-set-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of site pair set." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routingInstances" name="routing-instances" type="inventory.aai.openecomp.org.v10.RoutingInstances" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Set of instances for probes used to measure service level agreements" /> - <xml-property name="indexedProps" value="site-pair-set-id" /> - <xml-property name="uniqueProps" value="site-pair-set-id" /> - <xml-property name="container" value="site-pair-sets" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="RoutingInstances"> - <xml-properties> - <xml-property name="description" value="set of probes related to generic-vnf routing instance" /> - </xml-properties> - <xml-root-element name="routing-instances" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="routingInstance" name="routing-instance" type="inventory.aai.openecomp.org.v10.RoutingInstance" /> - </java-attributes> - </java-type> - - <java-type name="RoutingInstance"> - <xml-root-element name="routing-instance" /> - <java-attributes> - <xml-element java-attribute="routingInstanceId" name="routing-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of routing instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="rpmOwner" name="rpm-owner" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="rpm owner" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sitePairs" name="site-pairs" type="inventory.aai.openecomp.org.v10.SitePairs" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="routing-instance-id" /> - <xml-property name="uniqueProps" value="routing-instance-id" /> - <xml-property name="dependentOn" value="site-pair-set" /> - <xml-property name="container" value="routing-instances" /> - </xml-properties> - </java-type> - - <java-type name="SitePairs"> - <xml-properties> - <xml-property name="description" value="probe within a set" /> - </xml-properties> - <xml-root-element name="site-pairs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sitePair" name="site-pair" type="inventory.aai.openecomp.org.v10.SitePair" /> - </java-attributes> - </java-type> - - <java-type name="SitePair"> - <xml-root-element name="site-pair" /> - <java-attributes> - <xml-element java-attribute="sitePairId" name="site-pair-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sourceIp" name="source-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prefix address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationIp" name="destination-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prefix address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ip version, v4, v6" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationHostname" name="destination-hostname" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Hostname of the destination equipment to which SLAs are measured against." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationEquipType" name="destination-equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The type of destinatination equipment. Could be Router, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="classesOfService" name="classes-of-service" type="inventory.aai.openecomp.org.v10.ClassesOfService" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="site-pair-id" /> - <xml-property name="uniqueProps" value="site-pair-id" /> - <xml-property name="dependentOn" value="routing-instance" /> - <xml-property name="container" value="site-pairs" /> - </xml-properties> - </java-type> - - <java-type name="ClassesOfService"> - <xml-properties> - <xml-property name="description" value="class-of-service of probe" /> - </xml-properties> - <xml-root-element name="classes-of-service" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="classOfService" name="class-of-service" type="inventory.aai.openecomp.org.v10.ClassOfService" /> - </java-attributes> - </java-type> - - <java-type name="ClassOfService"> - <xml-root-element name="class-of-service" /> - <java-attributes> - <xml-element java-attribute="cos" name="cos" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="probeId" name="probe-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="probeType" name="probe-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="type of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="cos" /> - <xml-property name="dependentOn" value="site-pair" /> - <xml-property name="container" value="classes-of-service" /> - </xml-properties> - </java-type> - - <java-type name="VpnBindings"> - <xml-root-element name="vpn-bindings" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vpnBinding" name="vpn-binding" type="inventory.aai.openecomp.org.v10.VpnBinding" /> - </java-attributes> - </java-type> - - <java-type name="VpnBinding"> - <xml-root-element name="vpn-binding" /> - <java-attributes> - <xml-element java-attribute="vpnId" name="vpn-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="VPN ID, globally unique within A&AI" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnName" name="vpn-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="VPN Name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnPlatform" name="vpn-platform" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the platform associated with the VPN example AVPN, Mobility" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnType" name="vpn-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the vpn, should be taken from enumerated/valid values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeDistinguisher" name="route-distinguisher" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to distinguish the distinct VPN routes of separate customers who connect to the provider in an MPLS network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeTargets" name="route-targets" type="inventory.aai.openecomp.org.v10.RouteTargets" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList"> - <xml-properties> - <xml-property name="description" value="l3-networks relate to vpn-bindings" /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="VPN binding" /> - <xml-property name="nameProps" value="vpn-name,vpn-type" /> - <xml-property name="indexedProps" value="vpn-name,vpn-id,vpn-type" /> - <xml-property name="searchable" value="vpn-id,vpn-name" /> - <xml-property name="uniqueProps" value="vpn-id" /> - <xml-property name="container" value="vpn-bindings" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="VplsPes"> - <xml-properties> - <xml-property name="description" value="Collection of VPLS Provider Edge routers" /> - </xml-properties> - <xml-root-element name="vpls-pes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vplsPe" name="vpls-pe" type="inventory.aai.openecomp.org.v10.VplsPe" /> - </java-attributes> - </java-type> - - <java-type name="VplsPe"> - <xml-root-element name="vpls-pe" /> - <java-attributes> - <xml-element java-attribute="equipmentName" name="equipment-name" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value, e.g., VPLS-PE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Temporary location for stag to get to VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.openecomp.org.v10.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v10.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="VPLS Provider Edge routers." /> - <xml-property name="indexedProps" value="prov-status,equipment-name" /> - <xml-property name="container" value="vpls-pes" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="MulticastConfigurations"> - <xml-properties> - <xml-property name="description" value="multicast configuration of generic-vnf ip-address" /> - </xml-properties> - <xml-root-element name="multicast-configurations" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="multicastConfiguration" name="multicast-configuration" type="inventory.aai.openecomp.org.v10.MulticastConfiguration" /> - </java-attributes> - </java-type> - - <java-type name="MulticastConfiguration"> - <xml-root-element name="multicast-configuration" /> - <java-attributes> - <xml-element java-attribute="multicastConfigurationId" name="multicast-configuration-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of multicast configuration." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="multicastProtocol" name="multicast-protocol" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="protocol of multicast configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="rpType" name="rp-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="rp type of multicast configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="multicast-configuration-id" /> - <xml-property name="uniqueProps" value="multicast-configuration-id" /> - <xml-property name="container" value="multicast-configurations" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Vces"> - <xml-properties> - <xml-property name="description" value="Collection of Virtual Customer Edge Routers, used specifically for Gamma. This object is deprecated." /> - </xml-properties> - <xml-root-element name="vces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vce" name="vce" type="inventory.aai.openecomp.org.v10.Vce" /> - </java-attributes> - </java-type> - - <java-type name="Vce"> - <xml-root-element name="vce" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network role being played by this VNF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpeId" name="vpe-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique ID of VPE connected to this VCE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v6VceWanAddress" name="v6-vce-wan-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Valid v6 IP address for the WAN Link on this router. Implied length of /64." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - see child relationships" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroups" name="port-groups" type="inventory.aai.openecomp.org.v10.PortGroups" /> - <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.openecomp.org.v10.Licenses" /> - <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.openecomp.org.v10.Entitlements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual Customer Edge Router, used specifically for Gamma. This object is deprecated." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,interface-name,regional-resource-zone,vpe-id,prov-status,service-id" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="vces" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - </xml-properties> - </java-type> - - <java-type name="PortGroups"> - <xml-root-element name="port-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="portGroup" name="port-group" type="inventory.aai.openecomp.org.v10.PortGroup" /> - </java-attributes> - </java-type> - - <java-type name="PortGroup"> - <xml-root-element name="port-group" /> - <java-attributes> - <xml-element java-attribute="interfaceId" name="interface-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of this Interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkName" name="neutron-network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network name of this Interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroupId" name="port-group-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique ID for port group in vmware" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroupName" name="port-group-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Likely to duplicate value of neutron network name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="switchName" name="switch-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="DVS or standard switch name (should be non-null for port groups associated with DVS)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cvlanTags" name="cvlan-tags" type="inventory.aai.openecomp.org.v10.CvlanTags" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Used to capture the network interfaces of this VCE" /> - <xml-property name="nameProps" value="port-group-name" /> - <xml-property name="indexedProps" value="port-group-id,heat-stack-id,interface-id,interface-name,switch-name" /> - <xml-property name="dependentOn" value="vce" /> - <xml-property name="container" value="port-groups" /> - </xml-properties> - </java-type> - - <java-type name="CvlanTags"> - <xml-root-element name="cvlan-tags" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="cvlanTagEntry" name="cvlan-tag-entry" type="inventory.aai.openecomp.org.v10.CvlanTagEntry" /> - </java-attributes> - </java-type> - - <java-type name="CvlanTagEntry"> - <xml-root-element name="cvlan-tag-entry" /> - <java-attributes> - <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long" xml-key="true"> - <xml-properties> - <xml-property name="description" value="See mis-na-virtualization-platform.yang" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="dependentOn" value="port-group" /> - <xml-property name="indexedProps" value="cvlan-tag" /> - <xml-property name="container" value="cvlan-tags" /> - </xml-properties> - </java-type> - - <java-type name="Vpes"> - <xml-properties> - <xml-property name="description" value="Virtual provider edge router. In 1504, A&AI will populate this object through an M&P and tool provided to operations." /> - </xml-properties> - <xml-root-element name="vpes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vpe" name="vpe" type="inventory.aai.openecomp.org.v10.Vpe" /> - </java-attributes> - </java-type> - - <java-type name="Vpe"> - <xml-root-element name="vpe" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service. Does not map strictly to ASDC services. SOON TO BE DEPRECATED" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use. See child relationships." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Prefix length for oam-address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Gateway address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v4Loopback0IpAddress" name="v4-loopback0-ip-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Temporary location for stag to get to VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="as-number of the VPE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="details regarding the vpe operation, PLEASE DISCONTINUE USE OF THIS FIELD." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="indicates whether vpe access uses SSH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v10.LInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v10.LagInterfaces" /> - <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.openecomp.org.v10.Licenses" /> - <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.openecomp.org.v10.Entitlements" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Relationship-list must include related to info for complex." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,regional-resource-zone,prov-status,service-id" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="vpes" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - </xml-properties> - </java-type> - - <java-type name="Vnfcs"> - <xml-properties> - <xml-property name="description" value="virtual network components associated with a vserver from application controller." /> - </xml-properties> - <xml-root-element name="vnfcs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vnfc" name="vnfc" type="inventory.aai.openecomp.org.v10.Vnfc" /> - </java-attributes> - </java-type> - - <java-type name="Vnfc"> - <xml-root-element name="vnfc" /> - <java-attributes> - <xml-element java-attribute="vnfcName" name="vnfc-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of vnfc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfcFunctionCode" name="vnfc-function-code" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="function code" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfcType" name="vnfc-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="type" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="prov status of this vnfc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by APP-C" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4OamVip" name="ipaddress-v4-oam-vip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Oam V4 vip address of this vnfc" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupNotation" name="group-notation" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group notation of VNFC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="vnfc-name,prov-status,vnfc-type,vnfc-function-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled,group-notation" /> - <xml-property name="searchable" value="vnfc-name" /> - <xml-property name="container" value="vnfcs" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="L3Networks"> - <xml-root-element name="l3-networks" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="l3Network" name="l3-network" type="inventory.aai.openecomp.org.v10.L3Network" /> - </java-attributes> - </java-type> - - <java-type name="L3Network"> - <xml-root-element name="l3-network" /> - <java-attributes> - <xml-element java-attribute="networkId" name="network-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Network ID, should be uuid. Unique across A&AI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network, governed by some naming convention.." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkType" name="network-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the network - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkRole" name="network-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role the network plans - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkTechnology" name="network-technology" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network technology - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of this Interface" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isBoundToVpn" name="is-bound-to-vpn" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Set to true if bound to VPN" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service from ASDC. Does not strictly map to ASDC services. SOON TO BE DEPRECATED" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkRoleInstance" name="network-role-instance" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="network role instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="contrailNetworkFqdn" name="contrail-network-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contrail FQDN for the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="physicalNetworkName" name="physical-network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name associated with the physical network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isProviderNetwork" name="is-provider-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is a provider network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isSharedNetwork" name="is-shared-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is a shared network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isExternalNetwork" name="is-external-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is an external network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnets" name="subnets" type="inventory.aai.openecomp.org.v10.Subnets" /> - <xml-element java-attribute="ctagAssignments" name="ctag-assignments" type="inventory.aai.openecomp.org.v10.CtagAssignments" /> - <xml-element java-attribute="segmentationAssignments" name="segmentation-assignments" type="inventory.aai.openecomp.org.v10.SegmentationAssignments" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" > - <xml-properties> - <xml-property name="description" value="Relates to tenant (or is it a child of tenant), complex, service, vpn-binding" /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Generic network definition" /> - <xml-property name="nameProps" value="network-name" /> - <xml-property name="indexedProps" value="heat-stack-id,network-uuid,service-id,network-id,network-name,model-invariant-id,model-version-id,widget-model-id,widget-model-version,contrail-network-fqdn,network-role" /> - <xml-property name="searchable" value="network-id,network-name" /> - <xml-property name="uniqueProps" value="network-id" /> - <xml-property name="container" value="l3-networks" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - <java-type name="NetworkPolicies"> - <xml-root-element name="network-policies" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="networkPolicy" name="network-policy" type="inventory.aai.openecomp.org.v10.NetworkPolicy" /> - </java-attributes> - </java-type> - <java-type name="NetworkPolicy"> - <xml-root-element name="network-policy" /> - <java-attributes> - <xml-element java-attribute="networkPolicyId" name="network-policy-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID representing unique key to this instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkPolicyFqdn" name="network-policy-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contrail FQDN for the policy" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID for the openStack Heat instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="nameProps" value="network-policy-fqdn" /> - <xml-property name="indexedProps" value="network-policy-id,network-policy-fqdn" /> - <xml-property name="searchable" value="network-policy-id,network-policy-fqdn" /> - <xml-property name="uniqueProps" value="network-policy-id" /> - <xml-property name="container" value="network-policies" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - <java-type name="CtagAssignments"> - <xml-root-element name="ctag-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ctagAssignment" name="ctag-assignment" type="inventory.aai.openecomp.org.v10.CtagAssignment" /> - </java-attributes> - </java-type> - - <java-type name="CtagAssignment"> - <xml-root-element name="ctag-assignment" /> - <java-attributes> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" required="true" type="java.lang.Long" xml-key="true"> - <xml-properties> - <xml-property name="description" value="id." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="vlan-id-inner" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="ctag-assignments" /> - </xml-properties> - </java-type> - - <java-type name="Subnets"> - <xml-root-element name="subnets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="subnet" name="subnet" type="inventory.aai.openecomp.org.v10.Subnet" /> - </java-attributes> - </java-type> - - <java-type name="Subnet"> - <xml-root-element name="subnet" /> - <java-attributes> - <xml-element java-attribute="subnetId" name="subnet-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Subnet ID, should be UUID." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnetName" name="subnet-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name associated with the subnet." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of this subnet" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="gatewayAddress" name="gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="gateway ip address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkStartAddress" name="network-start-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="network start address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cidrMask" name="cidr-mask" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="cidr mask" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ip version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="dhcpEnabled" name="dhcp-enabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="dhcp enabled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dhcpStart" name="dhcp-start" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the start address reserved for use by dhcp" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dhcpEnd" name="dhcp-end" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the last address reserved for use by dhcp" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="subnet-id,subnet-name" /> - <xml-property name="nameProps" value="subnet-name" /> - <xml-property name="uniqueProps" value="subnet-id" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="subnets" /> - </xml-properties> - </java-type> - - <java-type name="GenericVnfs"> - <xml-properties> - <xml-property name="description" value="Collection of VNFs" /> - </xml-properties> - <xml-root-element name="generic-vnfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="genericVnf" name="generic-vnf" type="inventory.aai.openecomp.org.v10.GenericVnf" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="GenericVnf"> - <xml-root-element name="generic-vnf" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service, does not necessarily map to ASDC service models. SOON TO BE DEPRECATED" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - <xml-property name="suggestibleOnSearch" value="true"/> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational. Valid values are in-service-path and out-of-service-path." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, used by MSO." /> - <xml-property name="suggestibleOnSearch" value="true"/> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of managed by company or customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4 Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nmLanV6Address" name="nm-lan-v6-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 Loopback address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementV6Address" name="management-v6-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 management address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcpu" name="vcpu" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcpuUnits" name="vcpu-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vcpu, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vmemory" name="vmemory" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vmemoryUnits" name="vmemory-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vmemory, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdisk" name="vdisk" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdiskUnits" name="vdisk-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vdisk, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="details regarding the generic-vnf operation, PLEASE DISCONTINUE USE OF THIS FIELD." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="indicates whether generic-vnf access uses SSH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementAssignmentGroupUuid" name="entitlement-assignment-group-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the Entitlement group used for licensing VNFs, OBSOLETE - See child relationships." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the specific entitlement resource. OBSOLETE - See child relationships." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseAssignmentGroupUuid" name="license-assignment-group-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the license assignment group. OBSOLETE - See child relationships." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKeyUuid" name="license-key-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the actual license resource. OBSOLETE - See child relationships." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="as-number of the VNF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceSubzone" name="regional-resource-subzone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="represents sub zone of the rr plane" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfType" name="nf-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Generic description of the type of NF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfFunction" name="nf-function" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="English description of Network function that the specific VNF deployment is providing" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfRole" name="nf-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="role in the network that this model will be providing" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfNamingCode" name="nf-naming-code" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="string assigned to this model used for naming purposes" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v10.LInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v10.LagInterfaces" /> - <xml-element java-attribute="vfModules" name="vf-modules" type="inventory.aai.openecomp.org.v10.VfModules" /> - <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.openecomp.org.v10.Licenses" /> - <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.openecomp.org.v10.Entitlements" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="General purpose VNF" /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,nf-type,nf-function,nf-naming-code,nf-role" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="generic-vnfs" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - <xml-property name="containsSuggestibleProps" value="true"/> - <xml-property name="suggestionAliases" value="VNFs"/> - </xml-properties> - </java-type> - - <java-type name="VfModules"> - <xml-properties> - <xml-property name="description" value="Collection of vf-modules, a deployment unit of VNFCs" /> - </xml-properties> - <xml-root-element name="vf-modules" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vfModule" name="vf-module" type="inventory.aai.openecomp.org.v10.VfModule" /> - </java-attributes> - </java-type> - - <java-type name="VfModule"> - <xml-root-element name="vf-module" /> - <java-attributes> - <xml-element java-attribute="vfModuleId" name="vf-module-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of vf-module." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfModuleName" name="vf-module-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of vf-module" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="orchestration status of this vf-module, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isBaseVfModule" name="is-base-vf-module" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is base vf module" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="contrailServiceInstanceFqdn" name="contrail-service-instance-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the Contrail unique ID for a service-instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="moduleIndex" name="module-index" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="the index will track the number of modules of a given type that have been deployed in a VNF, starting with 0, and always choosing the lowest available digit" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="a deployment unit of VNFCs" /> - <xml-property name="indexedProps" value="vf-module-id,vf-module-name,heat-stack-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,contrail-service-instance-fqdn" /> - <xml-property name="searchable" value="vf-module-id,vf-module-name" /> - <xml-property name="dependentOn" value="generic-vnf" /> - <xml-property name="container" value="vf-modules" /> - </xml-properties> - </java-type> - - - <java-type name="LagLinks"> - <xml-properties> - <xml-property name="description" value="Collection of link aggregation connections" /> - </xml-properties> - <xml-root-element name="lag-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lagLink" name="lag-link" type="inventory.aai.openecomp.org.v10.LagLink" /> - </java-attributes> - </java-type> - - <java-type name="LagLink"> - <xml-root-element name="lag-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Alphabetical concatenation of lag-interface names" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="LAG links can connect lag-interfaces" /> - <xml-property name="indexedProps" value="link-name" /> - <xml-property name="container" value="lag-links" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Newvces"> - <xml-properties> - <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce." /> - </xml-properties> - <xml-root-element name="newvces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="newvce" name="newvce" type="inventory.aai.openecomp.org.v10.Newvce" /> - </java-attributes> - </java-type> - - <java-type name="Newvce"> - <xml-root-element name="newvce" /> - <java-attributes> - <xml-element java-attribute="vnfId2" name="vnf-id2" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF, can't use same attribute name right now until we promote this new object" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value, e.g., VPE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4 Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v10.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,prov-status,vnf-id2" /> - <xml-property name="searchable" value="vnf-id2,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id2" /> - <xml-property name="container" value="newvces" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Pnfs"> - <xml-properties> - <xml-property name="description" value="Collection of Physical Network Functions." /> - </xml-properties> - <xml-root-element name="pnfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pnf" name="pnf" type="inventory.aai.openecomp.org.v10.Pnf" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Pnf"> - <xml-root-element name="pnf" /> - <java-attributes> - <xml-element java-attribute="pnfName" name="pnf-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique name of Physical Network Function." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfName2" name="pnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="name of Physical Network Function." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfName2Source" name="pnf-name2-source" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="source of name2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfId" name="pnf-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="id of pnf" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment type. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment vendor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment model. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of managed by company or customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Oam" name="ipaddress-v4-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ipv4-oam-address with new naming convention for IP addresses" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="swVersion" name="sw-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="sw-version is the version of SW for the hosted application on the PNF." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="frameId" name="frame-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of the physical frame (relay rack) where pnf is installed." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Serial number of the device" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Loopback0" name="ipaddress-v4-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Loopback0" name="ipaddress-v6-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Aim" name="ipaddress-v4-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Aim" name="ipaddress-v6-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Oam" name="ipaddress-v6-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 OAM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CANOPI's inventory status. Only set with values exactly as defined by CANOPI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfRole" name="nf-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Nf Role is the role performed by this instance in the network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.openecomp.org.v10.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v10.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="PNF represents a physical network function. typically equipment used in the D1 world." /> - <xml-property name="indexedProps" value="pnf-name,orchestration-status,inv-status" /> - <xml-property name="searchable" value="pnf-name" /> - <xml-property name="uniqueProps" value="pnf-name" /> - <xml-property name="container" value="pnfs" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="PhysicalLinks"> - <xml-properties> - <xml-property name="description" value="Collection of physical connections, typically between p-interfaces" /> - </xml-properties> - <xml-root-element name="physical-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="physicalLink" name="physical-link" type="inventory.aai.openecomp.org.v10.PhysicalLink" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="PhysicalLink"> - <xml-root-element name="physical-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Circuit it" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dualMode" name="dual-mode" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Dual access mode (e.g., primary, secondary" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="To provide information on who manages this circuit. A&AI or 3rd party transport provider" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceProviderName" name="service-provider-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the service Provider on this link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of physical connections, typically between p-interfaces" /> - <xml-property name="indexedProps" value="circuit-id,link-name" /> - <xml-property name="alternateKeys1" value="circuit-id" /> - <xml-property name="container" value="physical-links" /> - <xml-property name="namespace" value="network" /> - <xml-property name="searchable" value="link-name,circuit-id" /> - </xml-properties> - </java-type> - - <java-type name="VigServers"> - <xml-root-element name="vig-servers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vigServer" name="vig-server" type="inventory.aai.openecomp.org.v10.VigServer" /> - </java-attributes> - </java-type> - - <java-type name="VigServer"> - <xml-root-element name="vig-server" /> - <java-attributes> - <xml-element java-attribute="vigAddressType" name="vig-address-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="indicates whether the VIG is for AVPN or INTERNET" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV4Vig" name="ipaddress-v4-vig" type="java.lang.String" > - <xml-properties> - <xml-property name="description" value="v4 IP of the vig server" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV6Vig" name="ipaddress-v6-vig" type="java.lang.String" > - <xml-properties> - <xml-property name="description" value="v6 IP of the vig server" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607" /> - <xml-property name="indexedProps" value="vig-address-type" /> - <xml-property name="dependentOn" value="ipsec-configuration" /> - <xml-property name="container" value="vig-servers" /> - </xml-properties> - </java-type> - - <java-type name="IpsecConfigurations"> - <xml-root-element name="ipsec-configurations" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ipsecConfiguration" name="ipsec-configuration" type="inventory.aai.openecomp.org.v10.IpsecConfiguration" /> - </java-attributes> - </java-type> - - <java-type name="IpsecConfiguration"> - <xml-root-element name="ipsec-configuration" /> - <java-attributes> - <xml-element java-attribute="ipsecConfigurationId" name="ipsec-configuration-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID of this configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedVigAddressType" name="requested-vig-address-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicate the type of VIG server like AVPN, INTERNET, BOTH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedEncryptionStrength" name="requested-encryption-strength" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedDmzType" name="requested-dmz-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="can offer a shared DMZ or a DMZ specific to a customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sharedDmzNetworkAddress" name="shared-dmz-network-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network address of shared DMZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedCustomerName" name="requested-customer-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="If the DMZ is a custom DMZ, this field will indicate the customer information" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikeVersion" name="ike-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="can be 1 or 2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1Authentication" name="ikev1-authentication" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contains values like md5, sha1, sha256, sha384" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1Encryption" name="ikev1-encryption" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encyption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1DhGroup" name="ikev1-dh-group" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1AmGroupId" name="ikev1-am-group-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group name defined in VIG for clients using aggressive mode" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1AmPassword" name="ikev1-am-password" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="pre-shared key for the above group name " /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1SaLifetime" name="ikev1-sa-lifetime" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Lifetime for IKEv1 SA" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecAuthentication" name="ipsec-authentication" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="md5, sha1, sha256, sha384" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecEncryption" name="ipsec-encryption" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecSaLifetime" name="ipsec-sa-lifetime" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Life time for IPSec SA" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecPfs" name="ipsec-pfs" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="enable PFS or not" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="xauthUserId" name="xauth-userid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="user ID for xAuth, sm-user,nmteHostName" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="xauthUserPassword" name="xauth-user-password" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encrypted using the Juniper $9$ algorithm" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dpdInterval" name="dpd-interval" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The time between DPD probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dpdFrequency" name="dpd-frequency" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Maximum number of DPD before claiming the tunnel is down" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - <xml-element java-attribute="vigServers" name="vig-servers" type="inventory.aai.openecomp.org.v10.VigServers" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C" /> - <xml-property name="indexedProps" value="ipsec-configuration-id" /> - <xml-property name="uniqueProps" value="ipsec-configuration-id" /> - <xml-property name="container" value="ipsec-configurations" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - - <java-type name="NotificationEvent"> - <xml-root-element name="notification-event" /> - <java-attributes> - <xml-element java-attribute="cambriaPartition" name="cambria.partition" type="java.lang.String" /> - <xml-element java-attribute="eventHeader" name="event-header" type="inventory.aai.openecomp.org.v10.NotificationEventHeader" /> - <xml-any-element java-attribute="entity" /> - </java-attributes> - </java-type> - <java-type name="NotificationEventHeader"> - <xml-root-element name="notification-event-header" /> - <java-attributes> - <xml-element java-attribute="id" name="id" type="java.lang.String" /> - <xml-element java-attribute="timestamp" name="timestamp" type="java.lang.String" /> - <xml-element java-attribute="sourceName" name="source-name" type="java.lang.String" /> - <xml-element java-attribute="domain" name="domain" type="java.lang.String" /> - <xml-element java-attribute="sequenceNumber" name="sequence-number" type="java.lang.String" /> - <xml-element java-attribute="severity" name="severity" type="java.lang.String" /> - <xml-element java-attribute="eventType" name="event-type" type="java.lang.String" /> - <xml-element java-attribute="version" name="version" type="java.lang.String" /> - <xml-element java-attribute="action" name="action" type="java.lang.String" /> - <xml-element java-attribute="entityType" name="entity-type" type="java.lang.String" /> - <xml-element java-attribute="topEntityType" name="top-entity-type" type="java.lang.String" /> - <xml-element java-attribute="entityLink" name="entity-link" type="java.lang.String" /> - <xml-element java-attribute="status" name="status" type="java.lang.String" /> - </java-attributes> - </java-type> - <java-type name="AaiInternal"> - <xml-root-element name="aai-internal" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="reservedPropNames" name="reserved-prop-names" type="inventory.aai.openecomp.org.v10.ReservedPropNames" /> - <xml-element container-type="java.util.ArrayList" java-attribute="edgePropNames" name="edge-prop-names" type="inventory.aai.openecomp.org.v10.EdgePropNames" /> - </java-attributes> - </java-type> - <java-type name="ReservedPropNames"> - <xml-properties> - <xml-property name="description" value="Internal map to define some reserved properties of a vertex" /> - <xml-property name="uniqueProps" value="aai-unique-key" /> - <xml-property name="indexedProps" value="aai-unique-key,source-of-truth,aai-node-type,aai-uri" /> - </xml-properties> - <xml-root-element name="reserved-prop-names" /> - <java-attributes> - <xml-element java-attribute="lastModSourceOfTruth" name="last-mod-source-of-truth" type="java.lang.String" /> - <xml-element java-attribute="aaiNodeType" name="aai-node-type" type="java.lang.String" /> - <xml-element java-attribute="aaiCreatedTs" name="aai-created-ts" type="java.lang.Long" /> - <xml-element java-attribute="aaiUniqueKey" name="aai-unique-key" type="java.lang.String" /> - <xml-element java-attribute="aaiLastModTs" name="aai-last-mod-ts" type="java.lang.Long" /> - <xml-element java-attribute="sourceOfTruth" name="source-of-truth" type="java.lang.String" /> - <xml-element java-attribute="aaiUri" name="aai-uri" type="java.lang.String" /> - </java-attributes> - </java-type> - <java-type name="EdgePropNames"> - <!-- NOTE that the names of these properties are not consistent and are in mixed case and hyphen case for now --> - <xml-properties> - <xml-property name="description" value="Internal map to define the properties of an edge and interpret the map EdgeRules" /> - <xml-property name="edgeInfo" value="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV" /> - </xml-properties> - <xml-root-element name="edge-prop-names" /> - <java-attributes> - <xml-element java-attribute="edgeLabel" name="edgeLabel" type="java.lang.String" /> - <xml-element java-attribute="direction" name="direction" type="java.lang.String" /> - <xml-element java-attribute="multiplicityRule" name="multiplicityRule" type="java.lang.String" /> - <xml-element java-attribute="isParent" name="isParent" type="java.lang.Boolean" /> - <xml-element java-attribute="usesResource" name="usesResource" type="java.lang.Boolean" /> - <xml-element java-attribute="hasDelTarget" name="hasDelTarget" type="java.lang.Boolean" /> - <xml-element java-attribute="SVC-INFRA" name="SVC-INFRA" type="java.lang.Boolean" /> - <xml-element java-attribute="SVC-INFRA-REV" name="SVC-INFRA-REV" type="java.lang.Boolean" /> - </java-attributes> - </java-type> - - <java-type name="Models"> - <xml-properties> - <xml-property name="description" value="Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models" /> - </xml-properties> - <xml-root-element name="models" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="model" name="model" type="inventory.aai.openecomp.org.v10.Model" /> - </java-attributes> - </java-type> - - <java-type name="Model"> - <xml-root-element name="model" /> - <xml-properties> - <xml-property name="description" value="Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models, independent of version" /> - <xml-property name="nameProps" value="model-type" /> - <xml-property name="indexedProps" value="model-invariant-id,model-type" /> - <xml-property name="uniqueProps" value="model-invariant-id" /> - <xml-property name="container" value="models" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - <java-attributes> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to the main definition of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVers" name="model-vers" type="inventory.aai.openecomp.org.v10.ModelVers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - </java-type> - - - <java-type name="ModelVers"> - <xml-root-element name="model-vers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelVer" name="model-ver" type="inventory.aai.openecomp.org.v10.ModelVer" /> - </java-attributes> - </java-type> - - <java-type name="ModelVer"> - <xml-root-element name="model-ver" /> - <xml-properties> - <xml-property name="description" value="Subgraph definition provided by ASDC to describe a specific version of an inventory asset and its connections related to ASDC models" /> - <xml-property name="nameProps" value="model-name" /> - <xml-property name="indexedProps" value="model-version-id,model-name,model-version" /> - <xml-property name="uniqueProps" value="model-version-id" /> - <xml-property name="container" value="model-vers" /> - </xml-properties> - <java-attributes> - <xml-element java-attribute="modelVersionId" name="model-version-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the model, which can change from version to version." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.openecomp.org.v10.ModelElements" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v10.Metadata" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ModelElements"> - <xml-root-element name="model-elements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelElement" name="model-element" type="inventory.aai.openecomp.org.v10.ModelElement" /> - </java-attributes> - </java-type> - - <java-type name="ModelElement"> - <xml-properties> - <xml-property name="description" value="Defines how other models combine to make up a higher-level model." /> - <xml-property name="uniqueProps" value="model-element-uuid" /> - <xml-property name="indexedProps" value="model-element-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="model-elements" /> - </xml-properties> - <xml-root-element name="model-element" /> - <java-attributes> - <xml-element java-attribute="modelElementUuid" name="model-element-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="newDataDelFlag" name="new-data-del-flag" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates whether this element was created as part of instantiation from this model" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cardinality" name="cardinality" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="How many of this type of element are required/allowed" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="linkagePoints" name="linkage-points" type="java.lang.String" > - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.openecomp.org.v10.ModelElements"> - <xml-properties> - <xml-property name="description" value="Defines how other models combine to make up a higher-level model" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelConstraints" name="model-constraints" type="inventory.aai.openecomp.org.v10.ModelConstraints"> - <xml-properties> - <xml-property name="description" value="Describes new constraints on this model element that are not part of that model's definition" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ModelConstraints"> - <xml-root-element name="model-constraints" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelConstraint" name="model-constraint" type="inventory.aai.openecomp.org.v10.ModelConstraint" /> - </java-attributes> - </java-type> - - <java-type name="ModelConstraint"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="model-constraint-uuid" /> - <xml-property name="indexedProps" value="model-constraint-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="model-constraints" /> - </xml-properties> - <xml-root-element name="model-constraint" /> - <java-attributes> - <xml-element java-attribute="modelConstraintUuid" name="model-constraint-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constrainedElementSetUuidToReplace" name="constrained-element-set-uuid-to-replace" required="true" type="java.lang.String" /> - <xml-element java-attribute="constrainedElementSets" name="constrained-element-sets" type="inventory.aai.openecomp.org.v10.ConstrainedElementSets" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="ConstrainedElementSets"> - <xml-root-element name="constrained-element-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="constrainedElementSet" name="constrained-element-set" type="inventory.aai.openecomp.org.v10.ConstrainedElementSet" /> - </java-attributes> - </java-type> - - <java-type name="ConstrainedElementSet"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="constrained-element-set-uuid" /> - <xml-property name="indexedProps" value="constrained-element-set-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="constrained-element-sets" /> - </xml-properties> - <xml-root-element name="constrained-element-set" /> - <java-attributes> - <xml-element java-attribute="constrainedElementSetUuid" name="constrained-element-set-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="checkType" name="check-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="elementChoiceSets" name="element-choice-sets" type="inventory.aai.openecomp.org.v10.ElementChoiceSets" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ElementChoiceSets"> - <xml-root-element name="element-choice-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="elementChoiceSet" name="element-choice-set" type="inventory.aai.openecomp.org.v10.ElementChoiceSet" /> - </java-attributes> - </java-type> - - <java-type name="ElementChoiceSet"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="element-choice-set-uuid" /> - <xml-property name="indexedProps" value="element-choice-set-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="element-choice-sets" /> - </xml-properties> - <xml-root-element name="element-choice-set" /> - <java-attributes> - <xml-element java-attribute="elementChoiceSetUuid" name="element-choice-set-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="elementChoiceSetName" name="element-choice-set-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="cardinality" name="cardinality" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.openecomp.org.v10.ModelElements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueries"> - <xml-root-element name="named-queries" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="namedQuery" name="named-query" type="inventory.aai.openecomp.org.v10.NamedQuery" /> - </java-attributes> - </java-type> - - <java-type name="NamedQuery"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="nameProps" value="named-query-name" /> - <xml-property name="uniqueProps" value="named-query-uuid" /> - <xml-property name="indexedProps" value="named-query-uuid,named-query-name" /> - <xml-property name="container" value="named-queries" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - <xml-root-element name="named-query" /> - <java-attributes> - <xml-element java-attribute="namedQueryUuid" name="named-query-uuid" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="namedQueryName" name="named-query-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="namedQueryVersion" name="named-query-version" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="requiredInputParams" name="required-input-param" type="java.lang.String" > - <xml-element-wrapper name="required-input-params" /> - </xml-element> - <xml-element java-attribute="description" name="description" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.openecomp.org.v10.NamedQueryElements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueryElements"> - <xml-root-element name="named-query-elements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="namedQueryElement" name="named-query-element" type="inventory.aai.openecomp.org.v10.NamedQueryElement" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueryElement"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="named-query-element-uuid" /> - <xml-property name="indexedProps" value="named-query-element-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="named-query-elements" /> - </xml-properties> - <xml-root-element name="named-query-element" /> - <java-attributes> - <xml-element java-attribute="namedQueryElementUuid" name="named-query-element-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="propertyLimitDesc" name="property-limit-desc" type="java.lang.String" /> - <xml-element java-attribute="doNotOutput" name="do-not-output" type="java.lang.String" /> - <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.openecomp.org.v10.NamedQueryElements" /> - <xml-element java-attribute="relatedLookups" name="related-lookups" type="inventory.aai.openecomp.org.v10.RelatedLookups" /> - <xml-element java-attribute="propertyConstraints" name="property-constraints" type="inventory.aai.openecomp.org.v10.PropertyConstraints" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="RelatedLookups"> - <xml-root-element name="related-lookups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="relatedLookup" name="related-lookup" type="inventory.aai.openecomp.org.v10.RelatedLookup" /> - </java-attributes> - </java-type> - - <java-type name="RelatedLookup"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="related-lookup-uuid" /> - <xml-property name="indexedProps" value="related-lookup-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="related-lookups" /> - </xml-properties> - <xml-root-element name="related-lookup" /> - <java-attributes> - <xml-element java-attribute="relatedLookupUuid" name="related-lookup-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sourceNodeType" name="source-node-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="sourceNodeProperty" name="source-node-property" required="true" type="java.lang.String" /> - <xml-element java-attribute="targetNodeType" name="target-node-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="targetNodeProperty" name="target-node-property" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="PropertyConstraints"> - <xml-root-element name="property-constraints" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyConstraint" name="property-constraint" type="inventory.aai.openecomp.org.v10.PropertyConstraint" /> - </java-attributes> - </java-type> - - <java-type name="PropertyConstraint"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="property-constraint-uuid" /> - <xml-property name="indexedProps" value="property-constraint-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="property-constraints" /> - </xml-properties> - <xml-root-element name="property-constraint" /> - <java-attributes> - <xml-element java-attribute="propertyConstraintUuid" name="property-constraint-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="propertyName" name="property-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ModelAndNamedQuerySearch"> - <xml-properties> - <xml-property name="description" value="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="model-and-named-query-search" /> - <java-attributes> - <xml-element java-attribute="queryParameters" name="query-parameters" type="inventory.aai.openecomp.org.v10.QueryParameters" /> - <xml-element java-attribute="instanceFilters" name="instance-filters" type="inventory.aai.openecomp.org.v10.InstanceFilters" /> - <xml-element java-attribute="secondaryFilts" name="secondary-filts" type="inventory.aai.openecomp.org.v10.SecondaryFilts" /> - <xml-element java-attribute="topNodeType" name="top-node-type" type="java.lang.String" /> - <xml-element java-attribute="secondaryFilterCutPoint" name="secondary-filter-cut-point" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="QueryParameters"> - <xml-properties> - <xml-property name="description" value="QueryParameters for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="query-parameters" /> - <java-attributes> - <xml-element java-attribute="namedQuery" name="named-query" type="inventory.aai.openecomp.org.v10.NamedQuery" /> - <xml-element java-attribute="model" name="model" type="inventory.aai.openecomp.org.v10.OverloadedModel" /> - </java-attributes> - </java-type> - - <java-type name="OverloadedModel"> - <xml-root-element name="overloaded-model" /> - <xml-properties> - <xml-property name="description" value="Allows for legacy POST of old-style and new-style models" /> - </xml-properties> - <java-attributes> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to the main definition of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelNameVersionId" name="model-name-version-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the model, which can change from version to version." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelId" name="model-id" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Invariant unique ID which does not change from version to version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVers" name="model-vers" type="inventory.aai.openecomp.org.v10.ModelVers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="InstanceFilters"> - <xml-properties> - <xml-property name="description" value="InstanceFilters for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="instance-filters" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="instanceFilter" name="instance-filter" type="inventory.aai.openecomp.org.v10.InstanceFilter" /> - </java-attributes> - </java-type> - - <java-type name="InstanceFilter"> - <xml-properties> - <xml-property name="description" value="InstanceFilter for performing a named-query or model query" /> - <xml-property name="container" value="instance-filters" /> - </xml-properties> - <xml-root-element name="instance-filter" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilts"> - <xml-properties> - <xml-property name="description" value="SecondaryFilts for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="secondary-filts" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilt" name="secondary-filt" type="inventory.aai.openecomp.org.v10.SecondaryFilt" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilt"> - <xml-properties> - <xml-property name="description" value="SecondaryFilt for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="secondary-filt" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any" /> - </java-attributes> - </java-type> - - <java-type name="Properties"> - <xml-properties> - <xml-property name="description" value="Property holder for query properties or instance properties" /> - </xml-properties> - <xml-root-element name="properties" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ResponseList"> - <xml-properties> - <xml-property name="description" value="Response container for the results of a named-query or model query" /> - </xml-properties> - <xml-root-element name="response-list" /> - <java-attributes> - <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.openecomp.org.v10.InventoryResponseItems" /> - </java-attributes> - </java-type> - - <java-type name="InventoryResponseItems"> - <xml-properties> - <xml-property name="description" value="Container for inventory items in response list" /> - <xml-property name="container" value="response-list" /> - </xml-properties> - <xml-root-element name="inventory-response-items" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryResponseItem" name="inventory-response-item" type="inventory.aai.openecomp.org.v10.InventoryResponseItem" /> - </java-attributes> - </java-type> - - <java-type name="InventoryResponseItem"> - <xml-properties> - <xml-property name="description" value="Inventory item for response list" /> - <xml-property name="container" value="inventory-response-items" /> - </xml-properties> - <xml-root-element name="inventory-response-item" /> - <java-attributes> - <xml-element java-attribute="modelName" name="model-name" type="java.lang.String" /> - <xml-any-element java-attribute="item" /> - <xml-element java-attribute="extraProperties" name="extra-properties" type="inventory.aai.openecomp.org.v10.ExtraProperties" /> - <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.openecomp.org.v10.InventoryResponseItems" /> - </java-attributes> - </java-type> - - <java-type name="ExtraProperties"> - <xml-properties> - <xml-property name="description" value="Extra properties for inventory item for response list" /> - </xml-properties> - <xml-root-element name="extra-properties" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="extraProperty" name="extra-property" type="inventory.aai.openecomp.org.v10.ExtraProperty" /> - </java-attributes> - </java-type> - - <java-type name="ExtraProperty"> - <xml-root-element name="extra-property" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-any-element java-attribute="propertyValue" lax="true" name="property-value" /> - </java-attributes> - </java-type> - - <java-type name="RouteTableReferences"> - <xml-properties> - <xml-property name="description" value="Collection of openstack route table references" /> - </xml-properties> - <xml-root-element name="route-table-references" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="routeTableReference" name="route-table-reference" type="inventory.aai.openecomp.org.v10.RouteTableReference" /> - </java-attributes> - </java-type> - - <java-type name="RouteTableReference"> - <xml-root-element name="route-table-reference" /> - <java-attributes> - <xml-element java-attribute="routeTableReferenceId" name="route-table-reference-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeTableReferenceFqdn" name="route-table-reference-fqdn" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="FQDN entry in the route table." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="Openstack route table reference." /> - <xml-property name="nameProps" value="route-table-reference-fqdn" /> - <xml-property name="uniqueProps" value="route-table-reference-id" /> - <xml-property name="indexedProps" value="route-table-reference-id,route-table-reference-fqdn" /> - <xml-property name="container" value="route-table-references" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="InstanceGroups"> - <xml-properties> - <xml-property name="description" value="Collection of openstack route table references" /> - </xml-properties> - <xml-root-element name="instance-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="instanceGroup" name="instance-group" type="inventory.aai.openecomp.org.v10.InstanceGroup" /> - </java-attributes> - </java-type> - - <java-type name="InstanceGroup"> - <xml-root-element name="instance-group" /> - <java-attributes> - <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Instance Group ID, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="description" name="description" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Descriptive text to help identify the usage of this instance-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="type" name="type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Only valid value today is lower case ha for high availability" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subType" name="sub-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Valid values for ha type are [geo-activeactive, geo-activestandby, local-activeactive, local-activestandby]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="General mechanism for grouping instances" /> - <xml-property name="nameProps" value="description" /> - <xml-property name="uniqueProps" value="id" /> - <xml-property name="indexedProps" value="id,description,type,sub-type" /> - <xml-property name="container" value="instance-groups" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - - <java-type name="SegmentationAssignments"> - <xml-properties> - <xml-property name="description" value="Collection of openstack segmentation assignments" /> - </xml-properties> - <xml-root-element name="segmentation-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="segmentationAssignment" name="segmentation-assignment" type="inventory.aai.openecomp.org.v10.SegmentationAssignment" /> - </java-attributes> - </java-type> - - <java-type name="SegmentationAssignment"> - <xml-root-element name="segmentation-assignment" /> - <java-attributes> - <xml-element java-attribute="segmentationId" name="segmentation-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack segmentation assignment." /> - <xml-property name="indexedProps" value="segmentation-id" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="segmentation-assignments" /> - </xml-properties> - </java-type> - - <java-type name="AllottedResources"> - <xml-properties> - <xml-property name="description" value="This object is used to store slices of services being offered" /> - </xml-properties> - <xml-root-element name="allotted-resources" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="allottedResource" name="allotted-resource" type="inventory.aai.openecomp.org.v10.AllottedResource" /> - </java-attributes> - </java-type> - - <java-type name="AllottedResource"> - <xml-root-element name="allotted-resource" /> - <java-attributes> - <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Allotted Resource id UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="description" name="description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The descriptive information assigned to this allotted resource instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Link back to more information in the controller" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="type" name="type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Generic description of the type of allotted resource." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="role" name="role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="role in the network that this resource will be providing." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tunnelXconnects" name="tunnel-xconnects" type="inventory.aai.openecomp.org.v10.TunnelXconnects" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="Represents a slice or partial piece of a resource that gets separately allotted" /> - <xml-property name="nameProps" value="description" /> - <xml-property name="uniqueProps" value="id" /> - <xml-property name="indexedProps" value="id,model-invariant-id,model-version-id,type,role" /> - <xml-property name="dependentOn" value="service-instance" /> - <xml-property name="container" value="allotted-resources" /> - <!-- <xml-property name="namespace" value="network" /> --> - </xml-properties> - </java-type> - - <java-type name="TunnelXconnects"> - <xml-properties> - <xml-property name="description" value="This object is used to store the specific tunnel cross connect aspects of an allotted resource" /> - </xml-properties> - <xml-root-element name="tunnel-xconnects" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="tunnelXconnect" name="tunnel-xconnect" type="inventory.aai.openecomp.org.v10.TunnelXconnect" /> - </java-attributes> - </java-type> - - <java-type name="TunnelXconnect"> - <xml-root-element name="tunnel-xconnect" /> - <java-attributes> - <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Allotted Resource id UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN uplink bandwidth for WAN1" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN downlink bandwidth for WAN1" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN uplink bandwidth for WAN2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN downlink bandwidth for WAN2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="Represents the specifics of a tunnel cross connect piece of a resource that gets separately allotted" /> - <xml-property name="uniqueProps" value="id" /> - <xml-property name="indexedProps" value="id" /> - <xml-property name="dependentOn" value="allotted-resource" /> - <xml-property name="container" value="tunnel-xconnects" /> - <!-- <xml-property name="namespace" value="network" /> --> - </xml-properties> - </java-type> - - <java-type name="Entitlements"> - <xml-properties> - <xml-property name="description" value="Entitlements, keyed by group-uuid and resource-uuid, related to license management" /> - </xml-properties> - <xml-root-element name="entitlements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="entitlement" name="entitlement" type="inventory.aai.openecomp.org.v10.Entitlement" /> - </java-attributes> - </java-type> - - <java-type name="Entitlement"> - <xml-root-element name="entitlement" /> - <java-attributes> - <xml-element java-attribute="groupUuid" name="group-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID for the entitlement group the resource comes from, should be uuid." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceUuid" name="resource-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of an entitlement resource. " /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Metadata for entitlement group." /> - <xml-property name="indexedProps" value="group-uuid,resource-uuid" /> - <xml-property name="dependentOn" value="generic-vnf,vce,vpe" /> - <xml-property name="container" value="entitlements" /> - </xml-properties> - </java-type> - - - <java-type name="Licenses"> - <xml-properties> - <xml-property name="description" value="Licenses to be allocated across resources, keyed by group-uuid and resource-uuid, related to license management" /> - </xml-properties> - <xml-root-element name="licenses" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="license" name="license" type="inventory.aai.openecomp.org.v10.License" /> - </java-attributes> - </java-type> - - <java-type name="License"> - <xml-root-element name="license" /> - <java-attributes> - <xml-element java-attribute="groupUuid" name="group-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID for the license group the resource belongs to, should be uuid." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceUuid" name="resource-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of a license resource. " /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Metadata for license group." /> - <xml-property name="indexedProps" value="group-uuid,resource-uuid" /> - <xml-property name="dependentOn" value="generic-vnf,vce,vpe" /> - <xml-property name="container" value="licenses" /> - </xml-properties> - </java-type> - - <java-type name="Vnf"> - <xml-root-element name="vnf"/> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Abstract vnf class" /> - <xml-property name="indexedProps" value="vnf-id" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="inheritors" value="vce,vpe,generic-vnf" /> - <xml-property name="abstract" value="true" /> - </xml-properties> - </java-type> - - <java-type name="Zones"> - <xml-properties> - <xml-property name="description" value="Collection of zones" /> - </xml-properties> - <xml-root-element name="zones" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="zone" name="zone" type="inventory.aai.openecomp.org.v10.Zone" /> - </java-attributes> - </java-type> - - <java-type name="Zone"> - <xml-root-element name="zone" /> - <java-attributes> - <xml-element java-attribute="zoneId" name="zone-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Code assigned by AIC to the zone" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="zoneName" name="zone-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="English name associated with the zone" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="designType" name="design-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Design of zone [Medium/Large…]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="zoneContext" name="zone-context" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Context of zone [production/test]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="status" name="status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Status of a zone." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="A zone is a grouping of assets in a location homing to the same connections into the CBB" /> - <xml-property name="nameProps" value="zone-name" /> - <xml-property name="indexedProps" value="zone-id,design-type,zone-context" /> - <xml-property name="uniqueProps" value="zone-id" /> - <xml-property name="container" value="zones" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - <java-type name="RouteTargets"> - <xml-properties> - <xml-property name="description" value="Collection of route target information" /> - </xml-properties> - <xml-root-element name="route-targets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="routeTarget" name="route-target" type="inventory.aai.openecomp.org.v10.RouteTarget" /> - </java-attributes> - </java-type> - <java-type name="RouteTarget"> - <xml-root-element name="route-target" /> - <java-attributes> - <xml-element java-attribute="globalRouteTarget" name="global-route-target" required="true" xml-key="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Number used to identify an RT, globally unique in the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeTargetRole" name="route-target-role" required="true" xml-key="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role assigned to this route target" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v10.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Route target information" /> - <xml-property name="container" value="route-targets" /> - <xml-property name="dependentOn" value="vpn-binding" /> - <xml-property name="canBeLinked" value="true" /> - </xml-properties> - </java-type> - </java-types> -</xml-bindings> diff --git a/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v11.xml b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v11.xml deleted file mode 100644 index ecf163e097..0000000000 --- a/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v11.xml +++ /dev/null @@ -1,6307 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- - ============LICENSE_START======================================================= - org.openecomp.aai - ================================================================================ - Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - ================================================================================ - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ============LICENSE_END========================================================= - --> - -<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="inventory.aai.onap.org.v11" xml-mapping-metadata-complete="true"> - <xml-schema element-form-default="QUALIFIED"> - <xml-ns namespace-uri="http://org.openecomp.aai.inventory/v11" /> - </xml-schema> - <java-types> - <java-type name="Inventory"> - <xml-root-element name="inventory" /> - <java-attributes> - <xml-element java-attribute="search" name="search" type="inventory.aai.onap.org.v11.Search" /> - <xml-element java-attribute="actions" name="actions" type="inventory.aai.onap.org.v11.Actions" /> - <xml-element java-attribute="cloudInfrastructure" name="cloud-infrastructure" type="inventory.aai.onap.org.v11.CloudInfrastructure" /> - <xml-element java-attribute="externalSystem" name="external-system" type="inventory.aai.onap.org.v11.ExternalSystem" /> - <xml-element java-attribute="business" name="business" type="inventory.aai.onap.org.v11.Business" /> - <xml-element java-attribute="serviceDesignAndCreation" name="service-design-and-creation" type="inventory.aai.onap.org.v11.ServiceDesignAndCreation" /> - <xml-element java-attribute="network" name="network" type="inventory.aai.onap.org.v11.Network" /> - <xml-element java-attribute="aaiInternal" name="aai-internal" type="inventory.aai.onap.org.v11.AaiInternal" /> - <xml-element java-attribute="nodes" name="nodes" type="inventory.aai.onap.org.v11.Nodes"/> - </java-attributes> - </java-type> - - <java-type name="Nodes"> - <xml-root-element name="nodes" /> - </java-type> - <java-type name="Search"> - <xml-root-element name="search" /> - <java-attributes> - <xml-element java-attribute="edgeTagQueryResult" name="edge-tag-query-result" type="inventory.aai.onap.org.v11.EdgeTagQueryResult" /> - <xml-element java-attribute="edgeTagQueryRequest" name="edge-tag-query-request" type="inventory.aai.onap.org.v11.EdgeTagQueryRequest" /> - <xml-element java-attribute="searchResults" name="search-results" type="inventory.aai.onap.org.v11.SearchResults" /> - <xml-element java-attribute="sdnZoneResponse" name="sdn-zone-response" type="inventory.aai.onap.org.v11.SdnZoneResponse" /> - </java-attributes> - </java-type> - - <java-type name="EdgeTagQueryResult"> - <xml-root-element name="edge-tag-query-result" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.onap.org.v11.TaggedInventoryItemList" /> - </java-attributes> - </java-type> - - <java-type name="TaggedInventoryItemList"> - <xml-root-element name="tagged-inventory-item-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItem" name="inventory-item" type="inventory.aai.onap.org.v11.InventoryItem" /> - </java-attributes> - </java-type> - - <java-type name="InventoryItem"> - <xml-root-element name="inventory-item" /> - <java-attributes> - <xml-element java-attribute="inventoryItemType" name="inventory-item-type" type="java.lang.String" /> - <xml-element java-attribute="inventoryItemLink" name="inventory-item-link" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItemData" name="inventory-item-data" type="inventory.aai.onap.org.v11.InventoryItemData" /> - <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.onap.org.v11.TaggedInventoryItemList" /> - </java-attributes> - </java-type> - - <java-type name="InventoryItemData"> - <xml-root-element name="inventory-item-data" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="EdgeTagQueryRequest"> - <xml-root-element name="edge-tag-query-request" /> - <java-attributes> - <xml-element java-attribute="edgeTag" name="edge-tag" type="java.lang.String" /> - <xml-element java-attribute="resultDetail" name="result-detail" type="java.lang.String" /> - <xml-element java-attribute="startNodeType" name="start-node-type" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="startNodeFilter" name="start-node-filter" type="inventory.aai.onap.org.v11.StartNodeFilter" /> - <xml-element container-type="java.util.ArrayList" java-attribute="includeNodeFilter" name="include-node-filter" type="inventory.aai.onap.org.v11.IncludeNodeFilter" /> - <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilter" name="secondary-filter" type="inventory.aai.onap.org.v11.SecondaryFilter" /> - </java-attributes> - </java-type> - - <java-type name="StartNodeFilter"> - <xml-root-element name="start-node-filter" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="IncludeNodeFilter"> - <xml-root-element name="include-node-filter" /> - <java-attributes> - <xml-element java-attribute="includeNodeType" name="include-node-type" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilter"> - <xml-root-element name="secondary-filter" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="filterType" name="filter-type" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="SearchResults"> - <xml-root-element name="search-results" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="resultData" name="result-data" type="inventory.aai.onap.org.v11.ResultData" /> - </java-attributes> - </java-type> - - <java-type name="ResultData"> - <xml-root-element name="result-data" /> - <java-attributes> - <xml-element java-attribute="resourceType" name="resource-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The specific type of node in the A&AI graph" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceLink" name="resource-link" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The URL to the specific resource" /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="SdnZoneResponse"> - <xml-root-element name="sdn-zone-response" /> - <java-attributes> - <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v11.OamNetworks" /> - <xml-element container-type="java.util.ArrayList" java-attribute="azAndDvsSwitches" name="az-and-dvs-switches" type="inventory.aai.onap.org.v11.AzAndDvsSwitches" /> - </java-attributes> - </java-type> - - <java-type name="AzAndDvsSwitches"> - <xml-root-element name="az-and-dvs-switches" /> - <java-attributes> - <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v11.DvsSwitches" /> - <xml-element java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.onap.org.v11.AvailabilityZone" /> - </java-attributes> - </java-type> - - <java-type name="Actions"> - <xml-properties> - <xml-property name="description" value="APIs that are more action related than REST (e.g., notify, update)." /> - </xml-properties> - <xml-root-element name="actions" /> - <java-attributes> - <xml-element java-attribute="update" name="update" type="inventory.aai.onap.org.v11.Update" /> - <xml-element java-attribute="notify" name="notify" type="inventory.aai.onap.org.v11.Notify" /> - </java-attributes> - </java-type> - - <java-type name="Update"> - <xml-properties> - <xml-property name="description" value="Serves a PATCH like function. Does not enforce concurrency control. Clear each usage with AAI team." /> - </xml-properties> - <xml-root-element name="update" /> - <java-attributes> - <xml-element java-attribute="updateNodeType" name="update-node-type" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="updateNodeKey" name="update-node-key" type="inventory.aai.onap.org.v11.UpdateNodeKey" /> - <xml-element java-attribute="updateNodeUri" name="update-node-uri" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="action" name="action" type="inventory.aai.onap.org.v11.Action" /> - </java-attributes> - </java-type> - - <java-type name="Action"> - <xml-root-element name="action" /> - <java-attributes> - <xml-element java-attribute="actionType" name="action-type" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="actionData" name="action-data" type="inventory.aai.onap.org.v11.ActionData" /> - </java-attributes> - </java-type> - - <java-type name="ActionData"> - <xml-root-element name="action-data" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="UpdateNodeKey"> - <xml-root-element name="update-node-key" /> - <java-attributes> - <xml-element java-attribute="keyName" name="key-name" type="java.lang.String" /> - <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="Notify"> - <xml-root-element name="notify" /> - <java-attributes> - <xml-element java-attribute="eventId" name="event-id" required="true" type="java.lang.String" /> - <xml-element java-attribute="nodeType" name="node-type" type="java.lang.String" /> - <xml-element java-attribute="eventTrigger" name="event-trigger" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="keyData" name="key-data" type="inventory.aai.onap.org.v11.KeyData" /> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="KeyData"> - <xml-root-element name="key-data" /> - <java-attributes> - <xml-element java-attribute="keyName" name="key-name" type="java.lang.String" /> - <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ExternalSystem"> - <xml-properties> - <xml-property name="description" value="Namespace for external system." /> - </xml-properties> - <xml-root-element name="external-system" /> - <java-attributes> - <xml-element java-attribute="esrEmsList" name="esr-ems-list" type="inventory.aai.onap.org.v11.EsrEmsList" /> - <xml-element java-attribute="esrVnfmList" name="esr-vnfm-list" type="inventory.aai.onap.org.v11.EsrVnfmList" /> - <xml-element java-attribute="esrThirdpartySdncList" name="esr-thirdparty-sdnc-list" type="inventory.aai.onap.org.v11.EsrThirdpartySdncList" /> - </java-attributes> - </java-type> - - <java-type name="EsrEmsList"> - <xml-root-element name="esr-ems-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="esrEms" name="esr-ems" type="inventory.aai.onap.org.v11.EsrEms" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="EsrEms"> - <xml-root-element name="esr-ems" /> - <java-attributes> - <xml-element java-attribute="emsId" name="ems-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of EMS." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="esrSystemInfoList" name="esr-system-info-list" type="inventory.aai.onap.org.v11.EsrSystemInfoList" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Persist EMS address information used by EMS driver." /> - <xml-property name="indexedProps" value="ems-id" /> - <xml-property name="searchable" value="ems-id" /> - <xml-property name="container" value="esr-ems-list" /> - <xml-property name="namespace" value="external-system" /> - </xml-properties> - </java-type> - - <java-type name="EsrVnfmList"> - <xml-root-element name="esr-vnfm-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="esrVnfm" name="esr-vnfm" type="inventory.aai.onap.org.v11.EsrVnfm" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="EsrVnfm"> - <xml-root-element name="esr-vnfm" /> - <java-attributes> - <xml-element java-attribute="vnfmId" name="vnfm-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of VNFM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vimId" name="vim-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indecate the VIM to deploy VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="certificateUrl" name="certificate-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="certificate url of VNFM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="esrSystemInfoList" name="esr-system-info-list" type="inventory.aai.onap.org.v11.EsrSystemInfoList" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Persist VNFM address information used by VF-C." /> - <xml-property name="indexedProps" value="vnfm-id" /> - <xml-property name="searchable" value="vnfm-id" /> - <xml-property name="container" value="esr-vnfm-list" /> - <xml-property name="namespace" value="external-system" /> - </xml-properties> - </java-type> - - <java-type name="EsrThirdpartySdncList"> - <xml-root-element name="esr-thirdparty-sdnc-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="esrThirdpartySdnc" name="esr-thirdparty-sdnc" type="inventory.aai.onap.org.v11.EsrThirdpartySdnc" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="EsrThirdpartySdnc"> - <xml-root-element name="esr-thirdparty-sdnc" /> - <java-attributes> - <xml-element java-attribute="thirdpartySdncId" name="thirdparty-sdnc-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of SDNC." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="location" name="location" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="used for DC type to indicate the location of SDNC, such as Core or Edge." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="productName" name="product-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="password used to access SDNC server." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="esrSystemInfoList" name="esr-system-info-list" type="inventory.aai.onap.org.v11.EsrSystemInfoList" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Persist SDNC address information used by ONAP SDNC." /> - <xml-property name="indexedProps" value="sdnc-id" /> - <xml-property name="searchable" value="sdnc-id" /> - <xml-property name="container" value="esr-thirdparty-sdnc-list" /> - <xml-property name="namespace" value="external-system" /> - </xml-properties> - </java-type> - - <java-type name="EsrSystemInfoList"> - <xml-root-element name="esr-system-info-list" /> - <xml-properties> - <xml-property name="description" value="Collection of persistent block-level external system auth info." /> - </xml-properties> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="esrSystemInfo" name="esr-system-info" type="inventory.aai.onap.org.v11.EsrSystemInfo" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="EsrSystemInfo"> - <xml-root-element name="esr-system-info" /> - <java-attributes> - <xml-element java-attribute="esrSystemInfoId" name="esr-system-info-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of esr system info." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="systemName" name="system-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="name of external system." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="type" name="type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="type of external systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vendor" name="vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="vendor of external systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="version" name="version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="version of external systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceUrl" name="service-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="url used to access external systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="userName" name="user-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="username used to access external systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="password" name="password" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="password used to access external systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="systemType" name="system-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="it could be vim/vnfm/thirdparty-sdnc/ems-resource/ems-performance/ems-alarm." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="protocol" name="protocol" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="protocol of third party SDNC, for example netconf/snmp." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sslCacert" name="ssl-cacert" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ca file content if enabled ssl on auth-url." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="sslInsecure" name="ssl-insecure" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Whether to verify VIM's certificate." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipAddress" name="ip-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="service IP of ftp server." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="port" name="port" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="service port of ftp server." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudDomain" name="cloud-domain" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="domain info for authentication." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="defaultTenant" name="default-tenant" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="default tenant of VIM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="passive" name="passive" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="ftp passive mode or not." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="remotepath" name="remote-path" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="resource or performance data file path." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="systemStatus" name="system-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the status of external system." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Persist common address information of external systems." /> - <xml-property name="indexedProps" value="esr-system-info-id,system-name,system-type" /> - <xml-property name="searchable" value="esr-system-info-id,system-name,system-type" /> - <xml-property name="container" value="esr-system-info-list" /> - <xml-property name="dependentOn" value="cloud-region,esr-ems,esr-vnfm,esr-thirdparty-sdnc" /> - </xml-properties> - </java-type> - - <java-type name="CloudInfrastructure"> - <xml-properties> - <xml-property name="description" value="Namespace for cloud infrastructure." /> - </xml-properties> - <xml-root-element name="cloud-infrastructure" /> - <java-attributes> - <xml-element java-attribute="complexes" name="complexes" type="inventory.aai.onap.org.v11.Complexes" /> - <xml-element java-attribute="cloudRegions" name="cloud-regions" type="inventory.aai.onap.org.v11.CloudRegions" /> - <xml-element java-attribute="networkProfiles" name="network-profiles" type="inventory.aai.onap.org.v11.NetworkProfiles" /> - <xml-element java-attribute="pservers" name="pservers" type="inventory.aai.onap.org.v11.Pservers" /> - <xml-element java-attribute="virtualDataCenters" name="virtual-data-centers" type="inventory.aai.onap.org.v11.VirtualDataCenters" /> - </java-attributes> - </java-type> - - <java-type name="CloudRegions"> - <xml-root-element name="cloud-regions" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="cloudRegion" name="cloud-region" type="inventory.aai.onap.org.v11.CloudRegion" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="CloudRegion"> - <xml-root-element name="cloud-region" /> - <java-attributes> - <xml-element java-attribute="cloudOwner" name="cloud-owner" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudRegionId" name="cloud-region-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudType" name="cloud-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the cloud (e.g., openstack)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ownerDefinedType" name="owner-defined-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Cloud-owner defined type indicator (e.g., dcp, lcp)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudRegionVersion" name="cloud-region-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Software version employed at the site. NOTE - THIS FIELD IS NOT KEPT UP TO DATE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL of the keystone identity service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudZone" name="cloud-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Zone where the cloud is homed. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="complex name for cloud-region instance. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="sriovAutomation" name="sriov-automation" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Whether the cloud region supports (true) or does not support (false) SR-IOV automation." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudExtraInfo" name="cloud-extra-info" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ESR inputs extra information about the VIM or Cloud which will be decoded by MultiVIM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudEpaCaps" name="cloud-epa-caps" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="MultiVIM will discover and expose EPA capabilities." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeGroups" name="volume-groups" type="inventory.aai.onap.org.v11.VolumeGroups" /> - <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.onap.org.v11.Tenants" /> - <xml-element java-attribute="flavors" name="flavors" type="inventory.aai.onap.org.v11.Flavors" /> - <xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.onap.org.v11.GroupAssignments" /> - <xml-element java-attribute="snapshots" name="snapshots" type="inventory.aai.onap.org.v11.Snapshots" /> - <xml-element java-attribute="images" name="images" type="inventory.aai.onap.org.v11.Images" /> - <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v11.DvsSwitches" /> - <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v11.OamNetworks" /> - <xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.onap.org.v11.AvailabilityZones" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="esrSystemInfoList" name="esr-system-info-list" type="inventory.aai.onap.org.v11.EsrSystemInfoList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="vipIpv4AddressList" name="vip-ipv4-address-list" type="inventory.aai.onap.org.v11.VipIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="vipIpv6AddressList" name="vip-ipv6-address-list" type="inventory.aai.onap.org.v11.VipIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="cloud-region designates an installation of a cloud cluster or region or instantiation." /> - <xml-property name="indexedProps" value="cloud-owner,cloud-region-id,cloud-type,owner-defined-type" /> - <xml-property name="nameProps" value="owner-defined-type" /> - <xml-property name="container" value="cloud-regions" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - <java-type name="VolumeGroups"> - <xml-properties> - <xml-property name="description" value="Collection of persistent block-level storage." /> - </xml-properties> - <xml-root-element name="volume-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="volumeGroup" name="volume-group" type="inventory.aai.onap.org.v11.VolumeGroup" /> - </java-attributes> - </java-type> - - <java-type name="VolumeGroup"> - <xml-root-element name="volume-group" /> - <java-attributes> - <xml-element java-attribute="volumeGroupId" name="volume-group-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of volume-group." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeGroupName" name="volume-group-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the volume group." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this volume-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this volume-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfModuleModelCustomizationId" name="vf-module-model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="helps relate the volume group to the vf-module whose components will require the volume group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Persistent block-level storage." /> - <xml-property name="indexedProps" value="volume-group-name,vnf-type,heat-stack-id,volume-group-id" /> - <xml-property name="searchable" value="volume-group-id,volume-group-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="volume-groups" /> - </xml-properties> - </java-type> - - <java-type name="RelationshipList"> - <xml-root-element name="relationship-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="relationship" name="relationship" type="inventory.aai.onap.org.v11.Relationship" /> - </java-attributes> - </java-type> - - <java-type name="Relationship"> - <xml-root-element name="relationship" /> - <java-attributes> - <xml-element java-attribute="relatedTo" name="related-to" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="A keyword provided by A&AI to indicate type of node." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relatedLink" name="related-link" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to the object in A&AI." /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="relationshipData" name="relationship-data" type="inventory.aai.onap.org.v11.RelationshipData" /> - <xml-element container-type="java.util.ArrayList" java-attribute="relatedToProperty" name="related-to-property" type="inventory.aai.onap.org.v11.RelatedToProperty" /> - </java-attributes> - </java-type> - - <java-type name="RelatedToProperty"> - <xml-root-element name="related-to-property" /> - <java-attributes> - <xml-element java-attribute="propertyKey" name="property-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Key part of a key/value pair" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Value part of a key/value pair" /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="RelationshipData"> - <xml-root-element name="relationship-data" /> - <java-attributes> - <xml-element java-attribute="relationshipKey" name="relationship-key" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="A keyword provided by A&AI to indicate an attribute." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipValue" name="relationship-value" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Value of the attribute." /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="Complexes"> - <xml-properties> - <xml-property name="description" value="Collection of physical locations that can house cloud-regions." /> - </xml-properties> - <xml-root-element name="complexes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="complex" name="complex" type="inventory.aai.onap.org.v11.Complex" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Complex"> - <xml-root-element name="complex" /> - <java-attributes> - <xml-element java-attribute="physicalLocationId" name="physical-location-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier for physical location, e.g., CLLI" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dataCenterCode" name="data-center-code" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Data center code which can be an alternate way to identify a complex" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Gamma complex name for LCP instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL of the keystone identity service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="physicalLocationType" name="physical-location-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type, e.g., central office, data center." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="street1" name="street1" required="true" type="java.lang.String" /> - <xml-element java-attribute="street2" name="street2" type="java.lang.String" /> - <xml-element java-attribute="city" name="city" required="true" type="java.lang.String" /> - <xml-element java-attribute="state" name="state" type="java.lang.String" /> - <xml-element java-attribute="postalCode" name="postal-code" required="true" type="java.lang.String" /> - <xml-element java-attribute="country" name="country" required="true" type="java.lang.String" /> - <xml-element java-attribute="region" name="region" required="true" type="java.lang.String" /> - <xml-element java-attribute="latitude" name="latitude" type="java.lang.String" /> - <xml-element java-attribute="longitude" name="longitude" type="java.lang.String" /> - <xml-element java-attribute="elevation" name="elevation" type="java.lang.String" /> - <xml-element java-attribute="lata" name="lata" type="java.lang.String" /> - <xml-element java-attribute="ctagPools" name="ctag-pools" type="inventory.aai.onap.org.v11.CtagPools" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of physical locations that can house cloud-regions." /> - <xml-property name="indexedProps" value="identity-url,data-center-code,complex-name,physical-location-id" /> - <xml-property name="searchable" value="physical-location-id,data-center-code,complex-name,street1,street2,postal-code" /> - <xml-property name="uniqueProps" value="physical-location-id" /> - <xml-property name="container" value="complexes" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="CtagPools"> - <xml-root-element name="ctag-pools" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ctagPool" name="ctag-pool" type="inventory.aai.onap.org.v11.CtagPool" /> - </java-attributes> - </java-type> - - <java-type name="CtagPool"> - <xml-root-element name="ctag-pool" /> - <java-attributes> - <xml-element java-attribute="targetPe" name="target-pe" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="The Target provider edge router" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the availability zone" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ctagPoolPurpose" name="ctag-pool-purpose" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Describes what the intended purpose of this pool is." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ctagValues" name="ctag-values" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Comma separated list of ctags" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="A collection of C tags (vlan tags) grouped for a specific purpose." /> - <xml-property name="indexedProps" value="availability-zone-name" /> - <xml-property name="dependentOn" value="complex" /> - <xml-property name="container" value="ctag-pools" /> - </xml-properties> - </java-type> - - <java-type name="Tenants"> - <xml-properties> - <xml-property name="description" value="Collection of openstack tenants." /> - </xml-properties> - <xml-root-element name="tenants" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="tenant" name="tenant" type="inventory.aai.onap.org.v11.Tenant" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Tenant"> - <xml-root-element name="tenant" /> - <java-attributes> - <xml-element java-attribute="tenantId" name="tenant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id relative to the cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tenantName" name="tenant-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Readable name of tenant" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tenantContext" name="tenant-context" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field will store the tenant context." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vservers" name="vservers" type="inventory.aai.onap.org.v11.Vservers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack tenant" /> - <xml-property name="nameProps" value="tenant-name" /> - <xml-property name="indexedProps" value="tenant-name,tenant-id,tenant-context" /> - <xml-property name="searchable" value="tenant-id,tenant-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="tenants" /> - </xml-properties> - </java-type> - - <java-type name="Vservers"> - <xml-properties> - <xml-property name="description" value="Collection of virtual Servers, aka virtual machines or VMs." /> - </xml-properties> - <xml-root-element name="vservers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vserver" name="vserver" type="inventory.aai.onap.org.v11.Vserver" /> - </java-attributes> - </java-type> - - <java-type name="Vserver"> - <xml-root-element name="vserver" /> - <java-attributes> - <xml-element java-attribute="vserverId" name="vserver-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier for this vserver relative to its tenant" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverName" name="vserver-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of vserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverName2" name="vserver-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternative name of vserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverSelflink" name="vserver-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumes" name="volumes" type="inventory.aai.onap.org.v11.Volumes" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v11.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual Servers, aka virtual machine or VM." /> - <xml-property name="nameProps" value="vserver-name" /> - <xml-property name="indexedProps" value="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2" /> - <xml-property name="searchable" value="vserver-id,vserver-name,vserver-name2" /> - <xml-property name="dependentOn" value="tenant" /> - <xml-property name="container" value="vservers" /> - </xml-properties> - </java-type> - - <java-type name="LInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of logical interfaces." /> - </xml-properties> - <xml-root-element name="l-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lInterface" name="l-interface" type="inventory.aai.onap.org.v11.LInterface" /> - </java-attributes> - </java-type> - - <java-type name="LInterface"> - <xml-root-element name="l-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name given to the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="E.g., CUSTOMER, UPLINK, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v6WanLinkIp" name="v6-wan-link-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="macaddr" name="macaddr" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="MAC address for the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Whether A&AI should be managing this interface of not. Could have value like CUSTOMER" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceDescription" name="interface-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Human friendly text regarding this interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isPortMirrored" name="is-port-mirrored" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not port is a mirrored." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prov Status of the logical interface. Valid values [PREPROV/NVTPROV/PROV]." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="isIpUnnumbered" name="is-ip-unnumbered" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Flag indicating the interface uses the IP Unnumbered configuration." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="allowedAddressPairs" name="allowed-address-pairs" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Freeform field for storing an ip address, list of ip addresses or a subnet block." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlans" name="vlans" type="inventory.aai.onap.org.v11.Vlans" /> - <xml-element java-attribute="sriovVfs" name="sriov-vfs" type="inventory.aai.onap.org.v11.SriovVfs" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v11.LInterfaces" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v11.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v11.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Logical interfaces, e.g., a vnic." /> - <xml-property name="indexedProps" value="macaddr,interface-id,interface-name,network-name" /> - <xml-property name="dependentOn" value="generic-vnf,newvce,p-interface,vserver,lag-interface" /> - <xml-property name="container" value="l-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="SriovVfs"> - <xml-properties> - <xml-property name="description" value="Collection of SR-IOV Virtual Functions." /> - </xml-properties> - <xml-root-element name="sriov-vfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sriovVf" name="sriov-vf" type="inventory.aai.onap.org.v11.SriovVf" /> - </java-attributes> - </java-type> - <java-type name="SriovVf"> - <xml-root-element name="sriov-vf" /> - <java-attributes> - <xml-element java-attribute="pciId" name="pci-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="PCI ID used to identify the sriov-vf" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanFilter" name="vf-vlan-filter" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMacFilter" name="vf-mac-filter" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanStrip" name="vf-vlan-strip" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanAntiSpoofCheck" name="vf-vlan-anti-spoof-check" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMacAntiSpoofCheck" name="vf-mac-anti-spoof-check" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMirrors" name="vf-mirrors" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfBroadcastAllow" name="vf-broadcast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfUnknownMulticastAllow" name="vf-unknown-multicast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfUnknownUnicastAllow" name="vf-unknown-unicast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfInsertStag" name="vf-insert-stag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, instructs to insert outer tag after traffic comes out of VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfLinkStatus" name="vf-link-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This option is used to set the link status. Valid values as of 1607 are on, off, and auto." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="SR-IOV Virtual Function (not to be confused with virtual network function)" /> - <xml-property name="indexedProps" value="pci-id,vf-vlan-filter,vf-mac-filter,vf-vlan-strip,neutron-network-id" /> - <xml-property name="dependentOn" value="l-interface" /> - <xml-property name="container" value="sriov-vfs" /> - </xml-properties> - </java-type> - - <java-type name="L3InterfaceIpv4AddressList"> - <xml-root-element name="l3-interface-ipv4-address-list" /> - <java-attributes> - <xml-element java-attribute="l3InterfaceIpv4Address" name="l3-interface-ipv4-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="l3InterfaceIpv4PrefixLength" name="l3-interface-ipv4-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 32 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv4 Address Range" /> - <xml-property name="indexedProps" value="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="vlan,l-interface,vnfc" /> - </xml-properties> - </java-type> - - <java-type name="Vlans"> - <xml-root-element name="vlans" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vlan" name="vlan" type="inventory.aai.onap.org.v11.Vlan" /> - </java-attributes> - </java-type> - - <java-type name="Vlan"> - <xml-root-element name="vlan" /> - <java-attributes> - <xml-element java-attribute="vlanInterface" name="vlan-interface" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="String that identifies the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanDescription" name="vlan-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to describe (the service associated with) the vlan" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="backdoorConnection" name="backdoor-connection" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Whether customer is going to use this VLAN for backdoor connection to another customer premise device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnKey" name="vpn-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This indicates the customers VPN ID associated with this vlan" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Status of a vnf's vlan interface, on which the customer circuit resides, mastered by SDN-C." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prov Status of the VLAN configuration related to a logical interface. Valid values [PREPROV/NVTPROV/PROV]." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="isIpUnnumbered" name="is-ip-unnumbered" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Flag indicating the interface uses the IP Unnumbered configuration." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v11.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v11.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Definition of vlan" /> - <xml-property name="indexedProps" value="vlan-interface,vlan-id-inner,vpn-key" /> - <xml-property name="dependentOn" value="l-interface" /> - <xml-property name="container" value="vlans" /> - </xml-properties> - </java-type> - - <java-type name="L3InterfaceIpv6AddressList"> - <xml-root-element name="l3-interface-ipv6-address-list" /> - <java-attributes> - <xml-element java-attribute="l3InterfaceIpv6Address" name="l3-interface-ipv6-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="l3InterfaceIpv6PrefixLength" name="l3-interface-ipv6-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 128 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv6 Address Range" /> - <xml-property name="indexedProps" value="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="vlan,l-interface,vnfc" /> - </xml-properties> - </java-type> - - <java-type name="Volumes"> - <xml-properties> - <xml-property name="description" value="Collection of ephemeral Block storage volumes." /> - </xml-properties> - <xml-root-element name="volumes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="volume" name="volume" type="inventory.aai.onap.org.v11.Volume" /> - </java-attributes> - </java-type> - - <java-type name="Volume"> - <xml-root-element name="volume" /> - <java-attributes> - <xml-element java-attribute="volumeId" name="volume-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of block storage volume relative to the vserver." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeSelflink" name="volume-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Ephemeral Block storage volume." /> - <xml-property name="indexedProps" value="volume-id" /> - <xml-property name="dependentOn" value="vserver" /> - <xml-property name="container" value="volumes" /> - </xml-properties> - </java-type> - - <java-type name="Flavors"> - <xml-properties> - <xml-property name="description" value="Collection of openstack flavors." /> - </xml-properties> - <xml-root-element name="flavors" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="flavor" name="flavor" type="inventory.aai.onap.org.v11.Flavor" /> - </java-attributes> - </java-type> - - <java-type name="Flavor"> - <xml-root-element name="flavor" /> - <java-attributes> - <xml-element java-attribute="flavorId" name="flavor-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Flavor id, expected to be unique across cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorName" name="flavor-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Flavor name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorVcpus" name="flavor-vcpus" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Number of CPUs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorRam" name="flavor-ram" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Amount of memory" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorDisk" name="flavor-disk" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Disk space" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorEphemeral" name="flavor-ephemeral" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Amount of ephemeral disk space" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorSwap" name="flavor-swap" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="amount of swap space allocation" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorIsPublic" name="flavor-is-public" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="whether flavor is available to all users or private to the tenant it was created in." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorSelflink" name="flavor-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorDisabled" name="flavor-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Boolean as to whether this flavor is no longer enabled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack flavor." /> - <xml-property name="nameProps" value="flavor-name" /> - <xml-property name="indexedProps" value="flavor-name,flavor-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="flavors" /> - </xml-properties> - </java-type> - - <java-type name="Snapshots"> - <xml-properties> - <xml-property name="description" value="Collection of openstack snapshots" /> - </xml-properties> - <xml-root-element name="snapshots" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="snapshot" name="snapshot" type="inventory.aai.onap.org.v11.Snapshot" /> - </java-attributes> - </java-type> - - <java-type name="Snapshot"> - <xml-root-element name="snapshot" /> - <java-attributes> - <xml-element java-attribute="snapshotId" name="snapshot-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Snapshot id, this is the key UUID assoc associated in glance with the snapshots." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotName" name="snapshot-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Snapshot name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotArchitecture" name="snapshot-architecture" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operating system architecture" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotOsDistro" name="snapshot-os-distro" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The common name of the operating system distribution in lowercase" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotOsVersion" name="snapshot-os-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The operating system version as specified by the distributor." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotSelflink" name="snapshot-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="prevSnapshotId" name="prev-snapshot-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field contains the UUID of the previous snapshot (if any)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack snapshot" /> - <xml-property name="nameProps" value="snapshot-name" /> - <xml-property name="uniqueProps" value="snapshot-id" /> - <xml-property name="indexedProps" value="application,snapshot-name,application-vendor,snapshot-id,application-version,prev-snapshot-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="snapshots" /> - </xml-properties> - </java-type> - - <java-type name="GroupAssignments"> - <xml-properties> - <xml-property name="description" value="Collection of openstack group assignments" /> - </xml-properties> - <xml-root-element name="group-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="groupAssignment" name="group-assignment" type="inventory.aai.onap.org.v11.GroupAssignment" /> - </java-attributes> - </java-type> - - <java-type name="GroupAssignment"> - <xml-root-element name="group-assignment" /> - <java-attributes> - <xml-element java-attribute="groupId" name="group-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Group id, expected to be unique across cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupType" name="group-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group type - the type of group this instance refers to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupName" name="group-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group name - name assigned to the group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupDescription" name="group-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group description - description of the group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack group-assignment used to store exclusivity groups (EG)." /> - <xml-property name="nameProps" value="group-name" /> - <xml-property name="indexedProps" value="group-id,group-type,group-name" /> - <xml-property name="searchable" value="group-id,group-name"/> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="group-assignments" /> - </xml-properties> - </java-type> - - <java-type name="Images"> - <xml-properties> - <xml-property name="description" value="Collectio of Openstack images." /> - </xml-properties> - <xml-root-element name="images" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="image" name="image" type="inventory.aai.onap.org.v11.Image" /> - </java-attributes> - </java-type> - - <java-type name="Image"> - <xml-root-element name="image" /> - <java-attributes> - <xml-element java-attribute="imageId" name="image-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Image id, expected to be unique across cloud region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageName" name="image-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Image name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageArchitecture" name="image-architecture" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operating system architecture." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageOsDistro" name="image-os-distro" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The common name of the operating system distribution in lowercase" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageOsVersion" name="image-os-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The operating system version as specified by the distributor." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageSelflink" name="image-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v11.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack image." /> - <xml-property name="nameProps" value="image-name" /> - <xml-property name="indexedProps" value="application,image-name,application-vendor,image-id,application-version" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="images" /> - </xml-properties> - </java-type> - - <java-type name="Metadata"> - <xml-properties> - <xml-property name="description" value="Collection of metadatum (key/value pairs)" /> - </xml-properties> - <xml-root-element name="metadata" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="metadatum" name="metadatum" type="inventory.aai.onap.org.v11.Metadatum" /> - </java-attributes> - </java-type> - - <java-type name="Metadatum"> - <xml-root-element name="metadatum" /> - <java-attributes> - <xml-element java-attribute="metaname" name="metaname" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="metaval" name="metaval" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Key/value pairs" /> - <xml-property name="indexedProps" value="metaname" /> - <xml-property name="dependentOn" value="tenant,image,service-instance,connector,model" /> - <xml-property name="container" value="metadata" /> - </xml-properties> - </java-type> - - <java-type name="DvsSwitches"> - <xml-properties> - <xml-property name="description" value="Collection of digital virtual switch metadata used for vmWare VCEs and GenericVnfs." /> - </xml-properties> - <xml-root-element name="dvs-switches" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="dvsSwitch" name="dvs-switch" type="inventory.aai.onap.org.v11.DvsSwitch" /> - </java-attributes> - </java-type> - - <java-type name="DvsSwitch"> - <xml-root-element name="dvs-switch" /> - <java-attributes> - <xml-element java-attribute="switchName" name="switch-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="DVS switch name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcenterUrl" name="vcenter-url" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL used to reach the vcenter" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Digital virtual switch metadata, used by SDN-C to configure VCEs. A&AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&AI. " /> - <xml-property name="indexedProps" value="vcenter-url,switch-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="dvs-switches" /> - </xml-properties> - </java-type> - - <java-type name="NetworkProfiles"> - <xml-properties> - <xml-property name="description" value="Collection of network profiles" /> - </xml-properties> - <xml-root-element name="network-profiles" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="networkProfile" name="network-profile" type="inventory.aai.onap.org.v11.NetworkProfile" /> - </java-attributes> - </java-type> - - <java-type name="NetworkProfile"> - <xml-root-element name="network-profile" /> - <java-attributes> - <xml-element java-attribute="nmProfileName" name="nm-profile-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique name of network profile." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="communityString" name="community-string" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encrypted SNMP community string" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Network profile populated by SDN-GP for SNMP" /> - <xml-property name="indexedProps" value="nm-profile-name" /> - <xml-property name="container" value="network-profiles" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="Pservers"> - <xml-properties> - <xml-property name="description" value="Collection of compute hosts." /> - </xml-properties> - <xml-root-element name="pservers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pserver" name="pserver" type="inventory.aai.onap.org.v11.Pserver" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Pserver"> - <xml-root-element name="pserver" /> - <java-attributes> - <xml-element java-attribute="hostname" name="hostname" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Value from executing hostname on the compute node." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ptniiEquipName" name="ptnii-equip-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="PTNII name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="numberOfCpus" name="number-of-cpus" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Number of cpus" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="diskInGigabytes" name="disk-in-gigabytes" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Disk size, in GBs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ramInMegabytes" name="ram-in-megabytes" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="RAM size, in MBs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment type. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment vendor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment model. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="fqdn" name="fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Fully-qualified domain name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverSelflink" name="pserver-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to configure device, also used for troubleshooting and is IP used for traps generated by device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Serial number, may be queried" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Loopback0" name="ipaddress-v4-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Loopback0" name="ipaddress-v6-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Aim" name="ipaddress-v4-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Aim" name="ipaddress-v6-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Oam" name="ipaddress-v6-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 OAM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CANOPI's inventory status. Only set with values exactly as defined by CANOPI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverId" name="pserver-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of Pserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="internetTopology" name="internet-topology" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="internet topology of Pserver" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverName2" name="pserver-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="alternative pserver name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="purpose" name="purpose" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="purpose of pserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates who owns and or manages the device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="hostProfile" name="host-profile" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The host profile that defines the configuration of the pserver." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v11.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v11.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver." /> - <xml-property name="nameProps" value="pserver-name2" /> - <xml-property name="indexedProps" value="hostname,in-maint,pserver-id,pserver-name2,inv-status" /> - <xml-property name="searchable" value="hostname,pserver-name2,pserver-id,ipv4-oam-address" /> - <xml-property name="container" value="pservers" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="PInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of physical interfaces." /> - </xml-properties> - <xml-root-element name="p-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pInterface" name="p-interface" type="inventory.aai.onap.org.v11.PInterface" /> - </java-attributes> - </java-type> - - <java-type name="PInterface"> - <xml-root-element name="p-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name that identifies the physical interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portDescription" name="port-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Nature of the services and connectivity on this port." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentIdentifier" name="equipment-identifier" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CLEI or other specification for p-interface hardware." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role specification for p-interface hardware." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceType" name="interface-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the physical properties of the interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="macAddress" name="mac-addresss" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="MAC Address of the p-interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="inventory status" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="sriovPfs" name="sriov-pfs" type="inventory.aai.onap.org.v11.SriovPfs" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v11.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Physical interface (e.g., nic)" /> - <xml-property name="indexedProps" value="interface-name,prov-status" /> - <xml-property name="nameProps" value="prov-status" /> - <xml-property name="dependentOn" value="vpls-pe,pserver,pnf" /> - <xml-property name="container" value="p-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="LagInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of link aggregate interfaces." /> - </xml-properties> - <xml-root-element name="lag-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lagInterface" name="lag-interface" type="inventory.aai.onap.org.v11.LagInterface" /> - </java-attributes> - </java-type> - - <java-type name="LagInterface"> - <xml-root-element name="lag-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name that identifies the link aggregate interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceDescription" name="interface-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Human friendly text regarding this interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" java-attribute="inMaint" name="in-maint" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v11.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Link aggregate interface" /> - <xml-property name="indexedProps" value="interface-name,interface-id,interface-role" /> - <xml-property name="dependentOn" value="generic-vnf,pserver,vpls-pe,pnf" /> - <xml-property name="container" value="lag-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="OamNetworks"> - <xml-properties> - <xml-property name="description" value="Collection of OAM networks, to be deprecated shortly. Do not use for new purposes. " /> - </xml-properties> - <xml-root-element name="oam-networks" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="oamNetwork" name="oam-network" type="inventory.aai.onap.org.v11.OamNetwork" /> - </java-attributes> - </java-type> - - <java-type name="OamNetwork"> - <xml-root-element name="oam-network" /> - <java-attributes> - <xml-element java-attribute="networkUuid" name="network-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID of the network. Unique across a cloud-region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="cvlan-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="OAM network, to be deprecated shortly. Do not use for new purposes. " /> - <xml-property name="nameProps" value="network-name" /> - <xml-property name="indexedProps" value="cvlan-tag,network-uuid,network-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="oam-networks" /> - </xml-properties> - </java-type> - - <java-type name="AvailabilityZones"> - <xml-properties> - <xml-property name="description" value="Collection of availability zones" /> - </xml-properties> - <xml-root-element name="availability-zones" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.onap.org.v11.AvailabilityZone" /> - </java-attributes> - </java-type> - - <java-type name="AvailabilityZone"> - <xml-root-element name="availability-zone" /> - <java-attributes> - <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the availability zone. Unique across a cloud region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="hypervisorType" name="hypervisor-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of hypervisor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="State that indicates whether the availability zone should be used, etc. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Availability zone, a collection of compute hosts/pservers" /> - <xml-property name="indexedProps" value="availability-zone-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="availability-zones" /> - </xml-properties> - </java-type> - - <java-type name="VirtualDataCenters"> - <xml-properties> - <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context" /> - </xml-properties> - <xml-root-element name="virtual-data-centers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="virtualDataCenter" name="virtual-data-center" type="inventory.aai.onap.org.v11.VirtualDataCenter" /> - </java-attributes> - </java-type> - - <java-type name="VirtualDataCenter"> - <xml-root-element name="virtual-data-center" /> - <java-attributes> - <xml-element java-attribute="vdcId" name="vdc-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of the vdc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdcName" name="vdc-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the virtual data center" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context" /> - <xml-property name="nameProps" value="vdc-name" /> - <xml-property name="indexedProps" value="vdc-name,vdc-id" /> - <xml-property name="container" value="virtual-data-centers" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="Business"> - <xml-properties> - <xml-property name="description" value="Namespace for business related constructs" /> - </xml-properties> - <xml-root-element name="business" /> - <java-attributes> - <xml-element java-attribute="connectors" name="connectors" type="inventory.aai.onap.org.v11.Connectors" /> - <xml-element java-attribute="customers" name="customers" type="inventory.aai.onap.org.v11.Customers" /> - <xml-element java-attribute="linesOfBusiness" name="lines-of-business" type="inventory.aai.onap.org.v11.LinesOfBusiness" /> - <xml-element java-attribute="owningEntities" name="owning-entities" type="inventory.aai.onap.org.v11.OwningEntities" /> - <xml-element java-attribute="platforms" name="platforms" type="inventory.aai.onap.org.v11.Platforms" /> - <xml-element java-attribute="projects" name="projects" type="inventory.aai.onap.org.v11.Projects" /> - </java-attributes> - </java-type> - - <java-type name="Projects"> - <xml-properties> - <xml-property name="description" value="Collection of projects" /> - </xml-properties> - <xml-root-element name="projects" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="project" name="project" type="inventory.aai.onap.org.v11.Project" /> - </java-attributes> - </java-type> - - <java-type name="Project"> - <xml-root-element name="project" /> - <java-attributes> - <xml-element java-attribute="projectName" name="project-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the project deploying a service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="describes the project" /> - <xml-property name="indexedProps" value="project-name" /> - <xml-property name="uniqueProps" value="project-name" /> - <xml-property name="container" value="projects" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="Connectors"> - <xml-properties> - <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets" /> - </xml-properties> - <xml-root-element name="connectors" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="connector" name="connector" type="inventory.aai.onap.org.v11.Connector" /> - </java-attributes> - </java-type> - - <java-type name="Connector"> - <xml-root-element name="connector" /> - <java-attributes> - <xml-element java-attribute="resourceInstanceId" name="resource-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of resource instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-version-id" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-invariant-id" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v11.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets" /> - <xml-property name="indexedProps" value="resource-instance-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version" /> - <xml-property name="container" value="connectors" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="Customers"> - <xml-properties> - <xml-property name="description" value="Collection of customer identifiers to provide linkage back to BSS information." /> - </xml-properties> - <xml-root-element name="customers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="customer" name="customer" type="inventory.aai.onap.org.v11.Customer" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Customer"> - <xml-root-element name="customer" /> - <java-attributes> - <xml-element java-attribute="globalCustomerId" name="global-customer-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Global customer id used across ECOMP to uniquely identify customer." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subscriberName" name="subscriber-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Subscriber name, an alternate way to retrieve a customer." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subscriberType" name="subscriber-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Subscriber type, a way to provide VID with only the INFRA customers." /> - <xml-property name="defaultValue" value="CUST" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceSubscriptions" name="service-subscriptions" type="inventory.aai.onap.org.v11.ServiceSubscriptions" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="customer identifiers to provide linkage back to BSS information." /> - <xml-property name="nameProps" value="subscriber-name" /> - <xml-property name="indexedProps" value="subscriber-name,global-customer-id,subscriber-type" /> - <xml-property name="searchable" value="global-customer-id,subscriber-name" /> - <xml-property name="uniqueProps" value="global-customer-id" /> - <xml-property name="container" value="customers" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="LinesOfBusiness"> - <xml-properties> - <xml-property name="description" value="Collection of lines-of-business" /> - </xml-properties> - <xml-root-element name="lines-of-business" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lineOfBusiness" name="line-of-business" type="inventory.aai.onap.org.v11.LineOfBusiness" /> - </java-attributes> - </java-type> - - <java-type name="LineOfBusiness"> - <xml-root-element name="line-of-business" /> - <java-attributes> - <xml-element java-attribute="lineOfBusinessName" name="line-of-business-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the line-of-business (product)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="describes a line-of-business" /> - <xml-property name="indexedProps" value="line-of-business-name" /> - <xml-property name="uniqueProps" value="line-of-business-name" /> - <xml-property name="container" value="lines-of-business" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="OwningEntities"> - <xml-properties> - <xml-property name="description" value="Collection of owning-entities" /> - </xml-properties> - <xml-root-element name="owning-entities" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="owningEntity" name="owning-entity" type="inventory.aai.onap.org.v11.OwningEntity" /> - </java-attributes> - </java-type> - - <java-type name="OwningEntity"> - <xml-root-element name="owning-entity" /> - <java-attributes> - <xml-element java-attribute="owningEntityId" name="owning-entity-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID of an owning entity" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="owningEntityName" name="owning-entity-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Owning entity name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="describes an owning-entity" /> - <xml-property name="indexedProps" value="owning-entity-id, owning-entity-name" /> - <xml-property name="searchable" value="owning-entity-id" /> - <xml-property name="uniqueProps" value="owning-entity-id, owning-entity-name" /> - <xml-property name="container" value="owning-entities" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="Platforms"> - <xml-properties> - <xml-property name="description" value="Collection of platforms" /> - </xml-properties> - <xml-root-element name="platforms" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="platform" name="platform" type="inventory.aai.onap.org.v11.Platform" /> - </java-attributes> - </java-type> - - <java-type name="Platform"> - <xml-root-element name="platform" /> - <java-attributes> - <xml-element java-attribute="platformName" name="platform-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the platform" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="describes a platform" /> - <xml-property name="indexedProps" value="platform-name" /> - <xml-property name="uniqueProps" value="platform-name" /> - <xml-property name="container" value="platforms" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="ServiceSubscriptions"> - <xml-properties> - <xml-property name="description" value="Collection of objects that group service instances." /> - </xml-properties> - <xml-root-element name="service-subscriptions" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceSubscription" name="service-subscription" type="inventory.aai.onap.org.v11.ServiceSubscription" /> - </java-attributes> - </java-type> - - <java-type name="ServiceSubscription"> - <xml-root-element name="service-subscription" /> - <java-attributes> - <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Value defined by orchestration to identify this service across ECOMP." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tempUbSubAccountId" name="temp-ub-sub-account-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This property will be deleted from A&AI in the near future. Only stop gap solution." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstances" name="service-instances" type="inventory.aai.onap.org.v11.ServiceInstances"> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Object that group service instances." /> - <xml-property name="indexedProps" value="service-type" /> - <xml-property name="dependentOn" value="customer" /> - <xml-property name="container" value="service-subscriptions" /> - <xml-property name="crossEntityReference" value="service-instance,service-type" /> - </xml-properties> - </java-type> - - <java-type name="ServiceInstances"> - <xml-properties> - <xml-property name="description" value="Collection of service instances" /> - </xml-properties> - <xml-root-element name="service-instances" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceInstance" name="service-instance" type="inventory.aai.onap.org.v11.ServiceInstance" /> - </java-attributes> - </java-type> - - <java-type name="ServiceInstance"> - <xml-root-element name="service-instance" /> - <java-attributes> - <xml-element java-attribute="serviceInstanceId" name="service-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Uniquely identifies this instance of a service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstanceName" name="service-instance-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field will store a name assigned to the service-instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceType" name="service-type" required="false" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceRole" name="service-role" required="false" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing the service role." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="environmentContext" name="environment-context" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field will store the environment context assigned to the service-instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="workloadContext" name="workload-context" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field will store the workload context assigned to the service-instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-version-id" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-invariant-id" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthTotal" name="bandwidth-total" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the total bandwidth to be used for this service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN1 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN1 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN2 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN2 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vhnPortalUrl" name="vhn-portal-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL customers will use to access the vHN Portal." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstanceLocationId" name="service-instance-location-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="An identifier that customers assign to the location where this service is being used." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v11.Metadata" /> - <xml-element java-attribute="allottedResources" name="allotted-resources" type="inventory.aai.onap.org.v11.AllottedResources" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Instance of a service" /> - <xml-property name="indexedProps" value="service-instance-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,service-instance-name,service-instance-location-id,orchestration-status,environment-context,workload-context" /> - <xml-property name="nameProps" value="service-instance-name" /> - <xml-property name="searchable" value="service-instance-id,service-instance-name" /> - <xml-property name="uniqueProps" value="service-instance-id" /> - <xml-property name="dependentOn" value="service-subscription" /> - <xml-property name="container" value="service-instances" /> - </xml-properties> - </java-type> - - <java-type name="ServiceDesignAndCreation"> - <xml-properties> - <xml-property name="description" value="Namespace for objects managed by ASDC" /> - </xml-properties> - <xml-root-element name="service-design-and-creation" /> - <java-attributes> - <xml-element java-attribute="vnfImages" name="vnf-images" type="inventory.aai.onap.org.v11.VnfImages" /> - <xml-element java-attribute="services" name="services" type="inventory.aai.onap.org.v11.Services" /> - <xml-element java-attribute="serviceCapabilities" name="service-capabilities" type="inventory.aai.onap.org.v11.ServiceCapabilities" /> - <xml-element java-attribute="models" name="models" type="inventory.aai.onap.org.v11.Models" /> - <xml-element java-attribute="namedQueries" name="named-queries" type="inventory.aai.onap.org.v11.NamedQueries" /> - </java-attributes> - </java-type> - - <java-type name="VnfImages"> - <xml-properties> - <xml-property name="description" value="Collection of image objects that pertain to a VNF that doesn't have associated vservers. This is a kludge." /> - </xml-properties> - <xml-root-element name="vnf-images" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vnfImage" name="vnf-image" type="inventory.aai.onap.org.v11.VnfImage" /> - </java-attributes> - </java-type> - - <java-type name="VnfImage"> - <xml-root-element name="vnf-image" /> - <java-attributes> - <xml-element java-attribute="vnfImageUuid" name="vnf-image-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of this asset" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Image object that pertain to a VNF that doesn't have associated vservers. This is a kludge." /> - <xml-property name="indexedProps" value="application,vnf-image-uuid,application-vendor,application-version" /> - <xml-property name="uniqueProps" value="vnf-image-uuid" /> - <xml-property name="container" value="vnf-images" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="Services"> - <xml-properties> - <xml-property name="description" value="Collection of service model definitions. Likely to be deprecated in favor of models from ASDC." /> - </xml-properties> - <xml-root-element name="services" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="service" name="service" type="inventory.aai.onap.org.v11.Service" /> - </java-attributes> - </java-type> - - <java-type name="Service"> - <xml-root-element name="service" /> - <java-attributes> - <xml-element java-attribute="serviceId" name="service-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceDescription" name="service-description" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description of the service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceSelflink" name="service-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceVersion" name="service-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="service version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Stand-in for service model definitions. Likely to be deprecated in favor of models from ASDC. Does not strictly map to ASDC services." /> - <xml-property name="indexedProps" value="service-description,service-id" /> - <xml-property name="container" value="services" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="ServiceCapabilities"> - <xml-properties> - <xml-property name="description" value="Collection of service capabilities." /> - </xml-properties> - <xml-root-element name="service-capabilities" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceCapability" name="service-capability" type="inventory.aai.onap.org.v11.ServiceCapability" /> - </java-attributes> - </java-type> - - <java-type name="ServiceCapability"> - <xml-root-element name="service-capability" /> - <java-attributes> - <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Early definition of server/resource pairings, likely to be replaced by models. No new use should be made of this." /> - <xml-property name="indexedProps" value="service-type,vnf-type" /> - <xml-property name="container" value="service-capabilities" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="Network"> - <xml-properties> - <xml-property name="description" value="Namespace for network inventory resources." /> - </xml-properties> - <xml-root-element name="network" /> - <java-attributes> - <xml-element java-attribute="logicalLinks" name="logical-links" type="inventory.aai.onap.org.v11.LogicalLinks" /> - <xml-element java-attribute="sitePairSets" name="site-pair-sets" type="inventory.aai.onap.org.v11.SitePairSets" /> - <xml-element java-attribute="vpnBindings" name="vpn-bindings" type="inventory.aai.onap.org.v11.VpnBindings" /> - <xml-element java-attribute="vplsPes" name="vpls-pes" type="inventory.aai.onap.org.v11.VplsPes" /> - <xml-element java-attribute="multicastConfigurations" name="multicast-configurations" type="inventory.aai.onap.org.v11.MulticastConfigurations" /> - <xml-element java-attribute="vces" name="vces" type="inventory.aai.onap.org.v11.Vces" /> - <xml-element java-attribute="vnfcs" name="vnfcs" type="inventory.aai.onap.org.v11.Vnfcs" /> - <xml-element java-attribute="l3Networks" name="l3-networks" type="inventory.aai.onap.org.v11.L3Networks" /> - <xml-element java-attribute="networkPolicies" name="network-policies" type="inventory.aai.onap.org.v11.NetworkPolicies" /> - <xml-element java-attribute="genericVnfs" name="generic-vnfs" type="inventory.aai.onap.org.v11.GenericVnfs" /> - <xml-element java-attribute="lagLinks" name="lag-links" type="inventory.aai.onap.org.v11.LagLinks" /> - <xml-element java-attribute="newvces" name="newvces" type="inventory.aai.onap.org.v11.Newvces" /> - <xml-element java-attribute="pnfs" name="pnfs" type="inventory.aai.onap.org.v11.Pnfs" /> - <xml-element java-attribute="physicalLinks" name="physical-links" type="inventory.aai.onap.org.v11.PhysicalLinks" /> - <xml-element java-attribute="ipsecConfigurations" name="ipsec-configurations" type="inventory.aai.onap.org.v11.IpsecConfigurations" /> - <xml-element java-attribute="routeTableReferences" name="route-table-references" type="inventory.aai.onap.org.v11.RouteTableReferences" /> - <xml-element java-attribute="instanceGroups" name="instance-groups" type="inventory.aai.onap.org.v11.InstanceGroups" /> - <xml-element java-attribute="zones" name="zones" type="inventory.aai.onap.org.v11.Zones" /> - </java-attributes> - </java-type> - <java-type name="Configurations"> - <xml-properties> - <xml-property name="description" value="Collection of configurations" /> - </xml-properties> - <xml-root-element name="configurations" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="configuration" name="configurations" type="inventory.aai.onap.org.v11.Configuration" /> - </java-attributes> - </java-type> - - <java-type name="Configuration"> - <xml-root-element name="configuration" /> - <java-attributes> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the entity that will manage this feature. Could be an organization or the name of the application as well." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="configurationId" name="configuration-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID assigned to configuration." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="configurationName" name="configuration-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the configuration." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="configurationType" name="configuration-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="port-mirroring-configuration." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="configurationSubType" name="configuration-sub-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="vprobe, pprobe." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-version-id" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-invariant-id" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of the configuration." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="configurationSelflink" name="configuration-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details from SDN-GC." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelCustomizationId" name="model-customization-id" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="id of the configuration used to customize the resource" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v11.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Port Mirror Configuration." /> - <xml-property name="indexedProps" value="configuration-id,model-invariant-id,model-version-id" /> - <xml-property name="uniqueProps" value="configuration-id" /> - <xml-property name="container" value="configurations" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="LogicalLinks"> - <xml-properties> - <xml-property name="description" value="Collection of logical connections" /> - </xml-properties> - <xml-root-element name="logical-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="logicalLink" name="logical-link" type="inventory.aai.onap.org.v11.LogicalLink" /> - </java-attributes> - </java-type> - - <java-type name="LogicalLink"> - <xml-root-element name="logical-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkType" name="link-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of logical link, e.g., evc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4, v6, or ds for dual stack" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routingProtocol" name="routing-protocol" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="For example, static or BGP" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-version-id" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-invariant-id" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indication of operational status of the logical link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkRole" name="link-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indication of the network use of the logical link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkName2" name="link-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alias or alternate name (CLCI or D1 name)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkId" name="link-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the logical-link, SDNC generates this." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Circuit id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="purpose" name="purpose" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Reason for this entity, role it is playing" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Logical links generally connect l-interfaces but are used to express logical connectivity between two points" /> - <xml-property name="indexedProps" value="link-name,model-invariant-id,model-version-id,widget-model-id,widget-model-version,link-id,prov-status,circuit-id,purpose" /> - <xml-property name="uniqueProps" value="link-id" /> - <xml-property name="container" value="logical-links" /> - <xml-property name="namespace" value="network" /> - <xml-property name="searchable" value="link-name" /> - </xml-properties> - </java-type> - - <java-type name="SitePairSets"> - <xml-properties> - <xml-property name="description" value="Collection of sets of instances for probes related to generic-vnf" /> - </xml-properties> - <xml-root-element name="site-pair-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sitePairSet" name="site-pair-set" type="inventory.aai.onap.org.v11.SitePairSet" /> - </java-attributes> - </java-type> - - <java-type name="SitePairSet"> - <xml-root-element name="site-pair-set" /> - <java-attributes> - <xml-element java-attribute="sitePairSetId" name="site-pair-set-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of site pair set." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routingInstances" name="routing-instances" type="inventory.aai.onap.org.v11.RoutingInstances" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Set of instances for probes used to measure service level agreements" /> - <xml-property name="indexedProps" value="site-pair-set-id" /> - <xml-property name="uniqueProps" value="site-pair-set-id" /> - <xml-property name="container" value="site-pair-sets" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="RoutingInstances"> - <xml-properties> - <xml-property name="description" value="set of probes related to generic-vnf routing instance" /> - </xml-properties> - <xml-root-element name="routing-instances" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="routingInstance" name="routing-instance" type="inventory.aai.onap.org.v11.RoutingInstance" /> - </java-attributes> - </java-type> - - <java-type name="RoutingInstance"> - <xml-root-element name="routing-instance" /> - <java-attributes> - <xml-element java-attribute="routingInstanceId" name="routing-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of routing instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="rpmOwner" name="rpm-owner" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="rpm owner" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sitePairs" name="site-pairs" type="inventory.aai.onap.org.v11.SitePairs" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="routing-instance-id" /> - <xml-property name="dependentOn" value="site-pair-set" /> - <xml-property name="container" value="routing-instances" /> - </xml-properties> - </java-type> - - <java-type name="SitePairs"> - <xml-properties> - <xml-property name="description" value="probe within a set" /> - </xml-properties> - <xml-root-element name="site-pairs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sitePair" name="site-pair" type="inventory.aai.onap.org.v11.SitePair" /> - </java-attributes> - </java-type> - - <java-type name="SitePair"> - <xml-root-element name="site-pair" /> - <java-attributes> - <xml-element java-attribute="sitePairId" name="site-pair-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sourceIp" name="source-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prefix address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationIp" name="destination-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prefix address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ip version, v4, v6" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationHostname" name="destination-hostname" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Hostname of the destination equipment to which SLAs are measured against." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationEquipType" name="destination-equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The type of destinatination equipment. Could be Router, UCPE, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="classesOfService" name="classes-of-service" type="inventory.aai.onap.org.v11.ClassesOfService" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="site-pair-id" /> - <xml-property name="uniqueProps" value="site-pair-id" /> - <xml-property name="dependentOn" value="routing-instance" /> - <xml-property name="container" value="site-pairs" /> - </xml-properties> - </java-type> - - <java-type name="ClassesOfService"> - <xml-properties> - <xml-property name="description" value="class-of-service of probe" /> - </xml-properties> - <xml-root-element name="classes-of-service" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="classOfService" name="class-of-service" type="inventory.aai.onap.org.v11.ClassOfService" /> - </java-attributes> - </java-type> - - <java-type name="ClassOfService"> - <xml-root-element name="class-of-service" /> - <java-attributes> - <xml-element java-attribute="cos" name="cos" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="probeId" name="probe-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="probeType" name="probe-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="type of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="cos" /> - <xml-property name="dependentOn" value="site-pair" /> - <xml-property name="container" value="classes-of-service" /> - </xml-properties> - </java-type> - - <java-type name="VpnBindings"> - <xml-root-element name="vpn-bindings" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vpnBinding" name="vpn-binding" type="inventory.aai.onap.org.v11.VpnBinding" /> - </java-attributes> - </java-type> - - <java-type name="VpnBinding"> - <xml-root-element name="vpn-binding" /> - <java-attributes> - <xml-element java-attribute="vpnId" name="vpn-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="VPN ID, globally unique within A&AI" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnName" name="vpn-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="VPN Name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnPlatform" name="vpn-platform" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the platform associated with the VPN example AVPN, Mobility" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnType" name="vpn-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the vpn, should be taken from enumerated/valid values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnRegion" name="vpn-region" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="region of customer vpn" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="customerVpnId" name="customer-vpn-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="id for this customer vpn" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeDistinguisher" name="route-distinguisher" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to distinguish the distinct VPN routes of separate customers who connect to the provider in an MPLS network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeTargets" name="route-targets" type="inventory.aai.onap.org.v11.RouteTargets" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList"> - <xml-properties> - <xml-property name="description" value="l3-networks relate to vpn-bindings" /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="VPN binding" /> - <xml-property name="nameProps" value="vpn-name,vpn-type" /> - <xml-property name="indexedProps" value="vpn-name,vpn-id,vpn-type" /> - <xml-property name="searchable" value="vpn-id,vpn-name" /> - <xml-property name="uniqueProps" value="vpn-id" /> - <xml-property name="container" value="vpn-bindings" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="VplsPes"> - <xml-properties> - <xml-property name="description" value="Collection of VPLS Provider Edge routers" /> - </xml-properties> - <xml-root-element name="vpls-pes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vplsPe" name="vpls-pe" type="inventory.aai.onap.org.v11.VplsPe" /> - </java-attributes> - </java-type> - - <java-type name="VplsPe"> - <xml-root-element name="vpls-pe" /> - <java-attributes> - <xml-element java-attribute="equipmentName" name="equipment-name" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value, e.g., VPLS-PE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Temporary location for stag to get to VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v11.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v11.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="VPLS Provider Edge routers." /> - <xml-property name="indexedProps" value="prov-status,equipment-name" /> - <xml-property name="container" value="vpls-pes" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="MulticastConfigurations"> - <xml-properties> - <xml-property name="description" value="multicast configuration of generic-vnf ip-address" /> - </xml-properties> - <xml-root-element name="multicast-configurations" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="multicastConfiguration" name="multicast-configuration" type="inventory.aai.onap.org.v11.MulticastConfiguration" /> - </java-attributes> - </java-type> - - <java-type name="MulticastConfiguration"> - <xml-root-element name="multicast-configuration" /> - <java-attributes> - <xml-element java-attribute="multicastConfigurationId" name="multicast-configuration-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of multicast configuration." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="multicastProtocol" name="multicast-protocol" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="protocol of multicast configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="rpType" name="rp-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="rp type of multicast configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="multicast-configuration-id" /> - <xml-property name="uniqueProps" value="multicast-configuration-id" /> - <xml-property name="container" value="multicast-configurations" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Vces"> - <xml-properties> - <xml-property name="description" value="Collection of Virtual Customer Edge Routers, used specifically for Gamma. This object is deprecated." /> - </xml-properties> - <xml-root-element name="vces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vce" name="vce" type="inventory.aai.onap.org.v11.Vce" /> - </java-attributes> - </java-type> - - <java-type name="Vce"> - <xml-root-element name="vce" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network role being played by this VNF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpeId" name="vpe-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique ID of VPE connected to this VCE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v6VceWanAddress" name="v6-vce-wan-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Valid v6 IP address for the WAN Link on this router. Implied length of /64." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - see child relationships" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroups" name="port-groups" type="inventory.aai.onap.org.v11.PortGroups" /> - <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.onap.org.v11.Licenses" /> - <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.onap.org.v11.Entitlements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual Customer Edge Router, used specifically for Gamma. This object is deprecated." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,interface-name,regional-resource-zone,vpe-id,prov-status,service-id" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="vces" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - </xml-properties> - </java-type> - - <java-type name="PortGroups"> - <xml-root-element name="port-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="portGroup" name="port-group" type="inventory.aai.onap.org.v11.PortGroup" /> - </java-attributes> - </java-type> - - <java-type name="PortGroup"> - <xml-root-element name="port-group" /> - <java-attributes> - <xml-element java-attribute="interfaceId" name="interface-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of this Interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkName" name="neutron-network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network name of this Interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroupId" name="port-group-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique ID for port group in vmware" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroupName" name="port-group-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Likely to duplicate value of neutron network name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="switchName" name="switch-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="DVS or standard switch name (should be non-null for port groups associated with DVS)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cvlanTags" name="cvlan-tags" type="inventory.aai.onap.org.v11.CvlanTags" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Used to capture the network interfaces of this VCE" /> - <xml-property name="nameProps" value="port-group-name" /> - <xml-property name="indexedProps" value="port-group-id,heat-stack-id,interface-id,interface-name,switch-name" /> - <xml-property name="dependentOn" value="vce" /> - <xml-property name="container" value="port-groups" /> - </xml-properties> - </java-type> - - <java-type name="CvlanTags"> - <xml-root-element name="cvlan-tags" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="cvlanTagEntry" name="cvlan-tag-entry" type="inventory.aai.onap.org.v11.CvlanTagEntry" /> - </java-attributes> - </java-type> - - <java-type name="CvlanTagEntry"> - <xml-root-element name="cvlan-tag-entry" /> - <java-attributes> - <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long" xml-key="true"> - <xml-properties> - <xml-property name="description" value="See mis-na-virtualization-platform.yang" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="dependentOn" value="port-group" /> - <xml-property name="indexedProps" value="cvlan-tag" /> - <xml-property name="container" value="cvlan-tags" /> - </xml-properties> - </java-type> - - - - <java-type name="Vnfcs"> - <xml-properties> - <xml-property name="description" value="virtual network components associated with a vserver from application controller." /> - </xml-properties> - <xml-root-element name="vnfcs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vnfc" name="vnfc" type="inventory.aai.onap.org.v11.Vnfc" /> - </java-attributes> - </java-type> - - <java-type name="Vnfc"> - <xml-root-element name="vnfc" /> - <java-attributes> - <xml-element java-attribute="vnfcName" name="vnfc-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of vnfc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfcNamingCode" name="nfc-naming-code" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Short code that is used in naming instances of the item being modeled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfcFunction" name="nfc-function" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="English description of function that the specific resource deployment is providing. Assigned as part of the customization of a resource in a service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="prov status of this vnfc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by APP-C" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4OamVip" name="ipaddress-v4-oam-vip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Oam V4 vip address of this vnfc" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupNotation" name="group-notation" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group notation of VNFC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-version-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-invariant-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.onap.org.v11.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.onap.org.v11.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="vnfc-name,prov-status,nfc-function,nfc-naming-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled,group-notation,model-invariant-id,model-version-id" /> - <xml-property name="searchable" value="vnfc-name" /> - <xml-property name="container" value="vnfcs" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="L3Networks"> - <xml-root-element name="l3-networks" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="l3Network" name="l3-network" type="inventory.aai.onap.org.v11.L3Network" /> - </java-attributes> - </java-type> - - <java-type name="L3Network"> - <xml-root-element name="l3-network" /> - <java-attributes> - <xml-element java-attribute="networkId" name="network-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Network ID, should be uuid. Unique across A&AI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network, governed by some naming convention.." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkType" name="network-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the network - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkRole" name="network-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role the network plans - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkTechnology" name="network-technology" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network technology - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of this Interface" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isBoundToVpn" name="is-bound-to-vpn" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Set to true if bound to VPN" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service from ASDC. Does not strictly map to ASDC services. SOON TO BE DEPRECATED" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkRoleInstance" name="network-role-instance" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="network role instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="contrailNetworkFqdn" name="contrail-network-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contrail FQDN for the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-version-id" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-invariant-id" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="physicalNetworkName" name="physical-network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name associated with the physical network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isProviderNetwork" name="is-provider-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is a provider network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isSharedNetwork" name="is-shared-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is a shared network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isExternalNetwork" name="is-external-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is an external network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnets" name="subnets" type="inventory.aai.onap.org.v11.Subnets" /> - <xml-element java-attribute="ctagAssignments" name="ctag-assignments" type="inventory.aai.onap.org.v11.CtagAssignments" /> - <xml-element java-attribute="segmentationAssignments" name="segmentation-assignments" type="inventory.aai.onap.org.v11.SegmentationAssignments" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" > - <xml-properties> - <xml-property name="description" value="Relates to tenant (or is it a child of tenant), complex, service, vpn-binding" /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Generic network definition" /> - <xml-property name="nameProps" value="network-name" /> - <xml-property name="indexedProps" value="heat-stack-id,network-uuid,service-id,network-id,network-name,model-invariant-id,model-version-id,widget-model-id,widget-model-version,contrail-network-fqdn,network-role" /> - <xml-property name="searchable" value="network-id,network-name" /> - <xml-property name="uniqueProps" value="network-id" /> - <xml-property name="container" value="l3-networks" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - <java-type name="NetworkPolicies"> - <xml-root-element name="network-policies" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="networkPolicy" name="network-policy" type="inventory.aai.onap.org.v11.NetworkPolicy" /> - </java-attributes> - </java-type> - <java-type name="NetworkPolicy"> - <xml-root-element name="network-policy" /> - <java-attributes> - <xml-element java-attribute="networkPolicyId" name="network-policy-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID representing unique key to this instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkPolicyFqdn" name="network-policy-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contrail FQDN for the policy" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID for the openStack Heat instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="nameProps" value="network-policy-fqdn" /> - <xml-property name="indexedProps" value="network-policy-id,network-policy-fqdn" /> - <xml-property name="searchable" value="network-policy-id,network-policy-fqdn" /> - <xml-property name="uniqueProps" value="network-policy-id" /> - <xml-property name="container" value="network-policies" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - <java-type name="CtagAssignments"> - <xml-root-element name="ctag-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ctagAssignment" name="ctag-assignment" type="inventory.aai.onap.org.v11.CtagAssignment" /> - </java-attributes> - </java-type> - - <java-type name="CtagAssignment"> - <xml-root-element name="ctag-assignment" /> - <java-attributes> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" required="true" type="java.lang.Long" xml-key="true"> - <xml-properties> - <xml-property name="description" value="id." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="vlan-id-inner" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="ctag-assignments" /> - </xml-properties> - </java-type> - - <java-type name="Subnets"> - <xml-root-element name="subnets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="subnet" name="subnet" type="inventory.aai.onap.org.v11.Subnet" /> - </java-attributes> - </java-type> - - <java-type name="Subnet"> - <xml-root-element name="subnet" /> - <java-attributes> - <xml-element java-attribute="subnetId" name="subnet-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Subnet ID, should be UUID." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnetName" name="subnet-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name associated with the subnet." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of this subnet" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="gatewayAddress" name="gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="gateway ip address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkStartAddress" name="network-start-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="network start address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cidrMask" name="cidr-mask" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="cidr mask" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ip version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="dhcpEnabled" name="dhcp-enabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="dhcp enabled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dhcpStart" name="dhcp-start" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the start address reserved for use by dhcp" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dhcpEnd" name="dhcp-end" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the last address reserved for use by dhcp" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnetRole" name="subnet-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="role of the subnet, referenced when assigning IPs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipAssignmentDirection" name="ip-assignment-direction" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ip address assignment direction of the subnet" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnetSequence" name="subnet-sequence" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="sequence of the subnet" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="hostRoutes" name="host-routes" type="inventory.aai.onap.org.v11.HostRoutes" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="subnet-id,subnet-name" /> - <xml-property name="nameProps" value="subnet-name" /> - <xml-property name="uniqueProps" value="subnet-id" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="subnets" /> - </xml-properties> - </java-type> - - <java-type name="GenericVnfs"> - <xml-properties> - <xml-property name="description" value="Collection of VNFs" /> - </xml-properties> - <xml-root-element name="generic-vnfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="genericVnf" name="generic-vnf" type="inventory.aai.onap.org.v11.GenericVnf" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="GenericVnf"> - <xml-root-element name="generic-vnf" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service, does not necessarily map to ASDC service models. SOON TO BE DEPRECATED" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - <xml-property name="suggestibleOnSearch" value="true"/> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational. Valid values are in-service-path and out-of-service-path." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, used by MSO." /> - <xml-property name="suggestibleOnSearch" value="true"/> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of managed by ATT or customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4 Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nmLanV6Address" name="nm-lan-v6-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 Loopback address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementV6Address" name="management-v6-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 management address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcpu" name="vcpu" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcpuUnits" name="vcpu-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vcpu, used for VNFs with no vservers/flavors, to be used only by uCPE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vmemory" name="vmemory" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only by uCPE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vmemoryUnits" name="vmemory-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vmemory, used for VNFs with no vservers/flavors, to be used only by uCPE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdisk" name="vdisk" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only uCPE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdiskUnits" name="vdisk-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vdisk, used for VNFs with no vservers/flavors, to be used only by uCPE" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="details regarding the generic-vnf operation, PLEASE DISCONTINUE USE OF THIS FIELD." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="indicates whether generic-vnf access uses SSH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementAssignmentGroupUuid" name="entitlement-assignment-group-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the Entitlement group used for licensing VNFs, OBSOLETE - See child relationships." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the specific entitlement resource. OBSOLETE - See child relationships." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseAssignmentGroupUuid" name="license-assignment-group-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the license assignment group. OBSOLETE - See child relationships." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKeyUuid" name="license-key-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the actual license resource. OBSOLETE - See child relationships." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-version-id" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-invariant-id" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="as-number of the VNF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceSubzone" name="regional-resource-subzone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="represents sub zone of the rr plane" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfType" name="nf-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Generic description of the type of NF" /> - <xml-property name="suggestibleOnSearch" value="true"/> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfFunction" name="nf-function" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="English description of Network function that the specific VNF deployment is providing" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfRole" name="nf-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="role in the network that this model will be providing" /> - <xml-property name="suggestibleOnSearch" value="true"/> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfNamingCode" name="nf-naming-code" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="string assigned to this model used for naming purposes" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Gateway address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Prefix length for oam-address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Temporary location for S-TAG to get to VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nmProfileName" name="nm-profile-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network Management profile of this VNF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v11.LInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v11.LagInterfaces" /> - <xml-element java-attribute="vfModules" name="vf-modules" type="inventory.aai.onap.org.v11.VfModules" /> - <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.onap.org.v11.Licenses" /> - <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.onap.org.v11.Entitlements" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="General purpose VNF" /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,nf-type,nf-function,nf-naming-code,nf-role" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="generic-vnfs" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - <xml-property name="containsSuggestibleProps" value="true"/> - <xml-property name="suggestionAliases" value="VNFs"/> - </xml-properties> - </java-type> - - <java-type name="VfModules"> - <xml-properties> - <xml-property name="description" value="Collection of vf-modules, a deployment unit of VNFCs" /> - </xml-properties> - <xml-root-element name="vf-modules" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vfModule" name="vf-module" type="inventory.aai.onap.org.v11.VfModule" /> - </java-attributes> - </java-type> - - <java-type name="VfModule"> - <xml-root-element name="vf-module" /> - <java-attributes> - <xml-element java-attribute="vfModuleId" name="vf-module-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of vf-module." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfModuleName" name="vf-module-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of vf-module" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="orchestration status of this vf-module, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isBaseVfModule" name="is-base-vf-module" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is base vf module" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-version-id" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-invariant-id" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelCustomizationId" name="model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="contrailServiceInstanceFqdn" name="contrail-service-instance-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the Contrail unique ID for a service-instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="moduleIndex" name="module-index" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="the index will track the number of modules of a given type that have been deployed in a VNF, starting with 0, and always choosing the lowest available digit" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="a deployment unit of VNFCs" /> - <xml-property name="indexedProps" value="vf-module-id,vf-module-name,heat-stack-id,model-invariant-id,model-version-id,widget-model-id,widget-model-version,contrail-service-instance-fqdn" /> - <xml-property name="searchable" value="vf-module-id,vf-module-name" /> - <xml-property name="dependentOn" value="generic-vnf" /> - <xml-property name="container" value="vf-modules" /> - </xml-properties> - </java-type> - - - <java-type name="LagLinks"> - <xml-properties> - <xml-property name="description" value="Collection of link aggregation connections" /> - </xml-properties> - <xml-root-element name="lag-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lagLink" name="lag-link" type="inventory.aai.onap.org.v11.LagLink" /> - </java-attributes> - </java-type> - - <java-type name="LagLink"> - <xml-root-element name="lag-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Alphabetical concatenation of lag-interface names" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="LAG links can connect lag-interfaces" /> - <xml-property name="indexedProps" value="link-name" /> - <xml-property name="container" value="lag-links" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Newvces"> - <xml-properties> - <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce." /> - </xml-properties> - <xml-root-element name="newvces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="newvce" name="newvce" type="inventory.aai.onap.org.v11.Newvce" /> - </java-attributes> - </java-type> - - <java-type name="Newvce"> - <xml-root-element name="newvce" /> - <java-attributes> - <xml-element java-attribute="vnfId2" name="vnf-id2" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF, can't use same attribute name right now until we promote this new object" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by GenericVnf (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4 Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.onap.org.v11.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,prov-status,vnf-id2" /> - <xml-property name="searchable" value="vnf-id2,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id2" /> - <xml-property name="container" value="newvces" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Pnfs"> - <xml-properties> - <xml-property name="description" value="Collection of Physical Network Functions." /> - </xml-properties> - <xml-root-element name="pnfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pnf" name="pnf" type="inventory.aai.onap.org.v11.Pnf" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Pnf"> - <xml-root-element name="pnf" /> - <java-attributes> - <xml-element java-attribute="pnfName" name="pnf-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique name of Physical Network Function." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfName2" name="pnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="name of Physical Network Function." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfName2Source" name="pnf-name2-source" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="source of name2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfId" name="pnf-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="id of pnf" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment type. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment vendor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment model. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of managed by ATT or customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Oam" name="ipaddress-v4-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ipv4-oam-address with new naming convention for IP addresses" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="swVersion" name="sw-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="sw-version is the version of SW for the hosted application on the PNF." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="frameId" name="frame-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of the physical frame (relay rack) where pnf is installed." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Serial number of the device" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Loopback0" name="ipaddress-v4-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Loopback0" name="ipaddress-v6-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Aim" name="ipaddress-v4-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Aim" name="ipaddress-v6-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Oam" name="ipaddress-v6-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 OAM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CANOPI's inventory status. Only set with values exactly as defined by CANOPI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfRole" name="nf-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Nf Role is the role performed by this instance in the network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.onap.org.v11.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.onap.org.v11.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="PNF represents a physical network function. typically equipment used in the D1 world. in 1607, this will be populated by SDN-C to represent a premises router that a uCPE connects to. But this can be used to represent any physical device that is not an AIC node or uCPE." /> - <xml-property name="indexedProps" value="pnf-name,orchestration-status,inv-status" /> - <xml-property name="searchable" value="pnf-name" /> - <xml-property name="uniqueProps" value="pnf-name" /> - <xml-property name="container" value="pnfs" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="PhysicalLinks"> - <xml-properties> - <xml-property name="description" value="Collection of physical connections, typically between p-interfaces" /> - </xml-properties> - <xml-root-element name="physical-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="physicalLink" name="physical-link" type="inventory.aai.onap.org.v11.PhysicalLink" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="PhysicalLink"> - <xml-root-element name="physical-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Circuit it" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dualMode" name="dual-mode" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Dual access mode (e.g., primary, secondary" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="To provide information on who manages this circuit. A&AI or 3rd party transport provider" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceProviderName" name="service-provider-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the service Provider on this link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceProviderBandwidthUpValue" name="service-provider-bandwidth-up-value" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Upstream Bandwidth value agreed with the service provider" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceProviderBandwidthUpUnits" name="service-provider-bandwidth-up-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Units for the upstream BW value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceProviderBandwidthDownValue" name="service-provider-bandwidth-down-value" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Downstream Bandwidth value agreed with the service provider" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceProviderBandwidthDownUnits" name="service-provider-bandwidth-down-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Units for downstream BW value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of physical connections, typically between p-interfaces" /> - <xml-property name="indexedProps" value="circuit-id,link-name" /> - <xml-property name="alternateKeys1" value="circuit-id" /> - <xml-property name="container" value="physical-links" /> - <xml-property name="namespace" value="network" /> - <xml-property name="searchable" value="link-name,circuit-id" /> - </xml-properties> - </java-type> - - <java-type name="VigServers"> - <xml-root-element name="vig-servers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vigServer" name="vig-server" type="inventory.aai.onap.org.v11.VigServer" /> - </java-attributes> - </java-type> - - <java-type name="VigServer"> - <xml-root-element name="vig-server" /> - <java-attributes> - <xml-element java-attribute="vigAddressType" name="vig-address-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="indicates whether the VIG is for AVPN or INTERNET" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV4Vig" name="ipaddress-v4-vig" type="java.lang.String" > - <xml-properties> - <xml-property name="description" value="v4 IP of the vig server" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV6Vig" name="ipaddress-v6-vig" type="java.lang.String" > - <xml-properties> - <xml-property name="description" value="v6 IP of the vig server" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607" /> - <xml-property name="indexedProps" value="vig-address-type" /> - <xml-property name="dependentOn" value="ipsec-configuration" /> - <xml-property name="container" value="vig-servers" /> - </xml-properties> - </java-type> - - <java-type name="IpsecConfigurations"> - <xml-root-element name="ipsec-configurations" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ipsecConfiguration" name="ipsec-configuration" type="inventory.aai.onap.org.v11.IpsecConfiguration" /> - </java-attributes> - </java-type> - - <java-type name="IpsecConfiguration"> - <xml-root-element name="ipsec-configuration" /> - <java-attributes> - <xml-element java-attribute="ipsecConfigurationId" name="ipsec-configuration-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID of this configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedVigAddressType" name="requested-vig-address-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicate the type of VIG server like AVPN, INTERNET, BOTH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedEncryptionStrength" name="requested-encryption-strength" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedDmzType" name="requested-dmz-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ATT can offer a shared DMZ or a DMZ specific to a customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sharedDmzNetworkAddress" name="shared-dmz-network-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network address of shared DMZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedCustomerName" name="requested-customer-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="If the DMZ is a custom DMZ, this field will indicate the customer information" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikeVersion" name="ike-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="can be 1 or 2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1Authentication" name="ikev1-authentication" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contains values like md5, sha1, sha256, sha384" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1Encryption" name="ikev1-encryption" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encyption values like 3des-cbc, des-cbc, aes-128-cbc,?aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1DhGroup" name="ikev1-dh-group" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1AmGroupId" name="ikev1-am-group-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group name defined in VIG for clients using aggressive mode" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1AmPassword" name="ikev1-am-password" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="pre-shared key for the above group name " /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1SaLifetime" name="ikev1-sa-lifetime" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Lifetime for IKEv1 SA" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecAuthentication" name="ipsec-authentication" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="md5, sha1, sha256, sha384" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecEncryption" name="ipsec-encryption" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="3des-cbc, des-cbc, aes-128-cbc,?aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecSaLifetime" name="ipsec-sa-lifetime" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Life time for IPSec SA" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecPfs" name="ipsec-pfs" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="enable PFS or not" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="xauthUserId" name="xauth-userid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="user ID for xAuth, sm-user,ucpeHostName,nmteHostName" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="xauthUserPassword" name="xauth-user-password" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encrypted using the Juniper $9$ algorithm" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dpdInterval" name="dpd-interval" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The time between DPD probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dpdFrequency" name="dpd-frequency" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Maximum number of DPD before claiming the tunnel is down" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - <xml-element java-attribute="vigServers" name="vig-servers" type="inventory.aai.onap.org.v11.VigServers" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C" /> - <xml-property name="indexedProps" value="ipsec-configuration-id" /> - <xml-property name="uniqueProps" value="ipsec-configuration-id" /> - <xml-property name="container" value="ipsec-configurations" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - - <java-type name="NotificationEvent"> - <xml-root-element name="notification-event" /> - <java-attributes> - <xml-element java-attribute="cambriaPartition" name="cambria.partition" type="java.lang.String" /> - <xml-element java-attribute="eventHeader" name="event-header" type="inventory.aai.onap.org.v11.NotificationEventHeader" /> - <xml-any-element java-attribute="entity" /> - </java-attributes> - </java-type> - <java-type name="NotificationEventHeader"> - <xml-root-element name="notification-event-header" /> - <java-attributes> - <xml-element java-attribute="id" name="id" type="java.lang.String" /> - <xml-element java-attribute="timestamp" name="timestamp" type="java.lang.String" /> - <xml-element java-attribute="sourceName" name="source-name" type="java.lang.String" /> - <xml-element java-attribute="domain" name="domain" type="java.lang.String" /> - <xml-element java-attribute="sequenceNumber" name="sequence-number" type="java.lang.String" /> - <xml-element java-attribute="severity" name="severity" type="java.lang.String" /> - <xml-element java-attribute="eventType" name="event-type" type="java.lang.String" /> - <xml-element java-attribute="version" name="version" type="java.lang.String" /> - <xml-element java-attribute="action" name="action" type="java.lang.String" /> - <xml-element java-attribute="entityType" name="entity-type" type="java.lang.String" /> - <xml-element java-attribute="topEntityType" name="top-entity-type" type="java.lang.String" /> - <xml-element java-attribute="entityLink" name="entity-link" type="java.lang.String" /> - <xml-element java-attribute="status" name="status" type="java.lang.String" /> - </java-attributes> - </java-type> - <java-type name="AaiInternal"> - <xml-root-element name="aai-internal" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="reservedPropNames" name="reserved-prop-names" type="inventory.aai.onap.org.v11.ReservedPropNames" /> - <xml-element container-type="java.util.ArrayList" java-attribute="edgePropNames" name="edge-prop-names" type="inventory.aai.onap.org.v11.EdgePropNames" /> - </java-attributes> - </java-type> - <java-type name="ReservedPropNames"> - <xml-properties> - <xml-property name="description" value="Internal map to define some reserved properties of a vertex" /> - <xml-property name="uniqueProps" value="aai-unique-key" /> - <xml-property name="indexedProps" value="aai-unique-key,source-of-truth,aai-node-type,aai-uri" /> - </xml-properties> - <xml-root-element name="reserved-prop-names" /> - <java-attributes> - <xml-element java-attribute="lastModSourceOfTruth" name="last-mod-source-of-truth" type="java.lang.String" /> - <xml-element java-attribute="aaiNodeType" name="aai-node-type" type="java.lang.String" /> - <xml-element java-attribute="aaiCreatedTs" name="aai-created-ts" type="java.lang.Long" /> - <xml-element java-attribute="aaiUniqueKey" name="aai-unique-key" type="java.lang.String" /> - <xml-element java-attribute="aaiLastModTs" name="aai-last-mod-ts" type="java.lang.Long" /> - <xml-element java-attribute="sourceOfTruth" name="source-of-truth" type="java.lang.String" /> - <xml-element java-attribute="aaiUri" name="aai-uri" type="java.lang.String" /> - </java-attributes> - </java-type> - <java-type name="EdgePropNames"> - <!-- NOTE that the names of these properties are not consistent and are in mixed case and hyphen case for now --> - <xml-properties> - <xml-property name="description" value="Internal map to define the properties of an edge and interpret the map EdgeRules" /> - <xml-property name="edgeInfo" value="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV" /> - </xml-properties> - <xml-root-element name="edge-prop-names" /> - <java-attributes> - <xml-element java-attribute="edgeLabel" name="edgeLabel" type="java.lang.String" /> - <xml-element java-attribute="direction" name="direction" type="java.lang.String" /> - <xml-element java-attribute="multiplicityRule" name="multiplicityRule" type="java.lang.String" /> - <xml-element java-attribute="containsOtherV" name="contains-other-v" type="java.lang.String" /> - <xml-element java-attribute="deleteOtherV" name="delete-other-v" type="java.lang.String" /> - <xml-element java-attribute="svcinfra" name="SVC-INFRA" type="java.lang.String" /> - <xml-element java-attribute="preventDelete" name="prevent-delete" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="Models"> - <xml-properties> - <xml-property name="description" value="Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models" /> - </xml-properties> - <xml-root-element name="models" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="model" name="model" type="inventory.aai.onap.org.v11.Model" /> - </java-attributes> - </java-type> - - <java-type name="Model"> - <xml-root-element name="model" /> - <xml-properties> - <xml-property name="description" value="Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models, independent of version" /> - <xml-property name="nameProps" value="model-type" /> - <xml-property name="indexedProps" value="model-invariant-id,model-type" /> - <xml-property name="uniqueProps" value="model-invariant-id" /> - <xml-property name="container" value="models" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - <java-attributes> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to the main definition of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVers" name="model-vers" type="inventory.aai.onap.org.v11.ModelVers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - </java-type> - - - <java-type name="ModelVers"> - <xml-root-element name="model-vers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelVer" name="model-ver" type="inventory.aai.onap.org.v11.ModelVer" /> - </java-attributes> - </java-type> - - <java-type name="ModelVer"> - <xml-root-element name="model-ver" /> - <xml-properties> - <xml-property name="description" value="Subgraph definition provided by ASDC to describe a specific version of an inventory asset and its connections related to ASDC models" /> - <xml-property name="nameProps" value="model-name" /> - <xml-property name="indexedProps" value="model-version-id,model-name,model-version" /> - <xml-property name="uniqueProps" value="model-version-id" /> - <xml-property name="container" value="model-vers" /> - </xml-properties> - <java-attributes> - <xml-element java-attribute="modelVersionId" name="model-version-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the model, which can change from version to version." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v11.ModelElements" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.onap.org.v11.Metadata" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ModelElements"> - <xml-root-element name="model-elements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelElement" name="model-element" type="inventory.aai.onap.org.v11.ModelElement" /> - </java-attributes> - </java-type> - - <java-type name="ModelElement"> - <xml-properties> - <xml-property name="description" value="Defines how other models combine to make up a higher-level model." /> - <xml-property name="uniqueProps" value="model-element-uuid" /> - <xml-property name="indexedProps" value="model-element-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="model-elements" /> - </xml-properties> - <xml-root-element name="model-element" /> - <java-attributes> - <xml-element java-attribute="modelElementUuid" name="model-element-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="newDataDelFlag" name="new-data-del-flag" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates whether this element was created as part of instantiation from this model" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cardinality" name="cardinality" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="How many of this type of element are required/allowed" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="linkagePoints" name="linkage-points" type="java.lang.String" > - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v11.ModelElements"> - <xml-properties> - <xml-property name="description" value="Defines how other models combine to make up a higher-level model" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelConstraints" name="model-constraints" type="inventory.aai.onap.org.v11.ModelConstraints"> - <xml-properties> - <xml-property name="description" value="Describes new constraints on this model element that are not part of that model's definition" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ModelConstraints"> - <xml-root-element name="model-constraints" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelConstraint" name="model-constraint" type="inventory.aai.onap.org.v11.ModelConstraint" /> - </java-attributes> - </java-type> - - <java-type name="ModelConstraint"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="model-constraint-uuid" /> - <xml-property name="indexedProps" value="model-constraint-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="model-constraints" /> - </xml-properties> - <xml-root-element name="model-constraint" /> - <java-attributes> - <xml-element java-attribute="modelConstraintUuid" name="model-constraint-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constrainedElementSetUuidToReplace" name="constrained-element-set-uuid-to-replace" required="true" type="java.lang.String" /> - <xml-element java-attribute="constrainedElementSets" name="constrained-element-sets" type="inventory.aai.onap.org.v11.ConstrainedElementSets" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="ConstrainedElementSets"> - <xml-root-element name="constrained-element-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="constrainedElementSet" name="constrained-element-set" type="inventory.aai.onap.org.v11.ConstrainedElementSet" /> - </java-attributes> - </java-type> - - <java-type name="ConstrainedElementSet"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="constrained-element-set-uuid" /> - <xml-property name="indexedProps" value="constrained-element-set-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="constrained-element-sets" /> - </xml-properties> - <xml-root-element name="constrained-element-set" /> - <java-attributes> - <xml-element java-attribute="constrainedElementSetUuid" name="constrained-element-set-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="checkType" name="check-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="elementChoiceSets" name="element-choice-sets" type="inventory.aai.onap.org.v11.ElementChoiceSets" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ElementChoiceSets"> - <xml-root-element name="element-choice-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="elementChoiceSet" name="element-choice-set" type="inventory.aai.onap.org.v11.ElementChoiceSet" /> - </java-attributes> - </java-type> - - <java-type name="ElementChoiceSet"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="element-choice-set-uuid" /> - <xml-property name="indexedProps" value="element-choice-set-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="element-choice-sets" /> - </xml-properties> - <xml-root-element name="element-choice-set" /> - <java-attributes> - <xml-element java-attribute="elementChoiceSetUuid" name="element-choice-set-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="elementChoiceSetName" name="element-choice-set-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="cardinality" name="cardinality" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.onap.org.v11.ModelElements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueries"> - <xml-root-element name="named-queries" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="namedQuery" name="named-query" type="inventory.aai.onap.org.v11.NamedQuery" /> - </java-attributes> - </java-type> - - <java-type name="NamedQuery"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="nameProps" value="named-query-name" /> - <xml-property name="uniqueProps" value="named-query-uuid" /> - <xml-property name="indexedProps" value="named-query-uuid,named-query-name" /> - <xml-property name="container" value="named-queries" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - <xml-root-element name="named-query" /> - <java-attributes> - <xml-element java-attribute="namedQueryUuid" name="named-query-uuid" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="namedQueryName" name="named-query-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="namedQueryVersion" name="named-query-version" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="requiredInputParams" name="required-input-param" type="java.lang.String" > - <xml-element-wrapper name="required-input-params" /> - </xml-element> - <xml-element java-attribute="description" name="description" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.onap.org.v11.NamedQueryElements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueryElements"> - <xml-root-element name="named-query-elements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="namedQueryElement" name="named-query-element" type="inventory.aai.onap.org.v11.NamedQueryElement" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueryElement"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="named-query-element-uuid" /> - <xml-property name="indexedProps" value="named-query-element-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="named-query-elements" /> - </xml-properties> - <xml-root-element name="named-query-element" /> - <java-attributes> - <xml-element java-attribute="namedQueryElementUuid" name="named-query-element-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="propertyLimitDesc" name="property-limit-desc" type="java.lang.String" /> - <xml-element java-attribute="doNotOutput" name="do-not-output" type="java.lang.String" /> - <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.onap.org.v11.NamedQueryElements" /> - <xml-element java-attribute="relatedLookups" name="related-lookups" type="inventory.aai.onap.org.v11.RelatedLookups" /> - <xml-element java-attribute="propertyConstraints" name="property-constraints" type="inventory.aai.onap.org.v11.PropertyConstraints" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="RelatedLookups"> - <xml-root-element name="related-lookups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="relatedLookup" name="related-lookup" type="inventory.aai.onap.org.v11.RelatedLookup" /> - </java-attributes> - </java-type> - - <java-type name="RelatedLookup"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="related-lookup-uuid" /> - <xml-property name="indexedProps" value="related-lookup-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="related-lookups" /> - </xml-properties> - <xml-root-element name="related-lookup" /> - <java-attributes> - <xml-element java-attribute="relatedLookupUuid" name="related-lookup-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sourceNodeType" name="source-node-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="sourceNodeProperty" name="source-node-property" required="true" type="java.lang.String" /> - <xml-element java-attribute="targetNodeType" name="target-node-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="targetNodeProperty" name="target-node-property" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="PropertyConstraints"> - <xml-root-element name="property-constraints" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyConstraint" name="property-constraint" type="inventory.aai.onap.org.v11.PropertyConstraint" /> - </java-attributes> - </java-type> - - <java-type name="PropertyConstraint"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="property-constraint-uuid" /> - <xml-property name="indexedProps" value="property-constraint-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="property-constraints" /> - </xml-properties> - <xml-root-element name="property-constraint" /> - <java-attributes> - <xml-element java-attribute="propertyConstraintUuid" name="property-constraint-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="propertyName" name="property-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ModelAndNamedQuerySearch"> - <xml-properties> - <xml-property name="description" value="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="model-and-named-query-search" /> - <java-attributes> - <xml-element java-attribute="queryParameters" name="query-parameters" type="inventory.aai.onap.org.v11.QueryParameters" /> - <xml-element java-attribute="instanceFilters" name="instance-filters" type="inventory.aai.onap.org.v11.InstanceFilters" /> - <xml-element java-attribute="secondaryFilts" name="secondary-filts" type="inventory.aai.onap.org.v11.SecondaryFilts" /> - <xml-element java-attribute="topNodeType" name="top-node-type" type="java.lang.String" /> - <xml-element java-attribute="secondaryFilterCutPoint" name="secondary-filter-cut-point" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="QueryParameters"> - <xml-properties> - <xml-property name="description" value="QueryParameters for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="query-parameters" /> - <java-attributes> - <xml-element java-attribute="namedQuery" name="named-query" type="inventory.aai.onap.org.v11.NamedQuery" /> - <xml-element java-attribute="model" name="model" type="inventory.aai.onap.org.v11.OverloadedModel" /> - </java-attributes> - </java-type> - - <java-type name="OverloadedModel"> - <xml-root-element name="overloaded-model" /> - <xml-properties> - <xml-property name="description" value="Allows for legacy POST of old-style and new-style models" /> - </xml-properties> - <java-attributes> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to the main definition of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelNameVersionId" name="model-name-version-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the model, which can change from version to version." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelId" name="model-id" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Invariant unique ID which does not change from version to version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVers" name="model-vers" type="inventory.aai.onap.org.v11.ModelVers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="InstanceFilters"> - <xml-properties> - <xml-property name="description" value="InstanceFilters for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="instance-filters" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="instanceFilter" name="instance-filter" type="inventory.aai.onap.org.v11.InstanceFilter" /> - </java-attributes> - </java-type> - - <java-type name="InstanceFilter"> - <xml-properties> - <xml-property name="description" value="InstanceFilter for performing a named-query or model query" /> - <xml-property name="container" value="instance-filters" /> - </xml-properties> - <xml-root-element name="instance-filter" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilts"> - <xml-properties> - <xml-property name="description" value="SecondaryFilts for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="secondary-filts" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilt" name="secondary-filt" type="inventory.aai.onap.org.v11.SecondaryFilt" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilt"> - <xml-properties> - <xml-property name="description" value="SecondaryFilt for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="secondary-filt" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any" /> - </java-attributes> - </java-type> - - <java-type name="Properties"> - <xml-properties> - <xml-property name="description" value="Property holder for query properties or instance properties" /> - </xml-properties> - <xml-root-element name="properties" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ResponseList"> - <xml-properties> - <xml-property name="description" value="Response container for the results of a named-query or model query" /> - </xml-properties> - <xml-root-element name="response-list" /> - <java-attributes> - <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.onap.org.v11.InventoryResponseItems" /> - </java-attributes> - </java-type> - - <java-type name="InventoryResponseItems"> - <xml-properties> - <xml-property name="description" value="Container for inventory items in response list" /> - <xml-property name="container" value="response-list" /> - </xml-properties> - <xml-root-element name="inventory-response-items" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryResponseItem" name="inventory-response-item" type="inventory.aai.onap.org.v11.InventoryResponseItem" /> - </java-attributes> - </java-type> - - <java-type name="InventoryResponseItem"> - <xml-properties> - <xml-property name="description" value="Inventory item for response list" /> - <xml-property name="container" value="inventory-response-items" /> - </xml-properties> - <xml-root-element name="inventory-response-item" /> - <java-attributes> - <xml-element java-attribute="modelName" name="model-name" type="java.lang.String" /> - <xml-any-element java-attribute="item" /> - <xml-element java-attribute="extraProperties" name="extra-properties" type="inventory.aai.onap.org.v11.ExtraProperties" /> - <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.onap.org.v11.InventoryResponseItems" /> - </java-attributes> - </java-type> - - <java-type name="ExtraProperties"> - <xml-properties> - <xml-property name="description" value="Extra properties for inventory item for response list" /> - </xml-properties> - <xml-root-element name="extra-properties" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="extraProperty" name="extra-property" type="inventory.aai.onap.org.v11.ExtraProperty" /> - </java-attributes> - </java-type> - - <java-type name="ExtraProperty"> - <xml-root-element name="extra-property" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="RouteTableReferences"> - <xml-properties> - <xml-property name="description" value="Collection of openstack route table references" /> - </xml-properties> - <xml-root-element name="route-table-references" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="routeTableReference" name="route-table-reference" type="inventory.aai.onap.org.v11.RouteTableReference" /> - </java-attributes> - </java-type> - - <java-type name="RouteTableReference"> - <xml-root-element name="route-table-reference" /> - <java-attributes> - <xml-element java-attribute="routeTableReferenceId" name="route-table-reference-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeTableReferenceFqdn" name="route-table-reference-fqdn" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="FQDN entry in the route table." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="Openstack route table reference." /> - <xml-property name="nameProps" value="route-table-reference-fqdn" /> - <xml-property name="uniqueProps" value="route-table-reference-id" /> - <xml-property name="indexedProps" value="route-table-reference-id,route-table-reference-fqdn" /> - <xml-property name="container" value="route-table-references" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="InstanceGroups"> - <xml-properties> - <xml-property name="description" value="Collection of openstack route table references" /> - </xml-properties> - <xml-root-element name="instance-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="instanceGroup" name="instance-group" type="inventory.aai.onap.org.v11.InstanceGroup" /> - </java-attributes> - </java-type> - - <java-type name="InstanceGroup"> - <xml-root-element name="instance-group" /> - <java-attributes> - <xml-element java-attribute="instanceGroupRole" name="instance-group-role" required="false" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="role of the instance group." /> - </xml-properties> - </xml-element> - - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="false" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ASDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - - <xml-element java-attribute="modelVersionId" name="model-version-id" required="false" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ASDC model version uid for this resource model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Instance Group ID, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="description" name="description" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Descriptive text to help identify the usage of this instance-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="type" name="type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Only valid value today is lower case ha for high availability" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subType" name="sub-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Valid values for ha type are [geo-activeactive, geo-activestandby, local-activeactive, local-activestandby]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="General mechanism for grouping instances" /> - <xml-property name="nameProps" value="description" /> - <xml-property name="uniqueProps" value="id" /> - <xml-property name="searchable" value="id,description"/> - <xml-property name="indexedProps" value="id,description,type,sub-type" /> - <xml-property name="container" value="instance-groups" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - - <java-type name="SegmentationAssignments"> - <xml-properties> - <xml-property name="description" value="Collection of openstack segmentation assignments" /> - </xml-properties> - <xml-root-element name="segmentation-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="segmentationAssignment" name="segmentation-assignment" type="inventory.aai.onap.org.v11.SegmentationAssignment" /> - </java-attributes> - </java-type> - - <java-type name="SegmentationAssignment"> - <xml-root-element name="segmentation-assignment" /> - <java-attributes> - <xml-element java-attribute="segmentationId" name="segmentation-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack segmentation assignment." /> - <xml-property name="indexedProps" value="segmentation-id" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="segmentation-assignments" /> - </xml-properties> - </java-type> - - <java-type name="AllottedResources"> - <xml-properties> - <xml-property name="description" value="This object is used to store slices of services being offered" /> - </xml-properties> - <xml-root-element name="allotted-resources" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="allottedResource" name="allotted-resource" type="inventory.aai.onap.org.v11.AllottedResource" /> - </java-attributes> - </java-type> - - <java-type name="AllottedResource"> - <xml-root-element name="allotted-resource" /> - <java-attributes> - <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Allotted Resource id UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="description" name="description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The descriptive information assigned to this allotted resource instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Link back to more information in the controller" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-version-id" /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - <xml-property name="requires" value="model-invariant-id" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}#model-version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="type" name="type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Generic description of the type of allotted resource." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="role" name="role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="role in the network that this resource will be providing." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tunnelXconnects" name="tunnel-xconnects" type="inventory.aai.onap.org.v11.TunnelXconnects" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="Represents a slice or partial piece of a resource that gets separately allotted" /> - <xml-property name="nameProps" value="description" /> - <xml-property name="uniqueProps" value="id" /> - <xml-property name="indexedProps" value="id,model-invariant-id,model-version-id,type,role" /> - <xml-property name="dependentOn" value="service-instance" /> - <xml-property name="container" value="allotted-resources" /> - <!-- <xml-property name="namespace" value="network" /> --> - </xml-properties> - </java-type> - - <java-type name="TunnelXconnects"> - <xml-properties> - <xml-property name="description" value="This object is used to store the specific tunnel cross connect aspects of an allotted resource" /> - </xml-properties> - <xml-root-element name="tunnel-xconnects" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="tunnelXconnect" name="tunnel-xconnect" type="inventory.aai.onap.org.v11.TunnelXconnect" /> - </java-attributes> - </java-type> - - <java-type name="TunnelXconnect"> - <xml-root-element name="tunnel-xconnect" /> - <java-attributes> - <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Allotted Resource id UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN uplink bandwidth for WAN1" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN downlink bandwidth for WAN1" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN uplink bandwidth for WAN2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN downlink bandwidth for WAN2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="Represents the specifics of a tunnel cross connect piece of a resource that gets separately allotted" /> - <xml-property name="uniqueProps" value="id" /> - <xml-property name="indexedProps" value="id" /> - <xml-property name="dependentOn" value="allotted-resource" /> - <xml-property name="container" value="tunnel-xconnects" /> - <!-- <xml-property name="namespace" value="network" /> --> - </xml-properties> - </java-type> - - <java-type name="Entitlements"> - <xml-properties> - <xml-property name="description" value="Entitlements, keyed by group-uuid and resource-uuid, related to license management" /> - </xml-properties> - <xml-root-element name="entitlements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="entitlement" name="entitlement" type="inventory.aai.onap.org.v11.Entitlement" /> - </java-attributes> - </java-type> - - <java-type name="Entitlement"> - <xml-root-element name="entitlement" /> - <java-attributes> - <xml-element java-attribute="groupUuid" name="group-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID for the entitlement group the resource comes from, should be uuid." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceUuid" name="resource-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of an entitlement resource. " /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Metadata for entitlement group." /> - <xml-property name="indexedProps" value="group-uuid,resource-uuid" /> - <xml-property name="dependentOn" value="generic-vnf,vce" /> - <xml-property name="container" value="entitlements" /> - </xml-properties> - </java-type> - - - <java-type name="Licenses"> - <xml-properties> - <xml-property name="description" value="Licenses to be allocated across resources, keyed by group-uuid and resource-uuid, related to license management" /> - </xml-properties> - <xml-root-element name="licenses" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="license" name="license" type="inventory.aai.onap.org.v11.License" /> - </java-attributes> - </java-type> - - <java-type name="License"> - <xml-root-element name="license" /> - <java-attributes> - <xml-element java-attribute="groupUuid" name="group-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID for the license group the resource belongs to, should be uuid." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceUuid" name="resource-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of a license resource. " /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Metadata for license group." /> - <xml-property name="indexedProps" value="group-uuid,resource-uuid" /> - <xml-property name="dependentOn" value="generic-vnf,vce" /> - <xml-property name="container" value="licenses" /> - </xml-properties> - </java-type> - - <java-type name="Vnf"> - <xml-root-element name="vnf"/> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Abstract vnf class" /> - <xml-property name="indexedProps" value="vnf-id" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="inheritors" value="vce,generic-vnf" /> - <xml-property name="abstract" value="true" /> - </xml-properties> - </java-type> - - <java-type name="Zones"> - <xml-properties> - <xml-property name="description" value="Collection of zones" /> - </xml-properties> - <xml-root-element name="zones" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="zone" name="zone" type="inventory.aai.onap.org.v11.Zone" /> - </java-attributes> - </java-type> - - <java-type name="Zone"> - <xml-root-element name="zone" /> - <java-attributes> - <xml-element java-attribute="zoneId" name="zone-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Code assigned by AIC to the zone" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="zoneName" name="zone-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="English name associated with the zone" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="designType" name="design-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Design of zone [Medium/Large?]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="zoneContext" name="zone-context" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Context of zone [production/test]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="status" name="status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Status of a zone." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="A zone is a grouping of assets in a location homing to the same connections into the CBB" /> - <xml-property name="nameProps" value="zone-name" /> - <xml-property name="indexedProps" value="zone-id,design-type,zone-context" /> - <xml-property name="uniqueProps" value="zone-id" /> - <xml-property name="container" value="zones" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - <java-type name="RouteTargets"> - <xml-properties> - <xml-property name="description" value="Collection of route target information" /> - </xml-properties> - <xml-root-element name="route-targets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="routeTarget" name="route-target" type="inventory.aai.onap.org.v11.RouteTarget" /> - </java-attributes> - </java-type> - <java-type name="RouteTarget"> - <xml-root-element name="route-target" /> - <java-attributes> - <xml-element java-attribute="globalRouteTarget" name="global-route-target" required="true" xml-key="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Number used to identify an RT, globally unique in the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeTargetRole" name="route-target-role" required="true" xml-key="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role assigned to this route target" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Route target information" /> - <xml-property name="container" value="route-targets" /> - <xml-property name="dependentOn" value="vpn-binding" /> - <xml-property name="canBeLinked" value="true" /> - </xml-properties> - </java-type> - - <java-type name="SriovPfs"> - <xml-properties> - <xml-property name="description" value="Collection of SR-IOV Physical Functions." /> - </xml-properties> - <xml-root-element name="sriov-pfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sriovPf" name="sriov-pf" type="inventory.aai.onap.org.v11.SriovPf" /> - </java-attributes> - </java-type> - <java-type name="SriovPf"> - <xml-root-element name="sriov-pf" /> - <java-attributes> - <xml-element java-attribute="pfPciId" name="pf-pci-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifier for the sriov-pf" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="SR-IOV Physical Function" /> - <xml-property name="indexedProps" value="pf-pci-id" /> - <xml-property name="dependentOn" value="p-interface" /> - <xml-property name="container" value="sriov-pfs" /> - </xml-properties> - </java-type> - - <java-type name="HostRoutes"> - <xml-root-element name="host-routes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="hostRoute" name="host-route" type="inventory.aai.onap.org.v11.HostRoute" /> - </java-attributes> - </java-type> - <java-type name="HostRoute"> - <xml-root-element name="host-route" /> - <java-attributes> - <xml-element java-attribute="hostRouteId" name="host-route-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="host-route id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routePrefix" name="route-prefix" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="subnet prefix" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nextHop" name="next-hop" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Could be ip-address, hostname, or service-instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nextHopType" name="next-hop-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Should be ip-address, hostname, or service-instance to match next-hop" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="host-route-id" /> - <xml-property name="dependentOn" value="subnet" /> - <xml-property name="container" value="host-routes" /> - </xml-properties> - </java-type> - <java-type name="VipIpv4AddressList"> - <xml-root-element name="vip-ipv4-address-list" /> - <java-attributes> - <xml-element java-attribute="vipIpv4Address" name="vip-ipv4-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vipIpv4PrefixLength" name="vip-ipv4-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 32 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv4 Address Range" /> - <xml-property name="indexedProps" value="vip-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - </xml-properties> - </java-type> - - <java-type name="VipIpv6AddressList"> - <xml-root-element name="vip-ipv6-address-list" /> - <java-attributes> - <xml-element java-attribute="vipIpv6Address" name="vip-ipv6-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vipIpv6PrefixLength" name="vip-ipv6-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 128 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv6 Address Range" /> - <xml-property name="indexedProps" value="vip-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - </xml-properties> - </java-type> - </java-types> -</xml-bindings> diff --git a/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v8.xml b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v8.xml deleted file mode 100644 index 3ed2ea531f..0000000000 --- a/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v8.xml +++ /dev/null @@ -1,3076 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- - ============LICENSE_START======================================================= - org.openecomp.aai - ================================================================================ - Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - ================================================================================ - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ============LICENSE_END========================================================= - --> - -<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="inventory.aai.openecomp.org.v8" xml-mapping-metadata-complete="true"> - <xml-schema element-form-default="QUALIFIED"> - <xml-ns namespace-uri="http://org.openecomp.aai.inventory/v8" /> - </xml-schema> - <java-types> - <java-type name="Inventory"> - <xml-root-element name="inventory" /> - <java-attributes> - <xml-element java-attribute="search" name="search" type="inventory.aai.openecomp.org.v8.Search" /> - <xml-element java-attribute="actions" name="actions" type="inventory.aai.openecomp.org.v8.Actions" /> - <xml-element java-attribute="cloudInfrastructure" name="cloud-infrastructure" type="inventory.aai.openecomp.org.v8.CloudInfrastructure" /> - <xml-element java-attribute="business" name="business" type="inventory.aai.openecomp.org.v8.Business" /> - <xml-element java-attribute="serviceDesignAndCreation" name="service-design-and-creation" type="inventory.aai.openecomp.org.v8.ServiceDesignAndCreation" /> - <xml-element java-attribute="network" name="network" type="inventory.aai.openecomp.org.v8.Network" /> - <xml-element java-attribute="aaiInternal" name="aai-internal" type="inventory.aai.openecomp.org.v8.AaiInternal" /> - </java-attributes> - </java-type> - - <java-type name="Search"> - <xml-root-element name="search" /> - <java-attributes> - <xml-element java-attribute="searchResults" name="search-results" type="inventory.aai.openecomp.org.v8.SearchResults" /> - </java-attributes> - </java-type> - - - <java-type name="TaggedInventoryItemList"> - <xml-root-element name="tagged-inventory-item-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItem" name="inventory-item" type="inventory.aai.openecomp.org.v8.InventoryItem" /> - </java-attributes> - </java-type> - - <java-type name="InventoryItem"> - <xml-root-element name="inventory-item" /> - <java-attributes> - <xml-element java-attribute="inventoryItemType" name="inventory-item-type" type="java.lang.String" /> - <xml-element java-attribute="inventoryItemLink" name="inventory-item-link" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItemData" name="inventory-item-data" type="inventory.aai.openecomp.org.v8.InventoryItemData" /> - <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.openecomp.org.v8.TaggedInventoryItemList" /> - </java-attributes> - </java-type> - - <java-type name="InventoryItemData"> - <xml-root-element name="inventory-item-data" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - - <java-type name="StartNodeFilter"> - <xml-root-element name="start-node-filter" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="IncludeNodeFilter"> - <xml-root-element name="include-node-filter" /> - <java-attributes> - <xml-element java-attribute="includeNodeType" name="include-node-type" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilter"> - <xml-root-element name="secondary-filter" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="filterType" name="filter-type" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="SearchResults"> - <xml-root-element name="search-results" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="resultData" name="result-data" type="inventory.aai.openecomp.org.v8.ResultData" /> - </java-attributes> - </java-type> - - <java-type name="ResultData"> - <xml-root-element name="result-data" /> - <java-attributes> - <xml-element java-attribute="resourceType" name="resource-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The specific type of node in the AAI graph" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceLink" name="resource-link" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The URL to the specific resource" /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="Actions"> - <xml-properties> - <xml-property name="description" value="APIs that are more action related than REST (e.g., notify, update)." /> - </xml-properties> - <xml-root-element name="actions" /> - <java-attributes> - <xml-element java-attribute="update" name="update" type="inventory.aai.openecomp.org.v8.Update" /> - <xml-element java-attribute="notify" name="notify" type="inventory.aai.openecomp.org.v8.Notify" /> - </java-attributes> - </java-type> - - <java-type name="Update"> - <xml-properties> - <xml-property name="description" value="Serves a PATCH like function. Does not enforce concurrency control." /> - </xml-properties> - <xml-root-element name="update" /> - <java-attributes> - <xml-element java-attribute="updateNodeType" name="update-node-type" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="updateNodeKey" name="update-node-key" type="inventory.aai.openecomp.org.v8.UpdateNodeKey" /> - <xml-element java-attribute="updateNodeUri" name="update-node-uri" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="action" name="action" type="inventory.aai.openecomp.org.v8.Action" /> - </java-attributes> - </java-type> - - <java-type name="Action"> - <xml-root-element name="action" /> - <java-attributes> - <xml-element java-attribute="actionType" name="action-type" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="actionData" name="action-data" type="inventory.aai.openecomp.org.v8.ActionData" /> - </java-attributes> - </java-type> - - <java-type name="ActionData"> - <xml-root-element name="action-data" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="UpdateNodeKey"> - <xml-root-element name="update-node-key" /> - <java-attributes> - <xml-element java-attribute="keyName" name="key-name" type="java.lang.String" /> - <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="Notify"> - <xml-root-element name="notify" /> - <java-attributes> - <xml-element java-attribute="eventId" name="event-id" required="true" type="java.lang.String" /> - <xml-element java-attribute="nodeType" name="node-type" type="java.lang.String" /> - <xml-element java-attribute="eventTrigger" name="event-trigger" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="keyData" name="key-data" type="inventory.aai.openecomp.org.v8.KeyData" /> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="KeyData"> - <xml-root-element name="key-data" /> - <java-attributes> - <xml-element java-attribute="keyName" name="key-name" type="java.lang.String" /> - <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="CloudInfrastructure"> - <xml-properties> - <xml-property name="description" value="Namespace for cloud infrastructure." /> - </xml-properties> - <xml-root-element name="cloud-infrastructure" /> - <java-attributes> - <xml-element java-attribute="cloudRegions" name="cloud-regions" type="inventory.aai.openecomp.org.v8.CloudRegions" /> - <xml-element java-attribute="pservers" name="pservers" type="inventory.aai.openecomp.org.v8.Pservers" /> - </java-attributes> - </java-type> - - <java-type name="CloudRegions"> - <xml-root-element name="cloud-regions" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="cloudRegion" name="cloud-region" type="inventory.aai.openecomp.org.v8.CloudRegion" /> - </java-attributes> - </java-type> - - <java-type name="CloudRegion"> - <xml-root-element name="cloud-region" /> - <java-attributes> - <xml-element java-attribute="cloudOwner" name="cloud-owner" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudRegionId" name="cloud-region-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudType" name="cloud-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the cloud (e.g., openstack)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ownerDefinedType" name="owner-defined-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Cloud-owner defined type indicator" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudRegionVersion" name="cloud-region-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Software version employed at the site" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL of the keystone identity service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudZone" name="cloud-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Zone where the cloud is homed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="complex name for cloud-region instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeGroups" name="volume-groups" type="inventory.aai.openecomp.org.v8.VolumeGroups" /> - <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.openecomp.org.v8.Tenants" /> - <xml-element java-attribute="flavors" name="flavors" type="inventory.aai.openecomp.org.v8.Flavors" /> - <xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.openecomp.org.v8.GroupAssignments" /> - <xml-element java-attribute="snapshots" name="snapshots" type="inventory.aai.openecomp.org.v8.Snapshots" /> - <xml-element java-attribute="images" name="images" type="inventory.aai.openecomp.org.v8.Images" /> - <xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.openecomp.org.v8.AvailabilityZones" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="cloud-region designates an installation of a cloud cluster or region or instantiation. Cloud regions are uniquely identified by a composite key, cloud-owner + cloud-region-id. The format of the cloud-owner is vendor-cloudname." /> - <xml-property name="indexedProps" value="cloud-owner,cloud-region-id,cloud-type,owner-defined-type" /> - <xml-property name="nameProps" value="owner-defined-type" /> - <xml-property name="container" value="cloud-regions" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - <java-type name="VolumeGroups"> - <xml-properties> - <xml-property name="description" value="Collection of persistent block-level storage." /> - </xml-properties> - <xml-root-element name="volume-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="volumeGroup" name="volume-group" type="inventory.aai.openecomp.org.v8.VolumeGroup" /> - </java-attributes> - </java-type> - - <java-type name="VolumeGroup"> - <xml-root-element name="volume-group" /> - <java-attributes> - <xml-element java-attribute="volumeGroupId" name="volume-group-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of volume-group." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeGroupName" name="volume-group-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the volume group." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this volume-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the SDC resource. This field has been overloaded and clients should expect changes to occur in the future to this field as SDC matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this volume-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Persistent block-level storage." /> - <xml-property name="indexedProps" value="volume-group-name,vnf-type,heat-stack-id,volume-group-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="volume-groups" /> - </xml-properties> - </java-type> - - <java-type name="RelationshipList"> - <xml-root-element name="relationship-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="relationship" name="relationship" type="inventory.aai.openecomp.org.v8.Relationship" /> - </java-attributes> - </java-type> - - <java-type name="Relationship"> - <xml-root-element name="relationship" /> - <java-attributes> - <xml-element java-attribute="relatedTo" name="related-to" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="A keyword provided by AAI to indicate type of node." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relatedLink" name="related-link" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to the object in AAI." /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="relationshipData" name="relationship-data" type="inventory.aai.openecomp.org.v8.RelationshipData" /> - <xml-element container-type="java.util.ArrayList" java-attribute="relatedToProperty" name="related-to-property" type="inventory.aai.openecomp.org.v8.RelatedToProperty" /> - </java-attributes> - </java-type> - - <java-type name="RelatedToProperty"> - <xml-root-element name="related-to-property" /> - <java-attributes> - <xml-element java-attribute="propertyKey" name="property-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Key part of a key/value pair" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Value part of a key/value pair" /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="RelationshipData"> - <xml-root-element name="relationship-data" /> - <java-attributes> - <xml-element java-attribute="relationshipKey" name="relationship-key" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="A keyword provided by AAI to indicate an attribute." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipValue" name="relationship-value" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Value of the attribute." /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="Tenants"> - <xml-properties> - <xml-property name="description" value="Collection of openstack tenants." /> - </xml-properties> - <xml-root-element name="tenants" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="tenant" name="tenant" type="inventory.aai.openecomp.org.v8.Tenant" /> - </java-attributes> - </java-type> - - <java-type name="Tenant"> - <xml-root-element name="tenant" /> - <java-attributes> - <xml-element java-attribute="tenantId" name="tenant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id relative to the cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tenantName" name="tenant-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Readable name of tenant" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vservers" name="vservers" type="inventory.aai.openecomp.org.v8.Vservers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack tenant" /> - <xml-property name="nameProps" value="tenant-name" /> - <xml-property name="indexedProps" value="tenant-name,tenant-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="tenants" /> - </xml-properties> - </java-type> - - <java-type name="Vservers"> - <xml-properties> - <xml-property name="description" value="Collection of virtual Servers, aka virtual machines or VMs." /> - </xml-properties> - <xml-root-element name="vservers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vserver" name="vserver" type="inventory.aai.openecomp.org.v8.Vserver" /> - </java-attributes> - </java-type> - - <java-type name="Vserver"> - <xml-root-element name="vserver" /> - <java-attributes> - <xml-element java-attribute="vserverId" name="vserver-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier for this vserver relative to its tenant" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverName" name="vserver-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of vserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverName2" name="vserver-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternative name of vserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverSelflink" name="vserver-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumes" name="volumes" type="inventory.aai.openecomp.org.v8.Volumes" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v8.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual Servers, aka virtual machine or VM." /> - <xml-property name="nameProps" value="vserver-name" /> - <xml-property name="indexedProps" value="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2" /> - <xml-property name="searchable" value="vserver-name,vserver-id,vserver-name2" /> - <xml-property name="dependentOn" value="tenant" /> - <xml-property name="container" value="vservers" /> - </xml-properties> - </java-type> - - <java-type name="LInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of logical interfaces." /> - </xml-properties> - <xml-root-element name="l-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lInterface" name="l-interface" type="inventory.aai.openecomp.org.v8.LInterface" /> - </java-attributes> - </java-type> - - <java-type name="LInterface"> - <xml-root-element name="l-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name given to the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="E.g., CUSTOMER, UPLINK, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v6WanLinkIp" name="v6-wan-link-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="macaddr" name="macaddr" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="MAC address for the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Whether AAI should be managing this interface of not. Could have value like CUSTOMER" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlans" name="vlans" type="inventory.aai.openecomp.org.v8.Vlans" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.openecomp.org.v8.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.openecomp.org.v8.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Logical interfaces, e.g., a vnic." /> - <xml-property name="indexedProps" value="macaddr,interface-id,interface-name,network-name" /> - <xml-property name="dependentOn" value="generic-vnf,p-interface,vserver,lag-interface" /> - <xml-property name="container" value="l-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="L3InterfaceIpv4AddressList"> - <xml-root-element name="l3-interface-ipv4-address-list" /> - <java-attributes> - <xml-element java-attribute="l3InterfaceIpv4Address" name="l3-interface-ipv4-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="l3InterfaceIpv4PrefixLength" name="l3-interface-ipv4-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 32 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv4 Address Range" /> - <xml-property name="indexedProps" value="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="vlan,l-interface" /> - </xml-properties> - </java-type> - - <java-type name="Vlans"> - <xml-root-element name="vlans" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vlan" name="vlan" type="inventory.aai.openecomp.org.v8.Vlan" /> - </java-attributes> - </java-type> - - <java-type name="Vlan"> - <xml-root-element name="vlan" /> - <java-attributes> - <xml-element java-attribute="vlanInterface" name="vlan-interface" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="String that identifies the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanDescription" name="vlan-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to describe (the service associated with) the vlan" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="backdoorConnection" name="backdoor-connection" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Whether customer is going to use this VLAN for backdoor connection to another customer premise device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnId" name="vpn-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This indicates the customers VPN ID associated with this vlan" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.openecomp.org.v8.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.openecomp.org.v8.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Definition of vlan" /> - <xml-property name="indexedProps" value="vlan-interface,vlan-id-inner,vpn-id" /> - <xml-property name="uniqueProps" value="vpn-id" /> - <xml-property name="dependentOn" value="l-interface" /> - <xml-property name="container" value="vlans" /> - </xml-properties> - </java-type> - - <java-type name="L3InterfaceIpv6AddressList"> - <xml-root-element name="l3-interface-ipv6-address-list" /> - <java-attributes> - <xml-element java-attribute="l3InterfaceIpv6Address" name="l3-interface-ipv6-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="l3InterfaceIpv6PrefixLength" name="l3-interface-ipv6-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 128 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv6 Address Range" /> - <xml-property name="indexedProps" value="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="vlan,l-interface" /> - </xml-properties> - </java-type> - - <java-type name="Volumes"> - <xml-properties> - <xml-property name="description" value="Collection of ephemeral Block storage volumes." /> - </xml-properties> - <xml-root-element name="volumes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="volume" name="volume" type="inventory.aai.openecomp.org.v8.Volume" /> - </java-attributes> - </java-type> - - <java-type name="Volume"> - <xml-root-element name="volume" /> - <java-attributes> - <xml-element java-attribute="volumeId" name="volume-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of block storage volume relative to the vserver." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeSelflink" name="volume-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Ephemeral Block storage volume." /> - <xml-property name="indexedProps" value="volume-id" /> - <xml-property name="dependentOn" value="vserver" /> - <xml-property name="container" value="volumes" /> - </xml-properties> - </java-type> - - <java-type name="Flavors"> - <xml-properties> - <xml-property name="description" value="Collection of openstack flavors." /> - </xml-properties> - <xml-root-element name="flavors" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="flavor" name="flavor" type="inventory.aai.openecomp.org.v8.Flavor" /> - </java-attributes> - </java-type> - - <java-type name="Flavor"> - <xml-root-element name="flavor" /> - <java-attributes> - <xml-element java-attribute="flavorId" name="flavor-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Flavor id, expected to be unique across cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorName" name="flavor-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Flavor name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorVcpus" name="flavor-vcpus" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Number of CPUs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorRam" name="flavor-ram" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Amount of memory" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorDisk" name="flavor-disk" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Disk space" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorEphemeral" name="flavor-ephemeral" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Amount of ephemeral disk space" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorSwap" name="flavor-swap" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="amount of swap space allocation" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorIsPublic" name="flavor-is-public" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="whether flavor is available to all users or private to the tenant it was created in." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorSelflink" name="flavor-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorDisabled" name="flavor-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Boolean as to whether this flavor is no longer enabled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack flavor." /> - <xml-property name="nameProps" value="flavor-name" /> - <xml-property name="indexedProps" value="flavor-name,flavor-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="flavors" /> - </xml-properties> - </java-type> - - <java-type name="Snapshots"> - <xml-properties> - <xml-property name="description" value="Collection of openstack snapshots" /> - </xml-properties> - <xml-root-element name="snapshots" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="snapshot" name="snapshot" type="inventory.aai.openecomp.org.v8.Snapshot" /> - </java-attributes> - </java-type> - - <java-type name="Snapshot"> - <xml-root-element name="snapshot" /> - <java-attributes> - <xml-element java-attribute="snapshotId" name="snapshot-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Snapshot id, this is the key UUID assoc associated in glance with the snapshots." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotName" name="snapshot-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Snapshot name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotArchitecture" name="snapshot-architecture" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operating system architecture" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotOsDistro" name="snapshot-os-distro" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The common name of the operating system distribution in lowercase" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotOsVersion" name="snapshot-os-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The operating system version as specified by the distributor." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotSelflink" name="snapshot-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="prevSnapshotId" name="prev-snapshot-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field contains the UUID of the previous snapshot (if any)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack snapshot" /> - <xml-property name="nameProps" value="snapshot-name" /> - <xml-property name="uniqueProps" value="snapshot-id" /> - <xml-property name="indexedProps" value="application,snapshot-name,application-vendor,snapshot-id,application-version,prev-snapshot-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="snapshots" /> - </xml-properties> - </java-type> - - <java-type name="GroupAssignments"> - <xml-properties> - <xml-property name="description" value="Collection of openstack group assignments" /> - </xml-properties> - <xml-root-element name="group-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="groupAssignment" name="group-assignment" type="inventory.aai.openecomp.org.v8.GroupAssignment" /> - </java-attributes> - </java-type> - - <java-type name="GroupAssignment"> - <xml-root-element name="group-assignment" /> - <java-attributes> - <xml-element java-attribute="groupId" name="group-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Group id, expected to be unique across cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupType" name="group-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group type - the type of group this instance refers to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupName" name="group-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group name - name assigned to the group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupDescription" name="group-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group description - description of the group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack group-assignment used to store exclusivity groups (EG)." /> - <xml-property name="nameProps" value="group-name" /> - <xml-property name="indexedProps" value="group-id,group-type,group-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="group-assignments" /> - </xml-properties> - </java-type> - - <java-type name="Images"> - <xml-properties> - <xml-property name="description" value="Collectio of Openstack images." /> - </xml-properties> - <xml-root-element name="images" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="image" name="image" type="inventory.aai.openecomp.org.v8.Image" /> - </java-attributes> - </java-type> - - <java-type name="Image"> - <xml-root-element name="image" /> - <java-attributes> - <xml-element java-attribute="imageId" name="image-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Image id, expected to be unique across cloud region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageName" name="image-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Image name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageArchitecture" name="image-architecture" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operating system architecture." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageOsDistro" name="image-os-distro" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The common name of the operating system distribution in lowercase" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageOsVersion" name="image-os-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The operating system version as specified by the distributor." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageSelflink" name="image-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v8.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack image." /> - <xml-property name="nameProps" value="image-name" /> - <xml-property name="indexedProps" value="application,image-name,application-vendor,image-id,application-version" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="images" /> - </xml-properties> - </java-type> - - <java-type name="Metadata"> - <xml-properties> - <xml-property name="description" value="Collection of metadatum (key/value pairs)" /> - </xml-properties> - <xml-root-element name="metadata" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="metadatum" name="metadatum" type="inventory.aai.openecomp.org.v8.Metadatum" /> - </java-attributes> - </java-type> - - <java-type name="Metadatum"> - <xml-root-element name="metadatum" /> - <java-attributes> - <xml-element java-attribute="metaname" name="metaname" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="metaval" name="metaval" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Key/value pairs" /> - <xml-property name="indexedProps" value="metaname" /> - <xml-property name="dependentOn" value="tenant,image,service-instance,model" /> - <xml-property name="container" value="metadata" /> - </xml-properties> - </java-type> - - <java-type name="Pservers"> - <xml-properties> - <xml-property name="description" value="Collection of compute hosts." /> - </xml-properties> - <xml-root-element name="pservers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pserver" name="pserver" type="inventory.aai.openecomp.org.v8.Pserver" /> - </java-attributes> - </java-type> - - <java-type name="Pserver"> - <xml-root-element name="pserver" /> - <java-attributes> - <xml-element java-attribute="hostname" name="hostname" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Value from executing hostname on the compute node." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ptniiEquipName" name="ptnii-equip-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="PTNII name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="numberOfCpus" name="number-of-cpus" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Number of cpus" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="diskInGigabytes" name="disk-in-gigabytes" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Disk size, in GBs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ramInMegabytes" name="ram-in-megabytes" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="RAM size, in MBs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment type. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment vendor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment model. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="fqdn" name="fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Fully-qualified domain name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverSelflink" name="pserver-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to configure device, also used for troubleshooting and is IP used for traps generated by device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Serial number, may be queried" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverId" name="pserver-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of Pserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="internetTopology" name="internet-topology" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="internet topology of Pserver" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverName2" name="pserver-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="alternative pserver name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="purpose" name="purpose" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="purpose of pserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.openecomp.org.v8.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v8.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver." /> - <xml-property name="nameProps" value="pserver-name2" /> - <xml-property name="indexedProps" value="hostname,in-maint,pserver-id,pserver-name2" /> - <xml-property name="searchable" value="hostname,pserver-name2,pserver-id,ipv4-oam-address" /> - <xml-property name="container" value="pservers" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="PInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of physical interfaces." /> - </xml-properties> - <xml-root-element name="p-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pInterface" name="p-interface" type="inventory.aai.openecomp.org.v8.PInterface" /> - </java-attributes> - </java-type> - - <java-type name="PInterface"> - <xml-root-element name="p-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name that identifies the physical interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portDescription" name="port-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Nature of the services and connectivity on this port." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentIdentifier" name="equipment-identifier" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CLEI or other specification for p-interface hardware." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role specification for p-interface hardware." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceType" name="interface-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the physical properties of the interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v8.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Physical interface (e.g., nic)" /> - <xml-property name="indexedProps" value="interface-name" /> - <xml-property name="dependentOn" value="pserver,pnf" /> - <xml-property name="container" value="p-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="LagInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of link aggregate interfaces." /> - </xml-properties> - <xml-root-element name="lag-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lagInterface" name="lag-interface" type="inventory.aai.openecomp.org.v8.LagInterface" /> - </java-attributes> - </java-type> - - <java-type name="LagInterface"> - <xml-root-element name="lag-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name that identifies the link aggregate interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v8.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Link aggregate interface" /> - <xml-property name="indexedProps" value="interface-name" /> - <xml-property name="dependentOn" value="generic-vnf,pserver,pnf" /> - <xml-property name="container" value="lag-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="AvailabilityZones"> - <xml-properties> - <xml-property name="description" value="Collection of availability zones" /> - </xml-properties> - <xml-root-element name="availability-zones" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.openecomp.org.v8.AvailabilityZone" /> - </java-attributes> - </java-type> - - <java-type name="AvailabilityZone"> - <xml-root-element name="availability-zone" /> - <java-attributes> - <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the availability zone. Unique across a cloud region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="hypervisorType" name="hypervisor-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of hypervisor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="State that indicates whether the availability zone should be used, etc. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Availability zone, a collection of compute hosts/pservers" /> - <xml-property name="indexedProps" value="availability-zone-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="availability-zones" /> - </xml-properties> - </java-type> - - <java-type name="Business"> - <xml-properties> - <xml-property name="description" value="Namespace for business related constructs" /> - </xml-properties> - <xml-root-element name="business" /> - <java-attributes> - <xml-element java-attribute="customers" name="customers" type="inventory.aai.openecomp.org.v8.Customers" /> - </java-attributes> - </java-type> - - <java-type name="Customers"> - <xml-properties> - <xml-property name="description" value="Collection of customer identifiers to provide linkage back to BSS information." /> - </xml-properties> - <xml-root-element name="customers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="customer" name="customer" type="inventory.aai.openecomp.org.v8.Customer" /> - </java-attributes> - </java-type> - - <java-type name="Customer"> - <xml-root-element name="customer" /> - <java-attributes> - <xml-element java-attribute="globalCustomerId" name="global-customer-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Global customer id used across OpenECOMP to uniquely identify customer." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subscriberName" name="subscriber-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Subscriber name, an alternate way to retrieve a customer." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subscriberType" name="subscriber-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Subscriber type, a way to provide VID with only the INFRA customers." /> - <xml-property name="defaultValue" value="CUST" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceSubscriptions" name="service-subscriptions" type="inventory.aai.openecomp.org.v8.ServiceSubscriptions" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="customer identifiers to provide linkage back to BSS information." /> - <xml-property name="nameProps" value="subscriber-name" /> - <xml-property name="indexedProps" value="subscriber-name,global-customer-id,subscriber-type" /> - <xml-property name="searchable" value="subscriber-name,global-customer-id" /> - <xml-property name="uniqueProps" value="global-customer-id,subscriber-name" /> - <xml-property name="alternateKeys1" value="subscriber-name" /> - <xml-property name="container" value="customers" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="ServiceSubscriptions"> - <xml-properties> - <xml-property name="description" value="Collection of objects that group service instances." /> - </xml-properties> - <xml-root-element name="service-subscriptions" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceSubscription" name="service-subscription" type="inventory.aai.openecomp.org.v8.ServiceSubscription" /> - </java-attributes> - </java-type> - - <java-type name="ServiceSubscription"> - <xml-root-element name="service-subscription" /> - <java-attributes> - <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Value defined by orchestration to identify this service across OpenECOMP." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tempUbSubAccountId" name="temp-ub-sub-account-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This property will be deleted from AAI in the near future. Only stop gap solution." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstances" name="service-instances" type="inventory.aai.openecomp.org.v8.ServiceInstances"> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Object that group service instances." /> - <xml-property name="indexedProps" value="service-type" /> - <xml-property name="dependentOn" value="customer" /> - <xml-property name="container" value="service-subscriptions" /> - </xml-properties> - </java-type> - - <java-type name="ServiceInstances"> - <xml-properties> - <xml-property name="description" value="Collection of service instances" /> - </xml-properties> - <xml-root-element name="service-instances" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceInstance" name="service-instance" type="inventory.aai.openecomp.org.v8.ServiceInstance" /> - </java-attributes> - </java-type> - - <java-type name="ServiceInstance"> - <xml-root-element name="service-instance" /> - <java-attributes> - <xml-element java-attribute="serviceInstanceId" name="service-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Uniquely identifies this instance of a service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstanceName" name="service-instance-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field will store a name assigned to the service-instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC data dictionary widget model. This maps directly to the AAI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC data dictionary version of the widget model.This maps directly to the AAI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthTotal" name="bandwidth-total" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the total bandwidth to be used for this service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN1 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN1 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN2 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN2 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vhnPortalUrl" name="vhn-portal-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL customers will use to access the vHN Portal." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operational status of the service-instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstanceLocationId" name="service-instance-location-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="An identifier that customers assign to the location where this service is being used." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v8.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Instance of a service" /> - <xml-property name="indexedProps" value="service-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,service-instance-name,service-instance-location-id" /> - <xml-property name="nameProps" value="service-instance-name" /> - <xml-property name="searchable" value="service-instance-id" /> - <xml-property name="uniqueProps" value="service-instance-id" /> - <xml-property name="dependentOn" value="service-subscription" /> - <xml-property name="container" value="service-instances" /> - </xml-properties> - </java-type> - - <java-type name="ServiceDesignAndCreation"> - <xml-properties> - <xml-property name="description" value="Namespace for objects managed by SDC" /> - </xml-properties> - <xml-root-element name="service-design-and-creation" /> - <java-attributes> - <xml-element java-attribute="services" name="services" type="inventory.aai.openecomp.org.v8.Services" /> - <xml-element java-attribute="models" name="models" type="inventory.aai.openecomp.org.v8.Models" /> - <xml-element java-attribute="namedQueries" name="named-queries" type="inventory.aai.openecomp.org.v8.NamedQueries" /> - </java-attributes> - </java-type> - - <java-type name="Network"> - <xml-properties> - <xml-property name="description" value="Namespace for network inventory resources." /> - </xml-properties> - <xml-root-element name="network" /> - <java-attributes> - <xml-element java-attribute="logicalLinks" name="logical-links" type="inventory.aai.openecomp.org.v8.LogicalLinks" /> - <xml-element java-attribute="vnfcs" name="vnfcs" type="inventory.aai.openecomp.org.v8.Vnfcs" /> - <xml-element java-attribute="l3Networks" name="l3-networks" type="inventory.aai.openecomp.org.v8.L3Networks" /> - <xml-element java-attribute="genericVnfs" name="generic-vnfs" type="inventory.aai.openecomp.org.v8.GenericVnfs" /> - <xml-element java-attribute="pnfs" name="pnfs" type="inventory.aai.openecomp.org.v8.Pnfs" /> - <xml-element java-attribute="physicalLinks" name="physical-links" type="inventory.aai.openecomp.org.v8.PhysicalLinks" /> - </java-attributes> - </java-type> - - <java-type name="LogicalLinks"> - <xml-properties> - <xml-property name="description" value="Collection of logical connections" /> - </xml-properties> - <xml-root-element name="logical-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="logicalLink" name="logical-link" type="inventory.aai.openecomp.org.v8.LogicalLink" /> - </java-attributes> - </java-type> - - <java-type name="LogicalLink"> - <xml-root-element name="logical-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkType" name="link-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of logical link, e.g., evc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4, v6, or ds for dual stack (should be ip-version)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routingProtocol" name="routing-protocol" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="For example, static or BGP" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC data dictionary widget model. This maps directly to the AAI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC data dictionary version of the widget model.This maps directly to the AAI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indication of operational status of the logical link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkRole" name="link-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indication of the network use of the logical link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkName2" name="link-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alias or alternate name (CLCI or D1 name)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkId" name="link-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the logical-link, SDNC generates this." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Logical links generally connect l-interfaces but are used to express logical connectivity between two points" /> - <xml-property name="indexedProps" value="link-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,link-id" /> - <xml-property name="uniqueProps" value="link-id" /> - <xml-property name="container" value="logical-links" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Vnfcs"> - <xml-properties> - <xml-property name="description" value="virtual network components associated with a vserver from application controller." /> - </xml-properties> - <xml-root-element name="vnfcs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vnfc" name="vnfc" type="inventory.aai.openecomp.org.v8.Vnfc" /> - </java-attributes> - </java-type> - - <java-type name="Vnfc"> - <xml-root-element name="vnfc" /> - <java-attributes> - <xml-element java-attribute="vnfcName" name="vnfc-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of vnfc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfcFunctionCode" name="vnfc-function-code" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="function code" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfcType" name="vnfc-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="type" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="prov status of this vnfc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by APP-C" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4OamVip" name="ipaddress-v4-oam-vip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Oam V4 vip address of this vnfc" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupNotation" name="group-notation" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group notation of VNFC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="vnfc-name,prov-status,vnfc-type,vnfc-function-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled,group-notation" /> - <xml-property name="container" value="vnfcs" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="L3Networks"> - <xml-root-element name="l3-networks" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="l3Network" name="l3-network" type="inventory.aai.openecomp.org.v8.L3Network" /> - </java-attributes> - </java-type> - - <java-type name="L3Network"> - <xml-root-element name="l3-network" /> - <java-attributes> - <xml-element java-attribute="networkId" name="network-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Network ID, should be uuid. Unique across AAI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network, governed by some naming convention.." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkType" name="network-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the network - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkRole" name="network-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role the network plans - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkTechnology" name="network-technology" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network technology - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of this Interface" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isBoundToVpn" name="is-bound-to-vpn" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Set to true if bound to VPN" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service from SDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkRoleInstance" name="network-role-instance" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="network role instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="contrailNetworkFqdn" name="contrail-network-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contrail FQDN for the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC data dictionary widget model. This maps directly to the AAI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC data dictionary version of the widget model.This maps directly to the AAI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="physicalNetworkName" name="physical-network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name associated with the physical network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isProviderNetwork" name="is-provider-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is a provider network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isSharedNetwork" name="is-shared-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is a shared network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isExternalNetwork" name="is-external-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is an external network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnets" name="subnets" type="inventory.aai.openecomp.org.v8.Subnets" /> - <xml-element java-attribute="ctagAssignments" name="ctag-assignments" type="inventory.aai.openecomp.org.v8.CtagAssignments" /> - <xml-element java-attribute="segmentationAssignments" name="segmentation-assignments" type="inventory.aai.openecomp.org.v8.SegmentationAssignments" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" > - <xml-properties> - <xml-property name="description" value="Relates to tenant (or is it a child of tenant)" /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Generic network definition" /> - <xml-property name="nameProps" value="network-name" /> - <xml-property name="indexedProps" value="heat-stack-id,network-uuid,service-id,network-id,network-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-network-fqdn" /> - <xml-property name="uniqueProps" value="network-id" /> - <xml-property name="container" value="l3-networks" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="CtagAssignments"> - <xml-root-element name="ctag-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ctagAssignment" name="ctag-assignment" type="inventory.aai.openecomp.org.v8.CtagAssignment" /> - </java-attributes> - </java-type> - - <java-type name="CtagAssignment"> - <xml-root-element name="ctag-assignment" /> - <java-attributes> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" required="true" type="java.lang.Long" xml-key="true"> - <xml-properties> - <xml-property name="description" value="id." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="vlan-id-inner" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="ctag-assignments" /> - </xml-properties> - </java-type> - - <java-type name="Subnets"> - <xml-root-element name="subnets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="subnet" name="subnet" type="inventory.aai.openecomp.org.v8.Subnet" /> - </java-attributes> - </java-type> - - <java-type name="Subnet"> - <xml-root-element name="subnet" /> - <java-attributes> - <xml-element java-attribute="subnetId" name="subnet-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Subnet ID, should be UUID." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnetName" name="subnet-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name associated with the subnet." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of this subnet" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="gatewayAddress" name="gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="gateway ip address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkStartAddress" name="network-start-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="network start address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cidrMask" name="cidr-mask" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="cidr mask" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ip version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="dhcpEnabled" name="dhcp-enabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="dhcp enabled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dhcpStart" name="dhcp-start" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the start address reserved for use by dhcp" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dhcpEnd" name="dhcp-end" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the last address reserved for use by dhcp" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="subnet-id,subnet-name" /> - <xml-property name="nameProps" value="subnet-name" /> - <xml-property name="uniqueProps" value="subnet-id" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="subnets" /> - </xml-properties> - </java-type> - - <java-type name="GenericVnfs"> - <xml-properties> - <xml-property name="description" value="Collection of VNFs" /> - </xml-properties> - <xml-root-element name="generic-vnfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="genericVnf" name="generic-vnf" type="inventory.aai.openecomp.org.v8.GenericVnf" /> - </java-attributes> - </java-type> - - <java-type name="GenericVnf"> - <xml-root-element name="generic-vnf" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the SDC resource. This field has been overloaded and clients should expect changes to occur in the future to this field as SDC matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service from SDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="License key" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, used by MSO." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of managed by customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4 Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nmLanV6Address" name="nm-lan-v6-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 Loopback address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementV6Address" name="management-v6-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 management address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcpu" name="vcpu" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcpuUnits" name="vcpu-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vcpu, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vmemory" name="vmemory" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vmemoryUnits" name="vmemory-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vmemory, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdisk" name="vdisk" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdiskUnits" name="vdisk-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vdisk, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="details regarding the generic-vnf operation" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="indicates whether generic-vnf access uses SSH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementAssignmentGroupUuid" name="entitlement-assignment-group-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the Entitlement group used for licensing VNFs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the specific entitlement resource" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseAssignmentGroupUuid" name="license-assignment-group-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the license assignment group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKeyUuid" name="license-key-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the actual license resource" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC data dictionary widget model. This maps directly to the AAI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC data dictionary version of the widget model.This maps directly to the AAI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="as-number of the VNF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceSubzone" name="regional-resource-subzone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="represents sub zone of the rr plane" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v8.LInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v8.LagInterfaces" /> - <xml-element java-attribute="vfModules" name="vf-modules" type="inventory.aai.openecomp.org.v8.VfModules" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="General purpose VNF" /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="generic-vnfs" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - </xml-properties> - </java-type> - - <java-type name="VfModules"> - <xml-properties> - <xml-property name="description" value="Collection of vf-modules, a deployment unit of VNFCs" /> - </xml-properties> - <xml-root-element name="vf-modules" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vfModule" name="vf-module" type="inventory.aai.openecomp.org.v8.VfModule" /> - </java-attributes> - </java-type> - - <java-type name="VfModule"> - <xml-root-element name="vf-module" /> - <java-attributes> - <xml-element java-attribute="vfModuleId" name="vf-module-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of vf-module." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfModuleName" name="vf-module-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of vf-module" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="orchestration status of this vf-module, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isBaseVfModule" name="is-base-vf-module" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is base vf module" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC data dictionary widget model. This maps directly to the AAI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the SDC data dictionary version of the widget model.This maps directly to the AAI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="contrailServiceInstanceFqdn" name="contrail-service-instance-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the Contrail unique ID for a service-instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="a deployment unit of VNFCs" /> - <xml-property name="indexedProps" value="vf-module-id,vf-module-name,heat-stack-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-service-instance-fqdn" /> - <xml-property name="dependentOn" value="generic-vnf" /> - <xml-property name="container" value="vf-modules" /> - </xml-properties> - </java-type> - - <java-type name="Pnfs"> - <xml-properties> - <xml-property name="description" value="Collection of Physical Network Functions." /> - </xml-properties> - <xml-root-element name="pnfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pnf" name="pnf" type="inventory.aai.openecomp.org.v8.Pnf" /> - </java-attributes> - </java-type> - - <java-type name="Pnf"> - <xml-root-element name="pnf" /> - <java-attributes> - <xml-element java-attribute="pnfName" name="pnf-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique name of Physical Network Function." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfName2" name="pnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="name of Physical Network Function." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfName2Source" name="pnf-name2-source" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="source of name2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfId" name="pnf-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="id of pnf" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment type. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment vendor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment model. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of managed by customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Oam" name="ipaddress-v4-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ipv4-oam-address with new naming convention for IP addresses" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="swVersion" name="sw-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="sw-version is the version of SW for the hosted application on the PNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="orchestration-status is the status of orchestration on the PNF." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="frameId" name="frame-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of the physical frame (relay rack) where pnf is installed." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.openecomp.org.v8.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v8.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="PNF represents a physical network function." /> - <xml-property name="indexedProps" value="pnf-name,orchestration-status" /> - <xml-property name="uniqueProps" value="pnf-name" /> - <xml-property name="container" value="pnfs" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="PhysicalLinks"> - <xml-properties> - <xml-property name="description" value="Collection of physical connections, typically between p-interfaces" /> - </xml-properties> - <xml-root-element name="physical-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="physicalLink" name="physical-link" type="inventory.aai.openecomp.org.v8.PhysicalLink" /> - </java-attributes> - </java-type> - - <java-type name="PhysicalLink"> - <xml-root-element name="physical-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Circuit it" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dualMode" name="dual-mode" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Dual access mode (e.g., primary, secondary" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="To provide information on who manages this circuit. AAI or 3rd party transport provider" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceProviderName" name="service-provider-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the service Provider on this link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of physical connections, typically between p-interfaces" /> - <xml-property name="indexedProps" value="circuit-id,link-name" /> - <xml-property name="alternateKeys1" value="circuit-id" /> - <xml-property name="container" value="physical-links" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="NotificationEvent"> - <xml-root-element name="notification-event" /> - <java-attributes> - <xml-element java-attribute="cambriaPartition" name="cambria.partition" type="java.lang.String" /> - <xml-element java-attribute="eventHeader" name="event-header" type="inventory.aai.openecomp.org.v8.NotificationEventHeader" /> - <xml-any-element java-attribute="entity" /> - </java-attributes> - </java-type> - <java-type name="NotificationEventHeader"> - <xml-root-element name="notification-event-header" /> - <java-attributes> - <xml-element java-attribute="id" name="id" type="java.lang.String" /> - <xml-element java-attribute="timestamp" name="timestamp" type="java.lang.String" /> - <xml-element java-attribute="sourceName" name="source-name" type="java.lang.String" /> - <xml-element java-attribute="domain" name="domain" type="java.lang.String" /> - <xml-element java-attribute="sequenceNumber" name="sequence-number" type="java.lang.String" /> - <xml-element java-attribute="severity" name="severity" type="java.lang.String" /> - <xml-element java-attribute="eventType" name="event-type" type="java.lang.String" /> - <xml-element java-attribute="version" name="version" type="java.lang.String" /> - <xml-element java-attribute="action" name="action" type="java.lang.String" /> - <xml-element java-attribute="entityType" name="entity-type" type="java.lang.String" /> - <xml-element java-attribute="topEntityType" name="top-entity-type" type="java.lang.String" /> - <xml-element java-attribute="entityLink" name="entity-link" type="java.lang.String" /> - <xml-element java-attribute="status" name="status" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="AaiInternal"> - <xml-root-element name="aai-internal" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="reservedPropNames" name="reserved-prop-names" type="inventory.aai.openecomp.org.v8.ReservedPropNames" /> - <xml-element container-type="java.util.ArrayList" java-attribute="edgePropNames" name="edge-prop-names" type="inventory.aai.openecomp.org.v8.EdgePropNames" /> - </java-attributes> - </java-type> - - <java-type name="ReservedPropNames"> - <xml-properties> - <xml-property name="description" value="Internal map to define some reserved properties of a vertex" /> - <xml-property name="uniqueProps" value="aai-unique-key" /> - <xml-property name="indexedProps" value="aai-unique-key,source-of-truth,aai-node-type" /> - </xml-properties> - <xml-root-element name="reserved-prop-names" /> - <java-attributes> - <xml-element java-attribute="lastModSourceOfTruth" name="last-mod-source-of-truth" type="java.lang.String" /> - <xml-element java-attribute="aaiNodeType" name="aai-node-type" type="java.lang.String" /> - <xml-element java-attribute="aaiCreatedTs" name="aai-created-ts" type="java.lang.Long" /> - <xml-element java-attribute="aaiUniqueKey" name="aai-unique-key" type="java.lang.String" /> - <xml-element java-attribute="aaiLastModTs" name="aai-last-mod-ts" type="java.lang.Long" /> - <xml-element java-attribute="sourceOfTruth" name="source-of-truth" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="EdgePropNames"> - <!-- NOTE that the names of these properties are not consistent and are in mixed case and hyphen case for now --> - <xml-properties> - <xml-property name="description" value="Internal map to define the properties of an edge and interpret the map EdgeRules" /> - <xml-property name="edgeInfo" value="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV" /> - </xml-properties> - <xml-root-element name="edge-prop-names" /> - <java-attributes> - <xml-element java-attribute="edgeLabel" name="edgeLabel" type="java.lang.String" /> - <xml-element java-attribute="direction" name="direction" type="java.lang.String" /> - <xml-element java-attribute="multiplicityRule" name="multiplicityRule" type="java.lang.String" /> - <xml-element java-attribute="isParent" name="isParent" type="java.lang.Boolean" /> - <xml-element java-attribute="usesResource" name="usesResource" type="java.lang.Boolean" /> - <xml-element java-attribute="hasDelTarget" name="hasDelTarget" type="java.lang.Boolean" /> - <xml-element java-attribute="SVC-INFRA" name="SVC-INFRA" type="java.lang.String" /> - <xml-element java-attribute="SVC-INFRA-REV" name="SVC-INFRA-REV" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="Services"> - <xml-properties> - <xml-property name="description" value="Collection of service model definitions. Likely to be deprecated in favor of models from SDC."/> - </xml-properties> - <xml-root-element name="services" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="service" name="service" type="inventory.aai.openecomp.org.v8.Service" /> - </java-attributes> - </java-type> - - <java-type name="Service"> - <xml-root-element name="service" /> - <java-attributes> - <xml-element java-attribute="serviceId" name="service-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceDescription" name="service-description" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description of the service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceSelflink" name="service-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceVersion" name="service-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="service version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Stand-in for service model definitions. Likely to be deprecated in favor of models from SDC." /> - <xml-property name="indexedProps" value="service-description,service-id" /> - <xml-property name="container" value="services" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="Models"> - <xml-properties> - <xml-property name="description" value="Collection of subgraph definitions provided by SDC to describe the inventory assets and their connections related to SDC models" /> - </xml-properties> - <xml-root-element name="models" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="model" name="model" type="inventory.aai.openecomp.org.v8.Model" /> - </java-attributes> - </java-type> - - <java-type name="Model"> - <xml-properties> - <xml-property name="description" value="Subgraph definition provided by SDC to describe an inventory asset and its connections related to SDC models" /> - <xml-property name="nameProps" value="model-name,model-type" /> - <xml-property name="indexedProps" value="model-name-version-id,model-type,model-name,model-id,model-version" /> - <xml-property name="alternateKeys1" value="model-id,model-version" /> - <xml-property name="uniqueProps" value="model-name-version-id" /> - <xml-property name="container" value="models" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - <xml-root-element name="model" /> - <java-attributes> - <xml-element java-attribute="modelNameVersionId" name="model-name-version-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to one version of a model in SDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the model, which can change from version to version." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelId" name="model-id" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Invariant unique ID which does not change from version to version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.openecomp.org.v8.ModelElements" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v8.Metadata" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ModelElements"> - <xml-root-element name="model-elements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelElement" name="model-element" type="inventory.aai.openecomp.org.v8.ModelElement" /> - </java-attributes> - </java-type> - - <java-type name="ModelElement"> - <xml-properties> - <xml-property name="description" value="Defines how other models combine to make up a higher-level model." /> - <xml-property name="uniqueProps" value="model-element-uuid" /> - <xml-property name="indexedProps" value="model-element-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="model-elements" /> - </xml-properties> - <xml-root-element name="model-element" /> - <java-attributes> - <xml-element java-attribute="modelElementUuid" name="model-element-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="newDataDelFlag" name="new-data-del-flag" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates whether this element was created as part of instantiation from this model" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cardinality" name="cardinality" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="How many of this type of element are required/allowed" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="linkagePoints" name="linkage-point" type="java.lang.String"> - <xml-element-wrapper name="linkage-points" /> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.openecomp.org.v8.ModelElements"> - <xml-properties> - <xml-property name="description" value="Defines how other models combine to make up a higher-level model" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelConstraints" name="model-constraints" type="inventory.aai.openecomp.org.v8.ModelConstraints"> - <xml-properties> - <xml-property name="description" value="Describes new constraints on this model element that are not part of that model's definition" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ModelConstraints"> - <xml-root-element name="model-constraints" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelConstraint" name="model-constraint" type="inventory.aai.openecomp.org.v8.ModelConstraint" /> - </java-attributes> - </java-type> - - <java-type name="ModelConstraint"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="model-constraint-uuid" /> - <xml-property name="indexedProps" value="model-constraint-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="model-constraints" /> - </xml-properties> - <xml-root-element name="model-constraint" /> - <java-attributes> - <xml-element java-attribute="modelConstraintUuid" name="model-constraint-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constrainedElementSetUuidToReplace" name="constrained-element-set-uuid-to-replace" required="true" type="java.lang.String" /> - <xml-element java-attribute="constrainedElementSets" name="constrained-element-sets" type="inventory.aai.openecomp.org.v8.ConstrainedElementSets" /> - </java-attributes> - </java-type> - - <java-type name="ConstrainedElementSets"> - <xml-root-element name="constrained-element-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="constrainedElementSet" name="constrained-element-set" type="inventory.aai.openecomp.org.v8.ConstrainedElementSet" /> - </java-attributes> - </java-type> - - <java-type name="ConstrainedElementSet"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="constrained-element-set-uuid" /> - <xml-property name="indexedProps" value="constrained-element-set-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="constrained-element-sets" /> - </xml-properties> - <xml-root-element name="constrained-element-set" /> - <java-attributes> - <xml-element java-attribute="constrainedElementSetUuid" name="constrained-element-set-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="checkType" name="check-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="elementChoiceSets" name="element-choice-sets" type="inventory.aai.openecomp.org.v8.ElementChoiceSets" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ElementChoiceSets"> - <xml-root-element name="element-choice-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="elementChoiceSet" name="element-choice-set" type="inventory.aai.openecomp.org.v8.ElementChoiceSet" /> - </java-attributes> - </java-type> - - <java-type name="ElementChoiceSet"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="element-choice-set-uuid" /> - <xml-property name="indexedProps" value="element-choice-set-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="element-choice-sets" /> - </xml-properties> - <xml-root-element name="element-choice-set" /> - <java-attributes> - <xml-element java-attribute="elementChoiceSetUuid" name="element-choice-set-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="elementChoiceSetName" name="element-choice-set-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="cardinality" name="cardinality" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.openecomp.org.v8.ModelElements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueries"> - <xml-root-element name="named-queries" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="namedQuery" name="named-query" type="inventory.aai.openecomp.org.v8.NamedQuery" /> - </java-attributes> - </java-type> - - <java-type name="NamedQuery"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="nameProps" value="named-query-name" /> - <xml-property name="uniqueProps" value="named-query-uuid" /> - <xml-property name="indexedProps" value="named-query-uuid,named-query-name" /> - <xml-property name="container" value="named-queries" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - <xml-root-element name="named-query" /> - <java-attributes> - <xml-element java-attribute="namedQueryUuid" name="named-query-uuid" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="namedQueryName" name="named-query-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="namedQueryVersion" name="named-query-version" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="requiredInputParams" name="required-input-param" type="java.lang.String"> - <xml-element-wrapper name="required-input-params" /> - </xml-element> - <xml-element java-attribute="description" name="description" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.openecomp.org.v8.NamedQueryElements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueryElements"> - <xml-root-element name="named-query-elements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="namedQueryElement" name="named-query-element" type="inventory.aai.openecomp.org.v8.NamedQueryElement" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueryElement"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="named-query-element-uuid" /> - <xml-property name="indexedProps" value="named-query-element-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="named-query-elements" /> - </xml-properties> - <xml-root-element name="named-query-element" /> - <java-attributes> - <xml-element java-attribute="namedQueryElementUuid" name="named-query-element-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="propertyLimitDesc" name="property-limit-desc" type="java.lang.String" /> - <xml-element java-attribute="doNotOutput" name="do-not-output" type="java.lang.String" /> - <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.openecomp.org.v8.NamedQueryElements" /> - <xml-element java-attribute="relatedLookups" name="related-lookups" type="inventory.aai.openecomp.org.v8.RelatedLookups" /> - <xml-element java-attribute="propertyConstraints" name="property-constraints" type="inventory.aai.openecomp.org.v8.PropertyConstraints" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="RelatedLookups"> - <xml-root-element name="related-lookups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="relatedLookup" name="related-lookup" type="inventory.aai.openecomp.org.v8.RelatedLookup" /> - </java-attributes> - </java-type> - - <java-type name="RelatedLookup"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="related-lookup-uuid" /> - <xml-property name="indexedProps" value="related-lookup-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="related-lookups" /> - </xml-properties> - <xml-root-element name="related-lookup" /> - <java-attributes> - <xml-element java-attribute="relatedLookupUuid" name="related-lookup-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sourceNodeType" name="source-node-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="sourceNodeProperty" name="source-node-property" required="true" type="java.lang.String" /> - <xml-element java-attribute="targetNodeType" name="target-node-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="targetNodeProperty" name="target-node-property" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="PropertyConstraints"> - <xml-root-element name="property-constraints" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyConstraint" name="property-constraint" type="inventory.aai.openecomp.org.v8.PropertyConstraint" /> - </java-attributes> - </java-type> - - <java-type name="PropertyConstraint"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="property-constraint-uuid" /> - <xml-property name="indexedProps" value="property-constraint-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="property-constraints" /> - </xml-properties> - <xml-root-element name="property-constraint" /> - <java-attributes> - <xml-element java-attribute="propertyConstraintUuid" name="property-constraint-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="property-name" name="property-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="property-value" name="property-value" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ModelAndNamedQuerySearch"> - <xml-properties> - <xml-property name="description" value="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="model-and-named-query-search" /> - <java-attributes> - <xml-element java-attribute="queryParameters" name="query-parameters" type="inventory.aai.openecomp.org.v8.QueryParameters" /> - <xml-element java-attribute="instanceFilters" name="instance-filters" type="inventory.aai.openecomp.org.v8.InstanceFilters" /> - <xml-element java-attribute="topNodeType" name="top-node-type" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="QueryParameters"> - <xml-properties> - <xml-property name="description" value="QueryParameters for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="query-parameters" /> - <java-attributes> - <xml-element java-attribute="namedQuery" name="named-query" type="inventory.aai.openecomp.org.v8.NamedQuery" /> - <xml-element java-attribute="model" name="model" type="inventory.aai.openecomp.org.v8.Model" /> - </java-attributes> - </java-type> - - <java-type name="InstanceFilters"> - <xml-properties> - <xml-property name="description" value="InstanceFilters for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="instance-filters" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="instanceFilter" name="instance-filter" type="inventory.aai.openecomp.org.v8.InstanceFilter" /> - </java-attributes> - </java-type> - - <java-type name="InstanceFilter"> - <xml-properties> - <xml-property name="description" value="InstanceFilter for performing a named-query or model query" /> - <xml-property name="container" value="instance-filters" /> - </xml-properties> - <xml-root-element name="instance-filter" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any" /> - </java-attributes> - </java-type> - - <java-type name="Properties"> - <xml-properties> - <xml-property name="description" value="Property holder for query properties or instance properties" /> - </xml-properties> - <xml-root-element name="properties" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ResponseList"> - <xml-properties> - <xml-property name="description" value="Response container for the results of a named-query or model query" /> - </xml-properties> - <xml-root-element name="response-list" /> - <java-attributes> - <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.openecomp.org.v8.InventoryResponseItems" /> - </java-attributes> - </java-type> - - <java-type name="InventoryResponseItems"> - <xml-properties> - <xml-property name="description" value="Container for inventory items in response list" /> - <xml-property name="container" value="response-list" /> - </xml-properties> - <xml-root-element name="inventory-response-items" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryResponseItem" name="inventory-response-item" type="inventory.aai.openecomp.org.v8.InventoryResponseItem" /> - </java-attributes> - </java-type> - - <java-type name="InventoryResponseItem"> - <xml-properties> - <xml-property name="description" value="Inventory item for response list" /> - <xml-property name="container" value="inventory-response-items" /> - </xml-properties> - <xml-root-element name="inventory-response-item" /> - <java-attributes> - <xml-element java-attribute="modelName" name="model-name" type="java.lang.String" /> - <xml-any-element java-attribute="item" /> - <xml-element java-attribute="extraProperties" name="extra-properties" type="inventory.aai.openecomp.org.v8.ExtraProperties" /> - <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.openecomp.org.v8.InventoryResponseItems" /> - </java-attributes> - </java-type> - - <java-type name="ExtraProperties"> - <xml-properties> - <xml-property name="description" value="Extra properties for inventory item for response list" /> - </xml-properties> - <xml-root-element name="extra-properties" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="extraProperty" name="extra-property" type="inventory.aai.openecomp.org.v8.ExtraProperty" /> - </java-attributes> - </java-type> - - <java-type name="ExtraProperty"> - <xml-root-element name="extra-property" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-any-element java-attribute="propertyValue" lax="true" name="property-value" /> - </java-attributes> - </java-type> - - <java-type name="SegmentationAssignments"> - <xml-properties> - <xml-property name="description" value="Collection of openstack segmentation assignments" /> - </xml-properties> - <xml-root-element name="segmentation-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="segmentationAssignment" name="segmentation-assignment" type="inventory.aai.openecomp.org.v8.SegmentationAssignment" /> - </java-attributes> - </java-type> - - <java-type name="SegmentationAssignment"> - <xml-root-element name="segmentation-assignment" /> - <java-attributes> - <xml-element java-attribute="segmentationId" name="segmentation-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v8.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack segmentation assignment." /> - <xml-property name="indexedProps" value="segmentation-id" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="segmentation-assignments" /> - </xml-properties> - </java-type> - - </java-types> -</xml-bindings> diff --git a/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v9.xml b/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v9.xml deleted file mode 100644 index 87a3d656e5..0000000000 --- a/kubernetes/aai/charts/aai-data-router/resources/config/model/aai_oxm_v9.xml +++ /dev/null @@ -1,5451 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- - ============LICENSE_START======================================================= - org.openecomp.aai - ================================================================================ - Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - ================================================================================ - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ============LICENSE_END========================================================= - --> - -<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="inventory.aai.openecomp.org.v9" xml-mapping-metadata-complete="true"> - <xml-schema element-form-default="QUALIFIED"> - <xml-ns namespace-uri="http://org.openecomp.aai.inventory/v9" /> - </xml-schema> - <java-types> - <java-type name="Inventory"> - <xml-root-element name="inventory" /> - <java-attributes> - <xml-element java-attribute="search" name="search" type="inventory.aai.openecomp.org.v9.Search" /> - <xml-element java-attribute="actions" name="actions" type="inventory.aai.openecomp.org.v9.Actions" /> - <xml-element java-attribute="cloudInfrastructure" name="cloud-infrastructure" type="inventory.aai.openecomp.org.v9.CloudInfrastructure" /> - <xml-element java-attribute="business" name="business" type="inventory.aai.openecomp.org.v9.Business" /> - <xml-element java-attribute="serviceDesignAndCreation" name="service-design-and-creation" type="inventory.aai.openecomp.org.v9.ServiceDesignAndCreation" /> - <xml-element java-attribute="network" name="network" type="inventory.aai.openecomp.org.v9.Network" /> - <xml-element java-attribute="aaiInternal" name="aai-internal" type="inventory.aai.openecomp.org.v9.AaiInternal" /> - <xml-element java-attribute="nodes" name="nodes" type="inventory.aai.openecomp.org.v9.Nodes"/> - </java-attributes> - </java-type> - - <java-type name="Nodes"> - <xml-root-element name="nodes" /> - </java-type> - <java-type name="Search"> - <xml-root-element name="search" /> - <java-attributes> - <xml-element java-attribute="edgeTagQueryResult" name="edge-tag-query-result" type="inventory.aai.openecomp.org.v9.EdgeTagQueryResult" /> - <xml-element java-attribute="edgeTagQueryRequest" name="edge-tag-query-request" type="inventory.aai.openecomp.org.v9.EdgeTagQueryRequest" /> - <xml-element java-attribute="searchResults" name="search-results" type="inventory.aai.openecomp.org.v9.SearchResults" /> - <xml-element java-attribute="sdnZoneResponse" name="sdn-zone-response" type="inventory.aai.openecomp.org.v9.SdnZoneResponse" /> - </java-attributes> - </java-type> - - <java-type name="EdgeTagQueryResult"> - <xml-root-element name="edge-tag-query-result" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.openecomp.org.v9.TaggedInventoryItemList" /> - </java-attributes> - </java-type> - - <java-type name="TaggedInventoryItemList"> - <xml-root-element name="tagged-inventory-item-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItem" name="inventory-item" type="inventory.aai.openecomp.org.v9.InventoryItem" /> - </java-attributes> - </java-type> - - <java-type name="InventoryItem"> - <xml-root-element name="inventory-item" /> - <java-attributes> - <xml-element java-attribute="inventoryItemType" name="inventory-item-type" type="java.lang.String" /> - <xml-element java-attribute="inventoryItemLink" name="inventory-item-link" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItemData" name="inventory-item-data" type="inventory.aai.openecomp.org.v9.InventoryItemData" /> - <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.openecomp.org.v9.TaggedInventoryItemList" /> - </java-attributes> - </java-type> - - <java-type name="InventoryItemData"> - <xml-root-element name="inventory-item-data" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="EdgeTagQueryRequest"> - <xml-root-element name="edge-tag-query-request" /> - <java-attributes> - <xml-element java-attribute="edgeTag" name="edge-tag" type="java.lang.String" /> - <xml-element java-attribute="resultDetail" name="result-detail" type="java.lang.String" /> - <xml-element java-attribute="startNodeType" name="start-node-type" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="startNodeFilter" name="start-node-filter" type="inventory.aai.openecomp.org.v9.StartNodeFilter" /> - <xml-element container-type="java.util.ArrayList" java-attribute="includeNodeFilter" name="include-node-filter" type="inventory.aai.openecomp.org.v9.IncludeNodeFilter" /> - <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilter" name="secondary-filter" type="inventory.aai.openecomp.org.v9.SecondaryFilter" /> - </java-attributes> - </java-type> - - <java-type name="StartNodeFilter"> - <xml-root-element name="start-node-filter" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="IncludeNodeFilter"> - <xml-root-element name="include-node-filter" /> - <java-attributes> - <xml-element java-attribute="includeNodeType" name="include-node-type" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilter"> - <xml-root-element name="secondary-filter" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="filterType" name="filter-type" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="SearchResults"> - <xml-root-element name="search-results" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="resultData" name="result-data" type="inventory.aai.openecomp.org.v9.ResultData" /> - </java-attributes> - </java-type> - - <java-type name="ResultData"> - <xml-root-element name="result-data" /> - <java-attributes> - <xml-element java-attribute="resourceType" name="resource-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The specific type of node in the A&AI graph" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceLink" name="resource-link" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The URL to the specific resource" /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="SdnZoneResponse"> - <xml-root-element name="sdn-zone-response" /> - <java-attributes> - <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.openecomp.org.v9.OamNetworks" /> - <xml-element container-type="java.util.ArrayList" java-attribute="azAndDvsSwitches" name="az-and-dvs-switches" type="inventory.aai.openecomp.org.v9.AzAndDvsSwitches" /> - </java-attributes> - </java-type> - - <java-type name="AzAndDvsSwitches"> - <xml-root-element name="az-and-dvs-switches" /> - <java-attributes> - <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.openecomp.org.v9.DvsSwitches" /> - <xml-element java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.openecomp.org.v9.AvailabilityZone" /> - </java-attributes> - </java-type> - - <java-type name="Actions"> - <xml-properties> - <xml-property name="description" value="APIs that are more action related than REST (e.g., notify, update)." /> - </xml-properties> - <xml-root-element name="actions" /> - <java-attributes> - <xml-element java-attribute="update" name="update" type="inventory.aai.openecomp.org.v9.Update" /> - <xml-element java-attribute="notify" name="notify" type="inventory.aai.openecomp.org.v9.Notify" /> - </java-attributes> - </java-type> - - <java-type name="Update"> - <xml-properties> - <xml-property name="description" value="Serves a PATCH like function. Does not enforce concurrency control. Clear each usage with AAI team." /> - </xml-properties> - <xml-root-element name="update" /> - <java-attributes> - <xml-element java-attribute="updateNodeType" name="update-node-type" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="updateNodeKey" name="update-node-key" type="inventory.aai.openecomp.org.v9.UpdateNodeKey" /> - <xml-element java-attribute="updateNodeUri" name="update-node-uri" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="action" name="action" type="inventory.aai.openecomp.org.v9.Action" /> - </java-attributes> - </java-type> - - <java-type name="Action"> - <xml-root-element name="action" /> - <java-attributes> - <xml-element java-attribute="actionType" name="action-type" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="actionData" name="action-data" type="inventory.aai.openecomp.org.v9.ActionData" /> - </java-attributes> - </java-type> - - <java-type name="ActionData"> - <xml-root-element name="action-data" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="UpdateNodeKey"> - <xml-root-element name="update-node-key" /> - <java-attributes> - <xml-element java-attribute="keyName" name="key-name" type="java.lang.String" /> - <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="Notify"> - <xml-root-element name="notify" /> - <java-attributes> - <xml-element java-attribute="eventId" name="event-id" required="true" type="java.lang.String" /> - <xml-element java-attribute="nodeType" name="node-type" type="java.lang.String" /> - <xml-element java-attribute="eventTrigger" name="event-trigger" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="keyData" name="key-data" type="inventory.aai.openecomp.org.v9.KeyData" /> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="KeyData"> - <xml-root-element name="key-data" /> - <java-attributes> - <xml-element java-attribute="keyName" name="key-name" type="java.lang.String" /> - <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="CloudInfrastructure"> - <xml-properties> - <xml-property name="description" value="Namespace for cloud infrastructure." /> - </xml-properties> - <xml-root-element name="cloud-infrastructure" /> - <java-attributes> - <xml-element java-attribute="complexes" name="complexes" type="inventory.aai.openecomp.org.v9.Complexes" /> - <xml-element java-attribute="cloudRegions" name="cloud-regions" type="inventory.aai.openecomp.org.v9.CloudRegions" /> - <xml-element java-attribute="networkProfiles" name="network-profiles" type="inventory.aai.openecomp.org.v9.NetworkProfiles" /> - <xml-element java-attribute="pservers" name="pservers" type="inventory.aai.openecomp.org.v9.Pservers" /> - <xml-element java-attribute="virtualDataCenters" name="virtual-data-centers" type="inventory.aai.openecomp.org.v9.VirtualDataCenters" /> - </java-attributes> - </java-type> - - <java-type name="CloudRegions"> - <xml-root-element name="cloud-regions" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="cloudRegion" name="cloud-region" type="inventory.aai.openecomp.org.v9.CloudRegion" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="CloudRegion"> - <xml-root-element name="cloud-region" /> - <java-attributes> - <xml-element java-attribute="cloudOwner" name="cloud-owner" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudRegionId" name="cloud-region-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudType" name="cloud-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the cloud (e.g., openstack)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ownerDefinedType" name="owner-defined-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Cloud-owner defined type indicator (e.g., dcp, lcp)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudRegionVersion" name="cloud-region-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Software version employed at the site. NOTE - THIS FIELD IS NOT KEPT UP TO DATE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL of the keystone identity service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudZone" name="cloud-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Zone where the cloud is homed. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="complex name for cloud-region instance. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeGroups" name="volume-groups" type="inventory.aai.openecomp.org.v9.VolumeGroups" /> - <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.openecomp.org.v9.Tenants" /> - <xml-element java-attribute="flavors" name="flavors" type="inventory.aai.openecomp.org.v9.Flavors" /> - <xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.openecomp.org.v9.GroupAssignments" /> - <xml-element java-attribute="snapshots" name="snapshots" type="inventory.aai.openecomp.org.v9.Snapshots" /> - <xml-element java-attribute="images" name="images" type="inventory.aai.openecomp.org.v9.Images" /> - <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.openecomp.org.v9.DvsSwitches" /> - <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.openecomp.org.v9.OamNetworks" /> - <xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.openecomp.org.v9.AvailabilityZones" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="cloud-region designates an installation of a cloud cluster or region or instantiation. In AT&Ts AIC cloud, this could be an LCP or DCP. Cloud regions are uniquely identified by a composite key, cloud-owner + cloud-region-id. The format of the cloud-owner is vendor-cloudname and we will use att-aic for AT&T's AIC." /> - <xml-property name="indexedProps" value="cloud-owner,cloud-region-id,cloud-type,owner-defined-type" /> - <xml-property name="nameProps" value="owner-defined-type" /> - <xml-property name="container" value="cloud-regions" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - <java-type name="VolumeGroups"> - <xml-properties> - <xml-property name="description" value="Collection of persistent block-level storage." /> - </xml-properties> - <xml-root-element name="volume-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="volumeGroup" name="volume-group" type="inventory.aai.openecomp.org.v9.VolumeGroup" /> - </java-attributes> - </java-type> - - <java-type name="VolumeGroup"> - <xml-root-element name="volume-group" /> - <java-attributes> - <xml-element java-attribute="volumeGroupId" name="volume-group-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of volume-group." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeGroupName" name="volume-group-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the volume group." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this volume-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this volume-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - <xml-property name="dbAlias" value="model-customization-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfModulePersonaModelCustomizationId" name="vf-module-persona-model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="helps relate the volume group to the vf-module whose components will require the volume group" /> - <xml-property name="dbAlias" value="vf-module-model-customization-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Persistent block-level storage." /> - <xml-property name="indexedProps" value="volume-group-name,vnf-type,heat-stack-id,volume-group-id" /> - <xml-property name="searchable" value="volume-group-id,volume-group-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="volume-groups" /> - </xml-properties> - </java-type> - - <java-type name="RelationshipList"> - <xml-root-element name="relationship-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="relationship" name="relationship" type="inventory.aai.openecomp.org.v9.Relationship" /> - </java-attributes> - </java-type> - - <java-type name="Relationship"> - <xml-root-element name="relationship" /> - <java-attributes> - <xml-element java-attribute="relatedTo" name="related-to" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="A keyword provided by A&AI to indicate type of node." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relatedLink" name="related-link" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to the object in A&AI." /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="relationshipData" name="relationship-data" type="inventory.aai.openecomp.org.v9.RelationshipData" /> - <xml-element container-type="java.util.ArrayList" java-attribute="relatedToProperty" name="related-to-property" type="inventory.aai.openecomp.org.v9.RelatedToProperty" /> - </java-attributes> - </java-type> - - <java-type name="RelatedToProperty"> - <xml-root-element name="related-to-property" /> - <java-attributes> - <xml-element java-attribute="propertyKey" name="property-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Key part of a key/value pair" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Value part of a key/value pair" /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="RelationshipData"> - <xml-root-element name="relationship-data" /> - <java-attributes> - <xml-element java-attribute="relationshipKey" name="relationship-key" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="A keyword provided by A&AI to indicate an attribute." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipValue" name="relationship-value" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Value of the attribute." /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="Complexes"> - <xml-properties> - <xml-property name="description" value="Collection of physical locations that can house cloud-regions." /> - </xml-properties> - <xml-root-element name="complexes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="complex" name="complex" type="inventory.aai.openecomp.org.v9.Complex" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Complex"> - <xml-root-element name="complex" /> - <java-attributes> - <xml-element java-attribute="physicalLocationId" name="physical-location-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier for physical location, e.g., CLLI" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dataCenterCode" name="data-center-code" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Data center code which can be an alternate way to identify a complex" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Gamma complex name for LCP instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL of the keystone identity service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="physicalLocationType" name="physical-location-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type, e.g., central office, data center." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="street1" name="street1" required="true" type="java.lang.String" /> - <xml-element java-attribute="street2" name="street2" type="java.lang.String" /> - <xml-element java-attribute="city" name="city" required="true" type="java.lang.String" /> - <xml-element java-attribute="state" name="state" type="java.lang.String" /> - <xml-element java-attribute="postalCode" name="postal-code" required="true" type="java.lang.String" /> - <xml-element java-attribute="country" name="country" required="true" type="java.lang.String" /> - <xml-element java-attribute="region" name="region" required="true" type="java.lang.String" /> - <xml-element java-attribute="latitude" name="latitude" type="java.lang.String" /> - <xml-element java-attribute="longitude" name="longitude" type="java.lang.String" /> - <xml-element java-attribute="elevation" name="elevation" type="java.lang.String" /> - <xml-element java-attribute="lata" name="lata" type="java.lang.String" /> - <xml-element java-attribute="ctagPools" name="ctag-pools" type="inventory.aai.openecomp.org.v9.CtagPools" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of physical locations that can house cloud-regions." /> - <xml-property name="indexedProps" value="identity-url,data-center-code,complex-name,physical-location-id" /> - <xml-property name="searchable" value="physical-location-id,data-center-code,complex-name,street1,street2,postal-code" /> - <xml-property name="uniqueProps" value="physical-location-id" /> - <xml-property name="container" value="complexes" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="CtagPools"> - <xml-root-element name="ctag-pools" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ctagPool" name="ctag-pool" type="inventory.aai.openecomp.org.v9.CtagPool" /> - </java-attributes> - </java-type> - - <java-type name="CtagPool"> - <xml-root-element name="ctag-pool" /> - <java-attributes> - <xml-element java-attribute="targetPe" name="target-pe" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="The Target provider edge router" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the availability zone" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ctagPoolPurpose" name="ctag-pool-purpose" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Describes what the intended purpose of this pool is." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ctagValues" name="ctag-values" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Comma separated list of ctags" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="A collection of C tags (vlan tags) grouped for a specific purpose." /> - <xml-property name="indexedProps" value="availability-zone-name" /> - <xml-property name="dependentOn" value="complex" /> - <xml-property name="container" value="ctag-pools" /> - </xml-properties> - </java-type> - - <java-type name="Tenants"> - <xml-properties> - <xml-property name="description" value="Collection of openstack tenants." /> - </xml-properties> - <xml-root-element name="tenants" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="tenant" name="tenant" type="inventory.aai.openecomp.org.v9.Tenant" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Tenant"> - <xml-root-element name="tenant" /> - <java-attributes> - <xml-element java-attribute="tenantId" name="tenant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id relative to the cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tenantName" name="tenant-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Readable name of tenant" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vservers" name="vservers" type="inventory.aai.openecomp.org.v9.Vservers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack tenant" /> - <xml-property name="nameProps" value="tenant-name" /> - <xml-property name="indexedProps" value="tenant-name,tenant-id" /> - <xml-property name="searchable" value="tenant-id,tenant-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="tenants" /> - </xml-properties> - </java-type> - - <java-type name="Vservers"> - <xml-properties> - <xml-property name="description" value="Collection of virtual Servers, aka virtual machines or VMs." /> - </xml-properties> - <xml-root-element name="vservers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vserver" name="vserver" type="inventory.aai.openecomp.org.v9.Vserver" /> - </java-attributes> - </java-type> - - <java-type name="Vserver"> - <xml-root-element name="vserver" /> - <java-attributes> - <xml-element java-attribute="vserverId" name="vserver-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier for this vserver relative to its tenant" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverName" name="vserver-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of vserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverName2" name="vserver-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternative name of vserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverSelflink" name="vserver-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumes" name="volumes" type="inventory.aai.openecomp.org.v9.Volumes" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v9.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual Servers, aka virtual machine or VM." /> - <xml-property name="nameProps" value="vserver-name" /> - <xml-property name="indexedProps" value="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2" /> - <xml-property name="searchable" value="vserver-id,vserver-name,vserver-name2" /> - <xml-property name="dependentOn" value="tenant" /> - <xml-property name="container" value="vservers" /> - </xml-properties> - </java-type> - - <java-type name="LInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of logical interfaces." /> - </xml-properties> - <xml-root-element name="l-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lInterface" name="l-interface" type="inventory.aai.openecomp.org.v9.LInterface" /> - </java-attributes> - </java-type> - - <java-type name="LInterface"> - <xml-root-element name="l-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name given to the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="E.g., CUSTOMER, UPLINK, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v6WanLinkIp" name="v6-wan-link-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="macaddr" name="macaddr" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="MAC address for the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Whether A&AI should be managing this interface of not. Could have value like CUSTOMER" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceDescription" name="interface-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Human friendly text regarding this interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlans" name="vlans" type="inventory.aai.openecomp.org.v9.Vlans" /> - <xml-element java-attribute="sriovVfs" name="sriov-vfs" type="inventory.aai.openecomp.org.v9.SriovVfs" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.openecomp.org.v9.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.openecomp.org.v9.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Logical interfaces, e.g., a vnic." /> - <xml-property name="indexedProps" value="macaddr,interface-id,interface-name,network-name" /> - <xml-property name="dependentOn" value="generic-vnf,newvce,vpe,p-interface,vserver,lag-interface" /> - <xml-property name="container" value="l-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="SriovVfs"> - <xml-properties> - <xml-property name="description" value="Collection of SR-IOV Virtual Functions." /> - </xml-properties> - <xml-root-element name="sriov-vfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sriovVf" name="sriov-vf" type="inventory.aai.openecomp.org.v9.SriovVf" /> - </java-attributes> - </java-type> - <java-type name="SriovVf"> - <xml-root-element name="sriov-vf" /> - <java-attributes> - <xml-element java-attribute="pciId" name="pci-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="PCI ID used to identify the sriov-vf" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanFilter" name="vf-vlan-filter" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMacFilter" name="vf-mac-filter" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanStrip" name="vf-vlan-strip" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanAntiSpoofCheck" name="vf-vlan-anti-spoof-check" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMacAntiSpoofCheck" name="vf-mac-anti-spoof-check" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMirrors" name="vf-mirrors" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfBroadcastAllow" name="vf-broadcast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfUnknownMulticastAllow" name="vf-unknown-multicast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfUnknownUnicastAllow" name="vf-unknown-unicast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfInsertStag" name="vf-insert-stag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, instructs to insert outer tag after traffic comes out of VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfLinkStatus" name="vf-link-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This option is used to set the link status. Valid values as of 1607 are on, off, and auto." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="SR-IOV Virtual Function (not to be confused with virtual network function)" /> - <xml-property name="indexedProps" value="pci-id,vf-vlan-filter,vf-mac-filter,vf-vlan-strip,neutron-network-id" /> - <xml-property name="dependentOn" value="l-interface" /> - <xml-property name="container" value="sriov-vfs" /> - </xml-properties> - </java-type> - - <java-type name="L3InterfaceIpv4AddressList"> - <xml-root-element name="l3-interface-ipv4-address-list" /> - <java-attributes> - <xml-element java-attribute="l3InterfaceIpv4Address" name="l3-interface-ipv4-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="l3InterfaceIpv4PrefixLength" name="l3-interface-ipv4-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 32 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv4 Address Range" /> - <xml-property name="indexedProps" value="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="vlan,l-interface" /> - </xml-properties> - </java-type> - - <java-type name="Vlans"> - <xml-root-element name="vlans" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vlan" name="vlan" type="inventory.aai.openecomp.org.v9.Vlan" /> - </java-attributes> - </java-type> - - <java-type name="Vlan"> - <xml-root-element name="vlan" /> - <java-attributes> - <xml-element java-attribute="vlanInterface" name="vlan-interface" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="String that identifies the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanDescription" name="vlan-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to describe (the service associated with) the vlan" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="backdoorConnection" name="backdoor-connection" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Whether customer is going to use this VLAN for backdoor connection to another customer premise device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnId" name="vpn-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This indicates the customers VPN ID associated with this vlan" /> - <xml-property name="dbAlias" value="vpn-id-local" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Status of a vnf's vlan interface, on which the customer circuit resides, mastered by SDN-C." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.openecomp.org.v9.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.openecomp.org.v9.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Definition of vlan" /> - <xml-property name="indexedProps" value="vlan-interface,vlan-id-inner,vpn-id" /> - <xml-property name="uniqueProps" value="vpn-id" /> - <xml-property name="dependentOn" value="l-interface" /> - <xml-property name="container" value="vlans" /> - </xml-properties> - </java-type> - - <java-type name="L3InterfaceIpv6AddressList"> - <xml-root-element name="l3-interface-ipv6-address-list" /> - <java-attributes> - <xml-element java-attribute="l3InterfaceIpv6Address" name="l3-interface-ipv6-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="l3InterfaceIpv6PrefixLength" name="l3-interface-ipv6-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 128 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv6 Address Range" /> - <xml-property name="indexedProps" value="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="vlan,l-interface" /> - </xml-properties> - </java-type> - - <java-type name="Volumes"> - <xml-properties> - <xml-property name="description" value="Collection of ephemeral Block storage volumes." /> - </xml-properties> - <xml-root-element name="volumes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="volume" name="volume" type="inventory.aai.openecomp.org.v9.Volume" /> - </java-attributes> - </java-type> - - <java-type name="Volume"> - <xml-root-element name="volume" /> - <java-attributes> - <xml-element java-attribute="volumeId" name="volume-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of block storage volume relative to the vserver." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeSelflink" name="volume-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Ephemeral Block storage volume." /> - <xml-property name="indexedProps" value="volume-id" /> - <xml-property name="dependentOn" value="vserver" /> - <xml-property name="container" value="volumes" /> - </xml-properties> - </java-type> - - <java-type name="Flavors"> - <xml-properties> - <xml-property name="description" value="Collection of openstack flavors." /> - </xml-properties> - <xml-root-element name="flavors" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="flavor" name="flavor" type="inventory.aai.openecomp.org.v9.Flavor" /> - </java-attributes> - </java-type> - - <java-type name="Flavor"> - <xml-root-element name="flavor" /> - <java-attributes> - <xml-element java-attribute="flavorId" name="flavor-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Flavor id, expected to be unique across cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorName" name="flavor-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Flavor name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorVcpus" name="flavor-vcpus" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Number of CPUs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorRam" name="flavor-ram" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Amount of memory" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorDisk" name="flavor-disk" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Disk space" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorEphemeral" name="flavor-ephemeral" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Amount of ephemeral disk space" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorSwap" name="flavor-swap" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="amount of swap space allocation" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorIsPublic" name="flavor-is-public" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="whether flavor is available to all users or private to the tenant it was created in." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorSelflink" name="flavor-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorDisabled" name="flavor-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Boolean as to whether this flavor is no longer enabled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack flavor." /> - <xml-property name="nameProps" value="flavor-name" /> - <xml-property name="indexedProps" value="flavor-name,flavor-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="flavors" /> - </xml-properties> - </java-type> - - <java-type name="Snapshots"> - <xml-properties> - <xml-property name="description" value="Collection of openstack snapshots" /> - </xml-properties> - <xml-root-element name="snapshots" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="snapshot" name="snapshot" type="inventory.aai.openecomp.org.v9.Snapshot" /> - </java-attributes> - </java-type> - - <java-type name="Snapshot"> - <xml-root-element name="snapshot" /> - <java-attributes> - <xml-element java-attribute="snapshotId" name="snapshot-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Snapshot id, this is the key UUID assoc associated in glance with the snapshots." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotName" name="snapshot-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Snapshot name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotArchitecture" name="snapshot-architecture" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operating system architecture" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotOsDistro" name="snapshot-os-distro" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The common name of the operating system distribution in lowercase" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotOsVersion" name="snapshot-os-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The operating system version as specified by the distributor." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotSelflink" name="snapshot-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="prevSnapshotId" name="prev-snapshot-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field contains the UUID of the previous snapshot (if any)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack snapshot" /> - <xml-property name="nameProps" value="snapshot-name" /> - <xml-property name="uniqueProps" value="snapshot-id" /> - <xml-property name="indexedProps" value="application,snapshot-name,application-vendor,snapshot-id,application-version,prev-snapshot-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="snapshots" /> - </xml-properties> - </java-type> - - <java-type name="GroupAssignments"> - <xml-properties> - <xml-property name="description" value="Collection of openstack group assignments" /> - </xml-properties> - <xml-root-element name="group-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="groupAssignment" name="group-assignment" type="inventory.aai.openecomp.org.v9.GroupAssignment" /> - </java-attributes> - </java-type> - - <java-type name="GroupAssignment"> - <xml-root-element name="group-assignment" /> - <java-attributes> - <xml-element java-attribute="groupId" name="group-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Group id, expected to be unique across cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupType" name="group-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group type - the type of group this instance refers to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupName" name="group-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group name - name assigned to the group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupDescription" name="group-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group description - description of the group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack group-assignment used to store exclusivity groups (EG)." /> - <xml-property name="nameProps" value="group-name" /> - <xml-property name="indexedProps" value="group-id,group-type,group-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="group-assignments" /> - </xml-properties> - </java-type> - - <java-type name="Images"> - <xml-properties> - <xml-property name="description" value="Collectio of Openstack images." /> - </xml-properties> - <xml-root-element name="images" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="image" name="image" type="inventory.aai.openecomp.org.v9.Image" /> - </java-attributes> - </java-type> - - <java-type name="Image"> - <xml-root-element name="image" /> - <java-attributes> - <xml-element java-attribute="imageId" name="image-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Image id, expected to be unique across cloud region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageName" name="image-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Image name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageArchitecture" name="image-architecture" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operating system architecture." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageOsDistro" name="image-os-distro" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The common name of the operating system distribution in lowercase" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageOsVersion" name="image-os-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The operating system version as specified by the distributor." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageSelflink" name="image-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v9.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack image." /> - <xml-property name="nameProps" value="image-name" /> - <xml-property name="indexedProps" value="application,image-name,application-vendor,image-id,application-version" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="images" /> - </xml-properties> - </java-type> - - <java-type name="Metadata"> - <xml-properties> - <xml-property name="description" value="Collection of metadatum (key/value pairs)" /> - </xml-properties> - <xml-root-element name="metadata" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="metadatum" name="metadatum" type="inventory.aai.openecomp.org.v9.Metadatum" /> - </java-attributes> - </java-type> - - <java-type name="Metadatum"> - <xml-root-element name="metadatum" /> - <java-attributes> - <xml-element java-attribute="metaname" name="metaname" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="metaval" name="metaval" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Key/value pairs" /> - <xml-property name="indexedProps" value="metaname" /> - <xml-property name="dependentOn" value="tenant,image,service-instance,connector,model" /> - <xml-property name="container" value="metadata" /> - </xml-properties> - </java-type> - - <java-type name="DvsSwitches"> - <xml-properties> - <xml-property name="description" value="Collection of digital virtual switch metadata used for vmWare VCEs and VPEs." /> - </xml-properties> - <xml-root-element name="dvs-switches" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="dvsSwitch" name="dvs-switch" type="inventory.aai.openecomp.org.v9.DvsSwitch" /> - </java-attributes> - </java-type> - - <java-type name="DvsSwitch"> - <xml-root-element name="dvs-switch" /> - <java-attributes> - <xml-element java-attribute="switchName" name="switch-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="DVS switch name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcenterUrl" name="vcenter-url" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL used to reach the vcenter" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Digital virtual switch metadata, used by SDN-C to configure VCEs. A&AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&AI. " /> - <xml-property name="indexedProps" value="vcenter-url,switch-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="dvs-switches" /> - </xml-properties> - </java-type> - - <java-type name="NetworkProfiles"> - <xml-properties> - <xml-property name="description" value="Collection of network profiles" /> - </xml-properties> - <xml-root-element name="network-profiles" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="networkProfile" name="network-profile" type="inventory.aai.openecomp.org.v9.NetworkProfile" /> - </java-attributes> - </java-type> - - <java-type name="NetworkProfile"> - <xml-root-element name="network-profile" /> - <java-attributes> - <xml-element java-attribute="nmProfileName" name="nm-profile-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique name of network profile." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="communityString" name="community-string" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encrypted SNMP community string" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Network profile populated by SDN-GP for SNMP" /> - <xml-property name="indexedProps" value="nm-profile-name" /> - <xml-property name="container" value="network-profiles" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="Pservers"> - <xml-properties> - <xml-property name="description" value="Collection of compute hosts." /> - </xml-properties> - <xml-root-element name="pservers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pserver" name="pserver" type="inventory.aai.openecomp.org.v9.Pserver" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Pserver"> - <xml-root-element name="pserver" /> - <java-attributes> - <xml-element java-attribute="hostname" name="hostname" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Value from executing hostname on the compute node." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ptniiEquipName" name="ptnii-equip-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="PTNII name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="numberOfCpus" name="number-of-cpus" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Number of cpus" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="diskInGigabytes" name="disk-in-gigabytes" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Disk size, in GBs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ramInMegabytes" name="ram-in-megabytes" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="RAM size, in MBs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment type. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment vendor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment model. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="fqdn" name="fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Fully-qualified domain name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverSelflink" name="pserver-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to configure device, also used for troubleshooting and is IP used for traps generated by device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Serial number, may be queried" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Loopback0" name="ipaddress-v4-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Loopback0" name="ipaddress-v6-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Aim" name="ipaddress-v4-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Aim" name="ipaddress-v6-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Oam" name="ipaddress-v6-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 OAM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CANOPI's inventory status. Only set with values exactly as defined by CANOPI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverId" name="pserver-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of Pserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="internetTopology" name="internet-topology" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="internet topology of Pserver" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverName2" name="pserver-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="alternative pserver name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="purpose" name="purpose" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="purpose of pserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.openecomp.org.v9.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v9.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver." /> - <xml-property name="nameProps" value="pserver-name2" /> - <xml-property name="indexedProps" value="hostname,in-maint,pserver-id,pserver-name2,inv-status" /> - <xml-property name="searchable" value="hostname,pserver-name2,pserver-id,ipv4-oam-address" /> - <xml-property name="container" value="pservers" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="PInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of physical interfaces." /> - </xml-properties> - <xml-root-element name="p-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pInterface" name="p-interface" type="inventory.aai.openecomp.org.v9.PInterface" /> - </java-attributes> - </java-type> - - <java-type name="PInterface"> - <xml-root-element name="p-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name that identifies the physical interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portDescription" name="port-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Nature of the services and connectivity on this port." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentIdentifier" name="equipment-identifier" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CLEI or other specification for p-interface hardware." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role specification for p-interface hardware." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceType" name="interface-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the physical properties of the interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v9.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Physical interface (e.g., nic)" /> - <xml-property name="indexedProps" value="interface-name,prov-status" /> - <xml-property name="nameProps" value="prov-status" /> - <xml-property name="dependentOn" value="vpls-pe,pserver,pnf" /> - <xml-property name="container" value="p-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="LagInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of link aggregate interfaces." /> - </xml-properties> - <xml-root-element name="lag-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lagInterface" name="lag-interface" type="inventory.aai.openecomp.org.v9.LagInterface" /> - </java-attributes> - </java-type> - - <java-type name="LagInterface"> - <xml-root-element name="lag-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name that identifies the link aggregate interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceDescription" name="interface-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Human friendly text regarding this interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v9.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Link aggregate interface" /> - <xml-property name="indexedProps" value="interface-name,interface-id,interface-role" /> - <xml-property name="dependentOn" value="generic-vnf,pserver,vpe,vpls-pe,pnf" /> - <xml-property name="container" value="lag-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="OamNetworks"> - <xml-properties> - <xml-property name="description" value="Collection of OAM networks, to be deprecated shortly. Do not use for new purposes. " /> - </xml-properties> - <xml-root-element name="oam-networks" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="oamNetwork" name="oam-network" type="inventory.aai.openecomp.org.v9.OamNetwork" /> - </java-attributes> - </java-type> - - <java-type name="OamNetwork"> - <xml-root-element name="oam-network" /> - <java-attributes> - <xml-element java-attribute="networkUuid" name="network-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID of the network. Unique across a cloud-region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="cvlan-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="OAM network, to be deprecated shortly. Do not use for new purposes. " /> - <xml-property name="nameProps" value="network-name" /> - <xml-property name="indexedProps" value="cvlan-tag,network-uuid,network-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="oam-networks" /> - </xml-properties> - </java-type> - - <java-type name="AvailabilityZones"> - <xml-properties> - <xml-property name="description" value="Collection of availability zones" /> - </xml-properties> - <xml-root-element name="availability-zones" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.openecomp.org.v9.AvailabilityZone" /> - </java-attributes> - </java-type> - - <java-type name="AvailabilityZone"> - <xml-root-element name="availability-zone" /> - <java-attributes> - <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the availability zone. Unique across a cloud region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="hypervisorType" name="hypervisor-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of hypervisor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="State that indicates whether the availability zone should be used, etc. Source of truth should define valid values." /> - <xml-property name="dbAlias" value="operational-status" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Availability zone, a collection of compute hosts/pservers" /> - <xml-property name="indexedProps" value="availability-zone-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="availability-zones" /> - </xml-properties> - </java-type> - - <java-type name="VirtualDataCenters"> - <xml-properties> - <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context" /> - </xml-properties> - <xml-root-element name="virtual-data-centers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="virtualDataCenter" name="virtual-data-center" type="inventory.aai.openecomp.org.v9.VirtualDataCenter" /> - </java-attributes> - </java-type> - - <java-type name="VirtualDataCenter"> - <xml-root-element name="virtual-data-center" /> - <java-attributes> - <xml-element java-attribute="vdcId" name="vdc-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of the vdc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdcName" name="vdc-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the virtual data center" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context" /> - <xml-property name="nameProps" value="vdc-name" /> - <xml-property name="indexedProps" value="vdc-name,vdc-id" /> - <xml-property name="container" value="virtual-data-centers" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - - - - <java-type name="Business"> - <xml-properties> - <xml-property name="description" value="Namespace for business related constructs" /> - </xml-properties> - <xml-root-element name="business" /> - <java-attributes> - <xml-element java-attribute="connectors" name="connectors" type="inventory.aai.openecomp.org.v9.Connectors" /> - <xml-element java-attribute="customers" name="customers" type="inventory.aai.openecomp.org.v9.Customers" /> - </java-attributes> - </java-type> - - <java-type name="Connectors"> - <xml-properties> - <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets" /> - </xml-properties> - <xml-root-element name="connectors" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="connector" name="connector" type="inventory.aai.openecomp.org.v9.Connector" /> - </java-attributes> - </java-type> - - <java-type name="Connector"> - <xml-root-element name="connector" /> - <java-attributes> - <xml-element java-attribute="resourceInstanceId" name="resource-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of resource instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v9.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets" /> - <xml-property name="indexedProps" value="resource-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version" /> - <xml-property name="container" value="connectors" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="Customers"> - <xml-properties> - <xml-property name="description" value="Collection of customer identifiers to provide linkage back to BSS information." /> - </xml-properties> - <xml-root-element name="customers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="customer" name="customer" type="inventory.aai.openecomp.org.v9.Customer" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Customer"> - <xml-root-element name="customer" /> - <java-attributes> - <xml-element java-attribute="globalCustomerId" name="global-customer-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Global customer id used across ECOMP to uniquely identify customer." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subscriberName" name="subscriber-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Subscriber name, an alternate way to retrieve a customer." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subscriberType" name="subscriber-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Subscriber type, a way to provide VID with only the INFRA customers." /> - <xml-property name="defaultValue" value="CUST" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceSubscriptions" name="service-subscriptions" type="inventory.aai.openecomp.org.v9.ServiceSubscriptions" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="customer identifiers to provide linkage back to BSS information." /> - <xml-property name="nameProps" value="subscriber-name" /> - <xml-property name="indexedProps" value="subscriber-name,global-customer-id,subscriber-type" /> - <xml-property name="searchable" value="global-customer-id,subscriber-name" /> - <xml-property name="uniqueProps" value="global-customer-id" /> - <xml-property name="container" value="customers" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="ServiceSubscriptions"> - <xml-properties> - <xml-property name="description" value="Collection of objects that group service instances." /> - </xml-properties> - <xml-root-element name="service-subscriptions" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceSubscription" name="service-subscription" type="inventory.aai.openecomp.org.v9.ServiceSubscription" /> - </java-attributes> - </java-type> - - <java-type name="ServiceSubscription"> - <xml-root-element name="service-subscription" /> - <java-attributes> - <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Value defined by orchestration to identify this service across ECOMP." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tempUbSubAccountId" name="temp-ub-sub-account-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This property will be deleted from A&AI in the near future. Only stop gap solution." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstances" name="service-instances" type="inventory.aai.openecomp.org.v9.ServiceInstances"> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Object that group service instances." /> - <xml-property name="indexedProps" value="service-type" /> - <xml-property name="dependentOn" value="customer" /> - <xml-property name="container" value="service-subscriptions" /> - <xml-property name="crossEntityReference" value="service-instance,service-type" /> - </xml-properties> - </java-type> - - <java-type name="ServiceInstances"> - <xml-properties> - <xml-property name="description" value="Collection of service instances" /> - </xml-properties> - <xml-root-element name="service-instances" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceInstance" name="service-instance" type="inventory.aai.openecomp.org.v9.ServiceInstance" /> - </java-attributes> - </java-type> - - <java-type name="ServiceInstance"> - <xml-root-element name="service-instance" /> - <java-attributes> - <xml-element java-attribute="serviceInstanceId" name="service-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Uniquely identifies this instance of a service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstanceName" name="service-instance-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field will store a name assigned to the service-instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthTotal" name="bandwidth-total" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the total bandwidth to be used for this service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN1 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN1 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN2 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN2 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vhnPortalUrl" name="vhn-portal-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL customers will use to access the vHN Portal." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstanceLocationId" name="service-instance-location-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="An identifier that customers assign to the location where this service is being used." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v9.Metadata" /> - <xml-element java-attribute="allottedResources" name="allotted-resources" type="inventory.aai.openecomp.org.v9.AllottedResources" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Instance of a service" /> - <xml-property name="indexedProps" value="service-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,service-instance-name,service-instance-location-id,orchestration-status" /> - <xml-property name="nameProps" value="service-instance-name" /> - <xml-property name="searchable" value="service-instance-id,service-instance-name" /> - <xml-property name="uniqueProps" value="service-instance-id" /> - <xml-property name="dependentOn" value="service-subscription" /> - <xml-property name="container" value="service-instances" /> - </xml-properties> - </java-type> - - <java-type name="ServiceDesignAndCreation"> - <xml-properties> - <xml-property name="description" value="Namespace for objects managed by ASDC" /> - </xml-properties> - <xml-root-element name="service-design-and-creation" /> - <java-attributes> - <xml-element java-attribute="vnfImages" name="vnf-images" type="inventory.aai.openecomp.org.v9.VnfImages" /> - <xml-element java-attribute="services" name="services" type="inventory.aai.openecomp.org.v9.Services" /> - <xml-element java-attribute="serviceCapabilities" name="service-capabilities" type="inventory.aai.openecomp.org.v9.ServiceCapabilities" /> - <xml-element java-attribute="models" name="models" type="inventory.aai.openecomp.org.v9.Models" /> - <xml-element java-attribute="namedQueries" name="named-queries" type="inventory.aai.openecomp.org.v9.NamedQueries" /> - </java-attributes> - </java-type> - - <java-type name="VnfImages"> - <xml-properties> - <xml-property name="description" value="Collection of image objects that pertain to a VNF that doesn't have associated vservers. This is a kludge." /> - </xml-properties> - <xml-root-element name="vnf-images" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vnfImage" name="vnf-image" type="inventory.aai.openecomp.org.v9.VnfImage" /> - </java-attributes> - </java-type> - - <java-type name="VnfImage"> - <xml-root-element name="vnf-image" /> - <java-attributes> - <xml-element java-attribute="vnfImageUuid" name="vnf-image-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of this asset" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Image object that pertain to a VNF that doesn't have associated vservers. This is a kludge." /> - <xml-property name="indexedProps" value="application,vnf-image-uuid,application-vendor,application-version" /> - <xml-property name="uniqueProps" value="vnf-image-uuid" /> - <xml-property name="container" value="vnf-images" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="Services"> - <xml-properties> - <xml-property name="description" value="Collection of service model definitions. Likely to be deprecated in favor of models from ASDC." /> - </xml-properties> - <xml-root-element name="services" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="service" name="service" type="inventory.aai.openecomp.org.v9.Service" /> - </java-attributes> - </java-type> - - <java-type name="Service"> - <xml-root-element name="service" /> - <java-attributes> - <xml-element java-attribute="serviceId" name="service-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceDescription" name="service-description" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description of the service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceSelflink" name="service-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceVersion" name="service-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="service version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Stand-in for service model definitions. Likely to be deprecated in favor of models from ASDC. Does not strictly map to ASDC services." /> - <xml-property name="indexedProps" value="service-description,service-id" /> - <xml-property name="container" value="services" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="ServiceCapabilities"> - <xml-properties> - <xml-property name="description" value="Collection of service capabilities." /> - </xml-properties> - <xml-root-element name="service-capabilities" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceCapability" name="service-capability" type="inventory.aai.openecomp.org.v9.ServiceCapability" /> - </java-attributes> - </java-type> - - <java-type name="ServiceCapability"> - <xml-root-element name="service-capability" /> - <java-attributes> - <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Early definition of server/resource pairings, likely to be replaced by models. No new use should be made of this." /> - <xml-property name="indexedProps" value="service-type,vnf-type" /> - <xml-property name="container" value="service-capabilities" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="Network"> - <xml-properties> - <xml-property name="description" value="Namespace for network inventory resources." /> - </xml-properties> - <xml-root-element name="network" /> - <java-attributes> - <xml-element java-attribute="logicalLinks" name="logical-links" type="inventory.aai.openecomp.org.v9.LogicalLinks" /> - <xml-element java-attribute="sitePairSets" name="site-pair-sets" type="inventory.aai.openecomp.org.v9.SitePairSets" /> - <xml-element java-attribute="vpnBindings" name="vpn-bindings" type="inventory.aai.openecomp.org.v9.VpnBindings" /> - <xml-element java-attribute="vplsPes" name="vpls-pes" type="inventory.aai.openecomp.org.v9.VplsPes" /> - <xml-element java-attribute="multicastConfigurations" name="multicast-configurations" type="inventory.aai.openecomp.org.v9.MulticastConfigurations" /> - <xml-element java-attribute="vces" name="vces" type="inventory.aai.openecomp.org.v9.Vces" /> - <xml-element java-attribute="vpes" name="vpes" type="inventory.aai.openecomp.org.v9.Vpes" /> - <xml-element java-attribute="vnfcs" name="vnfcs" type="inventory.aai.openecomp.org.v9.Vnfcs" /> - <xml-element java-attribute="l3Networks" name="l3-networks" type="inventory.aai.openecomp.org.v9.L3Networks" /> - <xml-element java-attribute="networkPolicies" name="network-policies" type="inventory.aai.openecomp.org.v9.NetworkPolicies" /> - <xml-element java-attribute="genericVnfs" name="generic-vnfs" type="inventory.aai.openecomp.org.v9.GenericVnfs" /> - <xml-element java-attribute="lagLinks" name="lag-links" type="inventory.aai.openecomp.org.v9.LagLinks" /> - <xml-element java-attribute="newvces" name="newvces" type="inventory.aai.openecomp.org.v9.Newvces" /> - <xml-element java-attribute="pnfs" name="pnfs" type="inventory.aai.openecomp.org.v9.Pnfs" /> - <xml-element java-attribute="physicalLinks" name="physical-links" type="inventory.aai.openecomp.org.v9.PhysicalLinks" /> - <xml-element java-attribute="ipsecConfigurations" name="ipsec-configurations" type="inventory.aai.openecomp.org.v9.IpsecConfigurations" /> - <xml-element java-attribute="routeTableReferences" name="route-table-references" type="inventory.aai.openecomp.org.v9.RouteTableReferences" /> - <xml-element java-attribute="instanceGroups" name="instance-groups" type="inventory.aai.openecomp.org.v9.InstanceGroups" /> - <xml-element java-attribute="zones" name="zones" type="inventory.aai.openecomp.org.v9.Zones" /> - </java-attributes> - </java-type> - - <java-type name="LogicalLinks"> - <xml-properties> - <xml-property name="description" value="Collection of logical connections" /> - </xml-properties> - <xml-root-element name="logical-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="logicalLink" name="logical-link" type="inventory.aai.openecomp.org.v9.LogicalLink" /> - </java-attributes> - </java-type> - - <java-type name="LogicalLink"> - <xml-root-element name="logical-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkType" name="link-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of logical link, e.g., evc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4, v6, or ds for dual stack" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routingProtocol" name="routing-protocol" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="For example, static or BGP" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indication of operational status of the logical link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkRole" name="link-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indication of the network use of the logical link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkName2" name="link-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alias or alternate name (CLCI or D1 name)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkId" name="link-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the logical-link, SDNC generates this." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Circuit id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="purpose" name="purpose" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Reason for this entity, role it is playing" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Logical links generally connect l-interfaces but are used to express logical connectivity between two points" /> - <xml-property name="indexedProps" value="link-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,link-id,prov-status,circuit-id,purpose" /> - <xml-property name="uniqueProps" value="link-id" /> - <xml-property name="container" value="logical-links" /> - <xml-property name="namespace" value="network" /> - <xml-property name="searchable" value="link-name" /> - </xml-properties> - </java-type> - - <java-type name="SitePairSets"> - <xml-properties> - <xml-property name="description" value="Collection of sets of instances for probes related to generic-vnf" /> - </xml-properties> - <xml-root-element name="site-pair-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sitePairSet" name="site-pair-set" type="inventory.aai.openecomp.org.v9.SitePairSet" /> - </java-attributes> - </java-type> - - <java-type name="SitePairSet"> - <xml-root-element name="site-pair-set" /> - <java-attributes> - <xml-element java-attribute="sitePairSetId" name="site-pair-set-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of site pair set." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routingInstances" name="routing-instances" type="inventory.aai.openecomp.org.v9.RoutingInstances" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Set of instances for probes used to measure service level agreements" /> - <xml-property name="indexedProps" value="site-pair-set-id" /> - <xml-property name="uniqueProps" value="site-pair-set-id" /> - <xml-property name="container" value="site-pair-sets" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="RoutingInstances"> - <xml-properties> - <xml-property name="description" value="set of probes related to generic-vnf routing instance" /> - </xml-properties> - <xml-root-element name="routing-instances" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="routingInstance" name="routing-instance" type="inventory.aai.openecomp.org.v9.RoutingInstance" /> - </java-attributes> - </java-type> - - <java-type name="RoutingInstance"> - <xml-root-element name="routing-instance" /> - <java-attributes> - <xml-element java-attribute="routingInstanceId" name="routing-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of routing instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="rpmOwner" name="rpm-owner" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="rpm owner" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sitePairs" name="site-pairs" type="inventory.aai.openecomp.org.v9.SitePairs" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="routing-instance-id" /> - <xml-property name="uniqueProps" value="routing-instance-id" /> - <xml-property name="dependentOn" value="site-pair-set" /> - <xml-property name="container" value="routing-instances" /> - </xml-properties> - </java-type> - - <java-type name="SitePairs"> - <xml-properties> - <xml-property name="description" value="probe within a set" /> - </xml-properties> - <xml-root-element name="site-pairs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sitePair" name="site-pair" type="inventory.aai.openecomp.org.v9.SitePair" /> - </java-attributes> - </java-type> - - <java-type name="SitePair"> - <xml-root-element name="site-pair" /> - <java-attributes> - <xml-element java-attribute="sitePairId" name="site-pair-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sourceIp" name="source-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prefix address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationIp" name="destination-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prefix address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ip version, v4, v6" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationHostname" name="destination-hostname" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Hostname of the destination equipment to which SLAs are measured against." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationEquipType" name="destination-equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The type of destinatination equipment. Could be Router, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="classesOfService" name="classes-of-service" type="inventory.aai.openecomp.org.v9.ClassesOfService" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="site-pair-id" /> - <xml-property name="uniqueProps" value="site-pair-id" /> - <xml-property name="dependentOn" value="routing-instance" /> - <xml-property name="container" value="site-pairs" /> - </xml-properties> - </java-type> - - <java-type name="ClassesOfService"> - <xml-properties> - <xml-property name="description" value="class-of-service of probe" /> - </xml-properties> - <xml-root-element name="classes-of-service" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="classOfService" name="class-of-service" type="inventory.aai.openecomp.org.v9.ClassOfService" /> - </java-attributes> - </java-type> - - <java-type name="ClassOfService"> - <xml-root-element name="class-of-service" /> - <java-attributes> - <xml-element java-attribute="cos" name="cos" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="probeId" name="probe-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="probeType" name="probe-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="type of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="cos" /> - <xml-property name="dependentOn" value="site-pair" /> - <xml-property name="container" value="classes-of-service" /> - </xml-properties> - </java-type> - - <java-type name="VpnBindings"> - <xml-root-element name="vpn-bindings" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vpnBinding" name="vpn-binding" type="inventory.aai.openecomp.org.v9.VpnBinding" /> - </java-attributes> - </java-type> - - <java-type name="VpnBinding"> - <xml-root-element name="vpn-binding" /> - <java-attributes> - <xml-element java-attribute="vpnId" name="vpn-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="VPN ID, globally unique within A&AI" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnName" name="vpn-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="VPN Name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="globalRouteTarget" name="global-route-target" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Number used to identify a VPN, globally unique in the network" /> - <xml-property name="dataLink" value="./route-targets/route-target/{global-route-target}/{route-target-role}" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnPlatform" name="vpn-platform" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the platform associated with the VPN example AVPN, Mobility" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnType" name="vpn-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the vpn, should be taken from enumerated/valid values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeDistinguisher" name="route-distinguisher" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to distinguish the distinct VPN routes of separate customers who connect to the provider in an MPLS network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeTargetRole" name="route-target-role" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role assigned to this route target" /> - <xml-property name="dataLink" value="./route-targets/route-target/{global-route-target}/{route-target-role}" /> - <xml-property name="defaultValue" value="BOTH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList"> - <xml-properties> - <xml-property name="description" value="l3-networks relate to vpn-bindings" /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="VPN binding" /> - <xml-property name="nameProps" value="vpn-name,vpn-type" /> - <xml-property name="indexedProps" value="vpn-name,vpn-id,global-route-target,vpn-type" /> - <xml-property name="searchable" value="vpn-id,vpn-name" /> - <xml-property name="uniqueProps" value="vpn-id" /> - <xml-property name="container" value="vpn-bindings" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="VplsPes"> - <xml-properties> - <xml-property name="description" value="Collection of VPLS Provider Edge routers" /> - </xml-properties> - <xml-root-element name="vpls-pes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vplsPe" name="vpls-pe" type="inventory.aai.openecomp.org.v9.VplsPe" /> - </java-attributes> - </java-type> - - <java-type name="VplsPe"> - <xml-root-element name="vpls-pe" /> - <java-attributes> - <xml-element java-attribute="equipmentName" name="equipment-name" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value, e.g., VPLS-PE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Temporary location for stag to get to VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.openecomp.org.v9.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v9.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="VPLS Provider Edge routers." /> - <xml-property name="indexedProps" value="prov-status,equipment-name" /> - <xml-property name="container" value="vpls-pes" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="MulticastConfigurations"> - <xml-properties> - <xml-property name="description" value="multicast configuration of generic-vnf ip-address" /> - </xml-properties> - <xml-root-element name="multicast-configurations" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="multicastConfiguration" name="multicast-configuration" type="inventory.aai.openecomp.org.v9.MulticastConfiguration" /> - </java-attributes> - </java-type> - - <java-type name="MulticastConfiguration"> - <xml-root-element name="multicast-configuration" /> - <java-attributes> - <xml-element java-attribute="multicastConfigurationId" name="multicast-configuration-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of multicast configuration." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="multicastProtocol" name="multicast-protocol" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="protocol of multicast configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="rpType" name="rp-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="rp type of multicast configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="multicast-configuration-id" /> - <xml-property name="uniqueProps" value="multicast-configuration-id" /> - <xml-property name="container" value="multicast-configurations" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Vces"> - <xml-properties> - <xml-property name="description" value="Collection of Virtual Customer Edge Routers, used specifically for Gamma. This object is deprecated." /> - </xml-properties> - <xml-root-element name="vces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vce" name="vce" type="inventory.aai.openecomp.org.v9.Vce" /> - </java-attributes> - </java-type> - - <java-type name="Vce"> - <xml-root-element name="vce" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service, does not strictly map to ASDC services, SOON TO BE DEPRECATED." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - <xml-property name="dbAlias" value="operational-status" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network role being played by this VNF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpeId" name="vpe-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique ID of VPE connected to this VCE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v6VceWanAddress" name="v6-vce-wan-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Valid v6 IP address for the WAN Link on this router. Implied length of /64." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - see child relationships" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroups" name="port-groups" type="inventory.aai.openecomp.org.v9.PortGroups" /> - <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.openecomp.org.v9.Licenses" /> - <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.openecomp.org.v9.Entitlements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual Customer Edge Router, used specifically for Gamma. This object is deprecated." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,interface-name,regional-resource-zone,vpe-id,prov-status,service-id" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="vces" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - </xml-properties> - </java-type> - - <java-type name="PortGroups"> - <xml-root-element name="port-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="portGroup" name="port-group" type="inventory.aai.openecomp.org.v9.PortGroup" /> - </java-attributes> - </java-type> - - <java-type name="PortGroup"> - <xml-root-element name="port-group" /> - <java-attributes> - <xml-element java-attribute="interfaceId" name="interface-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of this Interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkName" name="neutron-network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network name of this Interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroupId" name="port-group-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique ID for port group in vmware" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroupName" name="port-group-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Likely to duplicate value of neutron network name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="switchName" name="switch-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="DVS or standard switch name (should be non-null for port groups associated with DVS)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cvlanTags" name="cvlan-tags" type="inventory.aai.openecomp.org.v9.CvlanTags" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Used to capture the network interfaces of this VCE" /> - <xml-property name="nameProps" value="port-group-name" /> - <xml-property name="indexedProps" value="port-group-id,heat-stack-id,interface-id,interface-name,switch-name" /> - <xml-property name="dependentOn" value="vce" /> - <xml-property name="container" value="port-groups" /> - </xml-properties> - </java-type> - - <java-type name="CvlanTags"> - <xml-root-element name="cvlan-tags" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="cvlanTagEntry" name="cvlan-tag-entry" type="inventory.aai.openecomp.org.v9.CvlanTagEntry" /> - </java-attributes> - </java-type> - - <java-type name="CvlanTagEntry"> - <xml-root-element name="cvlan-tag-entry" /> - <java-attributes> - <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long" xml-key="true"> - <xml-properties> - <xml-property name="description" value="See mis-na-virtualization-platform.yang" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="dependentOn" value="port-group" /> - <xml-property name="indexedProps" value="cvlan-tag" /> - <xml-property name="container" value="cvlan-tags" /> - </xml-properties> - </java-type> - - <java-type name="Vpes"> - <xml-properties> - <xml-property name="description" value="Virtual provider edge router. In 1504, A&AI will populate this object through an M&P and tool provided to operations." /> - </xml-properties> - <xml-root-element name="vpes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vpe" name="vpe" type="inventory.aai.openecomp.org.v9.Vpe" /> - </java-attributes> - </java-type> - - <java-type name="Vpe"> - <xml-root-element name="vpe" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service. Does not map strictly to ASDC services. SOON TO BE DEPRECATED" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - <xml-property name="dbAlias" value="operational-status" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use. See child relationships." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Prefix length for oam-address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Gateway address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v4Loopback0IpAddress" name="v4-loopback0-ip-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Temporary location for stag to get to VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="as-number of the VPE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="details regarding the vpe operation, PLEASE DISCONTINUE USE OF THIS FIELD." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="indicates whether vpe access uses SSH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v9.LInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v9.LagInterfaces" /> - <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.openecomp.org.v9.Licenses" /> - <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.openecomp.org.v9.Entitlements" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Relationship-list must include related to info for complex." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,regional-resource-zone,prov-status,service-id" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="vpes" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - </xml-properties> - </java-type> - - <java-type name="Vnfcs"> - <xml-properties> - <xml-property name="description" value="virtual network components associated with a vserver from application controller." /> - </xml-properties> - <xml-root-element name="vnfcs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vnfc" name="vnfc" type="inventory.aai.openecomp.org.v9.Vnfc" /> - </java-attributes> - </java-type> - - <java-type name="Vnfc"> - <xml-root-element name="vnfc" /> - <java-attributes> - <xml-element java-attribute="vnfcName" name="vnfc-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of vnfc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfcFunctionCode" name="vnfc-function-code" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="function code" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfcType" name="vnfc-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="type" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="prov status of this vnfc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by APP-C" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4OamVip" name="ipaddress-v4-oam-vip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Oam V4 vip address of this vnfc" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupNotation" name="group-notation" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group notation of VNFC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="vnfc-name,prov-status,vnfc-type,vnfc-function-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled,group-notation" /> - <xml-property name="searchable" value="vnfc-name" /> - <xml-property name="container" value="vnfcs" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="L3Networks"> - <xml-root-element name="l3-networks" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="l3Network" name="l3-network" type="inventory.aai.openecomp.org.v9.L3Network" /> - </java-attributes> - </java-type> - - <java-type name="L3Network"> - <xml-root-element name="l3-network" /> - <java-attributes> - <xml-element java-attribute="networkId" name="network-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Network ID, should be uuid. Unique across A&AI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network, governed by some naming convention.." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkType" name="network-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the network - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkRole" name="network-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role the network plans - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkTechnology" name="network-technology" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network technology - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of this Interface" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isBoundToVpn" name="is-bound-to-vpn" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Set to true if bound to VPN" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service from ASDC. Does not strictly map to ASDC services. SOON TO BE DEPRECATED" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkRoleInstance" name="network-role-instance" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="network role instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="contrailNetworkFqdn" name="contrail-network-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contrail FQDN for the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - <xml-property name="dbAlias" value="model-customization-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="physicalNetworkName" name="physical-network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name associated with the physical network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isProviderNetwork" name="is-provider-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is a provider network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isSharedNetwork" name="is-shared-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is a shared network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isExternalNetwork" name="is-external-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is an external network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnets" name="subnets" type="inventory.aai.openecomp.org.v9.Subnets" /> - <xml-element java-attribute="ctagAssignments" name="ctag-assignments" type="inventory.aai.openecomp.org.v9.CtagAssignments" /> - <xml-element java-attribute="segmentationAssignments" name="segmentation-assignments" type="inventory.aai.openecomp.org.v9.SegmentationAssignments" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" > - <xml-properties> - <xml-property name="description" value="Relates to tenant (or is it a child of tenant), complex, service, vpn-binding" /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Generic network definition" /> - <xml-property name="nameProps" value="network-name" /> - <xml-property name="indexedProps" value="heat-stack-id,network-uuid,service-id,network-id,network-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-network-fqdn,network-role" /> - <xml-property name="searchable" value="network-id,network-name" /> - <xml-property name="uniqueProps" value="network-id" /> - <xml-property name="container" value="l3-networks" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - <java-type name="NetworkPolicies"> - <xml-root-element name="network-policies" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="networkPolicy" name="network-policy" type="inventory.aai.openecomp.org.v9.NetworkPolicy" /> - </java-attributes> - </java-type> - <java-type name="NetworkPolicy"> - <xml-root-element name="network-policy" /> - <java-attributes> - <xml-element java-attribute="networkPolicyId" name="network-policy-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID representing unique key to this instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkPolicyFqdn" name="network-policy-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contrail FQDN for the policy" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID for the openStack Heat instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="nameProps" value="network-policy-fqdn" /> - <xml-property name="indexedProps" value="network-policy-id,network-policy-fqdn" /> - <xml-property name="searchable" value="network-policy-id,network-policy-fqdn" /> - <xml-property name="uniqueProps" value="network-policy-id" /> - <xml-property name="container" value="network-policies" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - <java-type name="CtagAssignments"> - <xml-root-element name="ctag-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ctagAssignment" name="ctag-assignment" type="inventory.aai.openecomp.org.v9.CtagAssignment" /> - </java-attributes> - </java-type> - - <java-type name="CtagAssignment"> - <xml-root-element name="ctag-assignment" /> - <java-attributes> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" required="true" type="java.lang.Long" xml-key="true"> - <xml-properties> - <xml-property name="description" value="id." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="vlan-id-inner" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="ctag-assignments" /> - </xml-properties> - </java-type> - - <java-type name="Subnets"> - <xml-root-element name="subnets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="subnet" name="subnet" type="inventory.aai.openecomp.org.v9.Subnet" /> - </java-attributes> - </java-type> - - <java-type name="Subnet"> - <xml-root-element name="subnet" /> - <java-attributes> - <xml-element java-attribute="subnetId" name="subnet-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Subnet ID, should be UUID." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnetName" name="subnet-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name associated with the subnet." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of this subnet" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="gatewayAddress" name="gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="gateway ip address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkStartAddress" name="network-start-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="network start address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cidrMask" name="cidr-mask" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="cidr mask" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ip version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="dhcpEnabled" name="dhcp-enabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="dhcp enabled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dhcpStart" name="dhcp-start" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the start address reserved for use by dhcp" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dhcpEnd" name="dhcp-end" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the last address reserved for use by dhcp" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="subnet-id,subnet-name" /> - <xml-property name="nameProps" value="subnet-name" /> - <xml-property name="uniqueProps" value="subnet-id" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="subnets" /> - </xml-properties> - </java-type> - - <java-type name="GenericVnfs"> - <xml-properties> - <xml-property name="description" value="Collection of VNFs" /> - </xml-properties> - <xml-root-element name="generic-vnfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="genericVnf" name="generic-vnf" type="inventory.aai.openecomp.org.v9.GenericVnf" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="GenericVnf"> - <xml-root-element name="generic-vnf" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service, does not necessarily map to ASDC service models. SOON TO BE DEPRECATED" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational. Valid values are in-service-path and out-of-service-path." /> - <xml-property name="dbAlias" value="operational-status" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, used by MSO." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of managed by company or customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4 Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nmLanV6Address" name="nm-lan-v6-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 Loopback address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementV6Address" name="management-v6-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 management address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcpu" name="vcpu" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcpuUnits" name="vcpu-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vcpu, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vmemory" name="vmemory" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vmemoryUnits" name="vmemory-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vmemory, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdisk" name="vdisk" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdiskUnits" name="vdisk-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vdisk, used for VNFs with no vservers/flavors, to be used only in some usecases" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="details regarding the generic-vnf operation, PLEASE DISCONTINUE USE OF THIS FIELD." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="indicates whether generic-vnf access uses SSH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - <xml-property name="dbAlias" value="model-customization-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="as-number of the VNF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceSubzone" name="regional-resource-subzone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="represents sub zone of the rr plane" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v9.LInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v9.LagInterfaces" /> - <xml-element java-attribute="vfModules" name="vf-modules" type="inventory.aai.openecomp.org.v9.VfModules" /> - <xml-element java-attribute="licenses" name="licenses" type="inventory.aai.openecomp.org.v9.Licenses" /> - <xml-element java-attribute="entitlements" name="entitlements" type="inventory.aai.openecomp.org.v9.Entitlements" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="General purpose VNF" /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="generic-vnfs" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - </xml-properties> - </java-type> - - <java-type name="VfModules"> - <xml-properties> - <xml-property name="description" value="Collection of vf-modules, a deployment unit of VNFCs" /> - </xml-properties> - <xml-root-element name="vf-modules" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vfModule" name="vf-module" type="inventory.aai.openecomp.org.v9.VfModule" /> - </java-attributes> - </java-type> - - <java-type name="VfModule"> - <xml-root-element name="vf-module" /> - <java-attributes> - <xml-element java-attribute="vfModuleId" name="vf-module-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of vf-module." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfModuleName" name="vf-module-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of vf-module" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="orchestration status of this vf-module, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isBaseVfModule" name="is-base-vf-module" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is base vf module" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - <xml-property name="dbAlias" value="model-customization-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="contrailServiceInstanceFqdn" name="contrail-service-instance-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the Contrail unique ID for a service-instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="moduleIndex" name="module-index" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="the index will track the number of modules of a given type that have been deployed in a VNF, starting with 0, and always choosing the lowest available digit" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Path to the controller object." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="a deployment unit of VNFCs" /> - <xml-property name="indexedProps" value="vf-module-id,vf-module-name,heat-stack-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-service-instance-fqdn" /> - <xml-property name="searchable" value="vf-module-id,vf-module-name" /> - <xml-property name="dependentOn" value="generic-vnf" /> - <xml-property name="container" value="vf-modules" /> - </xml-properties> - </java-type> - - - <java-type name="LagLinks"> - <xml-properties> - <xml-property name="description" value="Collection of link aggregation connections" /> - </xml-properties> - <xml-root-element name="lag-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lagLink" name="lag-link" type="inventory.aai.openecomp.org.v9.LagLink" /> - </java-attributes> - </java-type> - - <java-type name="LagLink"> - <xml-root-element name="lag-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Alphabetical concatenation of lag-interface names" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="LAG links can connect lag-interfaces" /> - <xml-property name="indexedProps" value="link-name" /> - <xml-property name="container" value="lag-links" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Newvces"> - <xml-properties> - <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce." /> - </xml-properties> - <xml-root-element name="newvces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="newvce" name="newvce" type="inventory.aai.openecomp.org.v9.Newvce" /> - </java-attributes> - </java-type> - - <java-type name="Newvce"> - <xml-root-element name="newvce" /> - <java-attributes> - <xml-element java-attribute="vnfId2" name="vnf-id2" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF, can't use same attribute name right now until we promote this new object" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded in service-specific ways and clients should expect changes to occur in the future to this field as ECOMP matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - <xml-property name="dbAlias" value="operational-status" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="OBSOLETE - do not use" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value, e.g., VPE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4 Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.openecomp.org.v9.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,prov-status,vnf-id2" /> - <xml-property name="searchable" value="vnf-id2,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id2" /> - <xml-property name="container" value="newvces" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Pnfs"> - <xml-properties> - <xml-property name="description" value="Collection of Physical Network Functions." /> - </xml-properties> - <xml-root-element name="pnfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pnf" name="pnf" type="inventory.aai.openecomp.org.v9.Pnf" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="Pnf"> - <xml-root-element name="pnf" /> - <java-attributes> - <xml-element java-attribute="pnfName" name="pnf-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique name of Physical Network Function." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfName2" name="pnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="name of Physical Network Function." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfName2Source" name="pnf-name2-source" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="source of name2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfId" name="pnf-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="id of pnf" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment type. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment vendor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment model. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of managed by company or customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Oam" name="ipaddress-v4-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ipv4-oam-address with new naming convention for IP addresses" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="swVersion" name="sw-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="sw-version is the version of SW for the hosted application on the PNF." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="frameId" name="frame-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of the physical frame (relay rack) where pnf is installed." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Serial number of the device" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Loopback0" name="ipaddress-v4-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Loopback0" name="ipaddress-v6-loopback-0" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 Loopback 0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Aim" name="ipaddress-v4-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV4 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Aim" name="ipaddress-v6-aim" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 AIM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV6Oam" name="ipaddress-v6-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="IPV6 OAM address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="invStatus" name="inv-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CANOPI's inventory status. Only set with values exactly as defined by CANOPI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nfRole" name="nf-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Nf Role is the role performed by this instance in the network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.openecomp.org.v9.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.openecomp.org.v9.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="PNF represents a physical network function. typically equipment used in the D1 world." /> - <xml-property name="indexedProps" value="pnf-name,orchestration-status,inv-status" /> - <xml-property name="searchable" value="pnf-name" /> - <xml-property name="uniqueProps" value="pnf-name" /> - <xml-property name="container" value="pnfs" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="PhysicalLinks"> - <xml-properties> - <xml-property name="description" value="Collection of physical connections, typically between p-interfaces" /> - </xml-properties> - <xml-root-element name="physical-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="physicalLink" name="physical-link" type="inventory.aai.openecomp.org.v9.PhysicalLink" /> - </java-attributes> - <xml-properties> - <xml-property name="maximumDepth" value="0" /> - </xml-properties> - </java-type> - - <java-type name="PhysicalLink"> - <xml-root-element name="physical-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Circuit it" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dualMode" name="dual-mode" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Dual access mode (e.g., primary, secondary" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="To provide information on who manages this circuit. A&AI or 3rd party transport provider" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceProviderName" name="service-provider-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the service Provider on this link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of physical connections, typically between p-interfaces" /> - <xml-property name="indexedProps" value="circuit-id,link-name" /> - <xml-property name="alternateKeys1" value="circuit-id" /> - <xml-property name="container" value="physical-links" /> - <xml-property name="namespace" value="network" /> - <xml-property name="searchable" value="link-name,circuit-id" /> - </xml-properties> - </java-type> - - <java-type name="VigServers"> - <xml-root-element name="vig-servers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vigServer" name="vig-server" type="inventory.aai.openecomp.org.v9.VigServer" /> - </java-attributes> - </java-type> - - <java-type name="VigServer"> - <xml-root-element name="vig-server" /> - <java-attributes> - <xml-element java-attribute="vigAddressType" name="vig-address-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="indicates whether the VIG is for AVPN or INTERNET" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV4Vig" name="ipaddress-v4-vig" type="java.lang.String" > - <xml-properties> - <xml-property name="description" value="v4 IP of the vig server" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV6Vig" name="ipaddress-v6-vig" type="java.lang.String" > - <xml-properties> - <xml-property name="description" value="v6 IP of the vig server" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607" /> - <xml-property name="indexedProps" value="vig-address-type" /> - <xml-property name="dependentOn" value="ipsec-configuration" /> - <xml-property name="container" value="vig-servers" /> - </xml-properties> - </java-type> - - <java-type name="IpsecConfigurations"> - <xml-root-element name="ipsec-configurations" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ipsecConfiguration" name="ipsec-configuration" type="inventory.aai.openecomp.org.v9.IpsecConfiguration" /> - </java-attributes> - </java-type> - - <java-type name="IpsecConfiguration"> - <xml-root-element name="ipsec-configuration" /> - <java-attributes> - <xml-element java-attribute="ipsecConfigurationId" name="ipsec-configuration-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID of this configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedVigAddressType" name="requested-vig-address-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicate the type of VIG server like AVPN, INTERNET, BOTH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedEncryptionStrength" name="requested-encryption-strength" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedDmzType" name="requested-dmz-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="can offer a shared DMZ or a DMZ specific to a customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sharedDmzNetworkAddress" name="shared-dmz-network-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network address of shared DMZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedCustomerName" name="requested-customer-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="If the DMZ is a custom DMZ, this field will indicate the customer information" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikeVersion" name="ike-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="can be 1 or 2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1Authentication" name="ikev1-authentication" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contains values like md5, sha1, sha256, sha384" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1Encryption" name="ikev1-encryption" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encyption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1DhGroup" name="ikev1-dh-group" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1AmGroupId" name="ikev1-am-group-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group name defined in VIG for clients using aggressive mode" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1AmPassword" name="ikev1-am-password" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="pre-shared key for the above group name " /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1SaLifetime" name="ikev1-sa-lifetime" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Lifetime for IKEv1 SA" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecAuthentication" name="ipsec-authentication" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="md5, sha1, sha256, sha384" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecEncryption" name="ipsec-encryption" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecSaLifetime" name="ipsec-sa-lifetime" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Life time for IPSec SA" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecPfs" name="ipsec-pfs" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="enable PFS or not" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="xauthUserId" name="xauth-userid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="user ID for xAuth, sm-user, nmteHostName" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="xauthUserPassword" name="xauth-user-password" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encrypted using the Juniper $9$ algorithm" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dpdInterval" name="dpd-interval" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The time between DPD probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dpdFrequency" name="dpd-frequency" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Maximum number of DPD before claiming the tunnel is down" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - <xml-element java-attribute="vigServers" name="vig-servers" type="inventory.aai.openecomp.org.v9.VigServers" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C" /> - <xml-property name="indexedProps" value="ipsec-configuration-id" /> - <xml-property name="uniqueProps" value="ipsec-configuration-id" /> - <xml-property name="container" value="ipsec-configurations" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - - <java-type name="NotificationEvent"> - <xml-root-element name="notification-event" /> - <java-attributes> - <xml-element java-attribute="cambriaPartition" name="cambria.partition" type="java.lang.String" /> - <xml-element java-attribute="eventHeader" name="event-header" type="inventory.aai.openecomp.org.v9.NotificationEventHeader" /> - <xml-any-element java-attribute="entity" /> - </java-attributes> - </java-type> - <java-type name="NotificationEventHeader"> - <xml-root-element name="notification-event-header" /> - <java-attributes> - <xml-element java-attribute="id" name="id" type="java.lang.String" /> - <xml-element java-attribute="timestamp" name="timestamp" type="java.lang.String" /> - <xml-element java-attribute="sourceName" name="source-name" type="java.lang.String" /> - <xml-element java-attribute="domain" name="domain" type="java.lang.String" /> - <xml-element java-attribute="sequenceNumber" name="sequence-number" type="java.lang.String" /> - <xml-element java-attribute="severity" name="severity" type="java.lang.String" /> - <xml-element java-attribute="eventType" name="event-type" type="java.lang.String" /> - <xml-element java-attribute="version" name="version" type="java.lang.String" /> - <xml-element java-attribute="action" name="action" type="java.lang.String" /> - <xml-element java-attribute="entityType" name="entity-type" type="java.lang.String" /> - <xml-element java-attribute="topEntityType" name="top-entity-type" type="java.lang.String" /> - <xml-element java-attribute="entityLink" name="entity-link" type="java.lang.String" /> - <xml-element java-attribute="status" name="status" type="java.lang.String" /> - </java-attributes> - </java-type> - <java-type name="AaiInternal"> - <xml-root-element name="aai-internal" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="reservedPropNames" name="reserved-prop-names" type="inventory.aai.openecomp.org.v9.ReservedPropNames" /> - <xml-element container-type="java.util.ArrayList" java-attribute="edgePropNames" name="edge-prop-names" type="inventory.aai.openecomp.org.v9.EdgePropNames" /> - </java-attributes> - </java-type> - <java-type name="ReservedPropNames"> - <xml-properties> - <xml-property name="description" value="Internal map to define some reserved properties of a vertex" /> - <xml-property name="uniqueProps" value="aai-unique-key" /> - <xml-property name="indexedProps" value="aai-unique-key,source-of-truth,aai-node-type,aai-uri" /> - </xml-properties> - <xml-root-element name="reserved-prop-names" /> - <java-attributes> - <xml-element java-attribute="lastModSourceOfTruth" name="last-mod-source-of-truth" type="java.lang.String" /> - <xml-element java-attribute="aaiNodeType" name="aai-node-type" type="java.lang.String" /> - <xml-element java-attribute="aaiCreatedTs" name="aai-created-ts" type="java.lang.Long" /> - <xml-element java-attribute="aaiUniqueKey" name="aai-unique-key" type="java.lang.String" /> - <xml-element java-attribute="aaiLastModTs" name="aai-last-mod-ts" type="java.lang.Long" /> - <xml-element java-attribute="sourceOfTruth" name="source-of-truth" type="java.lang.String" /> - <xml-element java-attribute="aaiUri" name="aai-uri" type="java.lang.String" /> - </java-attributes> - </java-type> - <java-type name="EdgePropNames"> - <!-- NOTE that the names of these properties are not consistent and are in mixed case and hyphen case for now --> - <xml-properties> - <xml-property name="description" value="Internal map to define the properties of an edge and interpret the map EdgeRules" /> - <xml-property name="edgeInfo" value="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV" /> - </xml-properties> - <xml-root-element name="edge-prop-names" /> - <java-attributes> - <xml-element java-attribute="edgeLabel" name="edgeLabel" type="java.lang.String" /> - <xml-element java-attribute="direction" name="direction" type="java.lang.String" /> - <xml-element java-attribute="multiplicityRule" name="multiplicityRule" type="java.lang.String" /> - <xml-element java-attribute="isParent" name="isParent" type="java.lang.Boolean" /> - <xml-element java-attribute="usesResource" name="usesResource" type="java.lang.Boolean" /> - <xml-element java-attribute="hasDelTarget" name="hasDelTarget" type="java.lang.Boolean" /> - <xml-element java-attribute="SVC-INFRA" name="SVC-INFRA" type="java.lang.Boolean" /> - <xml-element java-attribute="SVC-INFRA-REV" name="SVC-INFRA-REV" type="java.lang.Boolean" /> - </java-attributes> - </java-type> - - <java-type name="Models"> - <xml-properties> - <xml-property name="description" value="Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models" /> - </xml-properties> - <xml-root-element name="models" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="model" name="model" type="inventory.aai.openecomp.org.v9.Model" /> - </java-attributes> - </java-type> - - <java-type name="Model"> - <xml-root-element name="model" /> - <xml-properties> - <xml-property name="description" value="Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models, independent of version" /> - <xml-property name="nameProps" value="model-type" /> - <xml-property name="indexedProps" value="model-invariant-id,model-type" /> - <xml-property name="uniqueProps" value="model-invariant-id" /> - <xml-property name="container" value="models" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - <java-attributes> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to the main definition of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVers" name="model-vers" type="inventory.aai.openecomp.org.v9.ModelVers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - </java-type> - - - <java-type name="ModelVers"> - <xml-root-element name="model-vers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelVer" name="model-ver" type="inventory.aai.openecomp.org.v9.ModelVer" /> - </java-attributes> - </java-type> - - <java-type name="ModelVer"> - <xml-root-element name="model-ver" /> - <xml-properties> - <xml-property name="description" value="Subgraph definition provided by ASDC to describe a specific version of an inventory asset and its connections related to ASDC models" /> - <xml-property name="nameProps" value="model-name" /> - <xml-property name="indexedProps" value="model-version-id,model-name,model-version" /> - <xml-property name="uniqueProps" value="model-version-id" /> - <xml-property name="container" value="model-vers" /> - </xml-properties> - <java-attributes> - <xml-element java-attribute="modelVersionId" name="model-version-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the model, which can change from version to version." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.openecomp.org.v9.ModelElements" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.openecomp.org.v9.Metadata" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ModelElements"> - <xml-root-element name="model-elements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelElement" name="model-element" type="inventory.aai.openecomp.org.v9.ModelElement" /> - </java-attributes> - </java-type> - - <java-type name="ModelElement"> - <xml-properties> - <xml-property name="description" value="Defines how other models combine to make up a higher-level model." /> - <xml-property name="uniqueProps" value="model-element-uuid" /> - <xml-property name="indexedProps" value="model-element-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="model-elements" /> - </xml-properties> - <xml-root-element name="model-element" /> - <java-attributes> - <xml-element java-attribute="modelElementUuid" name="model-element-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="newDataDelFlag" name="new-data-del-flag" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates whether this element was created as part of instantiation from this model" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cardinality" name="cardinality" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="How many of this type of element are required/allowed" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="linkagePoints" name="linkage-points" type="java.lang.String" > - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.openecomp.org.v9.ModelElements"> - <xml-properties> - <xml-property name="description" value="Defines how other models combine to make up a higher-level model" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelConstraints" name="model-constraints" type="inventory.aai.openecomp.org.v9.ModelConstraints"> - <xml-properties> - <xml-property name="description" value="Describes new constraints on this model element that are not part of that model's definition" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ModelConstraints"> - <xml-root-element name="model-constraints" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelConstraint" name="model-constraint" type="inventory.aai.openecomp.org.v9.ModelConstraint" /> - </java-attributes> - </java-type> - - <java-type name="ModelConstraint"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="model-constraint-uuid" /> - <xml-property name="indexedProps" value="model-constraint-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="model-constraints" /> - </xml-properties> - <xml-root-element name="model-constraint" /> - <java-attributes> - <xml-element java-attribute="modelConstraintUuid" name="model-constraint-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constrainedElementSetUuidToReplace" name="constrained-element-set-uuid-to-replace" required="true" type="java.lang.String" /> - <xml-element java-attribute="constrainedElementSets" name="constrained-element-sets" type="inventory.aai.openecomp.org.v9.ConstrainedElementSets" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="ConstrainedElementSets"> - <xml-root-element name="constrained-element-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="constrainedElementSet" name="constrained-element-set" type="inventory.aai.openecomp.org.v9.ConstrainedElementSet" /> - </java-attributes> - </java-type> - - <java-type name="ConstrainedElementSet"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="constrained-element-set-uuid" /> - <xml-property name="indexedProps" value="constrained-element-set-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="constrained-element-sets" /> - </xml-properties> - <xml-root-element name="constrained-element-set" /> - <java-attributes> - <xml-element java-attribute="constrainedElementSetUuid" name="constrained-element-set-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="checkType" name="check-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="elementChoiceSets" name="element-choice-sets" type="inventory.aai.openecomp.org.v9.ElementChoiceSets" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ElementChoiceSets"> - <xml-root-element name="element-choice-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="elementChoiceSet" name="element-choice-set" type="inventory.aai.openecomp.org.v9.ElementChoiceSet" /> - </java-attributes> - </java-type> - - <java-type name="ElementChoiceSet"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="element-choice-set-uuid" /> - <xml-property name="indexedProps" value="element-choice-set-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="element-choice-sets" /> - </xml-properties> - <xml-root-element name="element-choice-set" /> - <java-attributes> - <xml-element java-attribute="elementChoiceSetUuid" name="element-choice-set-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="elementChoiceSetName" name="element-choice-set-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="cardinality" name="cardinality" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.openecomp.org.v9.ModelElements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueries"> - <xml-root-element name="named-queries" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="namedQuery" name="named-query" type="inventory.aai.openecomp.org.v9.NamedQuery" /> - </java-attributes> - </java-type> - - <java-type name="NamedQuery"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="nameProps" value="named-query-name" /> - <xml-property name="uniqueProps" value="named-query-uuid" /> - <xml-property name="indexedProps" value="named-query-uuid,named-query-name" /> - <xml-property name="container" value="named-queries" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - <xml-root-element name="named-query" /> - <java-attributes> - <xml-element java-attribute="namedQueryUuid" name="named-query-uuid" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="namedQueryName" name="named-query-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="namedQueryVersion" name="named-query-version" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="requiredInputParams" name="required-input-param" type="java.lang.String" > - <xml-element-wrapper name="required-input-params" /> - </xml-element> - <xml-element java-attribute="description" name="description" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.openecomp.org.v9.NamedQueryElements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueryElements"> - <xml-root-element name="named-query-elements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="namedQueryElement" name="named-query-element" type="inventory.aai.openecomp.org.v9.NamedQueryElement" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueryElement"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="named-query-element-uuid" /> - <xml-property name="indexedProps" value="named-query-element-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="named-query-elements" /> - </xml-properties> - <xml-root-element name="named-query-element" /> - <java-attributes> - <xml-element java-attribute="namedQueryElementUuid" name="named-query-element-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="propertyLimitDesc" name="property-limit-desc" type="java.lang.String" /> - <xml-element java-attribute="doNotOutput" name="do-not-output" type="java.lang.String" /> - <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.openecomp.org.v9.NamedQueryElements" /> - <xml-element java-attribute="relatedLookups" name="related-lookups" type="inventory.aai.openecomp.org.v9.RelatedLookups" /> - <xml-element java-attribute="propertyConstraints" name="property-constraints" type="inventory.aai.openecomp.org.v9.PropertyConstraints" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="RelatedLookups"> - <xml-root-element name="related-lookups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="relatedLookup" name="related-lookup" type="inventory.aai.openecomp.org.v9.RelatedLookup" /> - </java-attributes> - </java-type> - - <java-type name="RelatedLookup"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="related-lookup-uuid" /> - <xml-property name="indexedProps" value="related-lookup-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="related-lookups" /> - </xml-properties> - <xml-root-element name="related-lookup" /> - <java-attributes> - <xml-element java-attribute="relatedLookupUuid" name="related-lookup-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sourceNodeType" name="source-node-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="sourceNodeProperty" name="source-node-property" required="true" type="java.lang.String" /> - <xml-element java-attribute="targetNodeType" name="target-node-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="targetNodeProperty" name="target-node-property" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="PropertyConstraints"> - <xml-root-element name="property-constraints" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyConstraint" name="property-constraint" type="inventory.aai.openecomp.org.v9.PropertyConstraint" /> - </java-attributes> - </java-type> - - <java-type name="PropertyConstraint"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="property-constraint-uuid" /> - <xml-property name="indexedProps" value="property-constraint-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="property-constraints" /> - </xml-properties> - <xml-root-element name="property-constraint" /> - <java-attributes> - <xml-element java-attribute="propertyConstraintUuid" name="property-constraint-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="propertyName" name="property-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ModelAndNamedQuerySearch"> - <xml-properties> - <xml-property name="description" value="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="model-and-named-query-search" /> - <java-attributes> - <xml-element java-attribute="queryParameters" name="query-parameters" type="inventory.aai.openecomp.org.v9.QueryParameters" /> - <xml-element java-attribute="instanceFilters" name="instance-filters" type="inventory.aai.openecomp.org.v9.InstanceFilters" /> - <xml-element java-attribute="secondaryFilts" name="secondary-filts" type="inventory.aai.openecomp.org.v9.SecondaryFilts" /> - <xml-element java-attribute="topNodeType" name="top-node-type" type="java.lang.String" /> - <xml-element java-attribute="secondaryFilterCutPoint" name="secondary-filter-cut-point" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="QueryParameters"> - <xml-properties> - <xml-property name="description" value="QueryParameters for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="query-parameters" /> - <java-attributes> - <xml-element java-attribute="namedQuery" name="named-query" type="inventory.aai.openecomp.org.v9.NamedQuery" /> - <xml-element java-attribute="model" name="model" type="inventory.aai.openecomp.org.v9.OverloadedModel" /> - </java-attributes> - </java-type> - - <java-type name="OverloadedModel"> - <xml-root-element name="overloaded-model" /> - <xml-properties> - <xml-property name="description" value="Allows for legacy POST of old-style and new-style models" /> - </xml-properties> - <java-attributes> - <xml-element java-attribute="modelInvariantId" name="model-invariant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to the main definition of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelNameVersionId" name="model-name-version-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the model, which can change from version to version." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelId" name="model-id" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Invariant unique ID which does not change from version to version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVers" name="model-vers" type="inventory.aai.openecomp.org.v9.ModelVers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="InstanceFilters"> - <xml-properties> - <xml-property name="description" value="InstanceFilters for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="instance-filters" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="instanceFilter" name="instance-filter" type="inventory.aai.openecomp.org.v9.InstanceFilter" /> - </java-attributes> - </java-type> - - <java-type name="InstanceFilter"> - <xml-properties> - <xml-property name="description" value="InstanceFilter for performing a named-query or model query" /> - <xml-property name="container" value="instance-filters" /> - </xml-properties> - <xml-root-element name="instance-filter" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilts"> - <xml-properties> - <xml-property name="description" value="SecondaryFilts for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="secondary-filts" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilt" name="secondary-filt" type="inventory.aai.openecomp.org.v9.SecondaryFilt" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilt"> - <xml-properties> - <xml-property name="description" value="SecondaryFilt for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="secondary-filt" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any" /> - </java-attributes> - </java-type> - - <java-type name="Properties"> - <xml-properties> - <xml-property name="description" value="Property holder for query properties or instance properties" /> - </xml-properties> - <xml-root-element name="properties" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ResponseList"> - <xml-properties> - <xml-property name="description" value="Response container for the results of a named-query or model query" /> - </xml-properties> - <xml-root-element name="response-list" /> - <java-attributes> - <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.openecomp.org.v9.InventoryResponseItems" /> - </java-attributes> - </java-type> - - <java-type name="InventoryResponseItems"> - <xml-properties> - <xml-property name="description" value="Container for inventory items in response list" /> - <xml-property name="container" value="response-list" /> - </xml-properties> - <xml-root-element name="inventory-response-items" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryResponseItem" name="inventory-response-item" type="inventory.aai.openecomp.org.v9.InventoryResponseItem" /> - </java-attributes> - </java-type> - - <java-type name="InventoryResponseItem"> - <xml-properties> - <xml-property name="description" value="Inventory item for response list" /> - <xml-property name="container" value="inventory-response-items" /> - </xml-properties> - <xml-root-element name="inventory-response-item" /> - <java-attributes> - <xml-element java-attribute="modelName" name="model-name" type="java.lang.String" /> - <xml-any-element java-attribute="item" /> - <xml-element java-attribute="extraProperties" name="extra-properties" type="inventory.aai.openecomp.org.v9.ExtraProperties" /> - <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.openecomp.org.v9.InventoryResponseItems" /> - </java-attributes> - </java-type> - - <java-type name="ExtraProperties"> - <xml-properties> - <xml-property name="description" value="Extra properties for inventory item for response list" /> - </xml-properties> - <xml-root-element name="extra-properties" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="extraProperty" name="extra-property" type="inventory.aai.openecomp.org.v9.ExtraProperty" /> - </java-attributes> - </java-type> - - <java-type name="ExtraProperty"> - <xml-root-element name="extra-property" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-any-element java-attribute="propertyValue" lax="true" name="property-value" /> - </java-attributes> - </java-type> - - <java-type name="RouteTableReferences"> - <xml-properties> - <xml-property name="description" value="Collection of openstack route table references" /> - </xml-properties> - <xml-root-element name="route-table-references" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="routeTableReference" name="route-table-reference" type="inventory.aai.openecomp.org.v9.RouteTableReference" /> - </java-attributes> - </java-type> - - <java-type name="RouteTableReference"> - <xml-root-element name="route-table-reference" /> - <java-attributes> - <xml-element java-attribute="routeTableReferenceId" name="route-table-reference-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeTableReferenceFqdn" name="route-table-reference-fqdn" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="FQDN entry in the route table." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="Openstack route table reference." /> - <xml-property name="nameProps" value="route-table-reference-fqdn" /> - <xml-property name="uniqueProps" value="route-table-reference-id" /> - <xml-property name="indexedProps" value="route-table-reference-id,route-table-reference-fqdn" /> - <xml-property name="container" value="route-table-references" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="InstanceGroups"> - <xml-properties> - <xml-property name="description" value="Collection of openstack route table references" /> - </xml-properties> - <xml-root-element name="instance-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="instanceGroup" name="instance-group" type="inventory.aai.openecomp.org.v9.InstanceGroup" /> - </java-attributes> - </java-type> - - <java-type name="InstanceGroup"> - <xml-root-element name="instance-group" /> - <java-attributes> - <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Instance Group ID, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="description" name="description" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Descriptive text to help identify the usage of this instance-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="type" name="type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Only valid value today is lower case ha for high availability" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subType" name="sub-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Valid values for ha type are [geo-activeactive, geo-activestandby, local-activeactive, local-activestandby]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="General mechanism for grouping instances" /> - <xml-property name="nameProps" value="description" /> - <xml-property name="uniqueProps" value="id" /> - <xml-property name="indexedProps" value="id,description,type,sub-type" /> - <xml-property name="container" value="instance-groups" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - - <java-type name="SegmentationAssignments"> - <xml-properties> - <xml-property name="description" value="Collection of openstack segmentation assignments" /> - </xml-properties> - <xml-root-element name="segmentation-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="segmentationAssignment" name="segmentation-assignment" type="inventory.aai.openecomp.org.v9.SegmentationAssignment" /> - </java-attributes> - </java-type> - - <java-type name="SegmentationAssignment"> - <xml-root-element name="segmentation-assignment" /> - <java-attributes> - <xml-element java-attribute="segmentationId" name="segmentation-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack segmentation assignment." /> - <xml-property name="indexedProps" value="segmentation-id" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="segmentation-assignments" /> - </xml-properties> - </java-type> - - <java-type name="AllottedResources"> - <xml-properties> - <xml-property name="description" value="This object is used to store slices of services being offered" /> - </xml-properties> - <xml-root-element name="allotted-resources" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="allottedResource" name="allotted-resource" type="inventory.aai.openecomp.org.v9.AllottedResource" /> - </java-attributes> - </java-type> - - <java-type name="AllottedResource"> - <xml-root-element name="allotted-resource" /> - <java-attributes> - <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Allotted Resource id UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="description" name="description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The descriptive information assigned to this allotted resource instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Link back to more information in the controller" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - <xml-property name="dbAlias" value="model-invariant-id-local" /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="deployment" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersionId" name="model-version-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - <xml-property name="visibility" value="internal" /> - <xml-property name="dbAlias" value="model-version-id-local" /> - <xml-property name="dataCopy" value="service-design-and-creation/models/model/{persona-model-id}/model-vers?model-version={persona-model-version}#model-version-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelCustomizationId" name="persona-model-customization-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="captures the id of all the configuration used to customize the resource for the service." /> - <xml-property name="dbAlias" value="model-customization-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tunnelXconnects" name="tunnel-xconnects" type="inventory.aai.openecomp.org.v9.TunnelXconnects" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="Represents a slice or partial piece of a resource that gets separately allotted" /> - <xml-property name="nameProps" value="description" /> - <xml-property name="uniqueProps" value="id" /> - <xml-property name="indexedProps" value="id,persona-model-id,persona-model-version" /> - <xml-property name="dependentOn" value="service-instance" /> - <xml-property name="container" value="allotted-resources" /> - <!-- <xml-property name="namespace" value="network" /> --> - </xml-properties> - </java-type> - - <java-type name="TunnelXconnects"> - <xml-properties> - <xml-property name="description" value="This object is used to store the specific tunnel cross connect aspects of an allotted resource" /> - </xml-properties> - <xml-root-element name="tunnel-xconnects" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="tunnelXconnect" name="tunnel-xconnect" type="inventory.aai.openecomp.org.v9.TunnelXconnect" /> - </java-attributes> - </java-type> - - <java-type name="TunnelXconnect"> - <xml-root-element name="tunnel-xconnect" /> - <java-attributes> - <xml-element java-attribute="id" name="id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Allotted Resource id UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN uplink bandwidth for WAN1" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN downlink bandwidth for WAN1" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN uplink bandwidth for WAN2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The WAN downlink bandwidth for WAN2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="Represents the specifics of a tunnel cross connect piece of a resource that gets separately allotted" /> - <xml-property name="uniqueProps" value="id" /> - <xml-property name="indexedProps" value="id" /> - <xml-property name="dependentOn" value="allotted-resource" /> - <xml-property name="container" value="tunnel-xconnects" /> - <!-- <xml-property name="namespace" value="network" /> --> - </xml-properties> - </java-type> - - <java-type name="Entitlements"> - <xml-properties> - <xml-property name="description" value="Entitlements, keyed by group-uuid and resource-uuid, related to license management" /> - </xml-properties> - <xml-root-element name="entitlements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="entitlement" name="entitlement" type="inventory.aai.openecomp.org.v9.Entitlement" /> - </java-attributes> - </java-type> - - <java-type name="Entitlement"> - <xml-root-element name="entitlement" /> - <java-attributes> - <xml-element java-attribute="groupUuid" name="group-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID for the entitlement group the resource comes from, should be uuid." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceUuid" name="resource-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of an entitlement resource. " /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Metadata for entitlement group." /> - <xml-property name="indexedProps" value="group-uuid,resource-uuid" /> - <xml-property name="dependentOn" value="generic-vnf,vce,vpe" /> - <xml-property name="container" value="entitlements" /> - </xml-properties> - </java-type> - - - <java-type name="Licenses"> - <xml-properties> - <xml-property name="description" value="Licenses to be allocated across resources, keyed by group-uuid and resource-uuid, related to license management" /> - </xml-properties> - <xml-root-element name="licenses" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="license" name="license" type="inventory.aai.openecomp.org.v9.License" /> - </java-attributes> - </java-type> - - <java-type name="License"> - <xml-root-element name="license" /> - <java-attributes> - <xml-element java-attribute="groupUuid" name="group-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID for the license group the resource belongs to, should be uuid." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceUuid" name="resource-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of a license resource. " /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Metadata for license group." /> - <xml-property name="indexedProps" value="group-uuid,resource-uuid" /> - <xml-property name="dependentOn" value="generic-vnf,vce,vpe" /> - <xml-property name="container" value="licenses" /> - </xml-properties> - </java-type> - - <java-type name="Vnf"> - <xml-root-element name="vnf"/> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Abstract vnf class" /> - <xml-property name="indexedProps" value="vnf-id" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="inheritors" value="vce,vpe,generic-vnf" /> - <xml-property name="abstract" value="true" /> - </xml-properties> - </java-type> - - <java-type name="Zones"> - <xml-properties> - <xml-property name="description" value="Collection of zones" /> - </xml-properties> - <xml-root-element name="zones" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="zone" name="zone" type="inventory.aai.openecomp.org.v9.Zone" /> - </java-attributes> - </java-type> - - <java-type name="Zone"> - <xml-root-element name="zone" /> - <java-attributes> - <xml-element java-attribute="zoneId" name="zone-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Code assigned by AIC to the zone" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="zoneName" name="zone-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="English name associated with the zone" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="designType" name="design-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Design of zone [Medium/Large…]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="zoneContext" name="zone-context" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Context of zone [production/test]" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="status" name="status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Status of a zone." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.openecomp.org.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="A zone is a grouping of assets in a location homing to the same connections into the CBB" /> - <xml-property name="nameProps" value="zone-name" /> - <xml-property name="indexedProps" value="zone-id,design-type,zone-context" /> - <xml-property name="uniqueProps" value="zone-id" /> - <xml-property name="container" value="zones" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - </java-types> -</xml-bindings> diff --git a/kubernetes/aai/charts/aai-data-router/templates/configmap.yaml b/kubernetes/aai/charts/aai-data-router/templates/configmap.yaml index a8793acd9f..9652712aa6 100644 --- a/kubernetes/aai/charts/aai-data-router/templates/configmap.yaml +++ b/kubernetes/aai/charts/aai-data-router/templates/configmap.yaml @@ -9,38 +9,6 @@ data: apiVersion: v1 kind: ConfigMap metadata: - name: {{ include "common.fullname" . }}-model-v8 - namespace: {{ include "common.namespace" . }} -data: -{{ tpl (.Files.Glob "resources/config/model/aai_oxm_v8.xml").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "common.fullname" . }}-model-v9 - namespace: {{ include "common.namespace" . }} -data: -{{ tpl (.Files.Glob "resources/config/model/aai_oxm_v9.xml").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "common.fullname" . }}-model-v10 - namespace: {{ include "common.namespace" . }} -data: -{{ tpl (.Files.Glob "resources/config/model/aai_oxm_v10.xml").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "common.fullname" . }}-model-v11 - namespace: {{ include "common.namespace" . }} -data: -{{ tpl (.Files.Glob "resources/config/model/aai_oxm_v11.xml").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: name: {{ include "common.fullname" . }}-dynamic namespace: {{ include "common.namespace" . }} data: diff --git a/kubernetes/aai/charts/aai-data-router/templates/deployment.yaml b/kubernetes/aai/charts/aai-data-router/templates/deployment.yaml index 79bcff33eb..ceb9884a8c 100644 --- a/kubernetes/aai/charts/aai-data-router/templates/deployment.yaml +++ b/kubernetes/aai/charts/aai-data-router/templates/deployment.yaml @@ -79,18 +79,6 @@ spec: - mountPath: /etc/localtime name: localtime readOnly: true - - mountPath: /opt/app/data-router/config/model/aai_oxm_v8.xml - subPath: aai_oxm_v8.xml - name: {{ include "common.fullname" . }}-model-v8 - - mountPath: /opt/app/data-router/config/model/aai_oxm_v9.xml - subPath: aai_oxm_v9.xml - name: {{ include "common.fullname" . }}-model-v9 - - mountPath: /opt/app/data-router/config/model/aai_oxm_v10.xml - subPath: aai_oxm_v10.xml - name: {{ include "common.fullname" . }}-model-v10 - - mountPath: /opt/app/data-router/config/model/aai_oxm_v11.xml - subPath: aai_oxm_v11.xml - name: {{ include "common.fullname" . }}-model-v11 - mountPath: /opt/app/data-router/config/auth name: {{ include "common.fullname" . }}-auth - mountPath: /opt/app/data-router/config/data-router.properties @@ -122,18 +110,6 @@ spec: - name: localtime hostPath: path: /etc/localtime - - name: {{ include "common.fullname" . }}-model-v8 - configMap: - name: {{ include "common.fullname" . }}-model-v8 - - name: {{ include "common.fullname" . }}-model-v9 - configMap: - name: {{ include "common.fullname" . }}-model-v9 - - name: {{ include "common.fullname" . }}-model-v10 - configMap: - name: {{ include "common.fullname" . }}-model-v10 - - name: {{ include "common.fullname" . }}-model-v11 - configMap: - name: {{ include "common.fullname" . }}-model-v11 - name: {{ include "common.fullname" . }}-auth secret: secretName: {{ include "common.fullname" . }} diff --git a/kubernetes/aai/charts/aai-data-router/values.yaml b/kubernetes/aai/charts/aai-data-router/values.yaml index 3957df156d..faf34489a0 100644 --- a/kubernetes/aai/charts/aai-data-router/values.yaml +++ b/kubernetes/aai/charts/aai-data-router/values.yaml @@ -8,10 +8,13 @@ global: # global defaults # application image repository: nexus3.onap.org:10001 -image: onap/data-router:v1.1.0 +image: onap/data-router:1.2-STAGING-latest pullPolicy: Always restartPolicy: Always +dockerhubRepository: registry.hub.docker.com +ubuntuInitImage: oomk8s/ubuntu-init:2.0.0 + # application configuration config: keyStorePassword: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 diff --git a/kubernetes/aai/charts/aai-gizmo/.helmignore b/kubernetes/aai/charts/aai-gizmo/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/aai/charts/aai-gizmo/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/aai/charts/gizmo/Chart.yaml b/kubernetes/aai/charts/aai-gizmo/Chart.yaml index 4633b06dff..86f364331e 100644 --- a/kubernetes/aai/charts/gizmo/Chart.yaml +++ b/kubernetes/aai/charts/aai-gizmo/Chart.yaml @@ -14,5 +14,5 @@ apiVersion: v1 description: Gizmo service -name: gizmo -version: 2.0.0
\ No newline at end of file +name: aai-gizmo +version: 2.0.0 diff --git a/kubernetes/aai/charts/gizmo/resources/config/README.txt b/kubernetes/aai/charts/aai-gizmo/resources/config/README.txt index 5cc01497f5..5cc01497f5 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/README.txt +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/README.txt diff --git a/kubernetes/aai/charts/gizmo/resources/config/auth/champ-cert.p12 b/kubernetes/aai/charts/aai-gizmo/resources/config/auth/champ-cert.p12 Binary files differindex dbf4fcacec..dbf4fcacec 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/auth/champ-cert.p12 +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/auth/champ-cert.p12 diff --git a/kubernetes/aai/charts/gizmo/resources/config/auth/crud_policy.json b/kubernetes/aai/charts/aai-gizmo/resources/config/auth/crud_policy.json index d8b065e7f6..d8b065e7f6 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/auth/crud_policy.json +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/auth/crud_policy.json diff --git a/kubernetes/aai/charts/gizmo/resources/config/auth/datarouter-cert.p12 b/kubernetes/aai/charts/aai-gizmo/resources/config/auth/datarouter-cert.p12 Binary files differindex dbf4fcacec..dbf4fcacec 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/auth/datarouter-cert.p12 +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/auth/datarouter-cert.p12 diff --git a/kubernetes/aai/charts/gizmo/resources/config/auth/tomcat_keystore b/kubernetes/aai/charts/aai-gizmo/resources/config/auth/tomcat_keystore Binary files differindex 9eec841aa2..9eec841aa2 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/auth/tomcat_keystore +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/auth/tomcat_keystore diff --git a/kubernetes/aai/charts/gizmo/resources/config/crud-api.properties b/kubernetes/aai/charts/aai-gizmo/resources/config/crud-api.properties index a86d47203a..a86d47203a 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/crud-api.properties +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/crud-api.properties diff --git a/kubernetes/aai/charts/gizmo/resources/config/crud-beans.xml b/kubernetes/aai/charts/aai-gizmo/resources/config/crud-beans.xml index 04f1210433..a6cac628db 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/crud-beans.xml +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/crud-beans.xml @@ -9,7 +9,7 @@ "> <bean id="champDao" class="org.onap.crud.dao.champ.ChampDao"> - <constructor-arg name="champUrl" value="https://{{.Release.Name}}-champ.{{.Release.Namespace}}:9522/services/champ-service/v1/"/> + <constructor-arg name="champUrl" value="https://{{.Release.Name}}-aai-champ.{{.Release.Namespace}}:9522/services/champ-service/v1/"/> <constructor-arg name="certPassword" value="OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10"/> </bean> @@ -32,4 +32,4 @@ <constructor-arg name="graphDataService" ref="graphDataService" /> </bean> -</beans>
\ No newline at end of file +</beans> diff --git a/kubernetes/aai/charts/gizmo/resources/config/log/filebeat/filebeat.yml b/kubernetes/aai/charts/aai-gizmo/resources/config/log/filebeat/filebeat.yml index 9ad559c027..9ad559c027 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/log/filebeat/filebeat.yml diff --git a/kubernetes/aai/charts/gizmo/resources/config/log/logback.xml b/kubernetes/aai/charts/aai-gizmo/resources/config/log/logback.xml index f63afd3c6b..f63afd3c6b 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/log/logback.xml +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/log/logback.xml diff --git a/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v11.json b/kubernetes/aai/charts/aai-gizmo/resources/config/model/edge_properties_v11.json index 8d00636d27..8d00636d27 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v11.json +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/model/edge_properties_v11.json diff --git a/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v12.json b/kubernetes/aai/charts/aai-gizmo/resources/config/model/edge_properties_v12.json index 8d00636d27..8d00636d27 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v12.json +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/model/edge_properties_v12.json diff --git a/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v13.json b/kubernetes/aai/charts/aai-gizmo/resources/config/model/edge_properties_v13.json index 8d00636d27..8d00636d27 100644 --- a/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v13.json +++ b/kubernetes/aai/charts/aai-gizmo/resources/config/model/edge_properties_v13.json diff --git a/kubernetes/aai/charts/gizmo/templates/NOTES.txt b/kubernetes/aai/charts/aai-gizmo/templates/NOTES.txt index 24371d08ab..24371d08ab 100644 --- a/kubernetes/aai/charts/gizmo/templates/NOTES.txt +++ b/kubernetes/aai/charts/aai-gizmo/templates/NOTES.txt diff --git a/kubernetes/aai/charts/gizmo/templates/configmap.yaml b/kubernetes/aai/charts/aai-gizmo/templates/configmap.yaml index b988d31fd9..b988d31fd9 100644 --- a/kubernetes/aai/charts/gizmo/templates/configmap.yaml +++ b/kubernetes/aai/charts/aai-gizmo/templates/configmap.yaml diff --git a/kubernetes/aai/charts/gizmo/templates/deployment.yaml b/kubernetes/aai/charts/aai-gizmo/templates/deployment.yaml index 80b5390d08..80b5390d08 100644 --- a/kubernetes/aai/charts/gizmo/templates/deployment.yaml +++ b/kubernetes/aai/charts/aai-gizmo/templates/deployment.yaml diff --git a/kubernetes/aai/charts/gizmo/templates/secrets.yaml b/kubernetes/aai/charts/aai-gizmo/templates/secrets.yaml index f5d8ec8ba5..f5d8ec8ba5 100644 --- a/kubernetes/aai/charts/gizmo/templates/secrets.yaml +++ b/kubernetes/aai/charts/aai-gizmo/templates/secrets.yaml diff --git a/kubernetes/aai/charts/gizmo/templates/service.yaml b/kubernetes/aai/charts/aai-gizmo/templates/service.yaml index f88a4e9533..f88a4e9533 100644 --- a/kubernetes/aai/charts/gizmo/templates/service.yaml +++ b/kubernetes/aai/charts/aai-gizmo/templates/service.yaml diff --git a/kubernetes/aai/charts/gizmo/values.yaml b/kubernetes/aai/charts/aai-gizmo/values.yaml index de842859fe..de842859fe 100644 --- a/kubernetes/aai/charts/gizmo/values.yaml +++ b/kubernetes/aai/charts/aai-gizmo/values.yaml diff --git a/kubernetes/aai/charts/aai-modelloader/values.yaml b/kubernetes/aai/charts/aai-modelloader/values.yaml index f44d5247ab..db069d08c7 100644 --- a/kubernetes/aai/charts/aai-modelloader/values.yaml +++ b/kubernetes/aai/charts/aai-modelloader/values.yaml @@ -8,7 +8,7 @@ global: # global defaults # application image repository: nexus3.onap.org:10001 -image: onap/model-loader:v1.1.0 +image: onap/model-loader:1.2-STAGING-latest pullPolicy: Always restartPolicy: Always diff --git a/kubernetes/aai/charts/aai-resources/resources/config/aai_keystore b/kubernetes/aai/charts/aai-resources/resources/config/aai_keystore Binary files differnew file mode 100644 index 0000000000..1ddef0c9bd --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/resources/config/aai_keystore diff --git a/kubernetes/aai/charts/aai-resources/resources/config/aaiconfig.properties b/kubernetes/aai/charts/aai-resources/resources/config/aaiconfig.properties new file mode 100644 index 0000000000..0258fc2066 --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/resources/config/aaiconfig.properties @@ -0,0 +1,119 @@ +# +# ============LICENSE_START======================================================= +# org.onap.aai +# ================================================================================ +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +# + +#################################################################### +# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE +# TEMPLATE AND *ALL* DATAFILES +#################################################################### + +#################################################################### +# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE +# TEMPLATE AND *ALL* DATAFILES +#################################################################### + +aai.config.checktime=1000 + +# this could come from siteconfig.pl? +aai.config.nodename=AutomaticallyOverwritten + + + +aai.auth.cspcookies_on=false +aai.dbmodel.filename=ex5.json + +aai.server.url.base=https://aai.{{ include "common.namespace" . }}:8443/aai/ +aai.server.url=https://aai.{{ include "common.namespace" . }}:8443/aai/v11/ +aai.global.callback.url=https://aai.{{ include "common.namespace" . }}:8443/aai/ + +aai.tools.enableBasicAuth=true +aai.tools.username=AAI +aai.tools.password=AAI + +aai.truststore.filename=aai_keystore +aai.truststore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0 +aai.keystore.filename=aai_keystore +aai.keystore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0 + + +aai.notification.current.version=v11 +aai.notificationEvent.default.status=UNPROCESSED +aai.notificationEvent.default.eventType=AAI-EVENT +aai.notificationEvent.default.domain=dev +aai.notificationEvent.default.sourceName=aai +aai.notificationEvent.default.sequenceNumber=0 +aai.notificationEvent.default.severity=NORMAL +aai.notificationEvent.default.version=v11 +# This one lets us enable/disable resource-version checking on updates/deletes +aai.resourceversion.enableflag=true +aai.logging.maxStackTraceEntries=10 +aai.default.api.version=v11 + + + +# Used by Model-processing code +aai.model.delete.sleep.per.vtx.msec=500 +aai.model.query.resultset.maxcount=50 +aai.model.query.timeout.sec=90 + +# Used by Data Grooming +aai.grooming.default.max.file=150 +aai.grooming.default.sleep.minutes=7 + +aai.model.proc.max.levels=50 +aai.edgeTag.proc.max.levels=50 + +# for transaction log +aai.logging.hbase.interceptor=true +aai.logging.hbase.enabled=true +aai.logging.hbase.logrequest=true +aai.logging.hbase.logresponse=true + +# for gremlin server +aai.server.rebind=g +hbase.table.name=aailogging.dev +hbase.table.timestamp.format=YYYYMMdd-HH:mm:ss:SSS +hbase.zookeeper.quorum=localhost +hbase.zookeeper.property.clientPort=2181 +hbase.zookeeper.znode.parent=/hbase + +aai.logging.trace.enabled=true +aai.logging.trace.logrequest=false +aai.logging.trace.logresponse=false + +aai.transaction.logging=true +aai.transaction.logging.get=false +aai.transaction.logging.post=false + +#timeout for crud enabled flag +aai.crud.timeoutenabled=true + +#timeout app specific -1 to bypass for that app id, a whole number to override the timeout with that value (in ms) +aai.crud.timeout.appspecific=JUNITTESTAPP1,1|JUNITTESTAPP2,-1|DCAE-CCS,-1|DCAES,-1|AAIRctFeed,-1|NewvceCreator,-1|IANewvceCreator,-1|AAI-CSIOVALS,-1 + +#default timeout limit added for crud if not overridden (in ms) +aai.crud.timeoutlimit=100000 +#limit set for bulk consumer APIS +aai.bulkconsumer.payloadlimit=30 + +#uncomment and use header X-OverrideLimit with the value to override the bulk api limit +#aai.bulkconsumer.payloadoverride=E6F04B93462CB5B0EDF41C05A9DDF5C3FE59748F +aai.bulkconsumer.payloadoverride=false diff --git a/kubernetes/aai/charts/aai-resources/resources/config/application.properties b/kubernetes/aai/charts/aai-resources/resources/config/application.properties new file mode 100644 index 0000000000..a65c04e4f0 --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/resources/config/application.properties @@ -0,0 +1,72 @@ +# The following info parameters are being referenced by ajsc6 +info.build.artifact=aai-resources +info.build.name=resources +info.build.description=Resources Microservice +info.build.version=1.2.0 + +spring.application.name=aai-resources +spring.jersey.type=filter + +server.contextPath=/ +spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration + +spring.profiles.active=production,dmaap +#The max number of active threads in this pool +server.tomcat.max-threads=200 +#The minimum number of threads always kept alive +server.tomcat.min-Spare-Threads=25 +#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads +server.tomcat.max-idle-time=60000 + + +#Add this properties only if you want to change the URL, AJSC Framework interceptors will intercept +#com.att.ajsc.common.interceptors.PreInterceptor.url=/** +#com.att.ajsc.common.interceptors.PostInterceptor.url=/** + +#Servlet context parameters +server.context_parameters.p-name=value #context parameter with p-name as key and value as value. +kubernetes.namespace={{ include "common.namespace" . }} + +# If you get an application startup failure that the port is already taken +# If thats not it, please check if the key-store file path makes sense +server.local.startpath=aai-resources/src/main/resources/ +server.basic.auth.location=${server.local.startpath}etc/auth/realm.properties + +server.port=8447 +server.ssl.enabled-protocols=TLSv1.1,TLSv1.2 +server.ssl.key-store=${server.local.startpath}etc/auth/aai_keystore +server.ssl.key-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0) +server.ssl.trust-store=${server.local.startpath}etc/auth/aai_keystore +server.ssl.trust-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0) +server.ssl.client-auth=want +server.ssl.key-store-type=JKS + +# JMS bind address host port +jms.bind.address=tcp://localhost:61647 +dmaap.ribbon.eureka.enabled=false +dmaap.ribbon.listOfServers=dmaap.{{ include "common.namespace" . }}:3904 +# Number of milliseconds to wait before making ping requests again +dmaap.ribbon.ServerListRefreshInterval=75000 +dmaap.ribbon.NFLoadBalancerPingInterval=75000 +dmaap.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.AvailabilityFilteringRule +dmaap.ribbon.NFLoadBalancerPingClassName=org.onap.aai.config.HttpPingImpl +dmaap.ribbon.EnableMarkingServerDownOnReachingFailureLimit=true +dmaap.ribbon.ServerDownFailureLimit=1 +# This needs to be verified but it seems that adding this property should automatically +# Make the dmaap client change the url from http to https depending on the server +dmaap.ribbon.securePorts=3905 + +# Custom Dmaap Specific Configuration +dmaap.ribbon.username= +dmaap.ribbon.password= +dmaap.ribbon.health.endpoint=/topics/AAI-EVENT +# Number of seconds to wait for the ping to work and might need to increase this if the pings are all failing +dmaap.ribbon.pingport.timeout=3 + +niws.loadbalancer.dmaap.filterCircuitTripped=true +niws.loadbalancer.dmaap.connectionFailureCountThreshold=3 +niws.loadbalancer.dmaap.circuitTripMaxTimeoutSeconds=180 +#dmaap.ribbon.retryableStatusCodes=404,503 +#dmaap.ribbon.retryableStatusCodes.MaxAutoRetriesNextServer=2 +#dmaap.ribbon.retryableStatusCodes.MaxAutoRetries=2 +#dmaap.ribbon.retryableStatusCodes.OkToRetryOnAllOperations=true diff --git a/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-cached.properties b/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-cached.properties new file mode 100644 index 0000000000..dd5c3eed66 --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-cached.properties @@ -0,0 +1,50 @@ +# +# ============LICENSE_START======================================================= +# org.onap.aai +# ================================================================================ +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +# + +query.fast-property=true +query.smart-limit=false + +{{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}} +{{- $global := . }} + +# the following parameters are not reloaded automatically and require a manual bounce +storage.backend=cassandra +storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-aai-cassandra-{{ $i }},{{- end }} + +storage.cassandra.keyspace=aaigraph + +storage.cassandra.read-consistency-level=LOCAL_QUORUM +storage.cassandra.write-consistency-level=LOCAL_QUORUM +storage.cassandra.replication-factor=3 +storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy +#storage.cassandra.replication-strategy-options=MTA1cass,3 + +#schema.default=none +storage.lock.wait-time=300 +#caching on +cache.db-cache = true +cache.db-cache-clean-wait = 20 +cache.db-cache-time = 180000 +cache.db-cache-size = 0.3 + +#load graphson file on startup +load.snapshot.file=false diff --git a/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-realtime.properties b/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-realtime.properties new file mode 100644 index 0000000000..875a8a5977 --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-realtime.properties @@ -0,0 +1,45 @@ +# +# ============LICENSE_START======================================================= +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +# + +query.fast-property=true +query.smart-limit=false + +{{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}} +{{- $global := . }} + +# the following parameters are not reloaded automatically and require a manual bounce +storage.backend=cassandra +storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-aai-cassandra-{{ $i }},{{- end }} + +storage.cassandra.keyspace=aaigraph + +storage.cassandra.read-consistency-level=LOCAL_QUORUM +storage.cassandra.write-consistency-level=LOCAL_QUORUM +storage.cassandra.replication-factor=3 +storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy +#storage.cassandra.replication-strategy-options=MTA1cass,3 + +#schema.default=none +storage.lock.wait-time=300 +# Setting db-cache to false ensure the fastest propagation of changes across servers +cache.db-cache = false + +#load graphson file on startup +load.snapshot.file=false diff --git a/kubernetes/aai/charts/aai-resources/resources/config/localhost-access-logback.xml b/kubernetes/aai/charts/aai-resources/resources/config/localhost-access-logback.xml new file mode 100644 index 0000000000..a318796c57 --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/resources/config/localhost-access-logback.xml @@ -0,0 +1,62 @@ +<!-- + + ============LICENSE_START======================================================= + org.onap.aai + ================================================================================ + Copyright © 2017 AT&T Intellectual Property. All rights reserved. + ================================================================================ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ============LICENSE_END========================================================= + + ECOMP is a trademark and service mark of AT&T Intellectual Property. + +--> +<configuration> + <property name="AJSC_HOME" value="${AJSC_HOME:-.}" /> + <appender name="ACCESS" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder"> + <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D</Pattern> + </encoder> + </appender> + <appender-ref ref="ACCESS" /> +</configuration> + +<!-- +%a - Remote IP address +%A - Local IP address +%b - Bytes sent, excluding HTTP headers, or '-' if no bytes were sent +%B - Bytes sent, excluding HTTP headers +%h - Remote host name +%H - Request protocol +%l - Remote logical username from identd (always returns '-') +%m - Request method +%p - Local port +%q - Query string (prepended with a '?' if it exists, otherwise an empty string +%r - First line of the request +%s - HTTP status code of the response +%S - User session ID +%t - Date and time, in Common Log Format format +%u - Remote user that was authenticated +%U - Requested URL path +%v - Local server name +%I - current request thread name (can compare later with stacktraces) + +%z - Custom pattern that parses the cert for the subject +%y - Custom pattern determines rest or dme2 + -->
\ No newline at end of file diff --git a/kubernetes/aai/charts/aai-resources/resources/config/log/logback.xml b/kubernetes/aai/charts/aai-resources/resources/config/log/logback.xml deleted file mode 100644 index 6cfc293f46..0000000000 --- a/kubernetes/aai/charts/aai-resources/resources/config/log/logback.xml +++ /dev/null @@ -1,345 +0,0 @@ -<configuration debug="false" scan="true" scanPeriod="3 seconds"> - <contextName>${module.ajsc.namespace.name}</contextName> - <jmxConfigurator /> - <property name="logDir" value="/var/log/onap" /> - <property name="componentName" value="aai"></property> - <property name="subcomponentName" value="aai-resources"></property> - <property name="restLogDirectory" value="${logDir}/${componentName}/${subcomponentName}/rest" /> - <property name="dmaapLogDirectory" value="${logDir}/${componentName}/${subcomponentName}/dmaapAAIEventConsumer" /> - <property name="perfLogsDirectory" value="${logDir}/${componentName}/${subcomponentName}/perf-audit" /> - <!-- default eelf log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - <property name="queueSize" value="256" /> - <property name="maxFileSize" value="50MB" /> - <property name="maxHistory" value="30" /> - <property name="totalSizeCap" value="10GB" /> - <property name="pattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}\t[%thread]\t%-5level\t%logger\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> - <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>ERROR</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <encoder> - <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="SANE"> - <file>${restLogDirectory}/sane.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/sane.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncSANE"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="SANE" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="METRIC"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>INFO</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <file>${restLogDirectory}/${metricsLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncMETRIC"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="METRIC" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="DEBUG"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>DEBUG</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <file>${restLogDirectory}/${debugLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncDEBUG"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="DEBUG" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ERROR"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>WARN</level> - </filter> - <file>${restLogDirectory}/${errorLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncERROR"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="ERROR" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="AUDIT"> - <file>${restLogDirectory}/${auditLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncAUDIT"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="AUDIT" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="translog"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>DEBUG</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <file>${restLogDirectory}/translog.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/translog.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asynctranslog"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="translog" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumer"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>WARN</level> - </filter> - <File>${dmaapLogDirectory}/${errorLogName}.log</File> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${dmaapLogDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumerDebug"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>DEBUG</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <File>${dmaapLogDirectory}/${debugLogName}.log</File> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${dmaapLogDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumerMetric"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>INFO</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <File>${dmaapLogDirectory}/${metricsLogName}.log</File> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${dmaapLogDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <!-- Spring related loggers --> - <logger level="WARN" name="org.springframework" /> - <logger level="WARN" name="org.springframework.beans" /> - <logger level="WARN" name="org.springframework.web" /> - <logger level="WARN" name="com.blog.spring.jms" /> - <!-- AJSC Services (bootstrap services) --> - <logger level="WARN" name="ajsc" /> - <logger level="WARN" name="ajsc.RouteMgmtService" /> - <logger level="WARN" name="ajsc.ComputeService" /> - <logger level="WARN" name="ajsc.VandelayService" /> - <logger level="WARN" name="ajsc.FilePersistenceService" /> - <logger level="WARN" name="ajsc.UserDefinedJarService" /> - <logger level="WARN" name="ajsc.UserDefinedBeansDefService" /> - <logger level="WARN" name="ajsc.LoggingConfigurationService" /> - <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet - logging) --> - <logger level="WARN" name="ajsc.utils" /> - <logger level="WARN" name="ajsc.utils.DME2Helper" /> - <logger level="WARN" name="ajsc.filters" /> - <logger level="WARN" name="ajsc.beans.interceptors" /> - <logger level="WARN" name="ajsc.restlet" /> - <logger level="WARN" name="ajsc.servlet" /> - <logger level="WARN" name="com.att.ajsc" /> - <logger level="WARN" name="com.att.ajsc.csi.logging" /> - <logger level="WARN" name="com.att.ajsc.filemonitor" /> - <!-- Other Loggers that may help troubleshoot --> - <logger level="WARN" name="net.sf" /> - <logger level="WARN" name="org.apache.commons.httpclient" /> - <logger level="WARN" name="org.apache.commons" /> - <logger level="WARN" name="org.apache.coyote" /> - <logger level="WARN" name="org.apache.jasper" /> - <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. - May aid in troubleshooting) --> - <logger level="WARN" name="org.apache.camel" /> - <logger level="WARN" name="org.apache.cxf" /> - <logger level="WARN" name="org.apache.camel.processor.interceptor" /> - <logger level="WARN" name="org.apache.cxf.jaxrs.interceptor" /> - <logger level="WARN" name="org.apache.cxf.service" /> - <logger level="WARN" name="org.restlet" /> - <logger level="WARN" name="org.apache.camel.component.restlet" /> - <!-- logback internals logging --> - <logger level="WARN" name="ch.qos.logback.classic" /> - <logger level="WARN" name="ch.qos.logback.core" /> - <!-- logback jms appenders & loggers definition starts here --> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="auditLogs"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> - <file>${perfLogsDirectory}/Audit.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${perfLogsDirectory}/Audit.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="perfLogs"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> - <file>${perfLogsDirectory}/Perform.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${perfLogsDirectory}/Perform.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC-audit"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <discardingThreshold>0</discardingThreshold> - <appender-ref ref="Audit-Record-Queue" /> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC-perf"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <discardingThreshold>0</discardingThreshold> - <appender-ref ref="Performance-Tracker-Queue" /> - </appender> - <logger additivity="false" level="INFO" name="AuditRecord"> - <appender-ref ref="ASYNC-audit" /> - <appender-ref ref="auditLogs" /> - </logger> - <logger additivity="false" level="INFO" name="AuditRecord_DirectCall"> - <appender-ref ref="ASYNC-audit" /> - <appender-ref ref="auditLogs" /> - </logger> - <logger additivity="false" level="INFO" name="PerfTrackerRecord"> - <appender-ref ref="ASYNC-perf" /> - <appender-ref ref="perfLogs" /> - </logger> - <!-- logback jms appenders & loggers definition ends here --> - <logger additivity="false" level="DEBUG" name="org.onap.aai.interceptors"> - <appender-ref ref="asynctranslog" /> - </logger> - <logger level="DEBUG" name="org.onap.aai.interceptors.PreAaiAjscInterceptor"> - <appender-ref ref="asyncAUDIT" /> - </logger> - <logger level="DEBUG" name="org.onap.aai.interceptors.PostAaiAjscInterceptor"> - <appender-ref ref="asyncAUDIT" /> - </logger> - <logger additivity="false" level="DEBUG" name="org.onap.aai.dmaap"> - <appender-ref ref="dmaapAAIEventConsumer" /> - <appender-ref ref="dmaapAAIEventConsumerDebug" /> - <appender-ref ref="dmaapAAIEventConsumerMetric" /> - </logger> - <logger level="WARN" name="org.apache" /> - <logger level="WARN" name="org.zookeeper" /> - <logger level="WARN" name="com.thinkaurelius" /> - <!-- ============================================================================ --> - <!-- General EELF logger --> - <!-- ============================================================================ --> - <logger additivity="false" level="WARN" name="com.att.eelf"> - <appender-ref ref="asyncDEBUG" /> - <appender-ref ref="asyncERROR" /> - <appender-ref ref="asyncMETRIC" /> - <appender-ref ref="asyncAUDIT" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncDEBUG" /> - </root> -</configuration> diff --git a/kubernetes/aai/charts/aai-resources/resources/config/logback.xml b/kubernetes/aai/charts/aai-resources/resources/config/logback.xml new file mode 100644 index 0000000000..94eb9a9226 --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/resources/config/logback.xml @@ -0,0 +1,352 @@ +<!-- + ============LICENSE_START======================================================= + org.onap.aai + ================================================================================ + Copyright © 2017 AT&T Intellectual Property. All rights reserved. + ================================================================================ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ============LICENSE_END========================================================= + ECOMP is a trademark and service mark of AT&T Intellectual Property. +--> +<configuration scan="true" scanPeriod="60 seconds" debug="false"> + <statusListener class="ch.qos.logback.core.status.NopStatusListener" /> + <property resource="application.properties" /> + <property name="namespace" value="aai-resources"/> + <property name="AJSC_HOME" value="${AJSC_HOME:-.}" /> + <jmxConfigurator /> + <property name="logDirectory" value="${AJSC_HOME}/logs" /> + <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> + <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> + <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> + <!-- <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> --> + <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> + <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/> + <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> + <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> + <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern> + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} + </pattern> + </encoder> + </appender> + <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/rest/sane.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern> + </rollingPolicy> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n + </pattern> + </encoder> + </appender> + <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="SANE" /> + </appender> + <appender name="METRIC" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>INFO</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${logDirectory}/rest/metrics.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfMetricLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="METRIC" /> + </appender> + <appender name="DEBUG" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${logDirectory}/rest/debug.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="DEBUG" /> + </appender> + <appender name="ERROR" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <file>${logDirectory}/rest/error.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfErrorLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="ERROR" /> + </appender> + <appender name="AUDIT" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/rest/audit.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfAuditLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="AUDIT" /> + </appender> + <appender name="translog" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${logDirectory}/rest/translog.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfTransLogPattern}</pattern> + </encoder> + </appender> + <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="translog" /> + </appender> + <appender name="dmaapAAIEventConsumer" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfLogPattern}</pattern> + </encoder> + </appender> + <appender name="dmaapAAIEventConsumerDebug" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfLogPattern}</pattern> + </encoder> + </appender> + <appender name="dmaapAAIEventConsumerMetric" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>INFO</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfMetricLogPattern}</pattern> + </encoder> + </appender> + <appender name="external" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <file>${logDirectory}/external/external.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfLogPattern}</pattern> + </encoder> + </appender> + <logger name="org.onap.aai" level="DEBUG" additivity="false"> + <appender-ref ref="asyncDEBUG" /> + <appender-ref ref="asyncERROR" /> + <appender-ref ref="asyncMETRIC" /> + <appender-ref ref="asyncSANE" /> + </logger> + <!-- Spring related loggers --> + <logger name="org.springframework" level="WARN" /> + <logger name="org.springframework.beans" level="WARN" /> + <logger name="org.springframework.web" level="WARN" /> + <logger name="com.blog.spring.jms" level="WARN" /> + <logger name="com.jayway.jsonpath" level="WARN" /> + <!-- AJSC Services (bootstrap services) --> + <logger name="ajsc" level="WARN" /> + <logger name="ajsc.RouteMgmtService" level="WARN" /> + <logger name="ajsc.ComputeService" level="WARN" /> + <logger name="ajsc.VandelayService" level="WARN" /> + <logger name="ajsc.FilePersistenceService" level="WARN" /> + <logger name="ajsc.UserDefinedJarService" level="WARN" /> + <logger name="ajsc.UserDefinedBeansDefService" level="WARN" /> + <logger name="ajsc.LoggingConfigurationService" level="WARN" /> + <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet + logging) --> + <logger name="org.codehaus.groovy" level="WARN" /> + <logger name="com.att.scamper" level="WARN" /> + <logger name="ajsc.utils" level="WARN" /> + <logger name="ajsc.utils.DME2Helper" level="WARN" /> + <logger name="ajsc.filters" level="WARN" /> + <logger name="ajsc.beans.interceptors" level="WARN" /> + <logger name="ajsc.restlet" level="WARN" /> + <logger name="ajsc.servlet" level="WARN" /> + <logger name="com.att.ajsc" level="WARN" /> + <logger name="com.att.ajsc.csi.logging" level="WARN" /> + <logger name="com.att.ajsc.filemonitor" level="WARN" /> + <logger name="com.netflix.loadbalancer" level="WARN" /> + <logger name="org.apache.zookeeper" level="OFF" /> + <!-- Other Loggers that may help troubleshoot --> + <logger name="net.sf" level="WARN" /> + <logger name="org.apache.commons.httpclient" level="WARN" /> + <logger name="org.apache.commons" level="WARN" /> + <logger name="org.apache.coyote" level="WARN" /> + <logger name="org.apache.jasper" level="WARN" /> + <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. + May aid in troubleshooting) --> + <logger name="org.apache.camel" level="WARN" /> + <logger name="org.apache.cxf" level="WARN" /> + <logger name="org.apache.camel.processor.interceptor" level="WARN" /> + <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" /> + <logger name="org.apache.cxf.service" level="WARN" /> + <logger name="org.restlet" level="WARN" /> + <logger name="org.apache.camel.component.restlet" level="WARN" /> + <logger name="org.hibernate.validator" level="WARN" /> + <logger name="org.hibernate" level="WARN" /> + <logger name="org.hibernate.ejb" level="OFF" /> + <!-- logback internals logging --> + <logger name="ch.qos.logback.classic" level="WARN" /> + <logger name="ch.qos.logback.core" level="WARN" /> + <logger name="org.eclipse.jetty" level="WARN" /> + <!-- logback jms appenders & loggers definition starts here --> + <appender name="auditLogs" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> + <file>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.log + </file> + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>9</maxIndex> + </rollingPolicy> + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>5MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern> + </encoder> + </appender> + <appender name="perfLogs" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> + <file>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.log + </file> + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>9</maxIndex> + </rollingPolicy> + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>5MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern> + </encoder> + </appender> + <logger name="AuditRecord" level="INFO" additivity="false"> + <appender-ref ref="auditLogs" /> + </logger> + <logger name="AuditRecord_DirectCall" level="INFO" additivity="false"> + <appender-ref ref="auditLogs" /> + </logger> + <logger name="PerfTrackerRecord" level="INFO" additivity="false"> + <appender-ref ref="perfLogs" /> + </logger> + <!-- logback jms appenders & loggers definition ends here --> + <logger name="org.onap.aai.interceptors.post" level="DEBUG" + additivity="false"> + <appender-ref ref="asynctranslog" /> + </logger> + <logger name="org.onap.aai.interceptors.pre.SetLoggingContext" level="DEBUG"> + <appender-ref ref="asyncAUDIT"/> + </logger> + <logger name="org.onap.aai.interceptors.post.ResetLoggingContext" level="DEBUG"> + <appender-ref ref="asyncAUDIT"/> + </logger> + <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false"> + <appender-ref ref="dmaapAAIEventConsumer" /> + <appender-ref ref="dmaapAAIEventConsumerDebug" /> + <appender-ref ref="dmaapAAIEventConsumerMetric" /> + </logger> + <logger name="org.apache" level="OFF" /> + <logger name="org.zookeeper" level="OFF" /> + <logger name="com.thinkaurelius" level="WARN" /> + <logger name="com.att.aft.dme2" level="WARN" /> + <!-- ============================================================================ --> + <!-- General EELF logger --> + <!-- ============================================================================ --> + <logger name="com.att.eelf" level="WARN" additivity="false"> + <appender-ref ref="asyncDEBUG" /> + <appender-ref ref="asyncERROR" /> + <appender-ref ref="asyncMETRIC" /> + </logger> + <root level="DEBUG"> + <appender-ref ref="external" /> + </root> +</configuration> diff --git a/kubernetes/aai/charts/aai-resources/resources/config/realm.properties b/kubernetes/aai/charts/aai-resources/resources/config/realm.properties new file mode 100644 index 0000000000..fb692cc3eb --- /dev/null +++ b/kubernetes/aai/charts/aai-resources/resources/config/realm.properties @@ -0,0 +1,12 @@ +# format : username: password[,rolename ...] +# default username/password: AAI/AAI, MSO/MSO, ModelLoader/ModelLoader... +AAI:OBF:1gfr1ev31gg7,admin +MSO:OBF:1jzx1lz31k01,admin +SDNC:OBF:1itr1i0l1i151isv,admin +DCAE:OBF:1g8u1f9d1f991g8w,admin +POLICY:OBF:1mk61i171ima1im41i0j1mko,admin +ASDC:OBF:1f991j0u1j001f9d,admin +VID:OBF:1jm91i0v1jl9,admin +APPC:OBF:1f991ksf1ksf1f9d,admin +ModelLoader:OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw,admin +AaiUI:OBF:1gfr1p571unz1p4j1gg7,admin diff --git a/kubernetes/aai/charts/aai-resources/templates/configmap.yaml b/kubernetes/aai/charts/aai-resources/templates/configmap.yaml index 97c720a6ab..5e371ea5bf 100644 --- a/kubernetes/aai/charts/aai-resources/templates/configmap.yaml +++ b/kubernetes/aai/charts/aai-resources/templates/configmap.yaml @@ -1,7 +1,64 @@ apiVersion: v1 kind: ConfigMap metadata: - name: {{ include "common.fullname" . }} + name: {{ include "common.fullname" . }}-log namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }} +{{ tpl (.Files.Glob "resources/config/logback.xml").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-localhost-access-log-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/localhost-access-logback.xml").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-db-real-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/janusgraph-realtime.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-db-cached-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/janusgraph-cached.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-aaiconfig-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/aaiconfig.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-springapp-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/application.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-realm-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/realm.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-auth-secret + namespace: {{ include "common.namespace" . }} +type: Opaque +data: +{{ tpl (.Files.Glob "resources/config/aai_keystore").AsSecrets . | indent 2 }} diff --git a/kubernetes/aai/charts/aai-resources/templates/deployment.yaml b/kubernetes/aai/charts/aai-resources/templates/deployment.yaml index 6aef4475f7..6c65bce4cc 100644 --- a/kubernetes/aai/charts/aai-resources/templates/deployment.yaml +++ b/kubernetes/aai/charts/aai-resources/templates/deployment.yaml @@ -415,12 +415,13 @@ spec: } ]' spec: + hostname: aai-resources initContainers: - command: - /root/ready.py args: - --container-name - - aai-hbase + - aai-cassandra env: - name: NAMESPACE valueFrom: @@ -435,32 +436,37 @@ spec: image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} env: - - name: CHEF_BRANCH - value: master - - name: AAI_CHEF_ENV - value: simpledemo - - name: AAI_CORE_VERSION - value: {{ .Values.config.aaicoreversion }} - - name: AAI_CHEF_LOC - value: /var/chef/aai-data/environments - - name: CHEF_GIT_URL - value: http://gerrit.onap.org/r/aai - - name: HBASE_STARTUP_ARTIFICIAL_DELAY - value: "60" + - name: LOCAL_USER_ID + value: {{ .Values.config.userId | quote }} + - name: LOCAL_GROUP_ID + value: {{ .Values.config.groupId | quote }} volumeMounts: - mountPath: /etc/localtime name: localtime readOnly: true - - mountPath: /var/chef/aai-data/chef-config/dev/.knife/solo.rb - subPath: solo.rb - name: aai-chef-config - - mountPath: /var/chef/aai-data/environments/ - name: aai-data + - mountPath: /opt/app/aai-resources/resources/etc/appprops/janusgraph-realtime.properties + name: {{ include "common.fullname" . }}-db-real-conf + subPath: janusgraph-realtime.properties + - mountPath: /opt/app/aai-resources/resources/etc/appprops/janusgraph-cached.properties + name: {{ include "common.fullname" . }}-db-cached-conf + subPath: janusgraph-cached.properties + - mountPath: /opt/app/aai-resources/resources/etc/appprops/aaiconfig.properties + name: {{ include "common.fullname" . }}-aaiconfig-conf + subPath: aaiconfig.properties - mountPath: /var/log/onap - name: aai-resources-logs - - mountPath: /opt/app/aai-resources/bundleconfig/etc/logback.xml - name: aai-resources-log-conf + name: {{ include "common.fullname" . }}-logs + - mountPath: /opt/app/aai-resources/resources/logback.xml + name: {{ include "common.fullname" . }}-log-conf subPath: logback.xml + - mountPath: /opt/app/aai-resources/resources/localhost-access-logback.xml + name: {{ include "common.fullname" . }}-localhost-access-log-conf + subPath: localhost-access-logback.xml + - mountPath: /opt/app/aai-resources/resources/application.properties + name: {{ include "common.fullname" . }}-springapp-conf + subPath: application.properties + - mountPath: /opt/app/aai-resources/resources/etc/auth/aai_keystore + name: {{ include "common.fullname" . }}-auth-sec + subPath: aai_keystore ports: - containerPort: {{ .Values.service.internalPort }} - containerPort: {{ .Values.service.internalPort2 }} @@ -498,30 +504,45 @@ spec: subPath: filebeat.yml name: filebeat-conf - mountPath: /var/log/onap - name: aai-resources-logs + name: {{ include "common.fullname" . }}-logs - mountPath: /usr/share/filebeat/data - name: aai-resources-filebeat + name: {{ include "common.fullname" . }}-filebeat volumes: - name: localtime hostPath: path: /etc/localtime - - name: aai-chef-config - configMap: - name: aai-chef-config - - name: aai-data - configMap: - name: aai-resources-environments - name: filebeat-conf configMap: name: aai-filebeat - - name: aai-resources-logs + - name: {{ include "common.fullname" . }}-logs emptyDir: {} - - name: aai-resources-filebeat + - name: {{ include "common.fullname" . }}-filebeat emptyDir: {} - - name: aai-resources-log-conf + - name: {{ include "common.fullname" . }}-log-conf + configMap: + name: {{ include "common.fullname" . }}-log + - name: {{ include "common.fullname" . }}-localhost-access-log-conf + configMap: + name: {{ include "common.fullname" . }}-localhost-access-log-configmap + - name: {{ include "common.fullname" . }}-db-real-conf + configMap: + name: {{ include "common.fullname" . }}-db-real-configmap + - name: {{ include "common.fullname" . }}-db-cached-conf + configMap: + name: {{ include "common.fullname" . }}-db-cached-configmap + - name: {{ include "common.fullname" . }}-aaiconfig-conf + configMap: + name: {{ include "common.fullname" . }}-aaiconfig-configmap + - name: {{ include "common.fullname" . }}-springapp-conf + configMap: + name: {{ include "common.fullname" . }}-springapp-configmap + - name: {{ include "common.fullname" . }}-realm-conf configMap: - name: {{ include "common.fullname" . }} - restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }} + name: {{ include "common.fullname" . }}-realm-configmap + - name: {{ include "common.fullname" . }}-auth-sec + secret: + secretName: {{ include "common.fullname" . }}-auth-secret + restartPolicy: {{ .Values.restartPolicy }} imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-resources/values.yaml b/kubernetes/aai/charts/aai-resources/values.yaml index f72e29905f..b7c02876d4 100644 --- a/kubernetes/aai/charts/aai-resources/values.yaml +++ b/kubernetes/aai/charts/aai-resources/values.yaml @@ -5,22 +5,23 @@ global: # global defaults nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 # application image repository: nexus3.onap.org:10001 -image: openecomp/aai-resources:v1.1.0 +image: onap/aai-resources:1.2-STAGING-latest pullPolicy: Always restartPolicy: Always -# application configuration -config: - aaicoreversion: 1.1.0-SNAPSHOT - # default number of instances replicaCount: 1 +# Configuration for the resources deployment +config: + userId: 1000 + groupId: 1000 + nodeSelector: {} affinity: {} diff --git a/kubernetes/aai/charts/aai-search-data/resources/config/log/logback.xml b/kubernetes/aai/charts/aai-search-data/resources/config/log/logback.xml index 14ed4142fe..3fbbbab864 100644 --- a/kubernetes/aai/charts/aai-search-data/resources/config/log/logback.xml +++ b/kubernetes/aai/charts/aai-search-data/resources/config/log/logback.xml @@ -1,188 +1,177 @@ -<configuration debug="false" scan="true" scanPeriod="3 seconds"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - <property name="componentName" value="aai"></property> - <property name="subcomponentName" value="aai-sdb" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subcomponentName}" /> - <!-- default eelf log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - <property name="queueSize" value="256" /> - <property name="maxFileSize" value="50MB" /> - <property name="maxHistory" value="30" /> - <property name="totalSizeCap" value="10GB" /> - <property name="pattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}\t[%thread]\t%-5level\t%logger\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> - <!-- Example evaluator filter applied against console appender --> - <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> - <encoder> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - <!-- The EELFAppender is used to record events to the general application - log --> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELF"> - <file>${logDirectory}/${errorLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELF"> - <!-- deny all events with a level below INFO, that is TRACE and DEBUG --> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <queueSize>${queueSize}</queueSize> - <appender-ref ref="EELF" /> - </appender> - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFAudit"> - <file>${logDirectory}/${auditLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFAudit"> - <queueSize>${queueSize}</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFMetrics"> - <file>${logDirectory}/${metricsLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFMetrics"> - <queueSize>${queueSize}</queueSize> - <appender-ref ref="EELFMetrics" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="EELFDebug"> - <file>${logDirectory}/${debugLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncEELFDebug"> - <queueSize>${queueSize}</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>false</includeCallerData> - </appender> - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - <logger additivity="false" level="info" name="com.att.eelf"> - <appender-ref ref="asyncEELF" /> - <appender-ref ref="asyncEELFDebug" /> - </logger> - <logger additivity="false" level="info" name="com.att.eelf.security"> - <appender-ref ref="asyncEELFSecurity" /> - </logger> - <logger additivity="false" level="info" name="com.att.eelf.perf"> - <appender-ref ref="asyncEELFPerformance" /> - </logger> - <logger additivity="false" level="info" name="com.att.eelf.server"> - <appender-ref ref="asyncEELFServer" /> - </logger> - <logger additivity="false" level="info" name="com.att.eelf.policy"> - <appender-ref ref="asyncEELFPolicy" /> - </logger> - <logger additivity="false" level="info" name="com.att.eelf.audit"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - <logger additivity="false" level="info" name="com.att.eelf.metrics"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - <!-- Spring related loggers --> - <logger level="WARN" name="org.springframework" /> - <logger level="WARN" name="org.springframework.beans" /> - <logger level="WARN" name="org.springframework.web" /> - <logger level="WARN" name="com.blog.spring.jms" /> - <!-- AJSC Services (bootstrap services) --> - <logger level="WARN" name="ajsc" /> - <logger level="WARN" name="ajsc.RouteMgmtService" /> - <logger level="WARN" name="ajsc.ComputeService" /> - <logger level="WARN" name="ajsc.VandelayService" /> - <logger level="WARN" name="ajsc.FilePersistenceService" /> - <logger level="WARN" name="ajsc.UserDefinedJarService" /> - <logger level="WARN" name="ajsc.UserDefinedBeansDefService" /> - <logger level="WARN" name="ajsc.LoggingConfigurationService" /> - <logger level="WARN" name="ajsc.ErrorMessageLookupService" /> - <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet - logging) --> - <logger level="WARN" name="ajsc.utils" /> - <logger level="WARN" name="ajsc.utils.DME2Helper" /> - <logger level="WARN" name="ajsc.filters" /> - <logger level="WARN" name="ajsc.beans.interceptors" /> - <logger level="WARN" name="ajsc.restlet" /> - <logger level="WARN" name="ajsc.servlet" /> - <logger level="INFO" name="com.att" /> - <logger level="WARN" name="com.att.ajsc.csi.logging" /> - <logger level="WARN" name="com.att.ajsc.filemonitor" /> - <!-- SearchDB loggers --> - <logger level="INFO" name="org.openecomp.sa" /> - <!-- Other Loggers that may help troubleshoot --> - <logger level="WARN" name="net.sf" /> - <logger level="WARN" name="org.apache.commons.httpclient" /> - <logger level="WARN" name="org.apache.commons" /> - <logger level="WARN" name="org.apache.coyote" /> - <logger level="WARN" name="org.apache.jasper" /> - <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. - May aid in troubleshooting) --> - <logger level="WARN" name="org.apache.camel" /> - <logger level="WARN" name="org.apache.cxf" /> - <logger level="WARN" name="org.apache.camel.processor.interceptor" /> - <logger level="WARN" name="org.apache.cxf.jaxrs.interceptor" /> - <logger level="WARN" name="org.apache.cxf.service" /> - <logger level="WARN" name="org.restlet" /> - <logger level="WARN" name="org.apache.camel.component.restlet" /> - <!-- logback internals logging --> - <logger level="WARN" name="ch.qos.logback.classic" /> - <logger level="WARN" name="ch.qos.logback.core" /> - <root> - <appender-ref ref="asyncEELF" /> - <!-- <appender-ref ref="asyncEELFDebug" /> --> - </root> +<configuration scan="true" scanPeriod="3 seconds" debug="false"> + <!--<jmxConfigurator /> --> + <!-- directory path for all other type logs --> + + <property name="logDir" value="/var/log/onap" /> + + + <!-- specify the component name + <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> + <property name="componentName" value="AAI-SDB"></property> + + <!-- default eelf log file names --> + <property name="generalLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + + <property name="errorLogPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%thread|SearchDataService|%mdc{PartnerName}|%logger||%.-5level|%msg%n" /> + <property name="auditMetricPattern" value="%m%n" /> + + <property name="logDirectory" value="${logDir}/${componentName}" /> + + <!-- Example evaluator filter applied against console appender --> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>${errorLogPattern}</pattern> + </encoder> + </appender> + + <!-- ============================================================================ --> + <!-- EELF Appenders --> + <!-- ============================================================================ --> + + <!-- The EELFAppender is used to record events to the general application + log --> + + <appender name="EELF" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${generalLogName}.log</file> + <rollingPolicy + class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip + </fileNamePattern> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${errorLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender"> + <!-- deny all events with a level below INFO, that is TRACE and DEBUG --> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>INFO</level> + </filter> + <queueSize>256</queueSize> + <appender-ref ref="EELF" /> + </appender> + + + <!-- EELF Audit Appender. This appender is used to record audit engine + related logging events. The audit logger and appender are specializations + of the EELF application root logger and appender. This can be used to segregate + Policy engine events from other components, or it can be eliminated to record + these events as part of the application root log. --> + + <appender name="EELFAudit" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${auditLogName}.log</file> + <rollingPolicy + class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip + </fileNamePattern> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${auditMetricPattern}</pattern> + </encoder> + </appender> + <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFAudit" /> + </appender> + + <appender name="EELFMetrics" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${metricsLogName}.log</file> + <rollingPolicy + class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip + </fileNamePattern> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - + %msg%n"</pattern> --> + <pattern>${auditMetricPattern}</pattern> + </encoder> + </appender> + + + <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFMetrics"/> + </appender> + + <appender name="EELFDebug" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${debugLogName}.log</file> + <rollingPolicy + class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip + </fileNamePattern> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${errorLogPattern}</pattern> + </encoder> + </appender> + + <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFDebug" /> + <includeCallerData>false</includeCallerData> + </appender> + + + <!-- ============================================================================ --> + <!-- EELF loggers --> + <!-- ============================================================================ --> + <logger name="com.att.eelf" level="info" additivity="false"> + <appender-ref ref="asyncEELF" /> + <appender-ref ref="asyncEELFDebug" /> + </logger> + + <logger name="com.att.eelf.audit" level="info" additivity="false"> + <appender-ref ref="asyncEELFAudit" /> + </logger> + <logger name="com.att.eelf.metrics" level="info" additivity="false"> + <appender-ref ref="asyncEELFMetrics" /> + </logger> + + <!-- Spring related loggers --> + <logger name="org.springframework" level="WARN" /> + <logger name="org.springframework.beans" level="WARN" /> + <logger name="org.springframework.web" level="WARN" /> + <logger name="com.blog.spring.jms" level="WARN" /> + + <!-- SearchDB loggers --> + <logger name="org.openecomp.sa" level="INFO" /> + + <!-- Other Loggers that may help troubleshoot --> + <logger name="net.sf" level="WARN" /> + <logger name="org.apache.commons.httpclient" level="WARN" /> + <logger name="org.apache.commons" level="WARN" /> + <logger name="org.apache.coyote" level="WARN" /> + <logger name="org.apache.jasper" level="WARN" /> + + <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. + May aid in troubleshooting) --> + <logger name="org.apache.camel" level="WARN" /> + <logger name="org.apache.cxf" level="WARN" /> + <logger name="org.apache.camel.processor.interceptor" level="WARN" /> + <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" /> + <logger name="org.apache.cxf.service" level="WARN" /> + <logger name="org.restlet" level="WARN" /> + <logger name="org.apache.camel.component.restlet" level="WARN" /> + + <!-- logback internals logging --> + <logger name="ch.qos.logback.classic" level="WARN" /> + <logger name="ch.qos.logback.core" level="WARN" /> + + <root> + <appender-ref ref="asyncEELF" /> + <!-- <appender-ref ref="asyncEELFDebug" /> --> + </root> + </configuration> diff --git a/kubernetes/aai/charts/aai-search-data/values.yaml b/kubernetes/aai/charts/aai-search-data/values.yaml index e7bfa6bdfa..65b3c9dbc2 100644 --- a/kubernetes/aai/charts/aai-search-data/values.yaml +++ b/kubernetes/aai/charts/aai-search-data/values.yaml @@ -5,12 +5,12 @@ global: # global defaults nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 # application image repository: nexus3.onap.org:10001 -image: onap/search-data-service:v1.1.0 +image: onap/search-data-service:1.2-STAGING-latest pullPolicy: Always restartPolicy: Always diff --git a/kubernetes/aai/charts/aai-sparky-be/resources/config/model/aai_oxm_v9.xml b/kubernetes/aai/charts/aai-sparky-be/resources/config/model/aai_oxm_v9.xml deleted file mode 100644 index 6337c32edc..0000000000 --- a/kubernetes/aai/charts/aai-sparky-be/resources/config/model/aai_oxm_v9.xml +++ /dev/null @@ -1,4775 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="inventory.aai.att.com.v9" xml-mapping-metadata-complete="true"> - <xml-schema element-form-default="QUALIFIED"> - <xml-ns namespace-uri="http://com.att.aai.inventory/v9" /> - </xml-schema> - <java-types> - <java-type name="Inventory"> - <xml-root-element name="inventory" /> - <java-attributes> - <xml-element java-attribute="search" name="search" type="inventory.aai.att.com.v9.Search" /> - <xml-element java-attribute="actions" name="actions" type="inventory.aai.att.com.v9.Actions" /> - <xml-element java-attribute="cloudInfrastructure" name="cloud-infrastructure" type="inventory.aai.att.com.v9.CloudInfrastructure" /> - <xml-element java-attribute="licenseManagement" name="license-management" type="inventory.aai.att.com.v9.LicenseManagement" /> - <xml-element java-attribute="business" name="business" type="inventory.aai.att.com.v9.Business" /> - <xml-element java-attribute="serviceDesignAndCreation" name="service-design-and-creation" type="inventory.aai.att.com.v9.ServiceDesignAndCreation" /> - <xml-element java-attribute="network" name="network" type="inventory.aai.att.com.v9.Network" /> - <xml-element java-attribute="aaiInternal" name="aai-internal" type="inventory.aai.att.com.v9.AaiInternal" /> - </java-attributes> - </java-type> - - <java-type name="Search"> - <xml-root-element name="search" /> - <java-attributes> - <xml-element java-attribute="edgeTagQueryResult" name="edge-tag-query-result" type="inventory.aai.att.com.v9.EdgeTagQueryResult" /> - <xml-element java-attribute="edgeTagQueryRequest" name="edge-tag-query-request" type="inventory.aai.att.com.v9.EdgeTagQueryRequest" /> - <xml-element java-attribute="searchResults" name="search-results" type="inventory.aai.att.com.v9.SearchResults" /> - <xml-element java-attribute="sdnZoneResponse" name="sdn-zone-response" type="inventory.aai.att.com.v9.SdnZoneResponse" /> - </java-attributes> - </java-type> - - <java-type name="EdgeTagQueryResult"> - <xml-root-element name="edge-tag-query-result" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.att.com.v9.TaggedInventoryItemList" /> - </java-attributes> - </java-type> - - <java-type name="TaggedInventoryItemList"> - <xml-root-element name="tagged-inventory-item-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItem" name="inventory-item" type="inventory.aai.att.com.v9.InventoryItem" /> - </java-attributes> - </java-type> - - <java-type name="InventoryItem"> - <xml-root-element name="inventory-item" /> - <java-attributes> - <xml-element java-attribute="inventoryItemType" name="inventory-item-type" type="java.lang.String" /> - <xml-element java-attribute="inventoryItemLink" name="inventory-item-link" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryItemData" name="inventory-item-data" type="inventory.aai.att.com.v9.InventoryItemData" /> - <xml-element container-type="java.util.ArrayList" java-attribute="taggedInventoryItemList" name="tagged-inventory-item-list" type="inventory.aai.att.com.v9.TaggedInventoryItemList" /> - </java-attributes> - </java-type> - - <java-type name="InventoryItemData"> - <xml-root-element name="inventory-item-data" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="EdgeTagQueryRequest"> - <xml-root-element name="edge-tag-query-request" /> - <java-attributes> - <xml-element java-attribute="edgeTag" name="edge-tag" type="java.lang.String" /> - <xml-element java-attribute="resultDetail" name="result-detail" type="java.lang.String" /> - <xml-element java-attribute="startNodeType" name="start-node-type" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="startNodeFilter" name="start-node-filter" type="inventory.aai.att.com.v9.StartNodeFilter" /> - <xml-element container-type="java.util.ArrayList" java-attribute="includeNodeFilter" name="include-node-filter" type="inventory.aai.att.com.v9.IncludeNodeFilter" /> - <xml-element container-type="java.util.ArrayList" java-attribute="secondaryFilter" name="secondary-filter" type="inventory.aai.att.com.v9.SecondaryFilter" /> - </java-attributes> - </java-type> - - <java-type name="StartNodeFilter"> - <xml-root-element name="start-node-filter" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="IncludeNodeFilter"> - <xml-root-element name="include-node-filter" /> - <java-attributes> - <xml-element java-attribute="includeNodeType" name="include-node-type" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="SecondaryFilter"> - <xml-root-element name="secondary-filter" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="filterType" name="filter-type" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="SearchResults"> - <xml-root-element name="search-results" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="resultData" name="result-data" type="inventory.aai.att.com.v9.ResultData" /> - </java-attributes> - </java-type> - - <java-type name="ResultData"> - <xml-root-element name="result-data" /> - <java-attributes> - <xml-element java-attribute="resourceType" name="resource-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The specific type of node in the A&AI graph" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceLink" name="resource-link" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The URL to the specific resource" /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="SdnZoneResponse"> - <xml-root-element name="sdn-zone-response" /> - <java-attributes> - <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.att.com.v9.OamNetworks" /> - <xml-element container-type="java.util.ArrayList" java-attribute="azAndDvsSwitches" name="az-and-dvs-switches" type="inventory.aai.att.com.v9.AzAndDvsSwitches" /> - </java-attributes> - </java-type> - - <java-type name="AzAndDvsSwitches"> - <xml-root-element name="az-and-dvs-switches" /> - <java-attributes> - <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.att.com.v9.DvsSwitches" /> - <xml-element java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.att.com.v9.AvailabilityZone" /> - </java-attributes> - </java-type> - - <java-type name="Actions"> - <xml-properties> - <xml-property name="description" value="APIs that are more action related than REST (e.g., notify, update)." /> - </xml-properties> - <xml-root-element name="actions" /> - <java-attributes> - <xml-element java-attribute="update" name="update" type="inventory.aai.att.com.v9.Update" /> - <xml-element java-attribute="notify" name="notify" type="inventory.aai.att.com.v9.Notify" /> - </java-attributes> - </java-type> - - <java-type name="Update"> - <xml-properties> - <xml-property name="description" value="Serves a PATCH like function. Does not enforce concurrency control. Clear each usage with AAI team." /> - </xml-properties> - <xml-root-element name="update" /> - <java-attributes> - <xml-element java-attribute="updateNodeType" name="update-node-type" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="updateNodeKey" name="update-node-key" type="inventory.aai.att.com.v9.UpdateNodeKey" /> - <xml-element java-attribute="updateNodeUri" name="update-node-uri" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="action" name="action" type="inventory.aai.att.com.v9.Action" /> - </java-attributes> - </java-type> - - <java-type name="Action"> - <xml-root-element name="action" /> - <java-attributes> - <xml-element java-attribute="actionType" name="action-type" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="actionData" name="action-data" type="inventory.aai.att.com.v9.ActionData" /> - </java-attributes> - </java-type> - - <java-type name="ActionData"> - <xml-root-element name="action-data" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="UpdateNodeKey"> - <xml-root-element name="update-node-key" /> - <java-attributes> - <xml-element java-attribute="keyName" name="key-name" type="java.lang.String" /> - <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="Notify"> - <xml-root-element name="notify" /> - <java-attributes> - <xml-element java-attribute="eventId" name="event-id" required="true" type="java.lang.String" /> - <xml-element java-attribute="nodeType" name="node-type" type="java.lang.String" /> - <xml-element java-attribute="eventTrigger" name="event-trigger" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="keyData" name="key-data" type="inventory.aai.att.com.v9.KeyData" /> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="KeyData"> - <xml-root-element name="key-data" /> - <java-attributes> - <xml-element java-attribute="keyName" name="key-name" type="java.lang.String" /> - <xml-element java-attribute="keyValue" name="key-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="CloudInfrastructure"> - <xml-properties> - <xml-property name="description" value="Namespace for cloud infrastructure." /> - </xml-properties> - <xml-root-element name="cloud-infrastructure" /> - <java-attributes> - <xml-element java-attribute="complexes" name="complexes" type="inventory.aai.att.com.v9.Complexes" /> - <xml-element java-attribute="cloudRegions" name="cloud-regions" type="inventory.aai.att.com.v9.CloudRegions" /> - <xml-element java-attribute="networkProfiles" name="network-profiles" type="inventory.aai.att.com.v9.NetworkProfiles" /> - <xml-element java-attribute="pservers" name="pservers" type="inventory.aai.att.com.v9.Pservers" /> - <xml-element java-attribute="virtualDataCenters" name="virtual-data-centers" type="inventory.aai.att.com.v9.VirtualDataCenters" /> - </java-attributes> - </java-type> - - <java-type name="CloudRegions"> - <xml-root-element name="cloud-regions" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="cloudRegion" name="cloud-region" type="inventory.aai.att.com.v9.CloudRegion" /> - </java-attributes> - </java-type> - - <java-type name="CloudRegion"> - <xml-root-element name="cloud-region" /> - <java-attributes> - <xml-element java-attribute="cloudOwner" name="cloud-owner" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifies the vendor and cloud name, e.g., att-aic. First part of composite key should be formatted as vendor-cloudname" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudRegionId" name="cloud-region-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudType" name="cloud-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the cloud (e.g., openstack)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ownerDefinedType" name="owner-defined-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Cloud-owner defined type indicator (e.g., DCP, LCP)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudRegionVersion" name="cloud-region-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Software version employed at the site" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL of the keystone identity service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cloudZone" name="cloud-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Zone where the cloud is homed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="complex name for cloud-region instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeGroups" name="volume-groups" type="inventory.aai.att.com.v9.VolumeGroups" /> - <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.att.com.v9.Tenants" /> - <xml-element java-attribute="flavors" name="flavors" type="inventory.aai.att.com.v9.Flavors" /> - <xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.att.com.v9.GroupAssignments" /> - <xml-element java-attribute="snapshots" name="snapshots" type="inventory.aai.att.com.v9.Snapshots" /> - <xml-element java-attribute="images" name="images" type="inventory.aai.att.com.v9.Images" /> - <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.att.com.v9.DvsSwitches" /> - <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.att.com.v9.OamNetworks" /> - <xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.att.com.v9.AvailabilityZones" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="cloud-region designates an installation of a cloud cluster or region or instantiation. In AT&Ts AIC cloud, this could be an LCP or DCP. Cloud regions are uniquely identified by a composite key, cloud-owner + cloud-region-id. The format of the cloud-owner is vendor-cloudname and we will use att-aic for AT&T's AIC." /> - <xml-property name="indexedProps" value="cloud-owner,cloud-region-id,cloud-type,owner-defined-type" /> - <xml-property name="nameProps" value="owner-defined-type" /> - <xml-property name="container" value="cloud-regions" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - <java-type name="VolumeGroups"> - <xml-properties> - <xml-property name="description" value="Collection of persistent block-level storage." /> - </xml-properties> - <xml-root-element name="volume-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="volumeGroup" name="volume-group" type="inventory.aai.att.com.v9.VolumeGroup" /> - </java-attributes> - </java-type> - - <java-type name="VolumeGroup"> - <xml-root-element name="volume-group" /> - <java-attributes> - <xml-element java-attribute="volumeGroupId" name="volume-group-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of volume-group." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeGroupName" name="volume-group-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the volume group." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this volume-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded and clients should expect changes to occur in the future to this field as ASDC matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this volume-group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Persistent block-level storage." /> - <xml-property name="indexedProps" value="volume-group-name,vnf-type,heat-stack-id,volume-group-id" /> - <xml-property name="searchable" value="volume-group-id,volume-group-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="volume-groups" /> - </xml-properties> - </java-type> - - <java-type name="RelationshipList"> - <xml-root-element name="relationship-list" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="relationship" name="relationship" type="inventory.aai.att.com.v9.Relationship" /> - </java-attributes> - </java-type> - - <java-type name="Relationship"> - <xml-root-element name="relationship" /> - <java-attributes> - <xml-element java-attribute="relatedTo" name="related-to" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="A keyword provided by A&AI to indicate type of node." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relatedLink" name="related-link" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to the object in A&AI." /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="relationshipData" name="relationship-data" type="inventory.aai.att.com.v9.RelationshipData" /> - <xml-element container-type="java.util.ArrayList" java-attribute="relatedToProperty" name="related-to-property" type="inventory.aai.att.com.v9.RelatedToProperty" /> - </java-attributes> - </java-type> - - <java-type name="RelatedToProperty"> - <xml-root-element name="related-to-property" /> - <java-attributes> - <xml-element java-attribute="propertyKey" name="property-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Key part of a key/value pair" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Value part of a key/value pair" /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="RelationshipData"> - <xml-root-element name="relationship-data" /> - <java-attributes> - <xml-element java-attribute="relationshipKey" name="relationship-key" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="A keyword provided by A&AI to indicate an attribute." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipValue" name="relationship-value" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Value of the attribute." /> - </xml-properties> - </xml-element> - </java-attributes> - </java-type> - - <java-type name="Complexes"> - <xml-properties> - <xml-property name="description" value="Collection of physical locations that can house cloud-regions." /> - </xml-properties> - <xml-root-element name="complexes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="complex" name="complex" type="inventory.aai.att.com.v9.Complex" /> - </java-attributes> - </java-type> - - <java-type name="Complex"> - <xml-root-element name="complex" /> - <java-attributes> - <xml-element java-attribute="physicalLocationId" name="physical-location-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier for physical location, e.g., CLLI" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dataCenterCode" name="data-center-code" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Data center code which can be an alternate way to identify a complex" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Gamma complex name for LCP instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL of the keystone identity service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="physicalLocationType" name="physical-location-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type, e.g., central office, data center." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="street1" name="street1" required="true" type="java.lang.String" /> - <xml-element java-attribute="street2" name="street2" type="java.lang.String" /> - <xml-element java-attribute="city" name="city" required="true" type="java.lang.String" /> - <xml-element java-attribute="state" name="state" type="java.lang.String" /> - <xml-element java-attribute="postalCode" name="postal-code" required="true" type="java.lang.String" /> - <xml-element java-attribute="country" name="country" required="true" type="java.lang.String" /> - <xml-element java-attribute="region" name="region" required="true" type="java.lang.String" /> - <xml-element java-attribute="latitude" name="latitude" type="java.lang.String" /> - <xml-element java-attribute="longitude" name="longitude" type="java.lang.String" /> - <xml-element java-attribute="elevation" name="elevation" type="java.lang.String" /> - <xml-element java-attribute="lata" name="lata" type="java.lang.String" /> - <xml-element java-attribute="ctagPools" name="ctag-pools" type="inventory.aai.att.com.v9.CtagPools" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of physical locations that can house cloud-regions." /> - <xml-property name="indexedProps" value="identity-url,data-center-code,complex-name,physical-location-id" /> - <xml-property name="searchable" value="physical-location-id,data-center-code,complex-name,street1,street2,postal-code" /> - <xml-property name="uniqueProps" value="physical-location-id" /> - <xml-property name="container" value="complexes" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - <xml-property name="geoProps" value="latitude,longitude" /> - <xml-property name="geoLat" value="latitude" /> - <xml-property name="geoLong" value="longitude" /> - </xml-properties> - </java-type> - - <java-type name="CtagPools"> - <xml-root-element name="ctag-pools" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ctagPool" name="ctag-pool" type="inventory.aai.att.com.v9.CtagPool" /> - </java-attributes> - </java-type> - - <java-type name="CtagPool"> - <xml-root-element name="ctag-pool" /> - <java-attributes> - <xml-element java-attribute="targetPe" name="target-pe" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="The Target provider edge router" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the availability zone" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ctagPoolPurpose" name="ctag-pool-purpose" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Describes what the intended purpose of this pool is." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ctagValues" name="ctag-values" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Comma separated list of ctags" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="A collection of C tags (vlan tags) grouped for a specific purpose." /> - <xml-property name="indexedProps" value="availability-zone-name" /> - <xml-property name="dependentOn" value="complex" /> - <xml-property name="container" value="ctag-pools" /> - </xml-properties> - </java-type> - - <java-type name="Tenants"> - <xml-properties> - <xml-property name="description" value="Collection of openstack tenants." /> - </xml-properties> - <xml-root-element name="tenants" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="tenant" name="tenant" type="inventory.aai.att.com.v9.Tenant" /> - </java-attributes> - </java-type> - - <java-type name="Tenant"> - <xml-root-element name="tenant" /> - <java-attributes> - <xml-element java-attribute="tenantId" name="tenant-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id relative to the cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tenantName" name="tenant-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Readable name of tenant" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vservers" name="vservers" type="inventory.aai.att.com.v9.Vservers" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack tenant" /> - <xml-property name="nameProps" value="tenant-name" /> - <xml-property name="indexedProps" value="tenant-name,tenant-id" /> - <xml-property name="searchable" value="tenant-id,tenant-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="tenants" /> - </xml-properties> - </java-type> - - <java-type name="Vservers"> - <xml-properties> - <xml-property name="description" value="Collection of virtual Servers, aka virtual machines or VMs." /> - </xml-properties> - <xml-root-element name="vservers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vserver" name="vserver" type="inventory.aai.att.com.v9.Vserver" /> - </java-attributes> - </java-type> - - <java-type name="Vserver"> - <xml-root-element name="vserver" /> - <java-attributes> - <xml-element java-attribute="vserverId" name="vserver-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier for this vserver relative to its tenant" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverName" name="vserver-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of vserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverName2" name="vserver-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternative name of vserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vserverSelflink" name="vserver-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumes" name="volumes" type="inventory.aai.att.com.v9.Volumes" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.att.com.v9.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual Servers, aka virtual machine or VM." /> - <xml-property name="nameProps" value="vserver-name" /> - <xml-property name="indexedProps" value="is-closed-loop-disabled,prov-status,vserver-name,vserver-id,in-maint,vserver-name2" /> - <xml-property name="searchable" value="vserver-id,vserver-name,vserver-name2" /> - <xml-property name="dependentOn" value="tenant" /> - <xml-property name="container" value="vservers" /> - </xml-properties> - </java-type> - - <java-type name="LInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of logical interfaces." /> - </xml-properties> - <xml-root-element name="l-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lInterface" name="l-interface" type="inventory.aai.att.com.v9.LInterface" /> - </java-attributes> - </java-type> - - <java-type name="LInterface"> - <xml-root-element name="l-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name given to the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="E.g., CUSTOMER, UPLINK, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v6WanLinkIp" name="v6-wan-link-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Questionably placed - v6 ip addr of this interface (is in vr-lan-interface from Mary B." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceId" name="interface-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="macaddr" name="macaddr" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="MAC address for the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Whether A&AI should be managing this interface of not. Could have value like CUSTOMER" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlans" name="vlans" type="inventory.aai.att.com.v9.Vlans" /> - <xml-element java-attribute="sriovVfs" name="sriov-vfs" type="inventory.aai.att.com.v9.SriovVfs" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.att.com.v9.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.att.com.v9.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Logical interfaces, e.g., a vnic." /> - <xml-property name="indexedProps" value="macaddr,interface-id,interface-name,network-name" /> - <xml-property name="dependentOn" value="generic-vnf,newvce,vpe,p-interface,vserver,lag-interface" /> - <xml-property name="container" value="l-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="SriovVfs"> - <xml-properties> - <xml-property name="description" value="Collection of SR-IOV Virtual Functions." /> - </xml-properties> - <xml-root-element name="sriov-vfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sriovVf" name="sriov-vf" type="inventory.aai.att.com.v9.SriovVf" /> - </java-attributes> - </java-type> - <java-type name="SriovVf"> - <xml-root-element name="sriov-vf" /> - <java-attributes> - <xml-element java-attribute="pciId" name="pci-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="PCI ID used to identify the sriov-vf" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanFilter" name="vf-vlan-filter" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This metadata provides option to specify list of VLAN filters applied on VF to pass the traffic to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMacFilter" name="vf-mac-filter" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="When MAC filters are specified, VF-agent service configures VFs to do MAC level filtering before the traffic is passed to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanStrip" name="vf-vlan-strip" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="When this field is set to true, VF will configured to strip the outer TAG before the traffic is passed to VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfVlanAntiSpoofCheck" name="vf-vlan-anti-spoof-check" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option ensures anti VLAN spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMacAntiSpoofCheck" name="vf-mac-anti-spoof-check" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option ensures anti MAC spoof checks are done at the VF level to comply with security. The disable check will also be honored per the VNF needs for trusted VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfMirrors" name="vf-mirrors" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This option defines the set of Mirror objects which essentially mirrors the traffic from source to set of collector VNF Ports." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfBroadcastAllow" name="vf-broadcast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows all broadcast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfUnknownMulticastAllow" name="vf-unknown-multicast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown multicast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfUnknownUnicastAllow" name="vf-unknown-unicast-allow" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, sets the VF in promiscuous mode and allows unknown unicast traffic to reach the VM" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfInsertStag" name="vf-insert-stag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="This option, if set to true, instructs to insert outer tag after traffic comes out of VM." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfLinkStatus" name="vf-link-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This option is used to set the link status. Valid values as of 1607 are on, off, and auto." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="SR-IOV Virtual Function (not to be confused with virtual network function)" /> - <xml-property name="indexedProps" value="pci-id,vf-vlan-filter,vf-mac-filter,vf-vlan-strip,neutron-network-id" /> - <xml-property name="dependentOn" value="l-interface" /> - <xml-property name="container" value="sriov-vfs" /> - </xml-properties> - </java-type> - - <java-type name="L3InterfaceIpv4AddressList"> - <xml-root-element name="l3-interface-ipv4-address-list" /> - <java-attributes> - <xml-element java-attribute="l3InterfaceIpv4Address" name="l3-interface-ipv4-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="l3InterfaceIpv4PrefixLength" name="l3-interface-ipv4-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 32 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv4 Address Range" /> - <xml-property name="indexedProps" value="l3-interface-ipv4-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="vlan,l-interface" /> - </xml-properties> - </java-type> - - <java-type name="Vlans"> - <xml-root-element name="vlans" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vlan" name="vlan" type="inventory.aai.att.com.v9.Vlan" /> - </java-attributes> - </java-type> - - <java-type name="Vlan"> - <xml-root-element name="vlan" /> - <java-attributes> - <xml-element java-attribute="vlanInterface" name="vlan-interface" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="String that identifies the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanDescription" name="vlan-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to describe (the service associated with) the vlan" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="backdoorConnection" name="backdoor-connection" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Whether customer is going to use this VLAN for backdoor connection to another customer premise device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnId" name="vpn-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This indicates the customers VPN ID associated with this vlan" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv4AddressList" name="l3-interface-ipv4-address-list" type="inventory.aai.att.com.v9.L3InterfaceIpv4AddressList" /> - <xml-element container-type="java.util.ArrayList" java-attribute="l3InterfaceIpv6AddressList" name="l3-interface-ipv6-address-list" type="inventory.aai.att.com.v9.L3InterfaceIpv6AddressList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Definition of vlan" /> - <xml-property name="indexedProps" value="vlan-interface,vlan-id-inner,vpn-id" /> - <xml-property name="uniqueProps" value="vpn-id" /> - <xml-property name="dependentOn" value="l-interface" /> - <xml-property name="container" value="vlans" /> - </xml-properties> - </java-type> - - <java-type name="L3InterfaceIpv6AddressList"> - <xml-root-element name="l3-interface-ipv6-address-list" /> - <java-attributes> - <xml-element java-attribute="l3InterfaceIpv6Address" name="l3-interface-ipv6-address" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="IP address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="l3InterfaceIpv6PrefixLength" name="l3-interface-ipv6-prefix-length" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Prefix length, 128 for single address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Inner VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Outer VLAN tag" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isFloating" name="is-floating" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Indicator of fixed or floating address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of the interface that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of subnet that address belongs to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPv6 Address Range" /> - <xml-property name="indexedProps" value="l3-interface-ipv6-address,vlan-id-inner,neutron-network-id,neutron-subnet-id" /> - <xml-property name="dependentOn" value="vlan,l-interface" /> - </xml-properties> - </java-type> - - <java-type name="Volumes"> - <xml-properties> - <xml-property name="description" value="Collection of ephemeral Block storage volumes." /> - </xml-properties> - <xml-root-element name="volumes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="volume" name="volume" type="inventory.aai.att.com.v9.Volume" /> - </java-attributes> - </java-type> - - <java-type name="Volume"> - <xml-root-element name="volume" /> - <java-attributes> - <xml-element java-attribute="volumeId" name="volume-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of block storage volume relative to the vserver." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="volumeSelflink" name="volume-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Ephemeral Block storage volume." /> - <xml-property name="indexedProps" value="volume-id" /> - <xml-property name="dependentOn" value="vserver" /> - <xml-property name="container" value="volumes" /> - </xml-properties> - </java-type> - - <java-type name="Flavors"> - <xml-properties> - <xml-property name="description" value="Collection of openstack flavors." /> - </xml-properties> - <xml-root-element name="flavors" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="flavor" name="flavor" type="inventory.aai.att.com.v9.Flavor" /> - </java-attributes> - </java-type> - - <java-type name="Flavor"> - <xml-root-element name="flavor" /> - <java-attributes> - <xml-element java-attribute="flavorId" name="flavor-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Flavor id, expected to be unique across cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorName" name="flavor-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Flavor name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorVcpus" name="flavor-vcpus" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Number of CPUs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorRam" name="flavor-ram" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Amount of memory" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorDisk" name="flavor-disk" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Disk space" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorEphemeral" name="flavor-ephemeral" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Amount of ephemeral disk space" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorSwap" name="flavor-swap" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="amount of swap space allocation" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorIsPublic" name="flavor-is-public" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="whether flavor is available to all users or private to the tenant it was created in." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorSelflink" name="flavor-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="flavorDisabled" name="flavor-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="Boolean as to whether this flavor is no longer enabled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack flavor." /> - <xml-property name="nameProps" value="flavor-name" /> - <xml-property name="indexedProps" value="flavor-name,flavor-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="flavors" /> - </xml-properties> - </java-type> - - <java-type name="Snapshots"> - <xml-properties> - <xml-property name="description" value="Collection of openstack snapshots" /> - </xml-properties> - <xml-root-element name="snapshots" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="snapshot" name="snapshot" type="inventory.aai.att.com.v9.Snapshot" /> - </java-attributes> - </java-type> - - <java-type name="Snapshot"> - <xml-root-element name="snapshot" /> - <java-attributes> - <xml-element java-attribute="snapshotId" name="snapshot-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Snapshot id, this is the key UUID assoc associated in glance with the snapshots." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotName" name="snapshot-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Snapshot name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotArchitecture" name="snapshot-architecture" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operating system architecture" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotOsDistro" name="snapshot-os-distro" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The common name of the operating system distribution in lowercase" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotOsVersion" name="snapshot-os-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The operating system version as specified by the distributor." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="snapshotSelflink" name="snapshot-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="prevSnapshotId" name="prev-snapshot-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field contains the UUID of the previous snapshot (if any)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack snapshot" /> - <xml-property name="nameProps" value="snapshot-name" /> - <xml-property name="uniqueProps" value="snapshot-id" /> - <xml-property name="indexedProps" value="application,snapshot-name,application-vendor,snapshot-id,application-version,prev-snapshot-id" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="snapshots" /> - </xml-properties> - </java-type> - - <java-type name="GroupAssignments"> - <xml-properties> - <xml-property name="description" value="Collection of openstack group assignments" /> - </xml-properties> - <xml-root-element name="group-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="groupAssignment" name="group-assignment" type="inventory.aai.att.com.v9.GroupAssignment" /> - </java-attributes> - </java-type> - - <java-type name="GroupAssignment"> - <xml-root-element name="group-assignment" /> - <java-attributes> - <xml-element java-attribute="groupId" name="group-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Group id, expected to be unique across cloud-region." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupType" name="group-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group type - the type of group this instance refers to" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupName" name="group-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group name - name assigned to the group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupDescription" name="group-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group description - description of the group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack group-assignment used to store exclusivity groups (EG)." /> - <xml-property name="nameProps" value="group-name" /> - <xml-property name="indexedProps" value="group-id,group-type,group-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="group-assignments" /> - </xml-properties> - </java-type> - - <java-type name="Images"> - <xml-properties> - <xml-property name="description" value="Collectio of Openstack images." /> - </xml-properties> - <xml-root-element name="images" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="image" name="image" type="inventory.aai.att.com.v9.Image" /> - </java-attributes> - </java-type> - - <java-type name="Image"> - <xml-root-element name="image" /> - <java-attributes> - <xml-element java-attribute="imageId" name="image-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Image id, expected to be unique across cloud region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageName" name="image-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Image name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageArchitecture" name="image-architecture" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operating system architecture." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageOsDistro" name="image-os-distro" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The common name of the operating system distribution in lowercase" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageOsVersion" name="image-os-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The operating system version as specified by the distributor." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="imageSelflink" name="image-selflink" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.att.com.v9.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack image." /> - <xml-property name="nameProps" value="image-name" /> - <xml-property name="indexedProps" value="application,image-name,application-vendor,image-id,application-version" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="images" /> - </xml-properties> - </java-type> - - <java-type name="Metadata"> - <xml-properties> - <xml-property name="description" value="Collection of metadatum (key/value pairs)" /> - </xml-properties> - <xml-root-element name="metadata" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="metadatum" name="metadatum" type="inventory.aai.att.com.v9.Metadatum" /> - </java-attributes> - </java-type> - - <java-type name="Metadatum"> - <xml-root-element name="metadatum" /> - <java-attributes> - <xml-element java-attribute="metaname" name="metaname" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="metaval" name="metaval" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Key/value pairs" /> - <xml-property name="indexedProps" value="metaname" /> - <xml-property name="dependentOn" value="tenant,image,service-instance,connector,model" /> - <xml-property name="container" value="metadata" /> - </xml-properties> - </java-type> - - <java-type name="DvsSwitches"> - <xml-properties> - <xml-property name="description" value="Collection of digital virtual switch metadata used for vmWare VCEs and VPEs." /> - </xml-properties> - <xml-root-element name="dvs-switches" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="dvsSwitch" name="dvs-switch" type="inventory.aai.att.com.v9.DvsSwitch" /> - </java-attributes> - </java-type> - - <java-type name="DvsSwitch"> - <xml-root-element name="dvs-switch" /> - <java-attributes> - <xml-element java-attribute="switchName" name="switch-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="DVS switch name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcenterUrl" name="vcenter-url" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL used to reach the vcenter" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Digital virtual switch metadata, used by SDN-C to configure VCEs. A&AI needs to receive this data from the PO deployment team and administer it using the provisioningTool.sh into A&AI. " /> - <xml-property name="indexedProps" value="vcenter-url,switch-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="dvs-switches" /> - </xml-properties> - </java-type> - - <java-type name="NetworkProfiles"> - <xml-properties> - <xml-property name="description" value="Collection of network profiles" /> - </xml-properties> - <xml-root-element name="network-profiles" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="networkProfile" name="network-profile" type="inventory.aai.att.com.v9.NetworkProfile" /> - </java-attributes> - </java-type> - - <java-type name="NetworkProfile"> - <xml-root-element name="network-profile" /> - <java-attributes> - <xml-element java-attribute="nmProfileName" name="nm-profile-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique name of network profile." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="communityString" name="community-string" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encrypted SNMP community string" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Network profile populated by SDN-GP for SNMP" /> - <xml-property name="indexedProps" value="nm-profile-name" /> - <xml-property name="container" value="network-profiles" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="Pservers"> - <xml-properties> - <xml-property name="description" value="Collection of compute hosts." /> - </xml-properties> - <xml-root-element name="pservers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pserver" name="pserver" type="inventory.aai.att.com.v9.Pserver" /> - </java-attributes> - </java-type> - - <java-type name="Pserver"> - <xml-root-element name="pserver" /> - <java-attributes> - <xml-element java-attribute="hostname" name="hostname" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Value from executing hostname on the compute node." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ptniiEquipName" name="ptnii-equip-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="PTNII name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="numberOfCpus" name="number-of-cpus" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Number of cpus" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="diskInGigabytes" name="disk-in-gigabytes" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Disk size, in GBs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ramInMegabytes" name="ram-in-megabytes" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="RAM size, in MBs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment type. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment vendor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment model. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="fqdn" name="fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Fully-qualified domain name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverSelflink" name="pserver-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used to configure device, also used for troubleshooting and is IP used for traps generated by device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serialNumber" name="serial-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Serial number, may be queried" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverId" name="pserver-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of Pserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="internetTopology" name="internet-topology" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="internet topology of Pserver" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pserverName2" name="pserver-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="alternative pserver name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="purpose" name="purpose" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="purpose of pserver" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.att.com.v9.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.att.com.v9.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Compute host whose hostname must be unique and must exactly match what is sent as a relationship to a vserver." /> - <xml-property name="nameProps" value="pserver-name2" /> - <xml-property name="indexedProps" value="hostname,in-maint,pserver-id,pserver-name2" /> - <xml-property name="searchable" value="hostname,pserver-name2,pserver-id,ipv4-oam-address" /> - <xml-property name="container" value="pservers" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="PInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of physical interfaces." /> - </xml-properties> - <xml-root-element name="p-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pInterface" name="p-interface" type="inventory.aai.att.com.v9.PInterface" /> - </java-attributes> - </java-type> - - <java-type name="PInterface"> - <xml-root-element name="p-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name that identifies the physical interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portDescription" name="port-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Nature of the services and connectivity on this port." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentIdentifier" name="equipment-identifier" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="CLEI or other specification for p-interface hardware." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role specification for p-interface hardware." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceType" name="interface-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the physical properties of the interface." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.att.com.v9.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Physical interface (e.g., nic)" /> - <xml-property name="indexedProps" value="interface-name" /> - <xml-property name="dependentOn" value="vpls-pe,pserver,pnf" /> - <xml-property name="container" value="p-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="LagInterfaces"> - <xml-properties> - <xml-property name="description" value="Collection of link aggregate interfaces." /> - </xml-properties> - <xml-root-element name="lag-interfaces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lagInterface" name="lag-interface" type="inventory.aai.att.com.v9.LagInterface" /> - </java-attributes> - </java-type> - - <java-type name="LagInterface"> - <xml-root-element name="lag-interface" /> - <java-attributes> - <xml-element java-attribute="interfaceName" name="interface-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name that identifies the link aggregate interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.att.com.v9.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Link aggregate interface" /> - <xml-property name="indexedProps" value="interface-name" /> - <xml-property name="dependentOn" value="generic-vnf,pserver,vpe,vpls-pe,pnf" /> - <xml-property name="container" value="lag-interfaces" /> - </xml-properties> - </java-type> - - <java-type name="OamNetworks"> - <xml-properties> - <xml-property name="description" value="Collection of OAM networks, to be deprecated shortly. Do not use for new purposes. " /> - </xml-properties> - <xml-root-element name="oam-networks" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="oamNetwork" name="oam-network" type="inventory.aai.att.com.v9.OamNetwork" /> - </java-attributes> - </java-type> - - <java-type name="OamNetwork"> - <xml-root-element name="oam-network" /> - <java-attributes> - <xml-element java-attribute="networkUuid" name="network-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID of the network. Unique across a cloud-region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="cvlan-id" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Used for VNF firewall rule so customer cannot send customer traffic over this oam network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="OAM network, to be deprecated shortly. Do not use for new purposes. " /> - <xml-property name="nameProps" value="network-name" /> - <xml-property name="indexedProps" value="cvlan-tag,network-uuid,network-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="oam-networks" /> - </xml-properties> - </java-type> - - <java-type name="AvailabilityZones"> - <xml-properties> - <xml-property name="description" value="Collection of availability zones" /> - </xml-properties> - <xml-root-element name="availability-zones" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="availabilityZone" name="availability-zone" type="inventory.aai.att.com.v9.AvailabilityZone" /> - </java-attributes> - </java-type> - - <java-type name="AvailabilityZone"> - <xml-root-element name="availability-zone" /> - <java-attributes> - <xml-element java-attribute="availabilityZoneName" name="availability-zone-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Name of the availability zone. Unique across a cloud region" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="hypervisorType" name="hypervisor-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of hypervisor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="State that indicates whether the availability zone should be used, etc. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Availability zone, a collection of compute hosts/pservers" /> - <xml-property name="indexedProps" value="availability-zone-name" /> - <xml-property name="dependentOn" value="cloud-region" /> - <xml-property name="container" value="availability-zones" /> - </xml-properties> - </java-type> - - <java-type name="VirtualDataCenters"> - <xml-properties> - <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context" /> - </xml-properties> - <xml-root-element name="virtual-data-centers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="virtualDataCenter" name="virtual-data-center" type="inventory.aai.att.com.v9.VirtualDataCenter" /> - </java-attributes> - </java-type> - - <java-type name="VirtualDataCenter"> - <xml-root-element name="virtual-data-center" /> - <java-attributes> - <xml-element java-attribute="vdcId" name="vdc-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of the vdc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdcName" name="vdc-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the virtual data center" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual organization of cloud infrastructure elements in a data center context" /> - <xml-property name="nameProps" value="vdc-name" /> - <xml-property name="indexedProps" value="vdc-name,vdc-id" /> - <xml-property name="container" value="virtual-data-centers" /> - <xml-property name="namespace" value="cloud-infrastructure" /> - </xml-properties> - </java-type> - - <java-type name="LicenseManagement"> - <xml-root-element name="license-management" /> - <java-attributes> - <xml-element java-attribute="licenseKeyResources" name="license-key-resources" type="inventory.aai.att.com.v9.LicenseKeyResources" /> - </java-attributes> - </java-type> - - <java-type name="LicenseKeyResources"> - <xml-root-element name="license-key-resources" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="licenseKeyResource" name="license-key-resource" type="inventory.aai.att.com.v9.LicenseKeyResource" /> - </java-attributes> - </java-type> - - <java-type name="LicenseKeyResource"> - <xml-root-element name="license-key-resource" /> - <java-attributes> - <xml-element java-attribute="attUuid" name="att-uuid" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="assignmentType" name="assignment-type" type="java.lang.String" /> - <xml-element java-attribute="assignmentStatus" name="assignment-status" type="java.lang.String" /> - <xml-element java-attribute="assignmentGroupUuid" name="assignment-group-uuid" required="true" type="java.lang.String" /> - <xml-element java-attribute="assignmentDate" name="assignment-date" type="java.lang.String" /> - <xml-element java-attribute="name" name="name" type="java.lang.String" /> - <xml-element java-attribute="modelUuid" name="model-uuid" type="java.lang.String" /> - <xml-element java-attribute="modelVersion" name="model-version" type="java.lang.String" /> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String" /> - <xml-element java-attribute="licenseKeyFileUrl" name="license-key-file-url" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="supplierReleaseList" name="supplier-release-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="nameProps" value="name" /> - <xml-property name="indexedProps" value="assignment-group-uuid,att-uuid,name" /> - <xml-property name="uniqueProps" value="att-uuid" /> - <xml-property name="container" value="license-key-resources" /> - <xml-property name="namespace" value="license-management" /> - </xml-properties> - </java-type> - - <java-type name="Business"> - <xml-properties> - <xml-property name="description" value="Namespace for business related constructs" /> - </xml-properties> - <xml-root-element name="business" /> - <java-attributes> - <xml-element java-attribute="connectors" name="connectors" type="inventory.aai.att.com.v9.Connectors" /> - <xml-element java-attribute="customers" name="customers" type="inventory.aai.att.com.v9.Customers" /> - </java-attributes> - </java-type> - - <java-type name="Connectors"> - <xml-properties> - <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets" /> - </xml-properties> - <xml-root-element name="connectors" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="connector" name="connector" type="inventory.aai.att.com.v9.Connector" /> - </java-attributes> - </java-type> - - <java-type name="Connector"> - <xml-root-element name="connector" /> - <java-attributes> - <xml-element java-attribute="resourceInstanceId" name="resource-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of resource instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.att.com.v9.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of resource instances used to connect a variety of disparate inventory widgets" /> - <xml-property name="indexedProps" value="resource-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version" /> - <xml-property name="container" value="connectors" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="Customers"> - <xml-properties> - <xml-property name="description" value="Collection of customer identifiers to provide linkage back to BSS information." /> - </xml-properties> - <xml-root-element name="customers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="customer" name="customer" type="inventory.aai.att.com.v9.Customer" /> - </java-attributes> - </java-type> - - <java-type name="Customer"> - <xml-root-element name="customer" /> - <java-attributes> - <xml-element java-attribute="globalCustomerId" name="global-customer-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Global customer id used across ECOMP to uniquely identify customer." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subscriberName" name="subscriber-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Subscriber name, an alternate way to retrieve a customer." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subscriberType" name="subscriber-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Subscriber type, a way to provide VID with only the INFRA customers." /> - <xml-property name="defaultValue" value="CUST" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceSubscriptions" name="service-subscriptions" type="inventory.aai.att.com.v9.ServiceSubscriptions" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="customer identifiers to provide linkage back to BSS information." /> - <xml-property name="nameProps" value="subscriber-name" /> - <xml-property name="indexedProps" value="subscriber-name,global-customer-id,subscriber-type" /> - <xml-property name="searchable" value="global-customer-id,subscriber-name" /> - <xml-property name="uniqueProps" value="global-customer-id,subscriber-name" /> - <xml-property name="alternateKeys1" value="subscriber-name" /> - <xml-property name="container" value="customers" /> - <xml-property name="namespace" value="business" /> - </xml-properties> - </java-type> - - <java-type name="ServiceSubscriptions"> - <xml-properties> - <xml-property name="description" value="Collection of objects that group service instances." /> - </xml-properties> - <xml-root-element name="service-subscriptions" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceSubscription" name="service-subscription" type="inventory.aai.att.com.v9.ServiceSubscription" /> - </java-attributes> - </java-type> - - <java-type name="ServiceSubscription"> - <xml-root-element name="service-subscription" /> - <java-attributes> - <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Value defined by orchestration to identify this service across ECOMP." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="tempUbSubAccountId" name="temp-ub-sub-account-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This property will be deleted from A&AI in the near future. Only stop gap solution." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstances" name="service-instances" type="inventory.aai.att.com.v9.ServiceInstances"> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Object that group service instances." /> - <xml-property name="indexedProps" value="service-type" /> - <xml-property name="dependentOn" value="customer" /> - <xml-property name="container" value="service-subscriptions" /> - <xml-property name="crossEntityReference" value="service-instance,service-type" /> - </xml-properties> - </java-type> - - <java-type name="ServiceInstances"> - <xml-properties> - <xml-property name="description" value="Collection of service instances" /> - </xml-properties> - <xml-root-element name="service-instances" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceInstance" name="service-instance" type="inventory.aai.att.com.v9.ServiceInstance" /> - </java-attributes> - </java-type> - - <java-type name="ServiceInstance"> - <xml-root-element name="service-instance" /> - <java-attributes> - <xml-element java-attribute="serviceInstanceId" name="service-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Uniquely identifies this instance of a service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstanceName" name="service-instance-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="This field will store a name assigned to the service-instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthTotal" name="bandwidth-total" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates the total bandwidth to be used for this service." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan1" name="bandwidth-up-wan1" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN1 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan1" name="bandwidth-down-wan1" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN1 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthUpWan2" name="bandwidth-up-wan2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the upstream bandwidth this service will use on the WAN2 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="bandwidthDownWan2" name="bandwidth-down-wan2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="indicates the downstream bandwidth this service will use on the WAN2 port of the physical device." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vhnPortalUrl" name="vhn-portal-url" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL customers will use to access the vHN Portal." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Operational status of the service-instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceInstanceLocationId" name="service-instance-location-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="An identifier that customers assign to the location where this service is being used." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.att.com.v9.Metadata" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Instance of a service" /> - <xml-property name="indexedProps" value="service-instance-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,service-instance-name,service-instance-location-id" /> - <xml-property name="nameProps" value="service-instance-name" /> - <xml-property name="searchable" value="service-instance-id,service-instance-name" /> - <xml-property name="uniqueProps" value="service-instance-id" /> - <xml-property name="dependentOn" value="service-subscription" /> - <xml-property name="container" value="service-instances" /> - </xml-properties> - </java-type> - - <java-type name="ServiceDesignAndCreation"> - <xml-properties> - <xml-property name="description" value="Namespace for objects managed by ASDC" /> - </xml-properties> - <xml-root-element name="service-design-and-creation" /> - <java-attributes> - <xml-element java-attribute="vnfImages" name="vnf-images" type="inventory.aai.att.com.v9.VnfImages" /> - <xml-element java-attribute="services" name="services" type="inventory.aai.att.com.v9.Services" /> - <xml-element java-attribute="serviceCapabilities" name="service-capabilities" type="inventory.aai.att.com.v9.ServiceCapabilities" /> - <xml-element java-attribute="models" name="models" type="inventory.aai.att.com.v9.Models" /> - <xml-element java-attribute="namedQueries" name="named-queries" type="inventory.aai.att.com.v9.NamedQueries" /> - </java-attributes> - </java-type> - - <java-type name="VnfImages"> - <xml-properties> - <xml-property name="description" value="Collection of image objects that pertain to a VNF that doesn't have associated vservers. This is a kludge." /> - </xml-properties> - <xml-root-element name="vnf-images" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vnfImage" name="vnf-image" type="inventory.aai.att.com.v9.VnfImage" /> - </java-attributes> - </java-type> - - <java-type name="VnfImage"> - <xml-root-element name="vnf-image" /> - <java-attributes> - <xml-element java-attribute="attUuid" name="att-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of this asset" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="application" name="application" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The application that the image instantiates." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVendor" name="application-vendor" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The vendor of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="applicationVersion" name="application-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The version of the application." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="selflink" name="selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Image object that pertain to a VNF that doesn't have associated vservers. This is a kludge." /> - <xml-property name="indexedProps" value="application,att-uuid,application-vendor,application-version" /> - <xml-property name="uniqueProps" value="att-uuid" /> - <xml-property name="container" value="vnf-images" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="Services"> - <xml-properties> - <xml-property name="description" value="Collection of service model definitions. Likely to be deprecated in favor of models from ASDC." /> - </xml-properties> - <xml-root-element name="services" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="service" name="service" type="inventory.aai.att.com.v9.Service" /> - </java-attributes> - </java-type> - - <java-type name="Service"> - <xml-root-element name="service" /> - <java-attributes> - <xml-element java-attribute="serviceId" name="service-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceDescription" name="service-description" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description of the service" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceSelflink" name="service-selflink" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="URL to endpoint where AAI can get more details" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceVersion" name="service-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="service version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Stand-in for service model definitions. Likely to be deprecated in favor of models from ASDC." /> - <xml-property name="indexedProps" value="service-description,service-id" /> - <xml-property name="container" value="services" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="ServiceCapabilities"> - <xml-properties> - <xml-property name="description" value="Collection of service capabilities." /> - </xml-properties> - <xml-root-element name="service-capabilities" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="serviceCapability" name="service-capability" type="inventory.aai.att.com.v9.ServiceCapability" /> - </java-attributes> - </java-type> - - <java-type name="ServiceCapability"> - <xml-root-element name="service-capability" /> - <java-attributes> - <xml-element java-attribute="serviceType" name="service-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="This gets defined by others to provide a unique ID for the service, we accept what is sent." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded and clients should expect changes to occur in the future to this field as ASDC matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Early definition of server/resource pairings, likely to be replaced by models. No new use should be made of this." /> - <xml-property name="indexedProps" value="service-type,vnf-type" /> - <xml-property name="container" value="service-capabilities" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - </java-type> - - <java-type name="Network"> - <xml-properties> - <xml-property name="description" value="Namespace for network inventory resources." /> - </xml-properties> - <xml-root-element name="network" /> - <java-attributes> - <xml-element java-attribute="logicalLinks" name="logical-links" type="inventory.aai.att.com.v9.LogicalLinks" /> - <xml-element java-attribute="sitePairSets" name="site-pair-sets" type="inventory.aai.att.com.v9.SitePairSets" /> - <xml-element java-attribute="vpnBindings" name="vpn-bindings" type="inventory.aai.att.com.v9.VpnBindings" /> - <xml-element java-attribute="vplsPes" name="vpls-pes" type="inventory.aai.att.com.v9.VplsPes" /> - <xml-element java-attribute="multicastConfigurations" name="multicast-configurations" type="inventory.aai.att.com.v9.MulticastConfigurations" /> - <xml-element java-attribute="vces" name="vces" type="inventory.aai.att.com.v9.Vces" /> - <xml-element java-attribute="vpes" name="vpes" type="inventory.aai.att.com.v9.Vpes" /> - <xml-element java-attribute="vnfcs" name="vnfcs" type="inventory.aai.att.com.v9.Vnfcs" /> - <xml-element java-attribute="l3Networks" name="l3-networks" type="inventory.aai.att.com.v9.L3Networks" /> - <xml-element java-attribute="networkPolicies" name="network-policies" type="inventory.aai.att.com.v9.NetworkPolicies" /> - <xml-element java-attribute="genericVnfs" name="generic-vnfs" type="inventory.aai.att.com.v9.GenericVnfs" /> - <xml-element java-attribute="lagLinks" name="lag-links" type="inventory.aai.att.com.v9.LagLinks" /> - <xml-element java-attribute="newvces" name="newvces" type="inventory.aai.att.com.v9.Newvces" /> - <xml-element java-attribute="pnfs" name="pnfs" type="inventory.aai.att.com.v9.Pnfs" /> - <xml-element java-attribute="physicalLinks" name="physical-links" type="inventory.aai.att.com.v9.PhysicalLinks" /> - <xml-element java-attribute="ipsecConfigurations" name="ipsec-configurations" type="inventory.aai.att.com.v9.IpsecConfigurations" /> - <xml-element java-attribute="routeTableReferences" name="route-table-references" type="inventory.aai.att.com.v9.RouteTableReferences" /> - </java-attributes> - </java-type> - - <java-type name="LogicalLinks"> - <xml-properties> - <xml-property name="description" value="Collection of logical connections" /> - </xml-properties> - <xml-root-element name="logical-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="logicalLink" name="logical-link" type="inventory.aai.att.com.v9.LogicalLink" /> - </java-attributes> - </java-type> - - <java-type name="LogicalLink"> - <xml-root-element name="logical-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="e.g., evc-name, or vnf-nameA_interface-nameA_vnf-nameZ_interface-nameZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkType" name="link-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of logical link, e.g., evc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4, v6, or ds for dual stack (should be att-ip-version)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routingProtocol" name="routing-protocol" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="For example, static or BGP" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalStatus" name="operational-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indication of operational status of the logical link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkRole" name="link-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indication of the network use of the logical link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkName2" name="link-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alias or alternate name (CLCI or D1 name)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="linkId" name="link-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the logical-link, SDNC generates this." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Logical links generally connect l-interfaces but are used to express logical connectivity between two points" /> - <xml-property name="indexedProps" value="link-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,link-id" /> - <xml-property name="uniqueProps" value="link-id" /> - <xml-property name="container" value="logical-links" /> - <xml-property name="namespace" value="network" /> - <xml-property name="searchable" value="link-name" /> - </xml-properties> - </java-type> - - <java-type name="SitePairSets"> - <xml-properties> - <xml-property name="description" value="Collection of sets of instances for probes related to generic-vnf" /> - </xml-properties> - <xml-root-element name="site-pair-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sitePairSet" name="site-pair-set" type="inventory.aai.att.com.v9.SitePairSet" /> - </java-attributes> - </java-type> - - <java-type name="SitePairSet"> - <xml-root-element name="site-pair-set" /> - <java-attributes> - <xml-element java-attribute="sitePairSetId" name="site-pair-set-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of site pair set." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routingInstances" name="routing-instances" type="inventory.aai.att.com.v9.RoutingInstances" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Set of instances for probes used to measure service level agreements" /> - <xml-property name="indexedProps" value="site-pair-set-id" /> - <xml-property name="uniqueProps" value="site-pair-set-id" /> - <xml-property name="container" value="site-pair-sets" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="RoutingInstances"> - <xml-properties> - <xml-property name="description" value="set of probes related to generic-vnf routing instance" /> - </xml-properties> - <xml-root-element name="routing-instances" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="routingInstance" name="routing-instance" type="inventory.aai.att.com.v9.RoutingInstance" /> - </java-attributes> - </java-type> - - <java-type name="RoutingInstance"> - <xml-root-element name="routing-instance" /> - <java-attributes> - <xml-element java-attribute="routingInstanceId" name="routing-instance-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of routing instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="rpmOwner" name="rpm-owner" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="rpm owner" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sitePairs" name="site-pairs" type="inventory.aai.att.com.v9.SitePairs" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="routing-instance-id" /> - <xml-property name="uniqueProps" value="routing-instance-id" /> - <xml-property name="dependentOn" value="site-pair-set" /> - <xml-property name="container" value="routing-instances" /> - </xml-properties> - </java-type> - - <java-type name="SitePairs"> - <xml-properties> - <xml-property name="description" value="probe within a set" /> - </xml-properties> - <xml-root-element name="site-pairs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="sitePair" name="site-pair" type="inventory.aai.att.com.v9.SitePair" /> - </java-attributes> - </java-type> - - <java-type name="SitePair"> - <xml-root-element name="site-pair" /> - <java-attributes> - <xml-element java-attribute="sitePairId" name="site-pair-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sourceIp" name="source-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prefix address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationIp" name="destination-ip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Prefix address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ip version, v4, v6" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationHostname" name="destination-hostname" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Hostname of the destination equipment to which SLAs are measured against." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="destinationEquipType" name="destination-equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The type of destinatination equipment. Could be Router, UCPE, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="classesOfService" name="classes-of-service" type="inventory.aai.att.com.v9.ClassesOfService" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="site-pair-id" /> - <xml-property name="uniqueProps" value="site-pair-id" /> - <xml-property name="dependentOn" value="routing-instance" /> - <xml-property name="container" value="site-pairs" /> - </xml-properties> - </java-type> - - <java-type name="ClassesOfService"> - <xml-properties> - <xml-property name="description" value="class-of-service of probe" /> - </xml-properties> - <xml-root-element name="classes-of-service" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="classOfService" name="class-of-service" type="inventory.aai.att.com.v9.ClassOfService" /> - </java-attributes> - </java-type> - - <java-type name="ClassOfService"> - <xml-root-element name="class-of-service" /> - <java-attributes> - <xml-element java-attribute="cos" name="cos" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="probeId" name="probe-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="probeType" name="probe-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="type of probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="cos" /> - <xml-property name="dependentOn" value="site-pair" /> - <xml-property name="container" value="classes-of-service" /> - </xml-properties> - </java-type> - - <java-type name="VpnBindings"> - <xml-root-element name="vpn-bindings" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vpnBinding" name="vpn-binding" type="inventory.aai.att.com.v9.VpnBinding" /> - </java-attributes> - </java-type> - - <java-type name="VpnBinding"> - <xml-root-element name="vpn-binding" /> - <java-attributes> - <xml-element java-attribute="vpnId" name="vpn-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="VPN ID, globally unique within A&AI" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnName" name="vpn-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="VPN Name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="globalRouteTarget" name="global-route-target" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Number used to identify a VPN, globally unique in the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpnPlatform" name="vpn-platform" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the platform associated with the VPN example AVPN, Mobility" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList"> - <xml-properties> - <xml-property name="description" value="l3-networks relate to vpn-bindings" /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="VPN binding" /> - <xml-property name="nameProps" value="vpn-name" /> - <xml-property name="indexedProps" value="vpn-name,vpn-id,global-route-target" /> - <xml-property name="searchable" value="vpn-id,vpn-name" /> - <xml-property name="uniqueProps" value="vpn-id" /> - <xml-property name="container" value="vpn-bindings" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="VplsPes"> - <xml-properties> - <xml-property name="description" value="Collection of VPLS Provider Edge routers" /> - </xml-properties> - <xml-root-element name="vpls-pes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vplsPe" name="vpls-pe" type="inventory.aai.att.com.v9.VplsPe" /> - </java-attributes> - </java-type> - - <java-type name="VplsPe"> - <xml-root-element name="vpls-pe" /> - <java-attributes> - <xml-element java-attribute="equipmentName" name="equipment-name" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value, e.g., VPLS-PE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Temporary location for stag to get to VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.att.com.v9.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.att.com.v9.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="VPLS Provider Edge routers." /> - <xml-property name="indexedProps" value="prov-status,equipment-name" /> - <xml-property name="container" value="vpls-pes" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="MulticastConfigurations"> - <xml-properties> - <xml-property name="description" value="multicast configuration of generic-vnf ip-address" /> - </xml-properties> - <xml-root-element name="multicast-configurations" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="multicastConfiguration" name="multicast-configuration" type="inventory.aai.att.com.v9.MulticastConfiguration" /> - </java-attributes> - </java-type> - - <java-type name="MulticastConfiguration"> - <xml-root-element name="multicast-configuration" /> - <java-attributes> - <xml-element java-attribute="multicastConfigurationId" name="multicast-configuration-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of multicast configuration." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="multicastProtocol" name="multicast-protocol" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="protocol of multicast configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="rpType" name="rp-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="rp type of multicast configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="multicast-configuration-id" /> - <xml-property name="uniqueProps" value="multicast-configuration-id" /> - <xml-property name="container" value="multicast-configurations" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Vces"> - <xml-properties> - <xml-property name="description" value="Collection of Virtual Customer Edge Routers, used specifically for Gamma. This object is deprecated." /> - </xml-properties> - <xml-root-element name="vces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vce" name="vce" type="inventory.aai.att.com.v9.Vce" /> - </java-attributes> - </java-type> - - <java-type name="Vce"> - <xml-root-element name="vce" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded and clients should expect changes to occur in the future to this field as ASDC matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service from ASDC. Expect this to change as ASDC matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="License key" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network role being played by this VNF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vpeId" name="vpe-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique ID of VPE connected to this VCE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v6VceWanAddress" name="v6-vce-wan-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Valid v6 IP address for the WAN Link on this router. Implied length of /64." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vce, also used for troubleshooting and is IP used for traps generated by VCE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Entitlement resource uuid" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroups" name="port-groups" type="inventory.aai.att.com.v9.PortGroups" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Virtual Customer Edge Router, used specifically for Gamma. This object is deprecated." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,interface-name,regional-resource-zone,vpe-id,prov-status,service-id" /> - <xml-property name="searchable" value="vpe-id,vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="vces" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - </xml-properties> - </java-type> - - <java-type name="PortGroups"> - <xml-root-element name="port-groups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="portGroup" name="port-group" type="inventory.aai.att.com.v9.PortGroup" /> - </java-attributes> - </java-type> - - <java-type name="PortGroup"> - <xml-root-element name="port-group" /> - <java-attributes> - <xml-element java-attribute="interfaceId" name="interface-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of the interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of this Interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkName" name="neutron-network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network name of this Interface" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="interfaceRole" name="interface-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role assigned to this Interface, should use values as defined in ECOMP Yang models." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroupId" name="port-group-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique ID for port group in vmware" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="portGroupName" name="port-group-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Likely to duplicate value of neutron network name" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="switchName" name="switch-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="DVS or standard switch name (should be non-null for port groups associated with DVS)" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cvlanTags" name="cvlan-tags" type="inventory.aai.att.com.v9.CvlanTags" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Used to capture the network interfaces of this VCE" /> - <xml-property name="nameProps" value="port-group-name" /> - <xml-property name="indexedProps" value="port-group-id,heat-stack-id,interface-id,interface-name,switch-name" /> - <xml-property name="dependentOn" value="vce" /> - <xml-property name="container" value="port-groups" /> - </xml-properties> - </java-type> - - <java-type name="CvlanTags"> - <xml-root-element name="cvlan-tags" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="cvlanTagEntry" name="cvlan-tag-entry" type="inventory.aai.att.com.v9.CvlanTagEntry" /> - </java-attributes> - </java-type> - - <java-type name="CvlanTagEntry"> - <xml-root-element name="cvlan-tag-entry" /> - <java-attributes> - <xml-element java-attribute="cvlanTag" name="cvlan-tag" required="true" type="java.lang.Long" xml-key="true"> - <xml-properties> - <xml-property name="description" value="See mis-na-virtualization-platform.yang" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="dependentOn" value="port-group" /> - <xml-property name="indexedProps" value="cvlan-tag" /> - <xml-property name="container" value="cvlan-tags" /> - </xml-properties> - </java-type> - - <java-type name="Vpes"> - <xml-properties> - <xml-property name="description" value="Virtual provider edge router. In 1504, A&AI will populate this object through an M&P and tool provided to operations." /> - </xml-properties> - <xml-root-element name="vpes" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vpe" name="vpe" type="inventory.aai.att.com.v9.Vpe" /> - </java-attributes> - </java-type> - - <java-type name="Vpe"> - <xml-root-element name="vpe" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded and clients should expect changes to occur in the future to this field as ASDC matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service from ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="License key" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddressPrefixLength" name="ipv4-oam-gateway-address-prefix-length" type="java.lang.Integer"> - <xml-properties> - <xml-property name="description" value="Prefix length for oam-address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamGatewayAddress" name="ipv4-oam-gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Gateway address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="v4Loopback0IpAddress" name="v4-loopback0-ip-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vlanIdOuter" name="vlan-id-outer" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="Temporary location for stag to get to VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="as-number of the VPE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="details regarding the vpe operation" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="indicates whether vpe access uses SSH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.att.com.v9.LInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.att.com.v9.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Relationship-list must include related to info for complex." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,vnf-id,regional-resource-zone,prov-status,service-id" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="vpes" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - </xml-properties> - </java-type> - - <java-type name="Vnfcs"> - <xml-properties> - <xml-property name="description" value="virtual network components associated with a vserver from application controller." /> - </xml-properties> - <xml-root-element name="vnfcs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vnfc" name="vnfc" type="inventory.aai.att.com.v9.Vnfc" /> - </java-attributes> - </java-type> - - <java-type name="Vnfc"> - <xml-root-element name="vnfc" /> - <java-attributes> - <xml-element java-attribute="vnfcName" name="vnfc-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of vnfc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfcFunctionCode" name="vnfc-function-code" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="function code" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfcType" name="vnfc-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="type" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="prov status of this vnfc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by APP-C" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4OamVip" name="ipaddress-v4-oam-vip" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Oam V4 vip address of this vnfc" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true)" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="groupNotation" name="group-notation" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group notation of VNFC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="vnfc-name,prov-status,vnfc-type,vnfc-function-code,ipaddress-v4-oam-vip,in-maint,is-closed-loop-disabled,group-notation" /> - <xml-property name="searchable" value="vnfc-name" /> - <xml-property name="container" value="vnfcs" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="L3Networks"> - <xml-root-element name="l3-networks" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="l3Network" name="l3-network" type="inventory.aai.att.com.v9.L3Network" /> - </java-attributes> - </java-type> - - <java-type name="L3Network"> - <xml-root-element name="l3-network" /> - <java-attributes> - <xml-element java-attribute="networkId" name="network-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Network ID, should be uuid. Unique across A&AI." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkName" name="network-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the network, governed by some naming convention.." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkType" name="network-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the network - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkRole" name="network-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Role the network plans - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkTechnology" name="network-technology" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network technology - who defines these values?" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronNetworkId" name="neutron-network-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron network id of this Interface" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isBoundToVpn" name="is-bound-to-vpn" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Set to true if bound to VPN" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service from ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkRoleInstance" name="network-role-instance" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="network role instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="contrailNetworkFqdn" name="contrail-network-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contrail FQDN for the network" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="physicalNetworkName" name="physical-network-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name associated with the physical network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isProviderNetwork" name="is-provider-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is a provider network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isSharedNetwork" name="is-shared-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is a shared network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="isExternalNetwork" name="is-external-network" required="true" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="boolean indicatating whether or not network is an external network." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnets" name="subnets" type="inventory.aai.att.com.v9.Subnets" /> - <xml-element java-attribute="ctagAssignments" name="ctag-assignments" type="inventory.aai.att.com.v9.CtagAssignments" /> - <xml-element java-attribute="segmentationAssignments" name="segmentation-assignments" type="inventory.aai.att.com.v9.SegmentationAssignments" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" > - <xml-properties> - <xml-property name="description" value="Relates to tenant (or is it a child of tenant), complex, service, vpn-binding" /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Generic network definition" /> - <xml-property name="nameProps" value="network-name" /> - <xml-property name="indexedProps" value="heat-stack-id,network-uuid,service-id,network-id,network-name,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-network-fqdn" /> - <xml-property name="searchable" value="network-id,network-name" /> - <xml-property name="uniqueProps" value="network-id" /> - <xml-property name="container" value="l3-networks" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - <java-type name="NetworkPolicies"> - <xml-root-element name="network-policies" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="networkPolicy" name="network-policy" type="inventory.aai.att.com.v9.NetworkPolicy" /> - </java-attributes> - </java-type> - <java-type name="NetworkPolicy"> - <xml-root-element name="network-policy" /> - <java-attributes> - <xml-element java-attribute="networkPolicyId" name="network-policy-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID representing unique key to this instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkPolicyFqdn" name="network-policy-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contrail FQDN for the policy" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID for the openStack Heat instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="nameProps" value="network-policy-fqdn" /> - <xml-property name="indexedProps" value="network-policy-id,network-policy-fqdn" /> - <xml-property name="searchable" value="network-policy-id,network-policy-fqdn" /> - <xml-property name="uniqueProps" value="network-policy-id" /> - <xml-property name="container" value="network-policies" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - <java-type name="CtagAssignments"> - <xml-root-element name="ctag-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ctagAssignment" name="ctag-assignment" type="inventory.aai.att.com.v9.CtagAssignment" /> - </java-attributes> - </java-type> - - <java-type name="CtagAssignment"> - <xml-root-element name="ctag-assignment" /> - <java-attributes> - <xml-element java-attribute="vlanIdInner" name="vlan-id-inner" required="true" type="java.lang.Long" xml-key="true"> - <xml-properties> - <xml-property name="description" value="id." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="vlan-id-inner" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="ctag-assignments" /> - </xml-properties> - </java-type> - - <java-type name="Subnets"> - <xml-root-element name="subnets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="subnet" name="subnet" type="inventory.aai.att.com.v9.Subnet" /> - </java-attributes> - </java-type> - - <java-type name="Subnet"> - <xml-root-element name="subnet" /> - <java-attributes> - <xml-element java-attribute="subnetId" name="subnet-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Subnet ID, should be UUID." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="subnetName" name="subnet-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name associated with the subnet." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="neutronSubnetId" name="neutron-subnet-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Neutron id of this subnet" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="gatewayAddress" name="gateway-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="gateway ip address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="networkStartAddress" name="network-start-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="network start address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cidrMask" name="cidr-mask" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="cidr mask" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ip version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="dhcpEnabled" name="dhcp-enabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="dhcp enabled" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dhcpStart" name="dhcp-start" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the start address reserved for use by dhcp" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dhcpEnd" name="dhcp-end" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the last address reserved for use by dhcp" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="indexedProps" value="subnet-id,subnet-name" /> - <xml-property name="nameProps" value="subnet-name" /> - <xml-property name="uniqueProps" value="subnet-id" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="subnets" /> - </xml-properties> - </java-type> - - <java-type name="GenericVnfs"> - <xml-properties> - <xml-property name="description" value="Collection of VNFs" /> - </xml-properties> - <xml-root-element name="generic-vnfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="genericVnf" name="generic-vnf" type="inventory.aai.att.com.v9.GenericVnf" /> - </java-attributes> - </java-type> - - <java-type name="GenericVnf"> - <xml-root-element name="generic-vnf" /> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded and clients should expect changes to occur in the future to this field as ASDC matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceId" name="service-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Unique identifier of service from ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceZone" name="regional-resource-zone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Regional way of organizing pservers, source of truth should define values" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this resource by Service Assurance systems." /> - <xml-property name="suggestibleOnSearch" value="true"/> - <xml-property name="suggestionVerbs" value="is,in,at,with,on,off,changed,changing"/> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="License key" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, used by MSO." /> - <xml-property name="suggestibleOnSearch" value="true"/> - <xml-property name="suggestionVerbs" value="is,in,at,with,on,off,changed,changing"/> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of managed by ATT or customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure generic-vnf, also used for troubleshooting and is IP used for traps generated by generic-vnf." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4 Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="nmLanV6Address" name="nm-lan-v6-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 Loopback address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementV6Address" name="management-v6-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 management address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcpu" name="vcpu" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of vcpus ordered for this instance of VNF, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vcpuUnits" name="vcpu-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vcpu, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vmemory" name="vmemory" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of GB of memory ordered for this instance of VNF, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vmemoryUnits" name="vmemory-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vmemory, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdisk" name="vdisk" type="java.lang.Long"> - <xml-properties> - <xml-property name="description" value="number of vdisks ordered for this instance of VNF, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vdiskUnits" name="vdisk-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="units associated with vdisk, used for VNFs with no vservers/flavors" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isClosedLoopDisabled" name="is-closed-loop-disabled" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether closed loop function is enabled on this node" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="summaryStatus" name="summary-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="details regarding the generic-vnf operation" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="encryptedAccessFlag" name="encrypted-access-flag" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="description" value="indicates whether generic-vnf access uses SSH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementAssignmentGroupUuid" name="entitlement-assignment-group-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the Entitlement group used for licensing VNFs" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="entitlementResourceUuid" name="entitlement-resource-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the specific entitlement resource" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseAssignmentGroupUuid" name="license-assignment-group-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the license assignment group" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKeyUuid" name="license-key-uuid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="UUID of the actual license resource" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="asNumber" name="as-number" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="as-number of the VNF" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="regionalResourceSubzone" name="regional-resource-subzone" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="represents sub zone of the rr plane" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.att.com.v9.LInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.att.com.v9.LagInterfaces" /> - <xml-element java-attribute="vfModules" name="vf-modules" type="inventory.aai.att.com.v9.VfModules" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="General purpose VNF" /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="is-closed-loop-disabled,vnf-name2,vnf-type,heat-stack-id,in-maint,vnf-name,vnf-id,regional-resource-zone,prov-status,service-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version" /> - <xml-property name="searchable" value="vnf-id,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="container" value="generic-vnfs" /> - <xml-property name="namespace" value="network" /> - <xml-property name="extends" value="vnf" /> - <xml-property name="containsSuggestibleProps" value="true" /> - <xml-property name="suggestionAliases" value="VNFs" /> - </xml-properties> - </java-type> - - <java-type name="VfModules"> - <xml-properties> - <xml-property name="description" value="Collection of vf-modules, a deployment unit of VNFCs" /> - </xml-properties> - <xml-root-element name="vf-modules" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vfModule" name="vf-module" type="inventory.aai.att.com.v9.VfModule" /> - </java-attributes> - </java-type> - - <java-type name="VfModule"> - <xml-root-element name="vf-module" /> - <java-attributes> - <xml-element java-attribute="vfModuleId" name="vf-module-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique ID of vf-module." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vfModuleName" name="vf-module-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of vf-module" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="orchestration status of this vf-module, mastered by MSO" /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="isBaseVfModule" name="is-base-vf-module" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="used to indicate whether or not this object is base vf module" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelId" name="persona-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model id for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="personaModelVersion" name="persona-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC model version for this resource or service model." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelId" name="widget-model-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary widget model. This maps directly to the A&AI widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="widgetModelVersion" name="widget-model-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="contrailServiceInstanceFqdn" name="contrail-service-instance-fqdn" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="the Contrail unique ID for a service-instance" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="a deployment unit of VNFCs" /> - <xml-property name="indexedProps" value="vf-module-id,vf-module-name,heat-stack-id,persona-model-id,persona-model-version,widget-model-id,widget-model-version,contrail-service-instance-fqdn" /> - <xml-property name="searchable" value="vf-module-id, vf-module-name" /> - <xml-property name="dependentOn" value="generic-vnf" /> - <xml-property name="container" value="vf-modules" /> - </xml-properties> - </java-type> - - - <java-type name="LagLinks"> - <xml-properties> - <xml-property name="description" value="Collection of link aggregation connections" /> - </xml-properties> - <xml-root-element name="lag-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="lagLink" name="lag-link" type="inventory.aai.att.com.v9.LagLink" /> - </java-attributes> - </java-type> - - <java-type name="LagLink"> - <xml-root-element name="lag-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Alphabetical concatenation of lag-interface names" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="LAG links can connect lag-interfaces" /> - <xml-property name="indexedProps" value="link-name" /> - <xml-property name="container" value="lag-links" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Newvces"> - <xml-properties> - <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce." /> - </xml-properties> - <xml-root-element name="newvces" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="newvce" name="newvce" type="inventory.aai.att.com.v9.Newvce" /> - </java-attributes> - </java-type> - - <java-type name="Newvce"> - <xml-root-element name="newvce" /> - <java-attributes> - <xml-element java-attribute="vnfId2" name="vnf-id2" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF, can't use same attribute name right now until we promote this new object" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName" name="vnf-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfName2" name="vnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Alternate name of VNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="vnfType" name="vnf-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="String capturing type of vnf, that was intended to identify the ASDC resource. This field has been overloaded and clients should expect changes to occur in the future to this field as ASDC matures." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="provStatus" name="prov-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Trigger for operational monitoring of this VNF by BAU Service Assurance systems." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="operationalState" name="operational-state" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicator for whether the resource is considered operational" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="licenseKey" name="license-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="License key" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4OamAddress" name="ipv4-oam-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Address tail-f uses to configure vpe, also used for troubleshooting and is IP used for traps generated by VPE (v4-loopback0-ip-address)." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipmentRole" name="equipment-role" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Client should send valid enumerated value, e.g., VPE." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipv4Loopback0Address" name="ipv4-loopback0-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4 Loopback0 address" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Orchestration status of this VNF, mastered by MSO." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="heatStackId" name="heat-stack-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Heat stack id corresponding to this instance, managed by MSO" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="msoCatalogKey" name="mso-catalog-key" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Corresponds to the SDN-C catalog id used to configure this VCE" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="lInterfaces" name="l-interfaces" type="inventory.aai.att.com.v9.LInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="This object fills in the gaps from vce that were incorporated into generic-vnf. This object will be retired with vce." /> - <xml-property name="nameProps" value="vnf-name" /> - <xml-property name="indexedProps" value="vnf-name,vnf-name2,vnf-type,heat-stack-id,prov-status,vnf-id2" /> - <xml-property name="searchable" value="vnf-id2,vnf-name,vnf-name2" /> - <xml-property name="uniqueProps" value="vnf-id2" /> - <xml-property name="container" value="newvces" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="Pnfs"> - <xml-properties> - <xml-property name="description" value="Collection of Physical Network Functions." /> - </xml-properties> - <xml-root-element name="pnfs" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="pnf" name="pnf" type="inventory.aai.att.com.v9.Pnf" /> - </java-attributes> - </java-type> - - <java-type name="Pnf"> - <xml-root-element name="pnf" /> - <java-attributes> - <xml-element java-attribute="pnfName" name="pnf-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="unique name of Physical Network Function." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfName2" name="pnf-name2" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="name of Physical Network Function." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfName2Source" name="pnf-name2-source" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="source of name2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="pnfId" name="pnf-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="id of pnf" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipType" name="equip-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment type. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipVendor" name="equip-vendor" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment vendor. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="equipModel" name="equip-model" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Equipment model. Source of truth should define valid values." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="identifier of managed by ATT or customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipaddressV4Oam" name="ipaddress-v4-oam" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ipv4-oam-address with new naming convention for IP addresses" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="swVersion" name="sw-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="sw-version is the version of SW for the hosted application on the PNF." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="orchestrationStatus" name="orchestration-status" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="orchestration-status is the status of orchestration on the PNF." /> - </xml-properties> - </xml-element> - <xml-element default-value="false" required="true" java-attribute="inMaint" name="in-maint" type="java.lang.Boolean"> - <xml-properties> - <xml-property name="defaultValue" value="false"/> - <xml-property name="description" value="Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="frameId" name="frame-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ID of the physical frame (relay rack) where pnf is installed." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="pInterfaces" name="p-interfaces" type="inventory.aai.att.com.v9.PInterfaces" /> - <xml-element java-attribute="lagInterfaces" name="lag-interfaces" type="inventory.aai.att.com.v9.LagInterfaces" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="PNF represents a physical network function. typically equipment used in the D1 world. in 1607, this will be populated by SDN-C to represent a premises router that a uCPE connects to. But this can be used to represent any physical device that is not an AIC node or uCPE." /> - <xml-property name="indexedProps" value="pnf-name,orchestration-status" /> - <xml-property name="searchable" value="pnf-name" /> - <xml-property name="uniqueProps" value="pnf-name" /> - <xml-property name="container" value="pnfs" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="PhysicalLinks"> - <xml-properties> - <xml-property name="description" value="Collection of physical connections, typically between p-interfaces" /> - </xml-properties> - <xml-root-element name="physical-links" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="physicalLink" name="physical-link" type="inventory.aai.att.com.v9.PhysicalLink" /> - </java-attributes> - </java-type> - - <java-type name="PhysicalLink"> - <xml-root-element name="physical-link" /> - <java-attributes> - <xml-element java-attribute="linkName" name="link-name" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="e.g., hostnameA_p-connection_nameA_hostnameZ+p_connection-nameZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedValue" name="speed-value" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the numeric part of the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="speedUnits" name="speed-units" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Captures the units corresponding to the speed" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="circuitId" name="circuit-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Circuit it" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dualMode" name="dual-mode" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Dual access mode (e.g., primary, secondary" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="managementOption" name="management-option" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="To provide information on who manages this circuit. A&AI or 3rd party transport provider" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="serviceProviderName" name="service-provider-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the service Provider on this link." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Collection of physical connections, typically between p-interfaces" /> - <xml-property name="indexedProps" value="circuit-id,link-name" /> - <xml-property name="alternateKeys1" value="circuit-id" /> - <xml-property name="container" value="physical-links" /> - <xml-property name="namespace" value="network" /> - <xml-property name="searchable" value="link-name,circuit-id" /> - </xml-properties> - </java-type> - - <java-type name="VigServers"> - <xml-root-element name="vig-servers" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="vigServer" name="vig-server" type="inventory.aai.att.com.v9.VigServer" /> - </java-attributes> - </java-type> - - <java-type name="VigServer"> - <xml-root-element name="vig-server" /> - <java-attributes> - <xml-element java-attribute="vigAddressType" name="vig-address-type" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="indicates whether the VIG is for AVPN or INTERNET" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV4Vig" name="ipaddress-v4-vig" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v4 IP of the vig server" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="ipaddressV6Vig" name="ipaddress-v6-vig" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="v6 IP of the vig server" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="vig-server contains information about a vig server used for IPSec-configuration. Populated by SDN-C from 1607" /> - <xml-property name="indexedProps" value="vig-address-type" /> - <xml-property name="dependentOn" value="ipsec-configuration" /> - <xml-property name="container" value="vig-servers" /> - </xml-properties> - </java-type> - - <java-type name="IpsecConfigurations"> - <xml-root-element name="ipsec-configurations" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="ipsecConfiguration" name="ipsec-configuration" type="inventory.aai.att.com.v9.IpsecConfiguration" /> - </java-attributes> - </java-type> - - <java-type name="IpsecConfiguration"> - <xml-root-element name="ipsec-configuration" /> - <java-attributes> - <xml-element java-attribute="ipsecConfigurationId" name="ipsec-configuration-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="UUID of this configuration" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedVigAddressType" name="requested-vig-address-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicate the type of VIG server like AVPN, INTERNET, BOTH" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedEncryptionStrength" name="requested-encryption-strength" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encryption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedDmzType" name="requested-dmz-type" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="ATT can offer a shared DMZ or a DMZ specific to a customer" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sharedDmzNetworkAddress" name="shared-dmz-network-address" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Network address of shared DMZ" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="requestedCustomerName" name="requested-customer-name" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="If the DMZ is a custom DMZ, this field will indicate the customer information" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikeVersion" name="ike-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="can be 1 or 2" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1Authentication" name="ikev1-authentication" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Contains values like md5, sha1, sha256, sha384" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1Encryption" name="ikev1-encryption" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encyption values like 3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1DhGroup" name="ikev1-dh-group" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Diffie-Hellman group like DH-GROUP2, DH-GROUP5, DH-GROUP14" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1AmGroupId" name="ikev1-am-group-id" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Group name defined in VIG for clients using aggressive mode" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1AmPassword" name="ikev1-am-password" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="pre-shared key for the above group name " /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ikev1SaLifetime" name="ikev1-sa-lifetime" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Lifetime for IKEv1 SA" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecAuthentication" name="ipsec-authentication" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="md5, sha1, sha256, sha384" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecEncryption" name="ipsec-encryption" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="3des-cbc, des-cbc, aes-128-cbc, aes-192-cbc, aes-265-cbc" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecSaLifetime" name="ipsec-sa-lifetime" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Life time for IPSec SA" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="ipsecPfs" name="ipsec-pfs" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="enable PFS or not" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="xauthUserId" name="xauth-userid" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="user ID for xAuth, sm-user,ucpeHostName,nmteHostName" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="xauthUserPassword" name="xauth-user-password" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Encrypted using the Juniper $9$ algorithm" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dpdInterval" name="dpd-interval" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="The time between DPD probe" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="dpdFrequency" name="dpd-frequency" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Maximum number of DPD before claiming the tunnel is down" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - <xml-element java-attribute="vigServers" name="vig-servers" type="inventory.aai.att.com.v9.VigServers" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="IPSec configuration node will contain various configuration data for the NMTE VNF. This node will have an edge to the generic-vnf (vnf type = TE). Starting 1607, this data will be populated by SDN-C" /> - <xml-property name="indexedProps" value="ipsec-configuration-id" /> - <xml-property name="uniqueProps" value="ipsec-configuration-id" /> - <xml-property name="container" value="ipsec-configurations" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - - <java-type name="NotificationEvent"> - <xml-root-element name="notification-event" /> - <java-attributes> - <xml-element java-attribute="cambriaPartition" name="cambria.partition" type="java.lang.String" /> - <xml-element java-attribute="eventHeader" name="event-header" type="inventory.aai.att.com.v9.NotificationEventHeader" /> - <xml-any-element java-attribute="entity" /> - </java-attributes> - </java-type> - <java-type name="NotificationEventHeader"> - <xml-root-element name="notification-event-header" /> - <java-attributes> - <xml-element java-attribute="id" name="id" type="java.lang.String" /> - <xml-element java-attribute="timestamp" name="timestamp" type="java.lang.String" /> - <xml-element java-attribute="sourceName" name="source-name" type="java.lang.String" /> - <xml-element java-attribute="domain" name="domain" type="java.lang.String" /> - <xml-element java-attribute="sequenceNumber" name="sequence-number" type="java.lang.String" /> - <xml-element java-attribute="severity" name="severity" type="java.lang.String" /> - <xml-element java-attribute="eventType" name="event-type" type="java.lang.String" /> - <xml-element java-attribute="version" name="version" type="java.lang.String" /> - <xml-element java-attribute="action" name="action" type="java.lang.String" /> - <xml-element java-attribute="entityType" name="entity-type" type="java.lang.String" /> - <xml-element java-attribute="topEntityType" name="top-entity-type" type="java.lang.String" /> - <xml-element java-attribute="entityLink" name="entity-link" type="java.lang.String" /> - <xml-element java-attribute="status" name="status" type="java.lang.String" /> - </java-attributes> - </java-type> - <java-type name="AaiInternal"> - <xml-root-element name="aai-internal" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="reservedPropNames" name="reserved-prop-names" type="inventory.aai.att.com.v9.ReservedPropNames" /> - <xml-element container-type="java.util.ArrayList" java-attribute="edgePropNames" name="edge-prop-names" type="inventory.aai.att.com.v9.EdgePropNames" /> - </java-attributes> - </java-type> - <java-type name="ReservedPropNames"> - <xml-properties> - <xml-property name="description" value="Internal map to define some reserved properties of a vertex" /> - <xml-property name="uniqueProps" value="aai-unique-key" /> - <xml-property name="indexedProps" value="aai-unique-key,source-of-truth,aai-node-type" /> - </xml-properties> - <xml-root-element name="reserved-prop-names" /> - <java-attributes> - <xml-element java-attribute="lastModSourceOfTruth" name="last-mod-source-of-truth" type="java.lang.String" /> - <xml-element java-attribute="aaiNodeType" name="aai-node-type" type="java.lang.String" /> - <xml-element java-attribute="aaiCreatedTs" name="aai-created-ts" type="java.lang.Long" /> - <xml-element java-attribute="aaiUniqueKey" name="aai-unique-key" type="java.lang.String" /> - <xml-element java-attribute="aaiLastModTs" name="aai-last-mod-ts" type="java.lang.Long" /> - <xml-element java-attribute="sourceOfTruth" name="source-of-truth" type="java.lang.String" /> - </java-attributes> - </java-type> - <java-type name="EdgePropNames"> - <!-- NOTE that the names of these properties are not consistent and are in mixed case and hyphen case for now --> - <xml-properties> - <xml-property name="description" value="Internal map to define the properties of an edge and interpret the map EdgeRules" /> - <xml-property name="edgeInfo" value="edgeLabel,direction,multiplicityRule,isParent,usesResource,hasDelTarget,SVC-INFRA,SVC-INFRA-REV" /> - </xml-properties> - <xml-root-element name="edge-prop-names" /> - <java-attributes> - <xml-element java-attribute="edgeLabel" name="edgeLabel" type="java.lang.String" /> - <xml-element java-attribute="direction" name="direction" type="java.lang.String" /> - <xml-element java-attribute="multiplicityRule" name="multiplicityRule" type="java.lang.String" /> - <xml-element java-attribute="isParent" name="isParent" type="java.lang.Boolean" /> - <xml-element java-attribute="usesResource" name="usesResource" type="java.lang.Boolean" /> - <xml-element java-attribute="hasDelTarget" name="hasDelTarget" type="java.lang.Boolean" /> - <xml-element java-attribute="SVC-INFRA" name="SVC-INFRA" type="java.lang.String" /> - <xml-element java-attribute="SVC-INFRA-REV" name="SVC-INFRA-REV" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="Models"> - <xml-properties> - <xml-property name="description" value="Collection of subgraph definitions provided by ASDC to describe the inventory assets and their connections related to ASDC models" /> - </xml-properties> - <xml-root-element name="models" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="model" name="model" type="inventory.aai.att.com.v9.Model" /> - </java-attributes> - </java-type> - - <java-type name="Model"> - <xml-properties> - <xml-property name="description" value="Subgraph definition provided by ASDC to describe an inventory asset and its connections related to ASDC models" /> - <xml-property name="nameProps" value="model-name,model-type" /> - <xml-property name="indexedProps" value="model-name-version-id,model-type,model-name,model-id,model-version" /> - <xml-property name="alternateKeys1" value="model-id,model-version" /> - <xml-property name="uniqueProps" value="model-name-version-id" /> - <xml-property name="container" value="models" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - <xml-root-element name="model" /> - <java-attributes> - <xml-element java-attribute="modelNameVersionId" name="model-name-version-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique identifier corresponding to one version of a model in ASDC" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelType" name="model-type" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Type of the model, e.g., service, resource, widget, etc." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelName" name="model-name" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Name of the model, which can change from version to version." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelId" name="model-id" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Invariant unique ID which does not change from version to version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelVersion" name="model-version" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Version" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelDescription" name="model-description" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Description" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.att.com.v9.ModelElements" /> - <xml-element java-attribute="metadata" name="metadata" type="inventory.aai.att.com.v9.Metadata" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ModelElements"> - <xml-root-element name="model-elements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelElement" name="model-element" type="inventory.aai.att.com.v9.ModelElement" /> - </java-attributes> - </java-type> - - <java-type name="ModelElement"> - <xml-properties> - <xml-property name="description" value="Defines how other models combine to make up a higher-level model." /> - <xml-property name="uniqueProps" value="model-element-uuid" /> - <xml-property name="indexedProps" value="model-element-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="model-elements" /> - </xml-properties> - <xml-root-element name="model-element" /> - <java-attributes> - <xml-element java-attribute="modelElementUuid" name="model-element-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="newDataDelFlag" name="new-data-del-flag" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Indicates whether this element was created as part of instantiation from this model" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="cardinality" name="cardinality" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="How many of this type of element are required/allowed" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="linkagePoints" name="linkage-point" type="java.lang.String"> - <xml-element-wrapper name="linkage-points" /> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.att.com.v9.ModelElements"> - <xml-properties> - <xml-property name="description" value="Defines how other models combine to make up a higher-level model" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="modelConstraints" name="model-constraints" type="inventory.aai.att.com.v9.ModelConstraints"> - <xml-properties> - <xml-property name="description" value="Describes new constraints on this model element that are not part of that model's definition" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ModelConstraints"> - <xml-root-element name="model-constraints" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="modelConstraint" name="model-constraint" type="inventory.aai.att.com.v9.ModelConstraint" /> - </java-attributes> - </java-type> - - <java-type name="ModelConstraint"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="model-constraint-uuid" /> - <xml-property name="indexedProps" value="model-constraint-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="model-constraints" /> - </xml-properties> - <xml-root-element name="model-constraint" /> - <java-attributes> - <xml-element java-attribute="modelConstraintUuid" name="model-constraint-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constrainedElementSetUuidToReplace" name="constrained-element-set-uuid-to-replace" required="true" type="java.lang.String" /> - <xml-element java-attribute="constrainedElementSets" name="constrained-element-sets" type="inventory.aai.att.com.v9.ConstrainedElementSets" /> - </java-attributes> - </java-type> - - <java-type name="ConstrainedElementSets"> - <xml-root-element name="constrained-element-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="constrainedElementSet" name="constrained-element-set" type="inventory.aai.att.com.v9.ConstrainedElementSet" /> - </java-attributes> - </java-type> - - <java-type name="ConstrainedElementSet"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="constrained-element-set-uuid" /> - <xml-property name="indexedProps" value="constrained-element-set-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="constrained-element-sets" /> - </xml-properties> - <xml-root-element name="constrained-element-set" /> - <java-attributes> - <xml-element java-attribute="constrainedElementSetUuid" name="constrained-element-set-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="checkType" name="check-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="elementChoiceSets" name="element-choice-sets" type="inventory.aai.att.com.v9.ElementChoiceSets" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="ElementChoiceSets"> - <xml-root-element name="element-choice-sets" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="elementChoiceSet" name="element-choice-set" type="inventory.aai.att.com.v9.ElementChoiceSet" /> - </java-attributes> - </java-type> - - <java-type name="ElementChoiceSet"> - <xml-properties> - <xml-property name="description" value="This is how we would capture constraints defining allowed sets of elements." /> - <xml-property name="uniqueProps" value="element-choice-set-uuid" /> - <xml-property name="indexedProps" value="element-choice-set-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="element-choice-sets" /> - </xml-properties> - <xml-root-element name="element-choice-set" /> - <java-attributes> - <xml-element java-attribute="elementChoiceSetUuid" name="element-choice-set-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="elementChoiceSetName" name="element-choice-set-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="cardinality" name="cardinality" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="modelElements" name="model-elements" type="inventory.aai.att.com.v9.ModelElements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueries"> - <xml-root-element name="named-queries" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="namedQuery" name="named-query" type="inventory.aai.att.com.v9.NamedQuery" /> - </java-attributes> - </java-type> - - <java-type name="NamedQuery"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="nameProps" value="named-query-name" /> - <xml-property name="uniqueProps" value="named-query-uuid" /> - <xml-property name="indexedProps" value="named-query-uuid,named-query-name" /> - <xml-property name="container" value="named-queries" /> - <xml-property name="namespace" value="service-design-and-creation" /> - </xml-properties> - <xml-root-element name="named-query" /> - <java-attributes> - <xml-element java-attribute="namedQueryUuid" name="named-query-uuid" required="true" type="java.lang.String" xml-key="true" /> - <xml-element java-attribute="namedQueryName" name="named-query-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="namedQueryVersion" name="named-query-version" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="requiredInputParams" name="required-input-param" type="java.lang.String"> - <xml-element-wrapper name="required-input-params" /> - </xml-element> - <xml-element java-attribute="description" name="description" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.att.com.v9.NamedQueryElements" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueryElements"> - <xml-root-element name="named-query-elements" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="namedQueryElement" name="named-query-element" type="inventory.aai.att.com.v9.NamedQueryElement" /> - </java-attributes> - </java-type> - - <java-type name="NamedQueryElement"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="named-query-element-uuid" /> - <xml-property name="indexedProps" value="named-query-element-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="named-query-elements" /> - </xml-properties> - <xml-root-element name="named-query-element" /> - <java-attributes> - <xml-element java-attribute="namedQueryElementUuid" name="named-query-element-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="propertyLimitDesc" name="property-limit-desc" type="java.lang.String" /> - <xml-element java-attribute="doNotOutput" name="do-not-output" type="java.lang.String" /> - <xml-element java-attribute="namedQueryElements" name="named-query-elements" type="inventory.aai.att.com.v9.NamedQueryElements" /> - <xml-element java-attribute="relatedLookups" name="related-lookups" type="inventory.aai.att.com.v9.RelatedLookups" /> - <xml-element java-attribute="propertyConstraints" name="property-constraints" type="inventory.aai.att.com.v9.PropertyConstraints" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="RelatedLookups"> - <xml-root-element name="related-lookups" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="relatedLookup" name="related-lookup" type="inventory.aai.att.com.v9.RelatedLookup" /> - </java-attributes> - </java-type> - - <java-type name="RelatedLookup"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="related-lookup-uuid" /> - <xml-property name="indexedProps" value="related-lookup-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="related-lookups" /> - </xml-properties> - <xml-root-element name="related-lookup" /> - <java-attributes> - <xml-element java-attribute="relatedLookupUuid" name="related-lookup-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="sourceNodeType" name="source-node-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="sourceNodeProperty" name="source-node-property" required="true" type="java.lang.String" /> - <xml-element java-attribute="targetNodeType" name="target-node-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="targetNodeProperty" name="target-node-property" required="true" type="java.lang.String" /> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyCollectList" name="property-collect-list" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - </java-type> - - <java-type name="PropertyConstraints"> - <xml-root-element name="property-constraints" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="propertyConstraint" name="property-constraint" type="inventory.aai.att.com.v9.PropertyConstraint" /> - </java-attributes> - </java-type> - - <java-type name="PropertyConstraint"> - <xml-properties> - <xml-property name="description" value="TBD" /> - <xml-property name="uniqueProps" value="property-constraint-uuid" /> - <xml-property name="indexedProps" value="property-constraint-uuid" /> - <xml-property name="allowDirectRead" value="true" /> - <xml-property name="allowDirectWrite" value="false" /> - <xml-property name="container" value="property-constraints" /> - </xml-properties> - <xml-root-element name="property-constraint" /> - <java-attributes> - <xml-element java-attribute="propertyConstraintUuid" name="property-constraint-uuid" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="autoGenerateUuid" value="true" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="constraintType" name="constraint-type" required="true" type="java.lang.String" /> - <xml-element java-attribute="property-name" name="property-name" required="true" type="java.lang.String" /> - <xml-element java-attribute="property-value" name="property-value" required="true" type="java.lang.String" /> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ModelAndNamedQuerySearch"> - <xml-properties> - <xml-property name="description" value="ModelAndNamedQuerySearch holds query-parameters and instance-properties for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="model-and-named-query-search" /> - <java-attributes> - <xml-element java-attribute="queryParameters" name="query-parameters" type="inventory.aai.att.com.v9.QueryParameters" /> - <xml-element java-attribute="instanceFilters" name="instance-filters" type="inventory.aai.att.com.v9.InstanceFilters" /> - <xml-element java-attribute="topNodeType" name="top-node-type" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="QueryParameters"> - <xml-properties> - <xml-property name="description" value="QueryParameters for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="query-parameters" /> - <java-attributes> - <xml-element java-attribute="namedQuery" name="named-query" type="inventory.aai.att.com.v9.NamedQuery" /> - <xml-element java-attribute="model" name="model" type="inventory.aai.att.com.v9.Model" /> - </java-attributes> - </java-type> - - <java-type name="InstanceFilters"> - <xml-properties> - <xml-property name="description" value="InstanceFilters for performing a named-query or model query" /> - </xml-properties> - <xml-root-element name="instance-filters" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="instanceFilter" name="instance-filter" type="inventory.aai.att.com.v9.InstanceFilter" /> - </java-attributes> - </java-type> - - <java-type name="InstanceFilter"> - <xml-properties> - <xml-property name="description" value="InstanceFilter for performing a named-query or model query" /> - <xml-property name="container" value="instance-filters" /> - </xml-properties> - <xml-root-element name="instance-filter" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="any" lax="true" name="any" /> - </java-attributes> - </java-type> - - <java-type name="Properties"> - <xml-properties> - <xml-property name="description" value="Property holder for query properties or instance properties" /> - </xml-properties> - <xml-root-element name="properties" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-element java-attribute="propertyValue" name="property-value" type="java.lang.String" /> - </java-attributes> - </java-type> - - <java-type name="ResponseList"> - <xml-properties> - <xml-property name="description" value="Response container for the results of a named-query or model query" /> - </xml-properties> - <xml-root-element name="response-list" /> - <java-attributes> - <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.att.com.v9.InventoryResponseItems" /> - </java-attributes> - </java-type> - - <java-type name="InventoryResponseItems"> - <xml-properties> - <xml-property name="description" value="Container for inventory items in response list" /> - <xml-property name="container" value="response-list" /> - </xml-properties> - <xml-root-element name="inventory-response-items" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="inventoryResponseItem" name="inventory-response-item" type="inventory.aai.att.com.v9.InventoryResponseItem" /> - </java-attributes> - </java-type> - - <java-type name="InventoryResponseItem"> - <xml-properties> - <xml-property name="description" value="Inventory item for response list" /> - <xml-property name="container" value="inventory-response-items" /> - </xml-properties> - <xml-root-element name="inventory-response-item" /> - <java-attributes> - <xml-element java-attribute="modelName" name="model-name" type="java.lang.String" /> - <xml-any-element java-attribute="item" /> - <xml-element java-attribute="extraProperties" name="extra-properties" type="inventory.aai.att.com.v9.ExtraProperties" /> - <xml-element java-attribute="inventoryResponseItems" name="inventory-response-items" type="inventory.aai.att.com.v9.InventoryResponseItems" /> - </java-attributes> - </java-type> - - <java-type name="ExtraProperties"> - <xml-properties> - <xml-property name="description" value="Extra properties for inventory item for response list" /> - </xml-properties> - <xml-root-element name="extra-properties" /> - <java-attributes> - <xml-any-element container-type="java.util.ArrayList" java-attribute="extraProperty" name="extra-property" type="inventory.aai.att.com.v9.ExtraProperty" /> - </java-attributes> - </java-type> - - <java-type name="ExtraProperty"> - <xml-root-element name="extra-property" /> - <java-attributes> - <xml-element java-attribute="propertyName" name="property-name" type="java.lang.String" /> - <xml-any-element java-attribute="propertyValue" lax="true" name="property-value" /> - </java-attributes> - </java-type> - - <java-type name="RouteTableReferences"> - <xml-properties> - <xml-property name="description" value="Collection of openstack route table references" /> - </xml-properties> - <xml-root-element name="route-table-references" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="routeTableReference" name="route-table-reference" type="inventory.aai.att.com.v9.RouteTableReference" /> - </java-attributes> - </java-type> - - <java-type name="RouteTableReference"> - <xml-root-element name="route-table-reference" /> - <java-attributes> - <xml-element java-attribute="routeTableReferenceId" name="route-table-reference-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="routeTableReferenceFqdn" name="route-table-reference-fqdn" required="true" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="FQDN entry in the route table." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - - <xml-properties> - <xml-property name="description" value="Openstack route table reference." /> - <xml-property name="nameProps" value="route-table-reference-fqdn" /> - <xml-property name="uniqueProps" value="route-table-reference-id" /> - <xml-property name="indexedProps" value="route-table-reference-id,route-table-reference-fqdn" /> - <xml-property name="container" value="route-table-references" /> - <xml-property name="namespace" value="network" /> - </xml-properties> - </java-type> - - <java-type name="SegmentationAssignments"> - <xml-properties> - <xml-property name="description" value="Collection of openstack segmentation assignments" /> - </xml-properties> - <xml-root-element name="segmentation-assignments" /> - <java-attributes> - <xml-element container-type="java.util.ArrayList" java-attribute="segmentationAssignment" name="segmentation-assignment" type="inventory.aai.att.com.v9.SegmentationAssignment" /> - </java-attributes> - </java-type> - - <java-type name="SegmentationAssignment"> - <xml-root-element name="segmentation-assignment" /> - <java-attributes> - <xml-element java-attribute="segmentationId" name="segmentation-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Route Table Reference id, UUID assigned to this instance." /> - </xml-properties> - </xml-element> - <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> - <xml-properties> - <xml-property name="description" value="Concurrency value" /> - </xml-properties> - </xml-element> - <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.att.com.v9.RelationshipList" /> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Openstack segmentation assignment." /> - <xml-property name="indexedProps" value="segmentation-id" /> - <xml-property name="dependentOn" value="l3-network" /> - <xml-property name="container" value="segmentation-assignments" /> - </xml-properties> - </java-type> - <java-type name="Vnf"> - <xml-root-element name="vnf"/> - <java-attributes> - <xml-element java-attribute="vnfId" name="vnf-id" required="true" type="java.lang.String" xml-key="true"> - <xml-properties> - <xml-property name="description" value="Unique id of VNF. This is unique across the graph." /> - </xml-properties> - </xml-element> - </java-attributes> - <xml-properties> - <xml-property name="description" value="Abstract vnf class" /> - <xml-property name="indexedProps" value="vnf-id" /> - <xml-property name="uniqueProps" value="vnf-id" /> - <xml-property name="inheritors" value="vce,vpe,generic-vnf" /> - <xml-property name="abstract" value="true" /> - </xml-properties> - </java-type> - </java-types> -</xml-bindings>
\ No newline at end of file diff --git a/kubernetes/aai/charts/aai-sparky-be/templates/configmap.yaml b/kubernetes/aai/charts/aai-sparky-be/templates/configmap.yaml index 68fa1e4966..d827c4eb36 100644 --- a/kubernetes/aai/charts/aai-sparky-be/templates/configmap.yaml +++ b/kubernetes/aai/charts/aai-sparky-be/templates/configmap.yaml @@ -9,14 +9,6 @@ data: apiVersion: v1 kind: ConfigMap metadata: - name: {{ include "common.fullname" . }}-model - namespace: {{ include "common.namespace" . }} -data: -{{ tpl (.Files.Glob "resources/config/model/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: name: {{ include "common.fullname" . }}-portal namespace: {{ include "common.namespace" . }} data: diff --git a/kubernetes/aai/charts/aai-sparky-be/templates/deployment.yaml b/kubernetes/aai/charts/aai-sparky-be/templates/deployment.yaml index 278a32728e..05a808e805 100644 --- a/kubernetes/aai/charts/aai-sparky-be/templates/deployment.yaml +++ b/kubernetes/aai/charts/aai-sparky-be/templates/deployment.yaml @@ -34,6 +34,19 @@ spec: release: {{ .Release.Name }} name: {{ include "common.name" . }} spec: + initContainers: + - name: {{ include "common.name" . }}-inject-models + command: + - /bin/bash + - "-c" + - | + git clone -b {{ .Values.config.gerritBranch }} --single-branch {{ .Values.config.gerritProject }} /tmp/gerrit + cp -rp /tmp/gerrit/data-router/appconfig/model/* /model-dir + image: "{{ .Values.global.repository | default .Values.dockerHubRepository }}/{{ .Values.ubuntuInitImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: modeldir + mountPath: "/model-dir" containers: - name: {{ include "common.name" . }} image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" @@ -69,8 +82,6 @@ spec: - mountPath: /opt/app/sparky/config/aai.properties subPath: aai.properties name: {{ include "common.fullname" . }}-config - - mountPath: /opt/app/sparky/config/model/ - name: {{ include "common.fullname" . }}-model-config - mountPath: /opt/app/sparky/config/portal/ name: {{ include "common.fullname" . }}-portal-config - mountPath: /var/log/onap @@ -78,6 +89,8 @@ spec: - mountPath: /opt/app/sparky/bundleconfig/etc/logback.xml name: {{ include "common.fullname" . }}-log-conf subPath: logback.xml + - name: modeldir + mountPath: /opt/app/sparky/config/model ports: - containerPort: {{ .Values.service.internalPort }} # disable liveness probe when breakpoints set in debugger @@ -125,9 +138,6 @@ spec: - name: {{ include "common.fullname" . }}-config configMap: name: {{ include "common.fullname" . }} - - name: {{ include "common.fullname" . }}-model-config - configMap: - name: {{ include "common.fullname" . }}-model - name: {{ include "common.fullname" . }}-portal-config configMap: name: {{ include "common.fullname" . }}-portal @@ -144,6 +154,8 @@ spec: - name: {{ include "common.fullname" . }}-log-conf configMap: name: {{ include "common.fullname" . }}-log + - name: modeldir + emptyDir: {} restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }} imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-sparky-be/values.yaml b/kubernetes/aai/charts/aai-sparky-be/values.yaml index 34be1befb2..df058a4af2 100644 --- a/kubernetes/aai/charts/aai-sparky-be/values.yaml +++ b/kubernetes/aai/charts/aai-sparky-be/values.yaml @@ -12,11 +12,16 @@ image: onap/sparky-be:v1.1.0 pullPolicy: Always restartPolicy: Always +dockerhubRepository: registry.hub.docker.com +ubuntuInitImage: oomk8s/ubuntu-init:2.0.0 # application configuration config: elasticsearchHttpPort: 9200 keyStorePassword: OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o keyManagerPassword: OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o + gerritBranch: master + gerritProject: http://gerrit.onap.org/r/aai/test-config + # override chart name (sparky-be) to share a common namespace # suffix with parent chart (aai) diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/aai_keystore b/kubernetes/aai/charts/aai-traversal/resources/config/aai_keystore Binary files differnew file mode 100644 index 0000000000..1ddef0c9bd --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/resources/config/aai_keystore diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/aaiconfig.properties b/kubernetes/aai/charts/aai-traversal/resources/config/aaiconfig.properties new file mode 100644 index 0000000000..2452a1e85b --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/resources/config/aaiconfig.properties @@ -0,0 +1,113 @@ +# +# ============LICENSE_START======================================================= +# org.onap.aai +# ================================================================================ +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +# + +#################################################################### +# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE +# TEMPLATE AND *ALL* DATAFILES +#################################################################### + +#################################################################### +# REMEMBER TO THINK ABOUT ENVIRONMENTAL DIFFERENCES AND CHANGE THE +# TEMPLATE AND *ALL* DATAFILES +#################################################################### + +aai.config.checktime=1000 + +# this could come from siteconfig.pl? +aai.config.nodename=AutomaticallyOverwritten + + + +aai.auth.cspcookies_on=false +aai.dbmodel.filename=ex5.json + +aai.server.url.base=https://aai.{{ include "common.namespace" . }}:8443/aai/ +aai.server.url=https://aai.{{ include "common.namespace" . }}:8443/aai/v11/ +aai.global.callback.url=https://aai.{{ include "common.namespace" . }}:8443/aai/ + +aai.tools.enableBasicAuth=true +aai.tools.username=AAI +aai.tools.password=AAI + +aai.truststore.filename=aai_keystore +aai.truststore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0 +aai.keystore.filename=aai_keystore +aai.keystore.passwd.x=OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0 + + +aai.notification.current.version=v11 +aai.notificationEvent.default.status=UNPROCESSED +aai.notificationEvent.default.eventType=AAI-EVENT +aai.notificationEvent.default.domain=dev +aai.notificationEvent.default.sourceName=aai +aai.notificationEvent.default.sequenceNumber=0 +aai.notificationEvent.default.severity=NORMAL +aai.notificationEvent.default.version=v11 +# This one lets us enable/disable resource-version checking on updates/deletes +aai.resourceversion.enableflag=true +aai.logging.maxStackTraceEntries=10 +aai.default.api.version=v11 + + + +# Used by Model-processing code +aai.model.delete.sleep.per.vtx.msec=500 +aai.model.query.resultset.maxcount=50 +aai.model.query.timeout.sec=90 + +# Used by Data Grooming +aai.grooming.default.max.file=150 +aai.grooming.default.sleep.minutes=7 + +aai.model.proc.max.levels=50 +aai.edgeTag.proc.max.levels=50 + +# for transaction log +aai.logging.hbase.interceptor=true +aai.logging.hbase.enabled=true +aai.logging.hbase.logrequest=true +aai.logging.hbase.logresponse=true + +# for gremlin server +aai.server.rebind=g +hbase.table.name=aailogging.dev +hbase.table.timestamp.format=YYYYMMdd-HH:mm:ss:SSS +hbase.zookeeper.quorum=localhost +hbase.zookeeper.property.clientPort=2181 +hbase.zookeeper.znode.parent=/hbase + +aai.logging.trace.enabled=true +aai.logging.trace.logrequest=false +aai.logging.trace.logresponse=false + +aai.transaction.logging=true +aai.transaction.logging.get=false +aai.transaction.logging.post=false + +#timeout for traversal enabled flag +aai.traversal.timeoutenabled=true + +#timeout app specific +aai.traversal.timeout.appspecific=JUNITTESTAPP1,1|JUNITTESTAPP2,-1|DCAE-CCS,-1|DCAES,-1|AAI-FILEGEN-GFPIP,-1 + +#default timeout limit added for traversal if not overridden (in ms) +aai.traversal.timeoutlimit=180000 diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/application.properties b/kubernetes/aai/charts/aai-traversal/resources/config/application.properties new file mode 100644 index 0000000000..14c59d23f7 --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/resources/config/application.properties @@ -0,0 +1,72 @@ +# The following info parameters are being referenced by ajsc6 +info.build.artifact=aai-traversal +info.build.name=traversal +info.build.description=Traversal Microservice +info.build.version=1.2.0 + +spring.application.name=aai-traversal +spring.jersey.type=filter + +server.contextPath=/ +spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration + +spring.profiles.active=production,dmaap +#The max number of active threads in this pool +server.tomcat.max-threads=200 +#The minimum number of threads always kept alive +server.tomcat.min-Spare-Threads=25 +#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads +server.tomcat.max-idle-time=60000 + + +#Add this properties only if you want to change the URL, AJSC Framework interceptors will intercept +#com.att.ajsc.common.interceptors.PreInterceptor.url=/** +#com.att.ajsc.common.interceptors.PostInterceptor.url=/** + +#Servlet context parameters +server.context_parameters.p-name=value #context parameter with p-name as key and value as value. +kubernetes.namespace={{ include "common.namespace" . }} + +# If you get an application startup failure that the port is already taken +# If thats not it, please check if the key-store file path makes sense +server.local.startpath=aai-traversal/src/main/resources/ +server.basic.auth.location=${server.local.startpath}etc/auth/realm.properties + +server.port=8446 +server.ssl.enabled-protocols=TLSv1.1,TLSv1.2 +server.ssl.key-store=${server.local.startpath}etc/auth/aai_keystore +server.ssl.key-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0) +server.ssl.trust-store=${server.local.startpath}etc/auth/aai_keystore +server.ssl.trust-store-password=password(OBF:1vn21ugu1saj1v9i1v941sar1ugw1vo0) +server.ssl.client-auth=want +server.ssl.key-store-type=JKS + +# JMS bind address host port +jms.bind.address=tcp://localhost:61647 +dmaap.ribbon.eureka.enabled=false +dmaap.ribbon.listOfServers=dmaap.{{ include "common.namespace" . }}:3904 +# Number of milliseconds to wait before making ping requests again +dmaap.ribbon.ServerListRefreshInterval=75000 +dmaap.ribbon.NFLoadBalancerPingInterval=75000 +dmaap.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.AvailabilityFilteringRule +dmaap.ribbon.NFLoadBalancerPingClassName=org.onap.aai.config.HttpPingImpl +dmaap.ribbon.EnableMarkingServerDownOnReachingFailureLimit=true +dmaap.ribbon.ServerDownFailureLimit=1 +# This needs to be verified but it seems that adding this property should automatically +# Make the dmaap client change the url from http to https depending on the server +dmaap.ribbon.securePorts=3905 + +# Custom Dmaap Specific Configuration +dmaap.ribbon.username= +dmaap.ribbon.password= +dmaap.ribbon.health.endpoint=/topics/AAI-EVENT +# Number of seconds to wait for the ping to work and might need to increase this if the pings are all failing +dmaap.ribbon.pingport.timeout=3 + +niws.loadbalancer.dmaap.filterCircuitTripped=true +niws.loadbalancer.dmaap.connectionFailureCountThreshold=3 +niws.loadbalancer.dmaap.circuitTripMaxTimeoutSeconds=180 +#dmaap.ribbon.retryableStatusCodes=404,503 +#dmaap.ribbon.retryableStatusCodes.MaxAutoRetriesNextServer=2 +#dmaap.ribbon.retryableStatusCodes.MaxAutoRetries=2 +#dmaap.ribbon.retryableStatusCodes.OkToRetryOnAllOperations=true diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-cached.properties b/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-cached.properties new file mode 100644 index 0000000000..dd5c3eed66 --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-cached.properties @@ -0,0 +1,50 @@ +# +# ============LICENSE_START======================================================= +# org.onap.aai +# ================================================================================ +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +# + +query.fast-property=true +query.smart-limit=false + +{{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}} +{{- $global := . }} + +# the following parameters are not reloaded automatically and require a manual bounce +storage.backend=cassandra +storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-aai-cassandra-{{ $i }},{{- end }} + +storage.cassandra.keyspace=aaigraph + +storage.cassandra.read-consistency-level=LOCAL_QUORUM +storage.cassandra.write-consistency-level=LOCAL_QUORUM +storage.cassandra.replication-factor=3 +storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy +#storage.cassandra.replication-strategy-options=MTA1cass,3 + +#schema.default=none +storage.lock.wait-time=300 +#caching on +cache.db-cache = true +cache.db-cache-clean-wait = 20 +cache.db-cache-time = 180000 +cache.db-cache-size = 0.3 + +#load graphson file on startup +load.snapshot.file=false diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-realtime.properties b/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-realtime.properties new file mode 100644 index 0000000000..875a8a5977 --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-realtime.properties @@ -0,0 +1,45 @@ +# +# ============LICENSE_START======================================================= +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +# + +query.fast-property=true +query.smart-limit=false + +{{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}} +{{- $global := . }} + +# the following parameters are not reloaded automatically and require a manual bounce +storage.backend=cassandra +storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-aai-cassandra-{{ $i }},{{- end }} + +storage.cassandra.keyspace=aaigraph + +storage.cassandra.read-consistency-level=LOCAL_QUORUM +storage.cassandra.write-consistency-level=LOCAL_QUORUM +storage.cassandra.replication-factor=3 +storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy +#storage.cassandra.replication-strategy-options=MTA1cass,3 + +#schema.default=none +storage.lock.wait-time=300 +# Setting db-cache to false ensure the fastest propagation of changes across servers +cache.db-cache = false + +#load graphson file on startup +load.snapshot.file=false diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/localhost-access-logback.xml b/kubernetes/aai/charts/aai-traversal/resources/config/localhost-access-logback.xml new file mode 100644 index 0000000000..a318796c57 --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/resources/config/localhost-access-logback.xml @@ -0,0 +1,62 @@ +<!-- + + ============LICENSE_START======================================================= + org.onap.aai + ================================================================================ + Copyright © 2017 AT&T Intellectual Property. All rights reserved. + ================================================================================ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ============LICENSE_END========================================================= + + ECOMP is a trademark and service mark of AT&T Intellectual Property. + +--> +<configuration> + <property name="AJSC_HOME" value="${AJSC_HOME:-.}" /> + <appender name="ACCESS" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder"> + <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D</Pattern> + </encoder> + </appender> + <appender-ref ref="ACCESS" /> +</configuration> + +<!-- +%a - Remote IP address +%A - Local IP address +%b - Bytes sent, excluding HTTP headers, or '-' if no bytes were sent +%B - Bytes sent, excluding HTTP headers +%h - Remote host name +%H - Request protocol +%l - Remote logical username from identd (always returns '-') +%m - Request method +%p - Local port +%q - Query string (prepended with a '?' if it exists, otherwise an empty string +%r - First line of the request +%s - HTTP status code of the response +%S - User session ID +%t - Date and time, in Common Log Format format +%u - Remote user that was authenticated +%U - Requested URL path +%v - Local server name +%I - current request thread name (can compare later with stacktraces) + +%z - Custom pattern that parses the cert for the subject +%y - Custom pattern determines rest or dme2 + -->
\ No newline at end of file diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/log/logback.xml b/kubernetes/aai/charts/aai-traversal/resources/config/log/logback.xml deleted file mode 100644 index fb8d8a53bf..0000000000 --- a/kubernetes/aai/charts/aai-traversal/resources/config/log/logback.xml +++ /dev/null @@ -1,345 +0,0 @@ -<configuration debug="false" scan="true" scanPeriod="3 seconds"> - <contextName>${module.ajsc.namespace.name}</contextName> - <jmxConfigurator /> - <property name="logDir" value="/var/log/onap" /> - <property name="componentName" value="aai"></property> - <property name="restLogDirectory" value="${logDir}/${componentName}/rest" /> - <property name="dmaapLogDirectory" value="${logDir}/${componentName}/dmaapAAIEventConsumer" /> - <property name="perfLogsDirectory" value="${logDir}/${componentName}/perf-audit" /> - <!-- default eelf log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - <property name="queueSize" value="256" /> - <property name="maxFileSize" value="50MB" /> - <property name="maxHistory" value="30" /> - <property name="totalSizeCap" value="10GB" /> - <property name="pattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}\t[%thread]\t%-5level\t%logger\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> - <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>ERROR</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <encoder> - <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="SANE"> - <file>${restLogDirectory}/sane.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/sane.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncSANE"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="SANE" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="METRIC"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>INFO</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <file>${restLogDirectory}/${metricsLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncMETRIC"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="METRIC" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="DEBUG"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>DEBUG</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <file>${restLogDirectory}/${debugLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncDEBUG"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="DEBUG" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ERROR"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>WARN</level> - </filter> - <file>${restLogDirectory}/${errorLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncERROR"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="ERROR" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="AUDIT"> - <file>${restLogDirectory}/${auditLogName}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asyncAUDIT"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="AUDIT" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="translog"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>DEBUG</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <file>${restLogDirectory}/translog.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${restLogDirectory}/translog.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="asynctranslog"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <appender-ref ref="translog" /> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumer"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>WARN</level> - </filter> - <File>${dmaapLogDirectory}/${errorLogName}.log</File> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${dmaapLogDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumerDebug"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>DEBUG</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <File>${dmaapLogDirectory}/${debugLogName}.log</File> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${dmaapLogDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="dmaapAAIEventConsumerMetric"> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>INFO</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - <File>${dmaapLogDirectory}/${metricsLogName}.log</File> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${dmaapLogDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder class="org.onap.aai.logging.EcompEncoder"> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <!-- Spring related loggers --> - <logger level="WARN" name="org.springframework" /> - <logger level="WARN" name="org.springframework.beans" /> - <logger level="WARN" name="org.springframework.web" /> - <logger level="WARN" name="com.blog.spring.jms" /> - <!-- AJSC Services (bootstrap services) --> - <logger level="WARN" name="ajsc" /> - <logger level="WARN" name="ajsc.RouteMgmtService" /> - <logger level="WARN" name="ajsc.ComputeService" /> - <logger level="WARN" name="ajsc.VandelayService" /> - <logger level="WARN" name="ajsc.FilePersistenceService" /> - <logger level="WARN" name="ajsc.UserDefinedJarService" /> - <logger level="WARN" name="ajsc.UserDefinedBeansDefService" /> - <logger level="WARN" name="ajsc.LoggingConfigurationService" /> - <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet - logging) --> - <logger level="WARN" name="ajsc.utils" /> - <logger level="WARN" name="ajsc.utils.DME2Helper" /> - <logger level="WARN" name="ajsc.filters" /> - <logger level="WARN" name="ajsc.beans.interceptors" /> - <logger level="WARN" name="ajsc.restlet" /> - <logger level="WARN" name="ajsc.servlet" /> - <logger level="WARN" name="com.att.ajsc" /> - <logger level="WARN" name="com.att.ajsc.csi.logging" /> - <logger level="WARN" name="com.att.ajsc.filemonitor" /> - <!-- Other Loggers that may help troubleshoot --> - <logger level="WARN" name="net.sf" /> - <logger level="WARN" name="org.apache.commons.httpclient" /> - <logger level="WARN" name="org.apache.commons" /> - <logger level="WARN" name="org.apache.coyote" /> - <logger level="WARN" name="org.apache.jasper" /> - <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. - May aid in troubleshooting) --> - <logger level="WARN" name="org.apache.camel" /> - <logger level="WARN" name="org.apache.cxf" /> - <logger level="WARN" name="org.apache.camel.processor.interceptor" /> - <logger level="WARN" name="org.apache.cxf.jaxrs.interceptor" /> - <logger level="WARN" name="org.apache.cxf.service" /> - <logger level="WARN" name="org.restlet" /> - <logger level="WARN" name="org.apache.camel.component.restlet" /> - <!-- logback internals logging --> - <logger level="WARN" name="ch.qos.logback.classic" /> - <logger level="WARN" name="ch.qos.logback.core" /> - <!-- logback jms appenders & loggers definition starts here --> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="auditLogs"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> - <file>${perfLogsDirectory}/Audit-${lrmRVer}-${lrmRO}-${Pid}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${perfLogsDirectory}/Audit-${lrmRVer}-${lrmRO}-${Pid}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="perfLogs"> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> - <file>${perfLogsDirectory}/Perform-${lrmRVer}-${lrmRO}-${Pid}.log</file> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${perfLogsDirectory}/Perform-${lrmRVer}-${lrmRO}-${Pid}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>${maxFileSize}</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <maxHistory>${maxHistory}</maxHistory> - <totalSizeCap>${totalSizeCap}</totalSizeCap> - </rollingPolicy> - <encoder> - <pattern>${pattern}</pattern> - </encoder> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC-audit"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <discardingThreshold>0</discardingThreshold> - <appender-ref ref="Audit-Record-Queue" /> - </appender> - <appender class="ch.qos.logback.classic.AsyncAppender" name="ASYNC-perf"> - <queueSize>${queueSize}</queueSize> - <includeCallerData>true</includeCallerData> - <discardingThreshold>0</discardingThreshold> - <appender-ref ref="Performance-Tracker-Queue" /> - </appender> - <logger additivity="false" level="INFO" name="AuditRecord"> - <appender-ref ref="ASYNC-audit" /> - <appender-ref ref="auditLogs" /> - </logger> - <logger additivity="false" level="INFO" name="AuditRecord_DirectCall"> - <appender-ref ref="ASYNC-audit" /> - <appender-ref ref="auditLogs" /> - </logger> - <logger additivity="false" level="INFO" name="PerfTrackerRecord"> - <appender-ref ref="ASYNC-perf" /> - <appender-ref ref="perfLogs" /> - </logger> - <!-- logback jms appenders & loggers definition ends here --> - <logger additivity="false" level="DEBUG" name="org.onap.aai.interceptors"> - <appender-ref ref="asynctranslog" /> - </logger> - <logger level="DEBUG" name="org.onap.aai.interceptors.PreAaiAjscInterceptor"> - <appender-ref ref="asyncAUDIT" /> - </logger> - <logger level="DEBUG" name="org.onap.aai.interceptors.PostAaiAjscInterceptor"> - <appender-ref ref="asyncAUDIT" /> - </logger> - <logger additivity="false" level="DEBUG" name="org.onap.aai.dmaap"> - <appender-ref ref="dmaapAAIEventConsumer" /> - <appender-ref ref="dmaapAAIEventConsumerDebug" /> - <appender-ref ref="dmaapAAIEventConsumerMetric" /> - </logger> - <logger level="WARN" name="org.apache" /> - <logger level="WARN" name="org.zookeeper" /> - <logger level="WARN" name="com.thinkaurelius" /> - <!-- ============================================================================ --> - <!-- General EELF logger --> - <!-- ============================================================================ --> - <logger additivity="false" level="WARN" name="com.att.eelf"> - <appender-ref ref="asyncDEBUG" /> - <appender-ref ref="asyncERROR" /> - <appender-ref ref="asyncMETRIC" /> - <appender-ref ref="asyncAUDIT" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncDEBUG" /> - <appender-ref ref="asyncERROR" /> - </root> -</configuration> diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/logback.xml b/kubernetes/aai/charts/aai-traversal/resources/config/logback.xml new file mode 100644 index 0000000000..2ed8f5c8f1 --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/resources/config/logback.xml @@ -0,0 +1,365 @@ +<!-- + ============LICENSE_START======================================================= + org.onap.aai + ================================================================================ + Copyright © 2017 AT&T Intellectual Property. All rights reserved. + ================================================================================ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ============LICENSE_END========================================================= + ECOMP is a trademark and service mark of AT&T Intellectual Property. +--> +<configuration scan="true" scanPeriod="60 seconds" debug="false"> + <statusListener class="ch.qos.logback.core.status.NopStatusListener" /> + <property resource="application.properties" /> + <property name="namespace" value="aai-traversal"/> + <property name="AJSC_HOME" value="${AJSC_HOME:-.}" /> + <jmxConfigurator /> + <property name="logDirectory" value="${AJSC_HOME}/logs" /> + <property name="eelfLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> + <property name="eelfAuditLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> + <property name="eelfMetricLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{targetVirtualEntity}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> + <!-- <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n|\r\n', '^'}|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> --> + <property name="eelfErrorLogPattern" value="%ecompStartTime|%X{requestId}|%-10t|%X{serviceName}|%X{partnerName}|%X{targetEntity}|%X{targetServiceName}|%ecompErrorCategory|%ecompResponseCode|%ecompResponseDescription|co=%X{component}:%replace(%replace(%m){'\\|', '!'}){'\r|\n', '^'}%n"/> + <property name="eelfTransLogPattern" value="%ecompStartTime|%date{yyyy-MM-dd'T'HH:mm:ss.SSSZ, UTC}|%X{requestId}|%X{serviceInstanceId}|%-10t|%X{serverName}|%X{serviceName}|%X{partnerName}|%X{statusCode}|%X{responseCode}|%replace(%replace(%X{responseDescription}){'\\|', '!'}){'\r|\n', '^'}|%X{instanceUUID}|%level|%X{severity}|%X{serverIpAddress}|%ecompElapsedTime|%X{server}|%X{clientIpAddress}|%eelfClassOfCaller|%X{unused}|%X{processKey}|%X{customField1}|%X{customField2}|%X{customField3}|%X{customField4}|co=%X{partnerName}:%m%n"/> + <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> + <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> + <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern> + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} + </pattern> + </encoder> + </appender> + <appender name="SANE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/rest/sane.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/sane.log.%d{yyyy-MM-dd}</fileNamePattern> + </rollingPolicy> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n + </pattern> + </encoder> + </appender> + <appender name="asyncSANE" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="SANE" /> + </appender> + <appender name="METRIC" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>INFO</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${logDirectory}/rest/metrics.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/metrics.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfMetricLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncMETRIC" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="METRIC" /> + </appender> + <appender name="DEBUG" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${logDirectory}/rest/debug.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/debug.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncDEBUG" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="DEBUG" /> + </appender> + <appender name="ERROR" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <file>${logDirectory}/rest/error.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/error.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfErrorLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncERROR" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="ERROR" /> + </appender> + <appender name="AUDIT" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/rest/audit.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/audit.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfAuditLogPattern}</pattern> + </encoder> + </appender> + <appender name="asyncAUDIT" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="AUDIT" /> + </appender> + <appender name="translog" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <file>${logDirectory}/rest/translog.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/rest/translog.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfTransLogPattern}</pattern> + </encoder> + </appender> + <appender name="asynctranslog" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>1000</queueSize> + <includeCallerData>true</includeCallerData> + <appender-ref ref="translog" /> + </appender> + <appender name="dmaapAAIEventConsumer" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <File>${logDirectory}/dmaapAAIEventConsumer/error.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/error.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfLogPattern}</pattern> + </encoder> + </appender> + <appender name="dmaapAAIEventConsumerDebug" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>DEBUG</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <File>${logDirectory}/dmaapAAIEventConsumer/debug.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/debug.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfLogPattern}</pattern> + </encoder> + </appender> + <appender name="dmaapAAIEventConsumerMetric" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>INFO</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + <File>${logDirectory}/dmaapAAIEventConsumer/metrics.log</File> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/dmaapAAIEventConsumer/metrics.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfMetricLogPattern}</pattern> + </encoder> + </appender> + <appender name="external" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <file>${logDirectory}/external/external.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/external/external.log.%d{yyyy-MM-dd} + </fileNamePattern> + </rollingPolicy> + <encoder class="org.onap.aai.logging.EcompEncoder"> + <pattern>${eelfLogPattern}</pattern> + </encoder> + </appender> + <logger name="org.onap.aai" level="DEBUG" additivity="false"> + <appender-ref ref="asyncDEBUG" /> + <appender-ref ref="asyncERROR" /> + <appender-ref ref="asyncMETRIC" /> + <appender-ref ref="asyncSANE" /> + </logger> + <!-- Spring related loggers --> + <logger name="org.springframework" level="WARN" /> + <logger name="org.springframework.beans" level="WARN" /> + <logger name="org.springframework.web" level="WARN" /> + <logger name="com.blog.spring.jms" level="WARN" /> + <logger name="com.jayway.jsonpath" level="WARN" /> + <!-- AJSC Services (bootstrap services) --> + <logger name="ajsc" level="WARN" /> + <logger name="ajsc.RouteMgmtService" level="WARN" /> + <logger name="ajsc.ComputeService" level="WARN" /> + <logger name="ajsc.VandelayService" level="WARN" /> + <logger name="ajsc.FilePersistenceService" level="WARN" /> + <logger name="ajsc.UserDefinedJarService" level="WARN" /> + <logger name="ajsc.UserDefinedBeansDefService" level="WARN" /> + <logger name="ajsc.LoggingConfigurationService" level="WARN" /> + <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet + logging) --> + <logger name="org.codehaus.groovy" level="WARN" /> + <logger name="com.att.scamper" level="WARN" /> + <logger name="ajsc.utils" level="WARN" /> + <logger name="ajsc.utils.DME2Helper" level="WARN" /> + <logger name="ajsc.filters" level="WARN" /> + <logger name="ajsc.beans.interceptors" level="WARN" /> + <logger name="ajsc.restlet" level="WARN" /> + <logger name="ajsc.servlet" level="WARN" /> + <logger name="com.att.ajsc" level="WARN" /> + <logger name="com.att.ajsc.csi.logging" level="WARN" /> + <logger name="com.att.ajsc.filemonitor" level="WARN" /> + <logger name="com.netflix.loadbalancer" level="WARN" /> + <logger name="org.apache.zookeeper" level="OFF" /> + <!-- Other Loggers that may help troubleshoot --> + <logger name="net.sf" level="WARN" /> + <logger name="org.apache.commons.httpclient" level="WARN" /> + <logger name="org.apache.commons" level="WARN" /> + <logger name="org.apache.coyote" level="WARN" /> + <logger name="org.apache.jasper" level="WARN" /> + <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging. + May aid in troubleshooting) --> + <logger name="org.apache.camel" level="WARN" /> + <logger name="org.apache.cxf" level="WARN" /> + <logger name="org.apache.camel.processor.interceptor" level="WARN" /> + <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" /> + <logger name="org.apache.cxf.service" level="WARN" /> + <logger name="org.restlet" level="WARN" /> + <logger name="org.apache.camel.component.restlet" level="WARN" /> + <logger name="org.hibernate.validator" level="WARN" /> + <logger name="org.hibernate" level="WARN" /> + <logger name="org.hibernate.ejb" level="OFF" /> + <!-- logback internals logging --> + <logger name="ch.qos.logback.classic" level="WARN" /> + <logger name="ch.qos.logback.core" level="WARN" /> + <logger name="org.eclipse.jetty" level="WARN" /> + <!-- logback jms appenders & loggers definition starts here --> + <appender name="auditLogs" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> + <file>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.log + </file> + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${logDirectory}/perf-audit/Audit-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>9</maxIndex> + </rollingPolicy> + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>5MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern> + </encoder> + </appender> + <appender name="perfLogs" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter" /> + <file>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.log + </file> + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${logDirectory}/perf-audit/Perform-${lrmRVer}-${lrmRO}-${Pid}.%i.log.zip + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>9</maxIndex> + </rollingPolicy> + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>5MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern> + </encoder> + </appender> + <appender name="miscLogs" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/misc/misc.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${logDirectory}/misc/misc.log.%d{yyyy-MM-dd}</fileNamePattern> + </rollingPolicy> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n + </pattern> + </encoder> + </appender> + <logger name="AuditRecord" level="INFO" additivity="false"> + <appender-ref ref="auditLogs" /> + </logger> + <logger name="AuditRecord_DirectCall" level="INFO" additivity="false"> + <appender-ref ref="auditLogs" /> + </logger> + <logger name="PerfTrackerRecord" level="INFO" additivity="false"> + <appender-ref ref="perfLogs" /> + </logger> + <logger name="MiscRecord" level="INFO" additivity="false"> + <appender-ref ref="miscLogs" /> + </logger> + <!-- logback jms appenders & loggers definition ends here --> + <logger name="org.onap.aai.interceptors.post" level="DEBUG" + additivity="false"> + <appender-ref ref="asynctranslog" /> + </logger> + <logger name="org.onap.aai.interceptors.pre.SetLoggingContext" level="DEBUG"> + <appender-ref ref="asyncAUDIT"/> + </logger> + <logger name="org.onap.aai.interceptors.post.ResetLoggingContext" level="DEBUG"> + <appender-ref ref="asyncAUDIT"/> + </logger> + <logger name="org.onap.aai.dmaap" level="DEBUG" additivity="false"> + <appender-ref ref="dmaapAAIEventConsumer" /> + <appender-ref ref="dmaapAAIEventConsumerDebug" /> + <appender-ref ref="dmaapAAIEventConsumerMetric" /> + </logger> + <logger name="org.apache" level="OFF" /> + <logger name="org.zookeeper" level="OFF" /> + <logger name="com.thinkaurelius" level="WARN" /> + <logger name="com.att.aft.dme2" level="WARN" /> + <!-- ============================================================================ --> + <!-- General EELF logger --> + <!-- ============================================================================ --> + <logger name="com.att.eelf" level="WARN" additivity="false"> + <appender-ref ref="asyncDEBUG" /> + <appender-ref ref="asyncERROR" /> + <appender-ref ref="asyncMETRIC" /> + </logger> + <root level="DEBUG"> + <appender-ref ref="external" /> + </root> +</configuration> diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/realm.properties b/kubernetes/aai/charts/aai-traversal/resources/config/realm.properties new file mode 100644 index 0000000000..fb692cc3eb --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/resources/config/realm.properties @@ -0,0 +1,12 @@ +# format : username: password[,rolename ...] +# default username/password: AAI/AAI, MSO/MSO, ModelLoader/ModelLoader... +AAI:OBF:1gfr1ev31gg7,admin +MSO:OBF:1jzx1lz31k01,admin +SDNC:OBF:1itr1i0l1i151isv,admin +DCAE:OBF:1g8u1f9d1f991g8w,admin +POLICY:OBF:1mk61i171ima1im41i0j1mko,admin +ASDC:OBF:1f991j0u1j001f9d,admin +VID:OBF:1jm91i0v1jl9,admin +APPC:OBF:1f991ksf1ksf1f9d,admin +ModelLoader:OBF:1qvu1v2h1sov1sar1wfw1j7j1wg21saj1sov1v1x1qxw,admin +AaiUI:OBF:1gfr1p571unz1p4j1gg7,admin diff --git a/kubernetes/aai/charts/aai-traversal/templates/configmap.yaml b/kubernetes/aai/charts/aai-traversal/templates/configmap.yaml index a7e9428a88..cc88444ae2 100644 --- a/kubernetes/aai/charts/aai-traversal/templates/configmap.yaml +++ b/kubernetes/aai/charts/aai-traversal/templates/configmap.yaml @@ -4,4 +4,61 @@ metadata: name: {{ include "common.fullname" . }}-log namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }} +{{ tpl (.Files.Glob "resources/config/logback.xml").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-localhost-access-log-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/localhost-access-logback.xml").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-db-real-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/janusgraph-realtime.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-db-cached-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/janusgraph-cached.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-aaiconfig-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/aaiconfig.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-springapp-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/application.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-realm-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/realm.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-auth-secret + namespace: {{ include "common.namespace" . }} +type: Opaque +data: +{{ tpl (.Files.Glob "resources/config/aai_keystore").AsSecrets . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/aai/charts/aai-traversal/templates/deployment.yaml b/kubernetes/aai/charts/aai-traversal/templates/deployment.yaml index b4249aede1..bda80a0483 100644 --- a/kubernetes/aai/charts/aai-traversal/templates/deployment.yaml +++ b/kubernetes/aai/charts/aai-traversal/templates/deployment.yaml @@ -245,11 +245,14 @@ spec: } ]' spec: + hostname: aai-traversal initContainers: - command: - /root/ready.py args: - --container-name + - aai-cassandra + - --container-name - aai-resources env: - name: NAMESPACE @@ -265,32 +268,39 @@ spec: image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} env: - - name: CHEF_BRANCH - value: master - - name: AAI_CHEF_ENV - value: simpledemo - - name: AAI_CORE_VERSION - value: {{ .Values.config.aaicoreversion }} - - name: AAI_CHEF_LOC - value: /var/chef/aai-data/environments - - name: CHEF_GIT_URL - value: http://gerrit.onap.org/r/aai - - name: RESOURCES_HOSTNAME - value: aai-resources.{{ include "common.namespace" . }} + - name: DISABLE_UPDATE_QUERY + value: {{ .Values.config.disableUpdateQuery | quote }} + - name: LOCAL_USER_ID + value: {{ .Values.config.userId | quote }} + - name: LOCAL_GROUP_ID + value: {{ .Values.config.groupId | quote }} volumeMounts: - mountPath: /etc/localtime name: localtime readOnly: true - - mountPath: /var/chef/aai-data/chef-config/dev/.knife/solo.rb - subPath: solo.rb - name: aai-chef-config - - mountPath: /var/chef/aai-data/environments/ - name: aai-data + - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-realtime.properties + name: {{ include "common.fullname" . }}-db-real-conf + subPath: janusgraph-realtime.properties + - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-cached.properties + name: {{ include "common.fullname" . }}-db-cached-conf + subPath: janusgraph-cached.properties + - mountPath: /opt/app/aai-traversal/resources/etc/appprops/aaiconfig.properties + name: {{ include "common.fullname" . }}-aaiconfig-conf + subPath: aaiconfig.properties - mountPath: /var/log/onap - name: aai-traversal-logs - - mountPath: /opt/app/aai-traversal/bundleconfig/etc/logback.xml - name: aai-traversal-log-conf + name: {{ include "common.fullname" . }}-logs + - mountPath: /opt/app/aai-traversal/resources/logback.xml + name: {{ include "common.fullname" . }}-log-conf subPath: logback.xml + - mountPath: /opt/app/aai-traversal/resources/localhost-access-logback.xml + name: {{ include "common.fullname" . }}-localhost-access-log-conf + subPath: localhost-access-logback.xml + - mountPath: /opt/app/aai-traversal/resources/application.properties + name: {{ include "common.fullname" . }}-springapp-conf + subPath: application.properties + - mountPath: /opt/app/aai-traversal/resources/etc/auth/aai_keystore + name: {{ include "common.fullname" . }}-auth-sec + subPath: aai_keystore ports: - containerPort: {{ .Values.service.internalPort }} - containerPort: {{ .Values.service.internalPort2 }} @@ -328,30 +338,44 @@ spec: subPath: filebeat.yml name: filebeat-conf - mountPath: /var/log/onap - name: aai-traversal-logs + name: {{ include "common.fullname" . }}-logs - mountPath: /usr/share/filebeat/data - name: aai-traversal-filebeat - + name: {{ include "common.fullname" . }}-filebeat volumes: - name: localtime hostPath: path: /etc/localtime - - name: aai-chef-config - configMap: - name: aai-chef-config - - name: aai-data - configMap: - name: aai-resources-environments - name: filebeat-conf configMap: name: aai-filebeat - - name: aai-traversal-logs + - name: {{ include "common.fullname" . }}-logs emptyDir: {} - - name: aai-traversal-filebeat + - name: {{ include "common.fullname" . }}-filebeat emptyDir: {} - - name: aai-traversal-log-conf + - name: {{ include "common.fullname" . }}-log-conf configMap: name: {{ include "common.fullname" . }}-log + - name: {{ include "common.fullname" . }}-localhost-access-log-conf + configMap: + name: {{ include "common.fullname" . }}-localhost-access-log-configmap + - name: {{ include "common.fullname" . }}-db-real-conf + configMap: + name: {{ include "common.fullname" . }}-db-real-configmap + - name: {{ include "common.fullname" . }}-db-cached-conf + configMap: + name: {{ include "common.fullname" . }}-db-cached-configmap + - name: {{ include "common.fullname" . }}-aaiconfig-conf + configMap: + name: {{ include "common.fullname" . }}-aaiconfig-configmap + - name: {{ include "common.fullname" . }}-springapp-conf + configMap: + name: {{ include "common.fullname" . }}-springapp-configmap + - name: {{ include "common.fullname" . }}-realm-conf + configMap: + name: {{ include "common.fullname" . }}-realm-configmap + - name: {{ include "common.fullname" . }}-auth-sec + secret: + secretName: {{ include "common.fullname" . }}-auth-secret restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }} imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-traversal/templates/job.yaml b/kubernetes/aai/charts/aai-traversal/templates/job.yaml new file mode 100644 index 0000000000..c15c05398f --- /dev/null +++ b/kubernetes/aai/charts/aai-traversal/templates/job.yaml @@ -0,0 +1,139 @@ +# Copyright © 2017-2018 AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ include "common.fullname" . }}-update-query-data + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + template: + metadata: + labels: + app: {{ include "common.name" . }}-job + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + initContainers: + - command: + - /root/ready.py + args: + - --container-name + - aai + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }}-job + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + command: + - bash + - "-c" + - | + set -x + mkdir -p /opt/aai/logroot/AAI-GQ/misc + bash -x /opt/app/aai-traversal/docker-entrypoint.sh install/updateQueryData.sh + env: + - name: LOCAL_USER_ID + value: "1000" + - name: LOCAL_GROUP_ID + value: "1000" + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-realtime.properties + name: {{ include "common.fullname" . }}-db-real-conf + subPath: janusgraph-realtime.properties + - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-cached.properties + name: {{ include "common.fullname" . }}-db-cached-conf + subPath: janusgraph-cached.properties + - mountPath: /opt/app/aai-traversal/resources/etc/appprops/aaiconfig.properties + name: {{ include "common.fullname" . }}-aaiconfig-conf + subPath: aaiconfig.properties + - mountPath: /var/log/onap + name: {{ include "common.fullname" . }}-logs + - mountPath: /opt/app/aai-traversal/resources/logback.xml + name: {{ include "common.fullname" . }}-log-conf + subPath: logback.xml + - mountPath: /opt/app/aai-traversal/resources/localhost-access-logback.xml + name: {{ include "common.fullname" . }}-localhost-access-log-conf + subPath: localhost-access-logback.xml + - mountPath: /opt/app/aai-traversal/resources/application.properties + name: {{ include "common.fullname" . }}-springapp-conf + subPath: application.properties + - mountPath: /opt/app/aai-traversal/resources/etc/auth/aai_keystore + name: {{ include "common.fullname" . }}-auth-sec + subPath: aai_keystore + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + name: filebeat-conf + - mountPath: /opt/aai/logroot/AAI-GQ + name: {{ include "common.fullname" . }}-logs + - mountPath: /usr/share/filebeat/data + name: {{ include "common.fullname" . }}-filebeat + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: filebeat-conf + configMap: + name: aai-filebeat + - name: {{ include "common.fullname" . }}-logs + hostPath: + path: {{ .Values.persistence.mountPath }}/{{ include "common.namespace" . }}/{{ .Values.persistence.mountSubPath }}-update-query + - name: {{ include "common.fullname" . }}-filebeat + emptyDir: {} + - name: {{ include "common.fullname" . }}-log-conf + configMap: + name: {{ include "common.fullname" . }}-log + - name: {{ include "common.fullname" . }}-localhost-access-log-conf + configMap: + name: {{ include "common.fullname" . }}-localhost-access-log-configmap + - name: {{ include "common.fullname" . }}-db-real-conf + configMap: + name: {{ include "common.fullname" . }}-db-real-configmap + - name: {{ include "common.fullname" . }}-db-cached-conf + configMap: + name: {{ include "common.fullname" . }}-db-cached-configmap + - name: {{ include "common.fullname" . }}-aaiconfig-conf + configMap: + name: {{ include "common.fullname" . }}-aaiconfig-configmap + - name: {{ include "common.fullname" . }}-springapp-conf + configMap: + name: {{ include "common.fullname" . }}-springapp-configmap + - name: {{ include "common.fullname" . }}-realm-conf + configMap: + name: {{ include "common.fullname" . }}-realm-configmap + - name: {{ include "common.fullname" . }}-auth-sec + secret: + secretName: {{ include "common.fullname" . }}-auth-secret + restartPolicy: OnFailure + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/aai/charts/aai-traversal/values.yaml b/kubernetes/aai/charts/aai-traversal/values.yaml index 17640338d1..d3d686d9f1 100644 --- a/kubernetes/aai/charts/aai-traversal/values.yaml +++ b/kubernetes/aai/charts/aai-traversal/values.yaml @@ -5,19 +5,25 @@ global: # global defaults nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 # application image repository: nexus3.onap.org:10001 -image: openecomp/aai-traversal:v1.1.0 +image: onap/aai-traversal:1.2-STAGING-latest pullPolicy: Always restartPolicy: Always # application configuration config: aaicoreversion: 1.1.0-SNAPSHOT + userId: 1000 + groupId: 1000 + disableUpdateQuery: true +persistence: + mountPath: /dockerdata-nfs + mountSubPath: aai/aai-traversal # default number of instances replicaCount: 1 diff --git a/kubernetes/aai/templates/configmap.yaml b/kubernetes/aai/templates/configmap.yaml index 78235bcd4f..592e4129d1 100644 --- a/kubernetes/aai/templates/configmap.yaml +++ b/kubernetes/aai/templates/configmap.yaml @@ -14,22 +14,5 @@ metadata: namespace: {{ include "common.namespace" . }} data: {{ tpl (.Files.Glob "resources/config/haproxy/*").AsConfig . | indent 2 }} ---- -# this is a shared resource for subcharts -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-chef-config - namespace: {{ include "common.namespace" . }} -data: -{{ tpl (.Files.Glob "resources/config/aai-data/chef-config/dev/.knife/solo.rb").AsConfig . | indent 2 }} ---- -# this is a shared resource for subcharts -apiVersion: v1 -kind: ConfigMap -metadata: - name: aai-resources-environments - namespace: {{ include "common.namespace" . }} -data: -{{ tpl (.Files.Glob "resources/config/aai-data/environments/*").AsConfig . | indent 2 }} + diff --git a/kubernetes/aai/values.yaml b/kubernetes/aai/values.yaml index b06456800a..5d08268e88 100644 --- a/kubernetes/aai/values.yaml +++ b/kubernetes/aai/values.yaml @@ -22,10 +22,12 @@ global: # global defaults dockerhubRepository: docker.io busyboxImage: busybox readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 restartPolicy: Always + cassandra: + replicas: 3 # application image dockerhubRepository: registry.hub.docker.com diff --git a/kubernetes/appc/charts/appc-cdt/.helmignore b/kubernetes/appc/charts/appc-cdt/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/appc/charts/appc-cdt/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/appc/charts/appc-cdt/Chart.yaml b/kubernetes/appc/charts/appc-cdt/Chart.yaml new file mode 100644 index 0000000000..b7720f7864 --- /dev/null +++ b/kubernetes/appc/charts/appc-cdt/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ONAP APPC Self Service Controller Design Tool +name: appc-cdt +version: 2.0.0 diff --git a/kubernetes/appc/charts/appc-cdt/requirements.yaml b/kubernetes/appc/charts/appc-cdt/requirements.yaml new file mode 100644 index 0000000000..8cddd3029f --- /dev/null +++ b/kubernetes/appc/charts/appc-cdt/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/appc/charts/appc-cdt/templates/NOTES.txt b/kubernetes/appc/charts/appc-cdt/templates/NOTES.txt new file mode 100644 index 0000000000..c4b9989618 --- /dev/null +++ b/kubernetes/appc/charts/appc-cdt/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.fullname" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/appc/charts/appc-cdt/templates/deployment.yaml b/kubernetes/appc/charts/appc-cdt/templates/deployment.yaml new file mode 100644 index 0000000000..a250699474 --- /dev/null +++ b/kubernetes/appc/charts/appc-cdt/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/appc/charts/appc-cdt/templates/service.yaml b/kubernetes/appc/charts/appc-cdt/templates/service.yaml new file mode 100644 index 0000000000..86442a2740 --- /dev/null +++ b/kubernetes/appc/charts/appc-cdt/templates/service.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/appc/charts/appc-cdt/values.yaml b/kubernetes/appc/charts/appc-cdt/values.yaml new file mode 100644 index 0000000000..f09c736176 --- /dev/null +++ b/kubernetes/appc/charts/appc-cdt/values.yaml @@ -0,0 +1,65 @@ +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/appc-cdt-image:1.3.0-SNAPSHOT-latest +pullPolicy: Always + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: appc-cdt + externalPort: 80 + internalPort: 80 + nodePort: 89 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/startODL.sh b/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/startODL.sh index 0b9e63127b..e5f04ca5e2 100755 --- a/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/startODL.sh +++ b/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/startODL.sh @@ -33,8 +33,8 @@ function enable_odl_cluster(){ fi echo "Installing Opendaylight cluster features" - ${ODL_HOME}/bin/client -u karaf feature:install odl-mdsal-clustering - ${ODL_HOME}/bin/client -u karaf feature:install odl-jolokia + ${ODL_HOME}/bin/client feature:install odl-mdsal-clustering + ${ODL_HOME}/bin/client feature:install odl-jolokia echo "Update cluster information statically" hm=$(hostname) @@ -53,13 +53,15 @@ function enable_odl_cluster(){ } ODL_HOME=${ODL_HOME:-/opt/opendaylight/current} -ODL_ADMIN_PASSWORD=${ODL_ADMIN_PASSWORD:-Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U} -SDNC_HOME=${SDNC_HOME:-/opt/onap/sdnc} +ODL_ADMIN_PASSWORD=${ODL_ADMIN_PASSWORD:-admin} +SDNC_HOME=${SDNC_HOME:-/opt/onap/ccsdk} APPC_HOME=${APPC_HOME:-/opt/onap/appc} SLEEP_TIME=${SLEEP_TIME:-120} MYSQL_PASSWD=${MYSQL_PASSWD:-{{.Values.config.dbRootPassword}}} ENABLE_ODL_CLUSTER=${ENABLE_ODL_CLUSTER:-false} +appcInstallStartTime=$(date +%s) + # # Adding the DMAAP_TOPIC_ENV variable into APPC-ASDC-LISTENER properties # @@ -93,17 +95,24 @@ if [ ! -f ${SDNC_HOME}/.installed ] then echo "Installing SDNC database" ${SDNC_HOME}/bin/installSdncDb.sh + echo "Installing APPC database" ${APPC_HOME}/bin/installAppcDb.sh + echo "Starting OpenDaylight" ${ODL_HOME}/bin/start + echo "Waiting ${SLEEP_TIME} seconds for OpenDaylight to initialize" sleep ${SLEEP_TIME} - echo "Inserting modified installFeatures.sh for sdnc" - rm ${SDNC_HOME}/bin/installFeatures.sh - cp ${APPC_HOME}/data/sdncInstallFeatures.sh ${SDNC_HOME}/bin/installFeatures.sh + + echo "Copying a working version of the logging configuration into the opendaylight etc folder" + cp ${APPC_HOME}/data/org.ops4j.pax.logging.cfg ${ODL_HOME}/etc/org.ops4j.pax.logging.cfg + echo "Copying a new version of aaf cadi shiro into the opendaylight deploy folder" + cp ${APPC_HOME}/data/aaf-cadi-shiro.jar ${ODL_HOME}/deploy/aaf-cadi-shiro.jar + echo "Installing SDNC platform features" ${SDNC_HOME}/bin/installFeatures.sh + if [ -x ${SDNC_HOME}/svclogic/bin/install.sh ] then echo "Installing directed graphs" @@ -112,6 +121,7 @@ then echo "Installing APPC platform features" ${APPC_HOME}/bin/installFeatures.sh + if [ -x ${APPC_HOME}/svclogic/bin/install.sh ] then echo "Installing APPC DGs using platform-logic" @@ -126,10 +136,23 @@ then if $ENABLE_ODL_CLUSTER ; then enable_odl_cluster ; fi + echo "Adding a property system.properties for AAF cadi.properties location" + echo "" >> ${ODL_HOME}/etc/system.properties + echo "cadi_prop_files=${APPC_HOME}/data/properties/cadi.properties" >> ${ODL_HOME}/etc/system.properties + echo "" >> ${ODL_HOME}/etc/system.properties + + echo "Copying a working version of the shiro configuration into the opendaylight etc folder" + cp ${APPC_HOME}/data/shiro.ini ${ODL_HOME}/etc/shiro.ini + echo "Restarting OpenDaylight" ${ODL_HOME}/bin/stop + echo "Waiting 60 seconds for OpenDaylight stop to complete" + sleep 60 echo "Installed at `date`" > ${SDNC_HOME}/.installed fi + appcInstallEndTime=$(date +%s) + echo "Total Appc install took $(expr $appcInstallEndTime - $appcInstallStartTime) seconds" + exec ${ODL_HOME}/bin/karaf diff --git a/kubernetes/appc/resources/config/appc/opt/onap/appc/data/properties/appc.properties b/kubernetes/appc/resources/config/appc/opt/onap/appc/data/properties/appc.properties index f4ee6fcfc7..2d98d11a00 100644 --- a/kubernetes/appc/resources/config/appc/opt/onap/appc/data/properties/appc.properties +++ b/kubernetes/appc/resources/config/appc/opt/onap/appc/data/properties/appc.properties @@ -31,9 +31,9 @@ appc.demo.threads.queuesize.max=1000 appc.demo.threads.poolsize.min=1 appc.demo.threads.poolsize.max=2 appc.demo.provider.user=admin -appc.demo.provider.pass=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U +appc.demo.provider.pass=admin appc.demo.provider.url=http://localhost:8181/restconf/operations/appc-provider -appc.provider.vfodl.url=http://admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U@appc-sdnhost.{{.Release.Namespace}}:8282/restconf/config/network-topology:network-topology/topology/topology-netconf/node/NODE_NAME/yang-ext:mount/sample-plugin:sample-plugin/pg-streams/ +appc.provider.vfodl.url=http://admin:admin@appc-sdnhost.{{.Release.Namespace}}:8282/restconf/config/network-topology:network-topology/topology/topology-netconf/node/NODE_NAME/yang-ext:mount/sample-plugin:sample-plugin/pg-streams/ # The properties right below are needed to properly call the Master DG to serve demo purposes appc.service.logic.module.name=APPC @@ -59,7 +59,7 @@ provider1.identity=http://localhost:8181/apidoc/explorer/index.html provider1.tenant1.name=default provider1.tenant1.domain=default provider1.tenant1.userid=admin -provider1.tenant1.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U +provider1.tenant1.password=admin @@ -83,14 +83,14 @@ appc.LCM.topic.read=APPC-LCM-READ appc.LCM.topic.write=APPC-LCM-WRITE appc.LCM.client.name=APPC-EVENT-LISTENER-TEST appc.LCM.provider.user=admin -appc.LCM.provider.pass=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U +appc.LCM.provider.pass=admin appc.LCM.provider.url=http://localhost:8181/restconf/operations/appc-provider-lcm # properties from appc-netconf-adapter-bundle, appc-dg-common, appc-dmaap-adapter-bundle poolMembers=dmaap.{{.Release.Namespace}}:3904 event.pool.members=dmaap.{{.Release.Namespace}}:3904 restconf.user=admin -restconf.pass=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U +restconf.pass=admin # properties found in appc-rest-adapter-bundle, appc-chef-adapter-bundle, appc-iaas-adapter-bundle) @@ -129,4 +129,4 @@ appc.OAM.topic.read=testOAM appc.OAM.topic.write=testOAM appc.OAM.client.name=testOAM appc.OAM.provider.user=admin -appc.OAM.provider.pass=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U +appc.OAM.provider.pass=admin diff --git a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/bin/installSdncDb.sh b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/bin/installSdncDb.sh index 25560fbef4..25560fbef4 100755 --- a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/bin/installSdncDb.sh +++ b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/bin/installSdncDb.sh diff --git a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/bin/startODL.sh b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/bin/startODL.sh index a84893c00f..a84893c00f 100755 --- a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/bin/startODL.sh +++ b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/bin/startODL.sh diff --git a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/data/properties/aaiclient.properties b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/data/properties/aaiclient.properties index b2f7102d8c..b2f7102d8c 100644 --- a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/data/properties/aaiclient.properties +++ b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/data/properties/aaiclient.properties diff --git a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/data/properties/dblib.properties b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/data/properties/dblib.properties index f603977013..f603977013 100644 --- a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/data/properties/dblib.properties +++ b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/data/properties/dblib.properties diff --git a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/data/properties/svclogic.properties b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/data/properties/svclogic.properties index 908d60a089..908d60a089 100644 --- a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/data/properties/svclogic.properties +++ b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/data/properties/svclogic.properties diff --git a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/svclogic/bin/showActiveGraphs.sh b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/svclogic/bin/showActiveGraphs.sh index a568dfdc20..a568dfdc20 100755 --- a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/svclogic/bin/showActiveGraphs.sh +++ b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/svclogic/bin/showActiveGraphs.sh diff --git a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/svclogic/config/svclogic.properties b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/svclogic/config/svclogic.properties index 44ae32f9cc..44ae32f9cc 100644 --- a/kubernetes/appc/resources/config/appc/opt/onap/sdnc/svclogic/config/svclogic.properties +++ b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/svclogic/config/svclogic.properties diff --git a/kubernetes/appc/templates/configmap.yaml b/kubernetes/appc/templates/configmap.yaml index 0574cfcf22..67b409a3e8 100644 --- a/kubernetes/appc/templates/configmap.yaml +++ b/kubernetes/appc/templates/configmap.yaml @@ -4,7 +4,7 @@ metadata: name: {{ include "common.fullname" . }}-onap-sdnc-bin namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/appc/opt/onap/sdnc/bin/*").AsConfig . | indent 2 }} +{{ tpl (.Files.Glob "resources/config/appc/opt/onap/ccsdk/bin/*").AsConfig . | indent 2 }} --- apiVersion: v1 kind: ConfigMap @@ -12,7 +12,7 @@ metadata: name: {{ include "common.fullname" . }}-onap-sdnc-data-properties namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/appc/opt/onap/sdnc/data/properties/*").AsConfig . | indent 2 }} +{{ tpl (.Files.Glob "resources/config/appc/opt/onap/ccsdk/data/properties/*").AsConfig . | indent 2 }} --- apiVersion: v1 kind: ConfigMap @@ -20,7 +20,7 @@ metadata: name: {{ include "common.fullname" . }}-onap-sdnc-svclogic-bin namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/appc/opt/onap/sdnc/svclogic/bin/*").AsConfig . | indent 2 }} +{{ tpl (.Files.Glob "resources/config/appc/opt/onap/ccsdk/svclogic/bin/*").AsConfig . | indent 2 }} --- apiVersion: v1 kind: ConfigMap @@ -28,7 +28,7 @@ metadata: name: {{ include "common.fullname" . }}-onap-sdnc-svclogic-config namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/appc/opt/onap/sdnc/svclogic/config/*").AsConfig . | indent 2 }} +{{ tpl (.Files.Glob "resources/config/appc/opt/onap/ccsdk/svclogic/config/*").AsConfig . | indent 2 }} --- apiVersion: v1 kind: ConfigMap diff --git a/kubernetes/appc/templates/statefulset.yaml b/kubernetes/appc/templates/statefulset.yaml index 6ecfc19342..5da50a5fdf 100644 --- a/kubernetes/appc/templates/statefulset.yaml +++ b/kubernetes/appc/templates/statefulset.yaml @@ -91,25 +91,25 @@ spec: - mountPath: /opt/onap/appc/bin/installAppcDb.sh name: onap-appc-bin subPath: installAppcDb.sh - - mountPath: /opt/onap/sdnc/data/properties/dblib.properties + - mountPath: /opt/onap/ccsdk/data/properties/dblib.properties name: onap-sdnc-data-properties subPath: dblib.properties - - mountPath: /opt/onap/sdnc/data/properties/svclogic.properties + - mountPath: /opt/onap/ccsdk/data/properties/svclogic.properties name: onap-sdnc-data-properties subPath: svclogic.properties - - mountPath: /opt/onap/sdnc/data/properties/aaiclient.properties + - mountPath: /opt/onap/ccsdk/data/properties/aaiclient.properties name: onap-sdnc-data-properties subPath: aaiclient.properties - - mountPath: /opt/onap/sdnc/svclogic/config/svclogic.properties + - mountPath: /opt/onap/ccsdk/svclogic/config/svclogic.properties name: onap-sdnc-svclogic-config subPath: svclogic.properties - - mountPath: /opt/onap/sdnc/svclogic/bin/showActiveGraphs.sh + - mountPath: /opt/onap/ccsdk/svclogic/bin/showActiveGraphs.sh name: onap-sdnc-svclogic-bin subPath: showActiveGraphs.sh - - mountPath: /opt/onap/sdnc/bin/startODL.sh + - mountPath: /opt/onap/ccsdk/bin/startODL.sh name: onap-sdnc-bin subPath: startODL.sh - - mountPath: /opt/onap/sdnc/bin/installSdncDb.sh + - mountPath: /opt/onap/ccsdk/bin/installSdncDb.sh name: onap-sdnc-bin subPath: installSdncDb.sh - mountPath: /var/log/onap diff --git a/kubernetes/appc/values.yaml b/kubernetes/appc/values.yaml index b5a13ef87c..8deb842518 100644 --- a/kubernetes/appc/values.yaml +++ b/kubernetes/appc/values.yaml @@ -19,12 +19,11 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 -# If mountPath is over NFS (e.g. /dockerdata-nfs is NFS mounted between the nodes), uncomment following lines. -# persistence: -# mountPath: /dockerdata + persistence: + mountPath: /dockerdata-nfs ################################################################# # Application configuration defaults. @@ -59,8 +58,9 @@ mysql: dgbuilder: nameOverride: appc-dgbuilder - dbPodName: appc-db - dbServiceName: appc-dbhost + config: + dbPodName: appc-db + dbServiceName: appc-dbhost # default number of instances replicaCount: 3 diff --git a/kubernetes/clamp/charts/mariadb/templates/NOTES.txt b/kubernetes/clamp/charts/mariadb/templates/NOTES.txt new file mode 100644 index 0000000000..57947a65da --- /dev/null +++ b/kubernetes/clamp/charts/mariadb/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/clamp/templates/NOTES.txt b/kubernetes/clamp/templates/NOTES.txt index 91d8ed42f1..57947a65da 100644 --- a/kubernetes/clamp/templates/NOTES.txt +++ b/kubernetes/clamp/templates/NOTES.txt @@ -13,7 +13,7 @@ export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') echo http://$SERVICE_IP:{{ .Values.service.externalPort }} {{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} {{- end }} diff --git a/kubernetes/clamp/values.yaml b/kubernetes/clamp/values.yaml index 8e01f4210f..9d586ac1e1 100644 --- a/kubernetes/clamp/values.yaml +++ b/kubernetes/clamp/values.yaml @@ -19,7 +19,7 @@ global: # global defaults nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.0.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 @@ -40,10 +40,21 @@ debugEnabled: false config: mysqlPassword: strong_pitchou dataRootDir: /dockerdata-nfs - springApplicationJson: '{ - "spring.datasource.camunda.url": "jdbc:mariadb:sequential://clamp-mariadb.{{include "common.namespace" .}}:3306/camundabpm?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647", - "spring.datasource.cldsdb.url": "jdbc:mariadb:sequential://clamp-mariadb.{{include "common.namespace" .}}:3306/cldsdb4?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647" - }' + springApplicationJson: > + { + "spring.datasource.cldsdb.url": "jdbc:mariadb:sequential://clamp-mariadb.{{include "common.namespace" .}}:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3", + "clamp.config.sdc.catalog.url": "https://sdc-be.{{include "common.namespace" .}}.svc.cluster.local:8443/sdc/v1/catalog/", + "clamp.config.sdc.hostUrl": "https://sdc-be.{{include "common.namespace" .}}.svc.cluster.local:8443/", + "clamp.config.sdc.serviceUrl": "https://sdc-be.{{include "common.namespace" .}}.svc.cluster.local:8443/sdc/v1/catalog/services", + "clamp.config.sdc.serviceUsername": "clamp", + "clamp.config.sdc.servicePassword": "b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981", + "clamp.config.dcae.inventory.url": "http://dcaegen2.{{include "common.namespace" .}}.svc.cluster.local:8080", + "clamp.config.dcae.dispatcher.url": "http://dcaegen2.{{include "common.namespace" .}}.svc.cluster.local:8080", + "clamp.config.policy.pdpUrl1": "https://policy-pdp.{{include "common.namespace" .}}.svc.cluster.local:9091/pdp/ , testpdp, alpha123", + "clamp.config.policy.pdpUrl2": "https://policy-pdp.{{include "common.namespace" .}}.svc.cluster.local:9091/pdp/ , testpdp, alpha123", + "clamp.config.policy.papUrl": "https://policy-pap.{{include "common.namespace" .}}.svc.cluster.local:8443/pap/ , testpap, alpha123", + "clamp.config.policy.clientKey": "5CE79532B3A2CB4D132FC0C04BF916A7" + } # subchart configuration mariadb: diff --git a/kubernetes/cli/.helmignore b/kubernetes/cli/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/cli/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/cli/Chart.yaml b/kubernetes/cli/Chart.yaml index 6befea70a8..0eb4ce6c97 100644 --- a/kubernetes/cli/Chart.yaml +++ b/kubernetes/cli/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +description: ONAP Command Line Interface name: cli -version: 0.1.0 +version: 2.0.0 diff --git a/kubernetes/cli/requirements.yaml b/kubernetes/cli/requirements.yaml new file mode 100644 index 0000000000..f639633537 --- /dev/null +++ b/kubernetes/cli/requirements.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + # local reference to common chart, as it is + # a part of this chart's package and will not + # be published independently to a repo (at this point) + repository: '@local' diff --git a/kubernetes/cli/templates/NOTES.txt b/kubernetes/cli/templates/NOTES.txt new file mode 100644 index 0000000000..91d8ed42f1 --- /dev/null +++ b/kubernetes/cli/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/cli/templates/cli-deployment.yaml b/kubernetes/cli/templates/cli-deployment.yaml deleted file mode 100644 index 5afc6f8995..0000000000 --- a/kubernetes/cli/templates/cli-deployment.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableCliCli }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - labels: - app: cli - name: cli - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: cli - template: - metadata: - labels: - app: cli - name: cli - spec: - containers: - - image: {{ .Values.image.cliImage}} - imagePullPolicy: {{ .Values.pullPolicy }} - name: "cli" - env: - - name: CLI_MODE - value: daemon - ports: - - containerPort: 80 - - containerPort: 8080 - name: cli - readinessProbe: - tcpSocket: - port: 80 - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/cli/templates/deployment.yaml b/kubernetes/cli/templates/deployment.yaml new file mode 100644 index 0000000000..f4e2f360fb --- /dev/null +++ b/kubernetes/cli/templates/deployment.yaml @@ -0,0 +1,68 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + - containerPort: {{ .Values.service.internalPort1 }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: CLI_MODE + value: "{{ .Values.config.climode }}" + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/cli/templates/service.yaml b/kubernetes/cli/templates/service.yaml new file mode 100644 index 0000000000..e7e8277771 --- /dev/null +++ b/kubernetes/cli/templates/service.yaml @@ -0,0 +1,47 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }}{{ .Values.service.externalPort }} + - port: {{ .Values.service.externalPort1 }} + targetPort: {{ .Values.service.internalPort1 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort1 }} + name: {{ .Values.service.name }}{{ .Values.service.externalPort1 }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }}{{ .Values.service.externalPort }} + - port: {{ .Values.service.externalPort1 }} + targetPort: {{ .Values.service.internalPort1 }} + name: {{ .Values.service.name }}{{ .Values.service.externalPort1 }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/cli/values.yaml b/kubernetes/cli/values.yaml index f10711f1b4..4c95b9f96b 100644 --- a/kubernetes/cli/values.yaml +++ b/kubernetes/cli/values.yaml @@ -12,8 +12,74 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/cli:v1.1.0 pullPolicy: Always -nodePortPrefix: 302 -image: - cliImage: nexus3.onap.org:10001/onap/cli:v1.1.0 + +# application configuration +config: + climode: daemon + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: cli + externalPort: 8080 + externalPort1: 9090 + internalPort: "80" + internalPort1: 8080 + nodePort: "60" + nodePort1: "61" + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/common/common/templates/_repository.tpl b/kubernetes/common/common/templates/_repository.tpl new file mode 100644 index 0000000000..e054b571ad --- /dev/null +++ b/kubernetes/common/common/templates/_repository.tpl @@ -0,0 +1,31 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{/* + Resolve the name of the common image repository. + The value for .Values.repository is used by default, + unless either override mechanism is used. + + - .Values.global.repository : override default image repository for all images + - .Values.repositoryOverride : override global and default image repository on a per image basis +*/}} +{{- define "common.repository" -}} + {{if .Values.repositoryOverride }} + {{- printf "%s" .Values.repositoryOverride -}} + {{else}} + {{- default .Values.repository .Values.global.repository -}} + {{end}} +{{- end -}}
\ No newline at end of file diff --git a/kubernetes/common/common/templates/_service.tpl b/kubernetes/common/common/templates/_service.tpl new file mode 100644 index 0000000000..25e373a7c9 --- /dev/null +++ b/kubernetes/common/common/templates/_service.tpl @@ -0,0 +1,30 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{/* + Resolve the name of a chart's service. + + The default will be the chart name, unless + overridden in the service configuration. + + - .Values.service.name : override default service (ie. chart) name +*/}} +{{/* + Expand the service name for a chart. +*/}} +{{- define "common.servicename" -}} + {{- default .Chart.Name .Values.service.name | trunc 63 | trimSuffix "-" -}} +{{- end -}}
\ No newline at end of file diff --git a/kubernetes/common/common/values.yaml b/kubernetes/common/common/values.yaml index c8ded9a5dd..f834896677 100644 --- a/kubernetes/common/common/values.yaml +++ b/kubernetes/common/common/values.yaml @@ -27,7 +27,7 @@ global: # readiness check readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 # logging agent loggingRepository: docker.elastic.co diff --git a/kubernetes/common/dgbuilder/resources/config/svclogic.properties b/kubernetes/common/dgbuilder/resources/config/svclogic.properties index fdaf5779e2..dc3980de21 100644 --- a/kubernetes/common/dgbuilder/resources/config/svclogic.properties +++ b/kubernetes/common/dgbuilder/resources/config/svclogic.properties @@ -1,5 +1,5 @@ org.onap.ccsdk.sli.dbtype=jdbc -org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://{{.Values.dbServiceName}}.{{ include "common.namespace" . }}:3306/sdnctl +org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://{{.Values.config.dbServiceName}}.{{ include "common.namespace" . }}:3306/sdnctl org.onap.ccsdk.sli.jdbc.database=sdnctl org.onap.ccsdk.sli.jdbc.user=sdnctl org.onap.ccsdk.sli.jdbc.password=gamma diff --git a/kubernetes/common/dgbuilder/resources/scripts/createReleaseDir.sh b/kubernetes/common/dgbuilder/resources/scripts/createReleaseDir.sh index 38f7fe2720..76d17700b0 100755 --- a/kubernetes/common/dgbuilder/resources/scripts/createReleaseDir.sh +++ b/kubernetes/common/dgbuilder/resources/scripts/createReleaseDir.sh @@ -6,7 +6,7 @@ then echo "Usage $0 releaseDir loginId emailAddress [gitLocalRepository]" echo "Note: Specify the gitLocalRepository path if you would want to be able to import flows from your local git repository" exit -fi +fi if [ ! -e "releases" ] then mkdir releases @@ -15,7 +15,7 @@ releaseDir="$1" name="Release $releaseDir" loginId="$2" emailid="$3" -dbHost="{{.Values.dbServiceName}}.{{.Release.Namespace}}" +dbHost="{{.Values.config.dbServiceName}}.{{.Release.Namespace}}" dbPort="3306" dbName="sdnctl" dbUser="sdnctl" @@ -76,7 +76,7 @@ fi #echo "Created custom settings file $customSettingsFile" echo "Done ....." else - echo "ERROR:customSettings file $customSettingsFile already exists for $releaseDir" + echo "ERROR:customSettings file $customSettingsFile already exists for $releaseDir" exit fi #echo "Content of custom settings file" @@ -86,17 +86,17 @@ fi svclogicPropFile="./conf/svclogic.properties" if [ ! -d "${appDir}/yangFiles" ] then - mkdir -p "${appDir}/yangFiles" + mkdir -p "${appDir}/yangFiles" fi if [ ! -d "${appDir}/generatedJS" ] then - mkdir -p "${appDir}/generatedJS" + mkdir -p "${appDir}/generatedJS" fi if [ ! -e "./$svclogicPropFile" ] then echo "org.onap.ccsdk.sli.dbtype=jdbc" >$svclogicPropFile - echo "org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://{{.Values.dbServiceName}}.{{.Release.Namespace}}:3306/sdnctl" >>$svclogicPropFile + echo "org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://{{.Values.config.dbServiceName}}.{{.Release.Namespace}}:3306/sdnctl" >>$svclogicPropFile echo "org.onap.ccsdk.sli.jdbc.database=sdnctl" >>$svclogicPropFile echo "org.onap.ccsdk.sli.jdbc.user=sdnctl" >>$svclogicPropFile echo "org.onap.ccsdk.sli.jdbc.password=gamma" >>$svclogicPropFile diff --git a/kubernetes/common/dgbuilder/resources/scripts/customSettings.js b/kubernetes/common/dgbuilder/resources/scripts/customSettings.js index 01bbcc733d..22810baabd 100644 --- a/kubernetes/common/dgbuilder/resources/scripts/customSettings.js +++ b/kubernetes/common/dgbuilder/resources/scripts/customSettings.js @@ -29,7 +29,7 @@ module.exports={ "user": "dguser", "pass": "cc03e747a6afbbcbf8be7668acfebee5" }, - "dbHost": "{{.Values.dbServiceName}}.{{ include "common.namespace" . }}", + "dbHost": "{{.Values.config.dbServiceName}}.{{ include "common.namespace" . }}", "dbPort": "3306", "dbName": "sdnctl", "dbUser": "sdnctl", diff --git a/kubernetes/common/dgbuilder/templates/deployment.yaml b/kubernetes/common/dgbuilder/templates/deployment.yaml index 4e1f1019ee..a1e95682ee 100644 --- a/kubernetes/common/dgbuilder/templates/deployment.yaml +++ b/kubernetes/common/dgbuilder/templates/deployment.yaml @@ -21,7 +21,7 @@ spec: - /root/ready.py args: - --container-name - - {{ .Values.dbPodName }} + - {{ .Values.config.dbPodName }} env: - name: NAMESPACE valueFrom: @@ -35,10 +35,8 @@ spec: - name: {{ include "common.name" . }} image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} - command: - - /bin/bash - - -c - - cd /opt/onap/sdnc/dgbuilder/ && ./start.sh sdnc1.0 && wait + command: ["/bin/bash"] + args: ["-c", "cd /opt/onap/ccsdk/dgbuilder/ && ./start.sh sdnc1.0 && wait"] ports: - containerPort: {{ .Values.service.internalPort }} readinessProbe: diff --git a/kubernetes/common/dgbuilder/values.yaml b/kubernetes/common/dgbuilder/values.yaml index 23f8eea78e..8b4a07a350 100644 --- a/kubernetes/common/dgbuilder/values.yaml +++ b/kubernetes/common/dgbuilder/values.yaml @@ -12,7 +12,7 @@ global: # readiness check readinessRepository: oomk8s - readinessImage: readiness-check:1.0.0 + readinessImage: readiness-check:2.0.0 # logging agent loggingRepository: docker.elastic.co @@ -28,13 +28,13 @@ global: # flag to enable debugging - application support required debugEnabled: true - + ################################################################# # Application configuration defaults. ################################################################# # application image repository: nexus3.onap.org:10001 -image: onap/ccsdk-dgbuilder-image:v0.1.0 +image: onap/ccsdk-dgbuilder-image:0.2.1-SNAPSHOT pullPolicy: Always # flag to enable debugging - application support required @@ -43,6 +43,9 @@ debugEnabled: false # application configuration config: dbRootPassword: openECOMP1.0 + dbPodName: mysql-db + dbServiceName: sdnc-dbhost + # default number of instances replicaCount: 1 diff --git a/kubernetes/common/mysql/Chart.yaml b/kubernetes/common/mysql/Chart.yaml index 99e7c44fb9..b2e7d4aa93 100644 --- a/kubernetes/common/mysql/Chart.yaml +++ b/kubernetes/common/mysql/Chart.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 description: MySQL Server name: mysql diff --git a/kubernetes/common/mysql/requirements.yaml b/kubernetes/common/mysql/requirements.yaml index acca8ef7e2..ce82a2f838 100644 --- a/kubernetes/common/mysql/requirements.yaml +++ b/kubernetes/common/mysql/requirements.yaml @@ -1,4 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + dependencies: - name: common version: ~2.0.0 - repository: '@local'
\ No newline at end of file + repository: '@local' diff --git a/kubernetes/common/mysql/templates/configmap.yaml b/kubernetes/common/mysql/templates/configmap.yaml index dd2b5b7db2..ff127e48cd 100644 --- a/kubernetes/common/mysql/templates/configmap.yaml +++ b/kubernetes/common/mysql/templates/configmap.yaml @@ -1,3 +1,19 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + apiVersion: v1 kind: ConfigMap metadata: diff --git a/kubernetes/common/mysql/templates/nfs-provisoner.yaml b/kubernetes/common/mysql/templates/nfs-provisoner.yaml index 478224e1a1..35894df7a7 100644 --- a/kubernetes/common/mysql/templates/nfs-provisoner.yaml +++ b/kubernetes/common/mysql/templates/nfs-provisoner.yaml @@ -1,8 +1,24 @@ -#{{ if not .Values.disableNfsProvisioner }} +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{ if not .Values.disableNfsProvisioner }} apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: {{ .Values.nfsprovisionerPrefix }}-nfs-provisioner + name: {{ .Release.Name }}-{{ .Values.nfsprovisionerPrefix }}-nfs-provisioner namespace: {{ include "common.namespace" . }} labels: app: {{ include "common.name" . }} @@ -46,7 +62,7 @@ spec: fieldRef: fieldPath: status.podIP - name: SERVICE_NAME - value: {{ .Values.nfsprovisionerPrefix }}-nfs-provisioner + value: {{ .Release.Name }}-{{ .Values.nfsprovisionerPrefix }}-nfs-provisioner - name: POD_NAMESPACE valueFrom: fieldRef: @@ -59,4 +75,4 @@ spec: - name: export-volume hostPath: path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }} -#{{ end }} +{{ end }} diff --git a/kubernetes/common/mysql/templates/pv.yaml b/kubernetes/common/mysql/templates/pv.yaml index ba128b95d0..1cc92ace44 100644 --- a/kubernetes/common/mysql/templates/pv.yaml +++ b/kubernetes/common/mysql/templates/pv.yaml @@ -1,4 +1,20 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if (and (and (.Values.persistence.enabled) (not .Values.persistence.existingClaim)) ( .Values.disableNfsProvisioner)) -}} kind: PersistentVolume apiVersion: v1 metadata: diff --git a/kubernetes/common/mysql/templates/pvc.yaml b/kubernetes/common/mysql/templates/pvc.yaml index a2949fef36..d1558f131f 100644 --- a/kubernetes/common/mysql/templates/pvc.yaml +++ b/kubernetes/common/mysql/templates/pvc.yaml @@ -1,3 +1,19 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} kind: PersistentVolumeClaim apiVersion: v1 @@ -20,4 +36,4 @@ spec: requests: storage: {{ .Values.persistence.size }} storageClassName: "{{ include "common.fullname" . }}-data" -{{- end -}}
\ No newline at end of file +{{- end -}} diff --git a/kubernetes/common/mysql/templates/secrets.yaml b/kubernetes/common/mysql/templates/secrets.yaml index 7604be8239..7f9b1230eb 100644 --- a/kubernetes/common/mysql/templates/secrets.yaml +++ b/kubernetes/common/mysql/templates/secrets.yaml @@ -1,3 +1,19 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + apiVersion: v1 kind: Secret metadata: @@ -10,4 +26,4 @@ metadata: heritage: {{ .Release.Service }} type: Opaque data: - db-root-password: {{ .Values.config.dbRootPassword | b64enc | quote }}
\ No newline at end of file + db-root-password: {{ .Values.config.dbRootPassword | b64enc | quote }} diff --git a/kubernetes/common/mysql/templates/service.yaml b/kubernetes/common/mysql/templates/service.yaml index c6a28c4605..032920c760 100644 --- a/kubernetes/common/mysql/templates/service.yaml +++ b/kubernetes/common/mysql/templates/service.yaml @@ -1,3 +1,19 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + apiVersion: v1 kind: Service metadata: @@ -21,7 +37,7 @@ spec: kind: Service apiVersion: v1 metadata: - name: {{ .Values.nfsprovisionerPrefix }}-nfs-provisioner + name: {{ .Release.Name }}-{{ .Values.nfsprovisionerPrefix }}-nfs-provisioner namespace: {{ include "common.namespace" . }} labels: app: {{ .Values.nfsprovisionerPrefix }}-nfs-provisioner @@ -88,3 +104,27 @@ spec: app: {{ include "common.name" . }} release: {{ .Release.Name }} clusterIP: None +--- +{{ if .Values.geoEnabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }}-nodeport + namespace: {{ include "common.namespace" . }} + labels: + statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-0 +spec: + ports: + - name: {{ .Values.service.internalPort }} + port: {{ .Values.service.internalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.externalPort1 }} + - name: {{ .Values.xtrabackup.internalPort }} + port: {{ .Values.xtrabackup.internalPort }} + targetPort: {{ .Values.xtrabackup.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.externalPort2 }} + type: NodePort + selector: + statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-0 + release: {{ .Release.Name }} +{{ end }} diff --git a/kubernetes/common/mysql/templates/statefulset.yaml b/kubernetes/common/mysql/templates/statefulset.yaml index 7b55bf2be0..ff73b45620 100644 --- a/kubernetes/common/mysql/templates/statefulset.yaml +++ b/kubernetes/common/mysql/templates/statefulset.yaml @@ -1,3 +1,19 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + apiVersion: apps/v1beta1 kind: StatefulSet metadata: @@ -35,7 +51,7 @@ spec: imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} #{{ end }} - name: init-mysql - image: "{{ .Values.repository | default .Values.repository }}/{{ .Values.image }}" + image: "{{ .Values.dockerHubRepository }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} command: - bash @@ -45,10 +61,11 @@ spec: # Generate mysql server-id from pod ordinal index. [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 ordinal=${BASH_REMATCH[1]} + siteId={{ .Values.geoSiteId }} echo BASH_REMATCH=${BASH_REMATCH} echo [mysqld] > /mnt/conf.d/server-id.cnf # Add an offset to avoid reserved server-id=0 value. - echo server-id=$((100 + $ordinal)) >> /mnt/conf.d/server-id.cnf + echo server-id=$(($siteId*100 + $ordinal)) >> /mnt/conf.d/server-id.cnf # Copy appropriate conf.d files from config-map to emptyDir. if [[ $ordinal -eq 0 ]]; then cp /mnt/config-map/master.cnf /mnt/conf.d/ @@ -83,21 +100,19 @@ spec: echo ${BASH_REMATCH} [[ $ordinal -eq 0 ]] && exit 0 # Clone data from previous peer. - ncat --recv-only {{ template "common.name" . }}-$(($ordinal-1)).{{ .Values.service.name }}.{{ include "common.namespace" . }} 3307 | xbstream -x -C /var/lib/mysql + ncat --recv-only {{ include "common.fullname" . }}-$(($ordinal-1)).{{ .Values.service.name }}.{{ include "common.namespace" . }} 3307 | xbstream -x -C /var/lib/mysql # Prepare the backup. xtrabackup --user=root --password=$MYSQL_ROOT_PASSWORD --prepare --target-dir=/var/lib/mysql ls -l /var/lib/mysql volumeMounts: - name: {{ include "common.fullname" . }}-data mountPath: /var/lib/mysql - subPath: mysql - name: conf mountPath: /etc/mysql/conf.d - + containers: - #sdnc-db-container - name: {{ include "common.name" . }} - image: "{{ .Values.repository | default .Values.repository }}/{{ .Values.image }}" + image: "{{ .Values.dockerHubRepository }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} ports: - containerPort: {{ .Values.service.internalPort }} @@ -129,7 +144,6 @@ spec: volumeMounts: - mountPath: /var/lib/mysql name: {{ include "common.fullname" . }}-data - subPath: mysql - mountPath: /etc/mysql/conf.d name: conf resources: @@ -179,20 +193,24 @@ spec: MASTER_LOG_POS=${BASH_REMATCH[2]}" > change_master_to.sql.in fi + [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 + ordinal=${BASH_REMATCH[1]} + echo $ordinal + + mysqlhost={{ include "common.fullname" . }}-$(($ordinal)).{{ .Values.service.name }}.{{ include "common.namespace" . }} + echo $mysqlhost + # Check if we need to complete a clone by starting replication. if [[ -f change_master_to.sql.in ]]; then echo "Waiting for mysqld to be ready (accepting connections)" - [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 - ordinal=${BASH_REMATCH[1]} - echo $ordinal - until mysql --user=root --password=$MYSQL_ROOT_PASSWORD -h localhost -e "SELECT 1"; do sleep 1; done + until mysql --user=root --password=$MYSQL_ROOT_PASSWORD -h $mysqlhost -e "SELECT 1"; do sleep 1; done echo "Initializing replication from clone position" # In case of container restart, attempt this at-most-once. mv change_master_to.sql.in change_master_to.sql.orig - mysql --user=root --password=$MYSQL_ROOT_PASSWORD -h localhost <<EOF + mysql --user=root --password=$MYSQL_ROOT_PASSWORD -h $mysqlhost <<EOF $(<change_master_to.sql.orig), - MASTER_HOST="{{ template "common.name" . }}-0.{{ .Values.service.name }}.{{ include "common.namespace" . }}", + MASTER_HOST="{{ include "common.fullname" . }}-0.{{ .Values.service.name }}.{{ include "common.namespace" . }}", MASTER_USER="root", MASTER_PASSWORD="$MYSQL_ROOT_PASSWORD", MASTER_CONNECT_RETRY=10; @@ -202,11 +220,10 @@ spec: # Start a server to send backups when requested by peers. exec ncat --listen --keep-open --send-only --max-conns=1 3307 -c \ - "xtrabackup --user=root --password=$MYSQL_ROOT_PASSWORD --backup --slave-info --stream=xbstream --host=localhost" + "xtrabackup --user=root --password=$MYSQL_ROOT_PASSWORD --backup --slave-info --stream=xbstream --host=$mysqlhost" volumeMounts: - name: {{ include "common.fullname" . }}-data mountPath: /var/lib/mysql - subPath: mysql - name: conf mountPath: /etc/mysql/conf.d volumes: @@ -219,20 +236,10 @@ spec: hostPath: path: /etc/localtime - name: {{ include "common.fullname" . }}-data -#{{ if not .Values.disableNfsProvisioner }} - volumeClaimTemplates: - - metadata: - name: {{ include "common.fullname" . }}-data - annotations: - volume.beta.kubernetes.io/storage-class: "{{ include "common.fullname" . }}-data" - spec: - accessModes: ["ReadWriteMany"] - resources: - requests: - storage: 1Gi -#{{ else if .Values.persistence.enabled }} +#{{ if .Values.persistence.enabled }} persistentVolumeClaim: claimName: {{ include "common.fullname" . }}-data #{{ else }} emptyDir: {} #{{ end }} + diff --git a/kubernetes/common/mysql/templates/storageclass.yaml b/kubernetes/common/mysql/templates/storageclass.yaml index 1a4e6b6bb7..3cd502ea30 100644 --- a/kubernetes/common/mysql/templates/storageclass.yaml +++ b/kubernetes/common/mysql/templates/storageclass.yaml @@ -1,6 +1,24 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{ if not .Values.disableNfsProvisioner }} kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: "{{ include "common.fullname" . }}-data" namespace: {{ include "common.namespace" . }} provisioner: {{ include "common.fullname" . }}/nfs +{{ end }} diff --git a/kubernetes/common/mysql/values.yaml b/kubernetes/common/mysql/values.yaml index c0beb6fd22..40310a89d7 100644 --- a/kubernetes/common/mysql/values.yaml +++ b/kubernetes/common/mysql/values.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + ################################################################# # Global configuration defaults. ################################################################# @@ -6,15 +20,14 @@ global: repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== persistence: {} readinessRepository: oomk8s - readinessImage: readiness-check:1.0.0 + readinessImage: readiness-check:2.0.0 ################################################################# # Application configuration defaults. ################################################################# -#repository: mysql -repository: registry.hub.docker.com +dockerHubRepository: registry.hub.docker.com image: library/mysql:5.7 pullPolicy: Always @@ -29,6 +42,8 @@ nodeSelector: {} affinity: {} +disableNfsProvisioner: true + # probe configuration parameters liveness: initialDelaySeconds: 30 @@ -61,7 +76,7 @@ persistence: accessMode: ReadWriteMany size: 1Gi mountPath: /dockerdata-nfs - mountSubPath: mysql/data + mountSubPath: "mysql/data" service: name: mysql @@ -109,3 +124,6 @@ nfsprovisionerImage: kubernetes_incubator/nfs-provisioner:v1.0.8 nfsprovisionerPrefix: mysql sdnctlPrefix: mysql + +geoEnabled: false +geoSiteId: 1 diff --git a/kubernetes/common/postgres/.helmignore b/kubernetes/common/postgres/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/common/postgres/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/common/postgres/Chart.yaml b/kubernetes/common/postgres/Chart.yaml new file mode 100644 index 0000000000..1d00b8526b --- /dev/null +++ b/kubernetes/common/postgres/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP Postgres Server +name: postgres +version: 2.0.0 diff --git a/kubernetes/common/postgres/requirements.yaml b/kubernetes/common/postgres/requirements.yaml new file mode 100644 index 0000000000..e597fca563 --- /dev/null +++ b/kubernetes/common/postgres/requirements.yaml @@ -0,0 +1,18 @@ +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/common/postgres/templates/pv.yaml b/kubernetes/common/postgres/templates/pv.yaml new file mode 100644 index 0000000000..e08c934a6c --- /dev/null +++ b/kubernetes/common/postgres/templates/pv.yaml @@ -0,0 +1,58 @@ +{{/* +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}-data0 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + storageClassName: "{{ include "common.fullname" . }}-data" + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}0 +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}-data1 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + storageClassName: "{{ include "common.fullname" . }}-data" + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}1 +{{- end -}} diff --git a/kubernetes/common/postgres/templates/secrets.yaml b/kubernetes/common/postgres/templates/secrets.yaml new file mode 100644 index 0000000000..29de3af260 --- /dev/null +++ b/kubernetes/common/postgres/templates/secrets.yaml @@ -0,0 +1,31 @@ +{{/* +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +type: Opaque +data: + pg-primary-password: {{ .Values.config.pgPrimaryPassword | b64enc | quote }} + pg-user-password: {{ .Values.config.pgUserPassword | b64enc | quote }} + pg-root-password: {{ .Values.config.pgRootPassword | b64enc | quote }} + diff --git a/kubernetes/common/postgres/templates/service.yaml b/kubernetes/common/postgres/templates/service.yaml new file mode 100644 index 0000000000..2a4e369ef4 --- /dev/null +++ b/kubernetes/common/postgres/templates/service.yaml @@ -0,0 +1,95 @@ +{{/* +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name2 }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: {{ .Values.service.type2 }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: {{ .Values.service.name2 }} + {{- else -}} + - port: {{ .Values.service.externalPort2 }} + targetPort: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name2 }} + {{- end}} + selector: + name: "{{.Values.container.name.primary}}" + release: {{ .Release.Name }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name3 }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: {{ .Values.service.type3 }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort3 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }} + name: {{ .Values.service.name3 }} + {{- else -}} + - port: {{ .Values.service.externalPort3 }} + targetPort: {{ .Values.service.internalPort3 }} + name: {{ .Values.service.name3 }} + {{- end}} + selector: + name: "{{.Values.container.name.replica}}" + release: {{ .Release.Name }} diff --git a/kubernetes/common/postgres/templates/statefulset.yaml b/kubernetes/common/postgres/templates/statefulset.yaml new file mode 100644 index 0000000000..e42e9eb924 --- /dev/null +++ b/kubernetes/common/postgres/templates/statefulset.yaml @@ -0,0 +1,147 @@ +{{/* +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} +apiVersion: apps/v1beta1 +kind: StatefulSet +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + serviceName: {{ .Values.service.name }} + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: + - command: + - /bin/sh + - -c + - | + for i in $(seq 0 $(({{ .Values.replicaCount }}-1))); do mkdir -p /podroot/data$i; done + chmod 777 /podroot/* + env: + - name: POD_NAME + valueFrom: { fieldRef: { fieldPath: metadata.name } } + securityContext: + privileged: true + image: {{ .Values.global.busyboxRepository | default .Values.busyboxRepository }}/{{ .Values.busyboxImage }} + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: init-sysctl + volumeMounts: + - name: {{ include "common.fullname" . }}-init + mountPath: /podroot/ + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.postgresRepository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + name: postgres + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + timeoutSeconds: {{ .Values.liveness.timeoutSeconds }} + {{end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: PGHOST + value: /tmp + - name: PG_PRIMARY_USER + value: primaryuser + - name: PG_MODE + value: set + - name: PG_PRIMARY_HOST + value: "{{.Values.container.name.primary}}" + - name: PG_REPLICA_HOST + value: "{{.Values.container.name.replica}}" + - name: PG_PRIMARY_PORT + value: "{{.Values.service.internalPort}}" + - name: PG_PRIMARY_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }} + key: pg-primary-password + - name: PG_USER + value: "{{.Values.config.pgUserName}}" + - name: PG_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }} + key: pg-user-password + - name: PG_DATABASE + value: "{{.Values.config.pgDatabase}}" + - name: PG_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }} + key: pg-root-password + volumeMounts: + - mountPath: /pgdata + name: {{ include "common.fullname" . }}-data + - mountPath: /backup + name: {{ include "common.fullname" . }}-backup + readOnly: true + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-init + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountInitPath }} + - name: {{ include "common.fullname" . }}-backup + emptyDir: {} +#{{ if not .Values.persistence.enabled }} + - name: {{ include "common.fullname" . }}-data + emptyDir: {} +#{{ else }} + volumeClaimTemplates: + - metadata: + name: {{ include "common.fullname" . }}-data + labels: + name: {{ include "common.fullname" . }} + spec: + accessModes: [ {{ .Values.persistence.accessMode }} ] + storageClassName: {{ include "common.fullname" . }}-data + resources: + requests: + storage: {{ .Values.persistence.size }} +#{{ end }} diff --git a/kubernetes/common/postgres/values.yaml b/kubernetes/common/postgres/values.yaml new file mode 100644 index 0000000000..0ae7459074 --- /dev/null +++ b/kubernetes/common/postgres/values.yaml @@ -0,0 +1,127 @@ +# Copyright © 2018 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + persistence: {} + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + +################################################################# +# Application configuration defaults. +################################################################# + +# BusyBox image +busyboxRepository: registry.hub.docker.com +busyboxImage: library/busybox:latest + +postgresRepository: crunchydata +image: crunchy-postgres:centos7-10.3-1.8.2 +pullPolicy: Always + +# application configuration +config: + pgUserName: testuser + pgDatabase: userdb + pgPrimaryPassword: password + pgUserPassword: password + pgRootPassword: password + +container: + name: + primary: pgset-primary + replica: pgset-replica + +# default number of instances +replicaCount: 2 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 5 + periodSeconds: 10 + +## Persist data to a persitent volume +persistence: + enabled: true + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: <storageClass> + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + accessMode: ReadWriteOnce + size: 1Gi + mountPath: /dockerdata-nfs + mountSubPath: postgres/data + mountInitPath: postgres + +service: + type: ClusterIP + name: pgset + externalPort: 5432 + internalPort: 5432 + type2: ClusterIP + name2: pgset-primary + externalPort2: 5432 + internalPort2: 5432 + type3: ClusterIP + name3: pgset-replica + externalPort3: 5432 + internalPort3: 5432 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi + diff --git a/kubernetes/config/docker/init/src/config/message-router/dmaap/MsgRtrApi.properties b/kubernetes/config/docker/init/src/config/message-router/dmaap/MsgRtrApi.properties deleted file mode 100755 index db8d911248..0000000000 --- a/kubernetes/config/docker/init/src/config/message-router/dmaap/MsgRtrApi.properties +++ /dev/null @@ -1,140 +0,0 @@ -############################################################################### -## -## Cambria API Server config -## -## - Default values are shown as commented settings. -## - -############################################################################### -## -## HTTP service -## -## - 3904 is standard as of 7/29/14. -# -## Zookeeper Connection -## -## Both Cambria and Kafka make use of Zookeeper. -## -config.zk.servers=zookeeper.namespace-placeholder:2181 -#config.zk.servers=172.17.0.1:2181 -#dmaap.namespace-placeholder:2181 -#10.208.128.229:2181 -#config.zk.root=/fe3c/cambria/config - - -############################################################################### -## -## Kafka Connection -## -## Items below are passed through to Kafka's producer and consumer -## configurations (after removing "kafka.") -## if you want to change request.required.acks it can take this one value -#kafka.metadata.broker.list=localhost:9092,localhost:9093 -kafka.metadata.broker.list=global-kafka.namespace-placeholder:9092 -#kafka.metadata.broker.list=172.17.0.1:9092 -#dmaap.namespace-placeholder:9092 -#10.208.128.229:9092 -##kafka.request.required.acks=-1 -#kafka.client.zookeeper=${config.zk.servers} -consumer.timeout.ms=100 -zookeeper.connection.timeout.ms=6000 -zookeeper.session.timeout.ms=6000 -zookeeper.sync.time.ms=2000 -auto.commit.interval.ms=1000 -fetch.message.max.bytes =1000000 -auto.commit.enable=false - - -############################################################################### -## -## Secured Config -## -## Some data stored in the config system is sensitive -- API keys and secrets, -## for example. to protect it, we use an encryption layer for this section -## of the config. -## -## The key is a base64 encode AES key. This must be created/configured for -## each installation. -#cambria.secureConfig.key= -## -## The initialization vector is a 16 byte value specific to the secured store. -## This must be created/configured for each installation. -#cambria.secureConfig.iv= - -## Southfield Sandbox -cambria.secureConfig.key=b/7ouTn9FfEw2PQwL0ov/Q== -cambria.secureConfig.iv=wR9xP5k5vbz/xD0LmtqQLw== -authentication.adminSecret=fe3cCompound -#cambria.secureConfig.key[pc569h]=YT3XPyxEmKCTLI2NK+Sjbw== -#cambria.secureConfig.iv[pc569h]=rMm2jhR3yVnU+u2V9Ugu3Q== - - -############################################################################### -## -## Consumer Caching -## -## Kafka expects live connections from the consumer to the broker, which -## obviously doesn't work over connectionless HTTP requests. The Cambria -## server proxies HTTP requests into Kafka consumer sessions that are kept -## around for later re-use. Not doing so is costly for setup per request, -## which would substantially impact a high volume consumer's performance. -## -## This complicates Cambria server failover, because we often need server -## A to close its connection before server B brings up the replacement. -## - -## The consumer cache is normally enabled. -#cambria.consumer.cache.enabled=true - -## Cached consumers are cleaned up after a period of disuse. The server inspects -## consumers every sweepFreqSeconds and will clean up any connections that are -## dormant for touchFreqMs. -#cambria.consumer.cache.sweepFreqSeconds=15 -#cambria.consumer.cache.touchFreqMs=120000 - -## The cache is managed through ZK. The default value for the ZK connection -## string is the same as config.zk.servers. -#cambria.consumer.cache.zkConnect=${config.zk.servers} - -## -## Shared cache information is associated with this node's name. The default -## name is the hostname plus the HTTP service port this host runs on. (The -## hostname is determined via InetAddress.getLocalHost ().getCanonicalHostName(), -## which is not always adequate.) You can set this value explicitly here. -## -#cambria.api.node.identifier=<use-something-unique-to-this-instance> - -############################################################################### -## -## Metrics Reporting -## -## This server can report its metrics periodically on a topic. -## -#metrics.send.cambria.enabled=true -#metrics.send.cambria.topic=cambria.apinode.metrics #msgrtr.apinode.metrics.dmaap -#metrics.send.cambria.sendEverySeconds=60 - -cambria.consumer.cache.zkBasePath=/fe3c/cambria/consumerCache - -############################################################################## -#100mb -maxcontentlength=10000 - - -############################################################################## -#AAF Properties -msgRtr.namespace.aaf=org.openecomp.dcae.dmaap.mtnje2.mr.topic -msgRtr.topicfactory.aaf=org.openecomp.dcae.dmaap.topicFactory|:org.openecomp.dcae.dmaap.mtnje2.mr.topic: -enforced.topic.name.AAF=org.openecomp -forceAAF=false -transidUEBtopicreqd=false -defaultNSforUEB=org.openecomp.dmaap.mr.ueb -############################################################################## -#Mirror Maker Agent -msgRtr.mirrormakeradmin.aaf=org.openecomp.dmaap.mr.dev.mirrormaker|*|admin -msgRtr.mirrormakeruser.aaf=org.openecomp.dmaap.mr.dev.mirrormaker|*|user -msgRtr.mirrormakeruser.aaf.create=org.openecomp.dmaap.mr.dev.topicFactory|:org.openecomp.dmaap.mr.dev.topic: -msgRtr.mirrormaker.timeout=15000 -msgRtr.mirrormaker.topic=org.openecomp.dmaap.mr.prod.mm.agent -msgRtr.mirrormaker.consumergroup=mmagentserver -msgRtr.mirrormaker.consumerid=1 diff --git a/kubernetes/config/docker/init/src/config/message-router/dmaap/cadi.properties b/kubernetes/config/docker/init/src/config/message-router/dmaap/cadi.properties deleted file mode 100755 index 1cb00a5cda..0000000000 --- a/kubernetes/config/docker/init/src/config/message-router/dmaap/cadi.properties +++ /dev/null @@ -1,21 +0,0 @@ -basic_realm=openecomp.org -basic_warn=TRUE - -cadi_loglevel=DEBUG -#cadi_keyfile=target/swm/package/nix/dist_files/appl/${artifactId}/etc/keyfile2 -cadi_keyfile=/appl/dmaapMR1/etc/keyfile -# Configure AAF -aaf_url=https://DME2RESOLVE/service=org.openecomp.authz.AuthorizationService/version=2.0/envContext=DEV/routeOffer=BAU_SE - -aaf_id=dgl@openecomp.org -aaf_password=enc:f2u5br1mh29M02- -aaf_timeout=5000 -aaf_clean_interval=1200000 -aaf_user_expires=60000 -aaf_high_count=1000000 - - -# The following properties are being set by the AJSC Container and should NOT need to be set here. -AFT_LATITUDE=33.823589 -AFT_LONGITUDE=-84.366982 -AFT_ENVIRONMENT=AFTUAT diff --git a/kubernetes/config/docker/init/src/config/message-router/dmaap/mykey b/kubernetes/config/docker/init/src/config/message-router/dmaap/mykey deleted file mode 100755 index c2b8b8779b..0000000000 --- a/kubernetes/config/docker/init/src/config/message-router/dmaap/mykey +++ /dev/null @@ -1,27 +0,0 @@ -_sNOLphPzrU7L0L3oWv0pYwgV_ddGF1XoBsQEIAp34jfP-fGJFPfFYaMpDEZ3gwH59rNw6qyMZHk -k-4irklvVcWk36lC3twNvc0DueRCVrws1bkuhOLCXdxHJx-YG-1xM8EJfRmzh79WPlPkbAdyPmFF -Ah44V0GjAnInPOFZA6MHP9rNx9B9qECHRfmvzU13vJCcgTsrmOr-CEiWfRsnzPjsICxpq9OaVT_D -zn6rNaroGm1OiZNCrCgvRkCUHPOOCw3j9G1GeaImoZNYtozbz9u4sj13PU-MxIIAa64b1bMMMjpz -Upc8lVPI4FnJKg6axMmEGn5zJ6JUq9mtOVyPj__2GEuDgpx5H4AwodXXVjFsVgR8UJwI_BvS2JVp -JoQk0J1RqXmAXVamlsMAfzmmbARXgmrBfnuhveZnh9ymFVU-YZeujdANniXAwBGI7c6hG_BXkH7i -Eyf4Fn41_SV78PskP6qgqJahr9r3bqdjNbKBztIKCOEVrE_w3IM5r02l-iStk_NBRkj6cq_7VCpG -afxZ2CtZMwuZMiypO_wOgbdpCSKNzsL-NH2b4b08OlKiWb263gz634KJmV5WEfCl-6eH-JUFbWOS -JwQfActLNT2ZQPl2MyZQNBzJEWoJRgS6k7tPRO-zqeUtYYHGHVMCxMuMHGQcoilNNHEFeBCG_fBh -yAKb9g9F86Cbx9voMLiyTX2T3rwVHiSJFOzfNxGmfN5JWOthIun_c5hEY1tLQ15BomzkDwk7BAj7 -VbRCrVD45B6xrmSTMBSWYmLyr6mnQxQqeh9cMbD-0ZAncE3roxRnRvPKjFFa208ykYUp2V83r_PJ -fV5I9ZPKSjk9DwFyrjkcQQEYDhdK6IFqcd6nEthjYVkmunu2fsX0bIOm9GGdIbKGqBnpdgBO5hyT -rBr9HSlZrHcGdti1R823ckDF0Ekcl6kioDr5NLIpLtg9zUEDRm3QrbX2mv5Zs8W0pYnOqglxy3lz -bJZTN7oR7VasHUtjmp0RT9nLZkUs5TZ6MHhlIq3ZsQ6w_Q9Rv1-ofxfwfCC4EBrWKbWAGCf6By4K -Ew8321-2YnodhmsK5BrT4zQ1DZlmUvK8BmYjZe7wTljKjgYcsLTBfX4eMhJ7MIW1kpnl8AbiBfXh -QzN56Mki51Q8PSQWHm0W9tnQ0z6wKdck6zBJ8JyNzewZahFKueDTn-9DOqIDfr3YHvQLLzeXyJ8e -h4AgjW-hvlLzRGtkCknjLIgXVa3rMTycseAwbW-mgdCqqkw3SdEG8feAcyntmvE8j2jbtSDStQMB -9JdvyNLuQdNG4pxpusgvVso0-8NQF0YVa9VFwg9U6IPSx5p8FcW68OAHt_fEgT4ZtiH7o9aur4o9 -oYqUh2lALCY-__9QLq1KkNjMKs33Jz9E8LbRerG9PLclkTrxCjYAeUWBjCwSI7OB7xkuaYDSjkjj -a46NLpdBN1GNcsFFcZ79GFAK0_DsyxGLX8Tq6q0Bvhs8whD8wlSxpTGxYkyqNX-vcb7SDN_0WkCE -XSdZWkqTHXcYbOvoCOb_e6SFAztuMenuHWY0utX0gBfx_X5lPDFyoYXErxFQHiA7t27keshXNa6R -ukQRRS8kMjre1U74sc-fRNXkXpl57rG4rgxaEX0eBeowa53KAsVvUAoSac2aC_nfzXrDvoyf9Xi3 -JpEZNhUDLpFCEycV4I7jGQ9wo9qNaosvlsr6kbLDNdb_1xrGVgjT3xEvRNJNPqslSAu-yD-UFhC3 -AmCdYUnugw_eEFqXCHTARcRkdPPvl2XsmEKY2IqEeO5tz4DyXQFaL-5hEVh6lYEU1EOWHk3UGIXe -Vc5_Ttp82qNLmlJPbZvgmNTJzYTHDQ_27KBcp7IVVZgPDjVKdWqQvZ18KhxvfF3Idgy82LBZniFV -IbtxllXiPRxoPQriSXMnXjh3XkvSDI2pFxXfEvLRn1tvcFOwPNCz3QfPIzYg8uYXN5bRt3ZOrR_g -ZhIlrc7HO0VbNbeqEVPKMZ-cjkqGj4VAuDKoQc0eQ6X_wCoAGO78nPpLeIvZPx1X3z5YoqNA
\ No newline at end of file diff --git a/kubernetes/consul/Chart.yaml b/kubernetes/consul/Chart.yaml index b82c39b0be..8cb1f1bb99 100644 --- a/kubernetes/consul/Chart.yaml +++ b/kubernetes/consul/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: ONAP Consul Heath Monitor +description: ONAP Consul Agent name: consul -version: 1.1.0 +version: 2.0.0 diff --git a/kubernetes/consul/charts/consul-server/Chart.yaml b/kubernetes/consul/charts/consul-server/Chart.yaml new file mode 100644 index 0000000000..13be08782b --- /dev/null +++ b/kubernetes/consul/charts/consul-server/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP Consul Server +name: consul-server +version: 2.0.0 diff --git a/kubernetes/consul/charts/consul-server/requirements.yaml b/kubernetes/consul/charts/consul-server/requirements.yaml new file mode 100644 index 0000000000..f639633537 --- /dev/null +++ b/kubernetes/consul/charts/consul-server/requirements.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + # local reference to common chart, as it is + # a part of this chart's package and will not + # be published independently to a repo (at this point) + repository: '@local' diff --git a/kubernetes/consul/charts/consul-server/templates/NOTES.txt b/kubernetes/consul/charts/consul-server/templates/NOTES.txt new file mode 100644 index 0000000000..2465e03634 --- /dev/null +++ b/kubernetes/consul/charts/consul-server/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/consul/templates/consul-server-deployment.yaml b/kubernetes/consul/charts/consul-server/templates/deployment.yaml index 50dfb77d5e..d8da8ef7ce 100644 --- a/kubernetes/consul/templates/consul-server-deployment.yaml +++ b/kubernetes/consul/charts/consul-server/templates/deployment.yaml @@ -12,28 +12,30 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableConsulConsulServer }} apiVersion: extensions/v1beta1 kind: Deployment metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} labels: - app: consul-server - name: consul-server - namespace: "{{ .Values.nsPrefix }}" + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} spec: - replicas: {{ .Values.consulServerReplicas }} + replicas: {{ .Values.replicaCount }} selector: matchLabels: - app: consul-server + app: {{ include "common.name" . }} template: metadata: labels: - app: consul-server - name: consul-server + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} spec: containers: - - image: "{{ .Values.consulserverRegistry }}" + - image: "{{ .Values.repository | default .Values.global.repository }}/{{ .Values.image }}" command: ["/usr/local/bin/docker-entrypoint.sh"] - args: ["agent","-server","-client","0.0.0.0","-enable-script-checks","-bootstrap-expect=3","-ui","-join","consul-server.{{ .Values.nsPrefix }}"] - name: consul-server -#{{ end }} + args: ["agent","-server","-client","0.0.0.0","-enable-script-checks","-bootstrap-expect=3","-ui","-join","{{ include "common.fullname" . }}.{{ include "common.namespace" . }}"] + name: {{ include "common.name" . }} diff --git a/kubernetes/consul/charts/consul-server/templates/service.yaml b/kubernetes/consul/charts/consul-server/templates/service.yaml new file mode 100644 index 0000000000..3b17164afe --- /dev/null +++ b/kubernetes/consul/charts/consul-server/templates/service.yaml @@ -0,0 +1,38 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.internalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.internalPort2 }} + targetPort: {{ .Values.service.internalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: {{ .Values.service.name2 }} + selector: + app: {{ template "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/consul/charts/consul-server/values.yaml b/kubernetes/consul/charts/consul-server/values.yaml new file mode 100644 index 0000000000..e6fa9c10d2 --- /dev/null +++ b/kubernetes/consul/charts/consul-server/values.yaml @@ -0,0 +1,67 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repository: nexus3.onap.org:10001 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: docker.io +image: consul:1.0.6 +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +replicaCount: 3 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: consul-ui + nodePort: 70 + internalPort: 8500 + name2: consul-join + nodePort2: 71 + internalPort2: 8301 + +ingress: + enabled: false + +resources: {} diff --git a/kubernetes/consul/requirements.yaml b/kubernetes/consul/requirements.yaml new file mode 100644 index 0000000000..f639633537 --- /dev/null +++ b/kubernetes/consul/requirements.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + # local reference to common chart, as it is + # a part of this chart's package and will not + # be published independently to a repo (at this point) + repository: '@local' diff --git a/kubernetes/consul/resources/config/consul-agent-config/vfc-health.json b/kubernetes/consul/resources/config/consul-agent-config/vfc-health.json index 5ace3e4d9b..25e670c7da 100644 --- a/kubernetes/consul/resources/config/consul-agent-config/vfc-health.json +++ b/kubernetes/consul/resources/config/consul-agent-config/vfc-health.json @@ -45,6 +45,13 @@ "timeout": "1s" }, { + "id": "vfc-nokiav2vnfmdriver.{{ .Values.nsPrefix }}", + "name": "VFC nokiav2vnfmdriver Health Check", + "tcp": "vfc-nokiav2vnfmdriver.{{ .Values.nsPrefix }}:8089", + "interval": "15s", + "timeout": "1s" + }, + { "id": "vfc-nslcm.{{ .Values.nsPrefix }}", "name": "VFC nslcm Health Check", "tcp": "vfc-nslcm.{{ .Values.nsPrefix }}:8403", diff --git a/kubernetes/consul/templates/consul-agent-configmap.yaml b/kubernetes/consul/templates/configmap.yaml index 57d52c4de1..a4270d3c87 100644 --- a/kubernetes/consul/templates/consul-agent-configmap.yaml +++ b/kubernetes/consul/templates/configmap.yaml @@ -12,28 +12,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableConsulConsulAgent }} apiVersion: v1 kind: ConfigMap metadata: - name: consul-agent-configmap - namespace: {{ .Values.nsPrefix }} + name: {{ include "common.fullname" . }}-configmap + namespace: {{ include "common.namespace" . }} data: {{ tpl (.Files.Glob "resources/config/consul-agent-config/*").AsConfig . | indent 2 }} --- apiVersion: v1 kind: ConfigMap metadata: - name: consul-agent-scripts-configmap - namespace: {{ .Values.nsPrefix }} + name: {{ include "common.fullname" . }}-scripts-configmap + namespace: {{ include "common.namespace" . }} data: {{ tpl (.Files.Glob "resources/config/consul-agent-config/scripts/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: consul-agent-certs-secret - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/consul-agent-config/certs/*").AsSecrets . | indent 2 }} -#{{ end }} diff --git a/kubernetes/consul/templates/consul-agent-deployment.yaml b/kubernetes/consul/templates/deployment.yaml index 2c4a14a9b6..e984e2a72f 100644 --- a/kubernetes/consul/templates/consul-agent-deployment.yaml +++ b/kubernetes/consul/templates/deployment.yaml @@ -12,32 +12,39 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableConsulConsulAgent }} apiVersion: extensions/v1beta1 kind: Deployment metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} labels: - app: consul-agent - name: consul-agent - namespace: "{{ .Values.nsPrefix }}" + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} spec: - replicas: {{ .Values.consulAgentReplicas }} + replicas: {{ .Values.replicaCount }} selector: matchLabels: - app: consul-agent + app: {{ include "common.name" . }} template: metadata: labels: - app: consul-agent - name: consul-agent + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} spec: containers: - - image: "{{ .Values.consulagentRegistry }}" - command: ["/usr/local/bin/docker-entrypoint.sh"] - args: ["agent","-client","0.0.0.0","-enable-script-checks","-join","consul-server.{{ .Values.nsPrefix }}"] - name: consul-server + - image: "{{ .Values.repository | default .Values.global.repository }}/{{ .Values.image }}" + command: + - /bin/sh + - "-c" + - | + cp /tmp/consul/config/* /consul/config + /usr/local/bin/docker-entrypoint.sh agent -client 0.0.0.0 -enable-script-checks -join {{ .Release.Name }}-{{ .Values.consulServer.nameOverride }}.{{ include "common.namespace" .}} + name: {{ include "common.name" . }} volumeMounts: - - mountPath: /consul/config + - mountPath: /tmp/consul/config name: consul-agent-config - mountPath: /consul/scripts name: consul-agent-scripts-config @@ -45,13 +52,13 @@ spec: name: consul-agent-certs-config volumes: - configMap: - name: consul-agent-configmap + name: {{ include "common.fullname" . }}-configmap name: consul-agent-config - configMap: - name: consul-agent-scripts-configmap + name: {{ include "common.fullname" . }}-scripts-configmap defaultMode: 0755 name: consul-agent-scripts-config - secret: - secretName: consul-agent-certs-secret + secretName: {{ include "common.fullname" . }}-certs-secret name: consul-agent-certs-config -#{{ end }} + diff --git a/kubernetes/consul/templates/secrets.yaml b/kubernetes/consul/templates/secrets.yaml new file mode 100644 index 0000000000..2535437329 --- /dev/null +++ b/kubernetes/consul/templates/secrets.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-certs-secret + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/consul-agent-config/certs/*").AsSecrets . | indent 2 }} diff --git a/kubernetes/consul/values.yaml b/kubernetes/consul/values.yaml index e86937a34c..b35ec35cf4 100644 --- a/kubernetes/consul/values.yaml +++ b/kubernetes/consul/values.yaml @@ -11,12 +11,55 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repository: nexus3.onap.org:10001 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 -nsPrefix: "onap" -nodePortPrefix: 302 -consulserverRegistry: "docker.io/consul:1.0.6" -consulagentRegistry: "oomk8s/consul:1.0.0" -consulAgentReplicas: 1 -consulServerReplicas: 3 -service: - type: NodePort +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: oomk8s +image: consul:1.0.0 +pullPolicy: Always + +#subchart name +consulServer: + nameOverride: consul-server + +# flag to enable debugging - application support required +debugEnabled: false + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: {} + +ingress: + enabled: false + +resources: {} diff --git a/kubernetes/dcaegen2/charts/redis/.helmignore b/kubernetes/dcaegen2/charts/redis/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/dcaegen2/charts/redis/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/dcaegen2/charts/redis/Chart.yaml b/kubernetes/dcaegen2/charts/redis/Chart.yaml new file mode 100644 index 0000000000..692b7ab5d9 --- /dev/null +++ b/kubernetes/dcaegen2/charts/redis/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP DCAE Redis +name: redis +version: 2.0.0 diff --git a/kubernetes/dcaegen2/charts/redis/requirements.yaml b/kubernetes/dcaegen2/charts/redis/requirements.yaml new file mode 100644 index 0000000000..7244af3970 --- /dev/null +++ b/kubernetes/dcaegen2/charts/redis/requirements.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/dcaegen2/charts/redis/resources/redis/scripts/redis-cluster-config.sh b/kubernetes/dcaegen2/charts/redis/resources/redis/scripts/redis-cluster-config.sh new file mode 100755 index 0000000000..3431e7e6e7 --- /dev/null +++ b/kubernetes/dcaegen2/charts/redis/resources/redis/scripts/redis-cluster-config.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# ================================================================================ +# Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= + + +if [[ "$HOSTNAME" == *{{.Chart.Name}}-0 ]]; then + + NODES="" + echo "====> wait for all {{.Values.replicaCount}} redis pods up" + while [ "$(echo $NODES | wc -w)" -lt {{.Values.replicaCount}} ] + do + echo "======> $(echo $NODES |wc -w) / {{.Values.replicaCount}} pods up" + sleep 5 + RESP=$(wget -vO- --ca-certificate /var/run/secrets/kubernetes.io/serviceaccount/ca.crt --header "Authorization: Bearer $(</var/run/secrets/kubernetes.io/serviceaccount/token)" https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1/namespaces/{{.Release.Namespace}}/pods?labelSelector=app={{.Chart.Name}}) + + IPS=$(echo $RESP | jq -r '.items[].status.podIP') + NODES="" + for I in $IPS; do NODES="$NODES $I:{{.Values.service.externalPort}}"; done + done + echo "====> all {{.Values.replicaCount}} redis cluster pods are up. wait 10 seconds before the next step"; echo + sleep 10 + + echo "====> Configure the cluster" + + # $NODES w/o quotes + redis-trib create --replicas 1 $(echo $NODES |paste -s) + +fi diff --git a/kubernetes/dcaegen2/charts/redis/templates/NOTES.txt b/kubernetes/dcaegen2/charts/redis/templates/NOTES.txt new file mode 100644 index 0000000000..d333bfc159 --- /dev/null +++ b/kubernetes/dcaegen2/charts/redis/templates/NOTES.txt @@ -0,0 +1,34 @@ +{{/* +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/sdnc/templates/sdnc-log-configmap.yaml b/kubernetes/dcaegen2/charts/redis/templates/configmap.yaml index a0bf0e211a..85ebee672b 100644 --- a/kubernetes/sdnc/templates/sdnc-log-configmap.yaml +++ b/kubernetes/dcaegen2/charts/redis/templates/configmap.yaml @@ -1,4 +1,4 @@ -# Copyright © 2017 Amdocs, Bell Canada +# Copyright © 2017 Amdocs, AT&T, Bell Canada # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,20 +12,25 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableSdncSdnc }} apiVersion: v1 kind: ConfigMap metadata: - name: sdnc-log-configmap - namespace: {{ .Values.nsPrefix }} + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/log/filebeat/log4j/*").AsConfig . | indent 2 }} + redis.conf: |+ + cluster-enabled yes + cluster-require-full-coverage no + cluster-node-timeout 15000 + cluster-config-file /data/nodes.conf + cluster-migration-barrier 1 + appendonly yes + protected-mode no --- apiVersion: v1 kind: ConfigMap metadata: - name: sdnc-logging-cfg-configmap - namespace: {{ .Values.nsPrefix }} + name: {{ include "common.fullname" . }}-scripts + namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/log/*").AsConfig . | indent 2 }} -#{{ end }} +{{ tpl (.Files.Glob "resources/redis/scripts/*").AsConfig . | indent 2 }} diff --git a/kubernetes/dcaegen2/charts/redis/templates/pv.yaml b/kubernetes/dcaegen2/charts/redis/templates/pv.yaml new file mode 100644 index 0000000000..2d7e25dd2c --- /dev/null +++ b/kubernetes/dcaegen2/charts/redis/templates/pv.yaml @@ -0,0 +1,227 @@ +{{/* +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}0 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + storageClassName: manual + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}0 +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}1 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + storageClassName: manual + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}1 +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}2 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + storageClassName: manual + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}2 +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}3 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + storageClassName: manual + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}3 +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}4 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + storageClassName: manual + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}4 +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}5 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + storageClassName: manual + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}5 +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}6 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + storageClassName: manual + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}6 +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}7 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + storageClassName: manual + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}7 +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}8 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + storageClassName: manual + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}8 +--- +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }}9 + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + storageClassName: manual + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }}9 + +{{- end -}} diff --git a/kubernetes/dcaegen2/charts/redis/templates/service.yaml b/kubernetes/dcaegen2/charts/redis/templates/service.yaml new file mode 100644 index 0000000000..b3ee24dba2 --- /dev/null +++ b/kubernetes/dcaegen2/charts/redis/templates/service.yaml @@ -0,0 +1,48 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + #Example internal target port if required + #targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: {{ .Values.service.name2 }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPort2 }} + targetPort: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name2 }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/dcaegen2/charts/redis/templates/statefulset.yaml b/kubernetes/dcaegen2/charts/redis/templates/statefulset.yaml new file mode 100644 index 0000000000..472471416b --- /dev/null +++ b/kubernetes/dcaegen2/charts/redis/templates/statefulset.yaml @@ -0,0 +1,116 @@ +{{/* +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} +apiVersion: apps/v1beta1 +kind: StatefulSet +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + serviceName: {{ .Values.service.name }} + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + command: + - /bin/sh + - -c + - | + /opt/scripts/redis-cluster-config.sh & + /usr/local/bin/redis-server-config.sh + ports: + - containerPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - containerPort: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name2 }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + exec: + command: + - sh + - -c + - "redis-cli -h $(hostname) ping" + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + timeoutSeconds: {{ .Values.liveness.timeoutSeconds }} + {{end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /conf + name: {{ include "common.fullname" . }}-config + - mountPath: /data + name: {{ include "common.fullname" . }}-data + - mountPath: /opt/scripts + name: {{ include "common.fullname" . }}-scripts + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + volumes: + - name: {{ include "common.fullname" . }}-config + configMap: + name: {{ include "common.fullname" . }} + items: + - key: redis.conf + path: redis.conf + - name: {{ include "common.fullname" . }}-scripts + configMap: + name: {{ include "common.fullname" . }}-scripts + defaultMode: 0755 + - name: localtime + hostPath: + path: /etc/localtime + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" + volumeClaimTemplates: + - metadata: + name: {{ include "common.fullname" . }}-data + labels: + name: {{ include "common.fullname" . }} + spec: + accessModes: [ {{ .Values.persistence.accessMode }} ] + storageClassName: manual + resources: + requests: + storage: {{ .Values.persistence.size }} diff --git a/kubernetes/dcaegen2/charts/redis/values.yaml b/kubernetes/dcaegen2/charts/redis/values.yaml new file mode 100644 index 0000000000..7b38163bbc --- /dev/null +++ b/kubernetes/dcaegen2/charts/redis/values.yaml @@ -0,0 +1,114 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + persistence: {} + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/org.onap.dcaegen2.deployments.redis-cluster-container.redis-cluster-container:1.0.0 +pullPolicy: Always + +# application configuration +# Example: +config: {} + +# default number of instances +replicaCount: 6 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 60 + periodSeconds: 10 + timeoutSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 15 + periodSeconds: 10 + +service: + #Example service definition with external, internal and node ports. + #Services may use any combination of ports depending on the 'type' of + #service being defined. + type: NodePort + name: client + externalPort: 6379 + internalPort: 6379 + nodePort: 86 + name2: gossip + externalPort2: 16379 + internalPort2: 16379 + nodePort2: 87 + +## Persist data to a persitent volume +persistence: + enabled: true + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: <storageClass> + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + accessMode: ReadWriteOnce + size: 10Mi + mountPath: /dockerdata-nfs + mountSubPath: redis/data + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/dcaegen2/requirements.yaml b/kubernetes/dcaegen2/requirements.yaml new file mode 100644 index 0000000000..8cddd3029f --- /dev/null +++ b/kubernetes/dcaegen2/requirements.yaml @@ -0,0 +1,4 @@ +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/dcaegen2/values.yaml b/kubernetes/dcaegen2/values.yaml index 5443089e45..eff5ef1f7f 100644 --- a/kubernetes/dcaegen2/values.yaml +++ b/kubernetes/dcaegen2/values.yaml @@ -17,3 +17,5 @@ location: dg2 image: repository: nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.bootstrap:v1.1.0 pullPolicy: Always +redis: + replicaCount: 6 diff --git a/kubernetes/dmaap/.helmignore b/kubernetes/dmaap/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/dmaap/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/dmaap/Chart.yaml b/kubernetes/dmaap/Chart.yaml new file mode 100644 index 0000000000..a83b50b2d3 --- /dev/null +++ b/kubernetes/dmaap/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2018 AT&T Intellectual Property. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: a Helm chart to deploy ONAP DMaaP componetns in Kubernetes +name: dmaap +version: 2.0.0 diff --git a/kubernetes/dmaap/README.md b/kubernetes/dmaap/README.md new file mode 100644 index 0000000000..e185fdc6a7 --- /dev/null +++ b/kubernetes/dmaap/README.md @@ -0,0 +1,11 @@ +# Helm Chart for ONAP DMaaP Applications + +ONAP includes the following Kubernetes services: + +1) message-router - a message bus for applications +2) dmaap-prov - an API to provision DMaaP resources + +# Service Dependencies + +message-router depends on AAF +dmaap-prov depends on AAF and Postgresql. NOTE: until Postgresql is available as a common service in ONAP, this chart deploys a private instance based on kubernetes/stable chart diff --git a/kubernetes/dmaap/charts/postgresql/Chart.yaml b/kubernetes/dmaap/charts/postgresql/Chart.yaml new file mode 100644 index 0000000000..c64338735a --- /dev/null +++ b/kubernetes/dmaap/charts/postgresql/Chart.yaml @@ -0,0 +1,16 @@ +name: postgresql +version: 0.9.3 +description: Object-relational database management system (ORDBMS) with an emphasis on extensibility and on standards-compliance. +keywords: +- postgresql +- postgres +- database +- sql +home: https://www.postgresql.org/ +icon: https://www.postgresql.org/media/img/about/press/elephant.png +sources: +- https://github.com/kubernetes/charts +- https://github.com/docker-library/postgres +maintainers: +- name: databus23 +engine: gotpl diff --git a/kubernetes/dmaap/charts/postgresql/templates/Notes.txt b/kubernetes/dmaap/charts/postgresql/templates/Notes.txt new file mode 100644 index 0000000000..9b49bb2982 --- /dev/null +++ b/kubernetes/dmaap/charts/postgresql/templates/Notes.txt @@ -0,0 +1,35 @@ +# PostgreSQL can be accessed via port 5432 on the following DNS name from within your cluster: +# {{ template "postgresql.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local +# +# To get your user password run: +# +# PGPASSWORD=$(kubectl get secret --namespace {{ .Values.global.nsPrefix }} {{ template "postgresql.fullname" . }} -o jsonpath="{.data.postgres-password}" | base64 --decode; echo) +# +# To connect to your database run the following command (using the env variable from above): +# +# kubectl run --namespace {{ .Values.global.nsPrefix }} {{ template "postgresql.fullname" . }}-client --restart=Never --rm --tty -i --image postgres \ +# --env "PGPASSWORD=$PGPASSWORD" \{{- if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }} +# --labels="{{ template "postgresql.fullname" . }}-client=true" \{{- end }} +# --command -- psql -U {{ default "postgres" .Values.postgresUser }} \ +# -h {{ template "postgresql.fullname" . }} {{ default "postgres" .Values.postgresDatabase }} +# +# {{ if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }} +# Note: Since NetworkPolicy is enabled, only pods with label +# {{ template "postgresql.fullname" . }}-client=true" +# will be able to connect to this PostgreSQL cluster. +# {{- end }} +# +# To connect to your database directly from outside the K8s cluster: +# {{- if contains "NodePort" .Values.service.type }} +# PGHOST=$(kubectl get nodes --namespace {{ .Values.global.nsPrefix }} -o jsonpath='{.items[0].status.addresses[0].address}') +# PGPORT=$(kubectl get svc --namespace {{ .Values.global.nsPrefix }} {{ template "postgresql.fullname" . }} -o jsonpath='{.spec.ports[0].nodePort}') +# +# {{- else if contains "ClusterIP" .Values.service.type }} +# PGHOST=127.0.0.1 +# PGPORT={{ default "5432" .Values.service.port }} +# +# # Execute the following commands to route the connection: +# export POD_NAME=$(kubectl get pods --namespace {{ .Values.global.nsPrefix }} -l "app={{ template "postgresql.fullname" . }}" -o jsonpath="{.items[0].metadata.name}") +# kubectl port-forward --namespace {{ .Values.global.nsPrefix }} $POD_NAME {{ default "5432" .Values.service.port }}:{{ default "5432" .Values.service.port }} +# +# {{- end }} diff --git a/kubernetes/dmaap/charts/postgresql/templates/_helpers.tpl b/kubernetes/dmaap/charts/postgresql/templates/_helpers.tpl new file mode 100644 index 0000000000..b2d3d523a9 --- /dev/null +++ b/kubernetes/dmaap/charts/postgresql/templates/_helpers.tpl @@ -0,0 +1,36 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "postgresql.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "postgresql.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for networkpolicy. +*/}} +{{- define "postgresql.networkPolicy.apiVersion" -}} +{{- if and (ge .Capabilities.KubeVersion.Minor "4") (le .Capabilities.KubeVersion.Minor "6") -}} +"extensions/v1beta1" +{{- else if ge .Capabilities.KubeVersion.Minor "7" -}} +"networking.k8s.io/v1" +{{- end -}} +{{- end -}} diff --git a/kubernetes/dmaap/charts/postgresql/templates/deployment.yaml b/kubernetes/dmaap/charts/postgresql/templates/deployment.yaml new file mode 100644 index 0000000000..57acfbda9b --- /dev/null +++ b/kubernetes/dmaap/charts/postgresql/templates/deployment.yaml @@ -0,0 +1,128 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ template "postgresql.fullname" . }} + namespace: {{ .Values.global.nsPrefix }} + labels: + app: {{ template "postgresql.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + template: + metadata: + labels: + app: {{ template "postgresql.fullname" . }} + spec: + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 8 }} + {{- end }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.tolerations }} + tolerations: +{{ toYaml .Values.tolerations | indent 8 }} + {{- end }} + {{- if .Values.schedulerName }} + schedulerName: "{{ .Values.schedulerName }}" + {{- end }} + containers: + - name: {{ template "postgresql.fullname" . }} + image: "{{ .Values.image }}:{{ .Values.imageTag }}" + imagePullPolicy: {{ default "" .Values.imagePullPolicy | quote }} + args: + {{- range $key, $value := default dict .Values.postgresConfig }} + - -c + - '{{ $key | snakecase }}={{ $value }}' + {{- end }} + env: + - name: POSTGRES_USER + value: {{ default "postgres" .Values.global.postgresUser | quote }} + # Required for pg_isready in the health probes. + - name: PGUSER + value: {{ default "postgres" .Values.global.postgresUser | quote }} + - name: POSTGRES_DB + value: {{ default "" .Values.global.postgresDatabase | quote }} + - name: POSTGRES_INITDB_ARGS + value: {{ default "" .Values.postgresInitdbArgs | quote }} + - name: PGDATA + value: /var/lib/postgresql/data/pgdata + - name: POSTGRES_PASSWORD + value: {{ default "postgres" .Values.global.postgresPassword | quote }} +# original code: +# valueFrom: +# secretKeyRef: +# name: {{ template "postgresql.fullname" . }} +# key: postgres-password + - name: POD_IP + valueFrom: { fieldRef: { fieldPath: status.podIP } } + ports: + - name: postgresql + containerPort: 5432 + livenessProbe: + exec: + command: + - sh + - -c + - exec pg_isready --host $POD_IP + initialDelaySeconds: 120 + timeoutSeconds: 5 + failureThreshold: 6 + readinessProbe: + exec: + command: + - sh + - -c + - exec pg_isready --host $POD_IP + initialDelaySeconds: 5 + timeoutSeconds: 3 + periodSeconds: 5 + resources: +{{ toYaml .Values.resources | indent 10 }} + volumeMounts: + - name: data + mountPath: {{ .Values.persistence.mountPath }} + subPath: {{ .Values.persistence.subPath }} +{{- if .Values.metrics.enabled }} + - name: metrics + image: "{{ .Values.metrics.image }}:{{ .Values.metrics.imageTag }}" + imagePullPolicy: {{ default "" .Values.metrics.imagePullPolicy | quote }} + env: + - name: DATA_SOURCE_NAME + value: postgresql://postgres@127.0.0.1:5432?sslmode=disable + ports: + - name: metrics + containerPort: 9187 + {{- if .Values.metrics.customMetrics }} + args: ["-extend.query-path", "/conf/custom-metrics.yaml"] + volumeMounts: + - name: custom-metrics + mountPath: /conf + readOnly: true + {{- end }} + resources: +{{ toYaml .Values.metrics.resources | indent 10 }} +{{- end }} + volumes: + - name: data + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (include "postgresql.fullname" .) }} + {{- else }} + emptyDir: {} + {{- end }} + {{- if and .Values.metrics.enabled .Values.metrics.customMetrics }} + - name: custom-metrics + secret: + secretName: {{ template "postgresql.fullname" . }} + items: + - key: custom-metrics.yaml + path: custom-metrics.yaml + {{- end }} + {{- if .Values.imagePullSecrets }} + imagePullSecrets: + - name: {{ .Values.imagePullSecrets }} + {{- end }} diff --git a/kubernetes/dmaap/charts/postgresql/templates/networkpolicy.yaml b/kubernetes/dmaap/charts/postgresql/templates/networkpolicy.yaml new file mode 100644 index 0000000000..92f3b71b15 --- /dev/null +++ b/kubernetes/dmaap/charts/postgresql/templates/networkpolicy.yaml @@ -0,0 +1,28 @@ +{{- if .Values.networkPolicy.enabled }} +kind: NetworkPolicy +apiVersion: {{ template "postgresql.networkPolicy.apiVersion" . }} +metadata: + name: "{{ template "postgresql.fullname" . }}" + labels: + app: {{ template "postgresql.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + podSelector: + matchLabels: + app: "{{ template "postgresql.fullname" . }}" + ingress: + # Allow inbound connections + - ports: + - port: 5432 + {{- if not .Values.networkPolicy.allowExternal }} + from: + - podSelector: + matchLabels: + {{ template "postgresql.fullname" . }}-client: "true" + {{- end }} + # Allow prometheus scrapes + - ports: + - port: 9187 +{{- end }} diff --git a/kubernetes/dmaap/charts/postgresql/templates/pvc.yaml b/kubernetes/dmaap/charts/postgresql/templates/pvc.yaml new file mode 100644 index 0000000000..f1d38dfb14 --- /dev/null +++ b/kubernetes/dmaap/charts/postgresql/templates/pvc.yaml @@ -0,0 +1,28 @@ +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ template "postgresql.fullname" . }} + labels: + app: {{ template "postgresql.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{- if .Values.persistence.annotations }} + annotations: +{{ toYaml .Values.persistence.annotations | indent 4 }} +{{- end }} +spec: + accessModes: + - {{ .Values.persistence.accessMode | quote }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} +{{- if .Values.persistence.storageClass }} +{{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" +{{- end }} +{{- end }} +{{- end -}} diff --git a/kubernetes/dmaap/charts/postgresql/templates/secrets.yaml b/kubernetes/dmaap/charts/postgresql/templates/secrets.yaml new file mode 100644 index 0000000000..6dd4c7da55 --- /dev/null +++ b/kubernetes/dmaap/charts/postgresql/templates/secrets.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "postgresql.fullname" . }} + labels: + app: {{ template "postgresql.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +type: Opaque +data: + {{ if .Values.postgresPassword }} + postgres-password: {{ .Values.postgresPassword | b64enc | quote }} + {{ else }} + postgres-password: {{ randAlphaNum 10 | b64enc | quote }} + {{ end }} + {{- if .Values.metrics.customMetrics }} + custom-metrics.yaml: {{ toYaml .Values.metrics.customMetrics | b64enc | quote }} + {{- end }} diff --git a/kubernetes/dmaap/charts/postgresql/templates/svc.yaml b/kubernetes/dmaap/charts/postgresql/templates/svc.yaml new file mode 100644 index 0000000000..f6373c8368 --- /dev/null +++ b/kubernetes/dmaap/charts/postgresql/templates/svc.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: Service +metadata: + name: dmaap-prov-{{ template "postgresql.name" . }} + namespace: {{ .Values.global.nsPrefix }} + labels: + app: {{ template "postgresql.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{- if .Values.metrics.enabled }} + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "9187" +{{- end }} +spec: + type: {{ .Values.service.type }} + ports: + - name: postgresql + port: {{ .Values.service.port }} + targetPort: postgresql + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} +{{- if .Values.service.externalIPs }} + externalIPs: +{{ toYaml .Values.service.externalIPs | indent 4 }} +{{- end }} + selector: + app: {{ template "postgresql.fullname" . }} diff --git a/kubernetes/dmaap/charts/postgresql/values.yaml b/kubernetes/dmaap/charts/postgresql/values.yaml new file mode 100644 index 0000000000..37bbddaef9 --- /dev/null +++ b/kubernetes/dmaap/charts/postgresql/values.yaml @@ -0,0 +1,123 @@ +## postgres image repository +image: "postgres" +## postgres image version +## ref: https://hub.docker.com/r/library/postgres/tags/ +## +imageTag: "9.6.2" + +## Specify a imagePullPolicy +## 'Always' if imageTag is 'latest', else set to 'IfNotPresent' +## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images +## +# imagePullPolicy: + +## Specify imagePullSecrets +## ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod +## +# imagePullSecrets: myregistrykey + +## Create a database user +## Default: postgres +#postgresUser: "dmaap" +## Default: random 10 character string +#postgresPassword: "onapdemodb" + +## Create a database +## Default: the postgres user +#postgresDatabase: "dmaap" + +## Specify initdb arguments, e.g. --data-checksums +## ref: https://github.com/docker-library/docs/blob/master/postgres/content.md#postgres_initdb_args +## ref: https://www.postgresql.org/docs/current/static/app-initdb.html +# postgresInitdbArgs: + +## Use an alternate scheduler, e.g. "stork". +## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +## +# schedulerName: + +## Specify runtime config parameters as a dict, using camelCase, e.g. +## {"sharedBuffers": "500MB"} +## ref: https://www.postgresql.org/docs/current/static/runtime-config.html +# postgresConfig: + +## Persist data to a persitent volume +persistence: + enabled: false + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: <storageClass> + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # storageClass: "-" + accessMode: ReadWriteOnce + size: 8Gi + subPath: "postgresql-db" + mountPath: /var/lib/postgresql/data/pgdata + + # annotations: {} + +metrics: + enabled: false + image: wrouesnel/postgres_exporter + imageTag: v0.1.1 + imagePullPolicy: IfNotPresent + resources: + requests: + memory: 256Mi + cpu: 100m + ## Define additional custom metrics + ## ref: https://github.com/wrouesnel/postgres_exporter#adding-new-metrics-via-a-config-file + # customMetrics: + # pg_database: + # query: "SELECT d.datname AS name, CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') THEN pg_catalog.pg_database_size(d.datname) ELSE 0 END AS size FROM pg_catalog.pg_database d where datname not in ('template0', 'template1', 'postgres')" + # metrics: + # - name: + # usage: "LABEL" + # description: "Name of the database" + # - size_bytes: + # usage: "GAUGE" + # description: "Size of the database in bytes" + +## Configure resource requests and limits +## ref: http://kubernetes.io/docs/user-guide/compute-resources/ +## +resources: + requests: + memory: 256Mi + cpu: 100m + +service: + type: ClusterIP + port: 5432 + externalIPs: [] + ## Manually set NodePort value + ## Requires service.type: NodePort + # nodePort: + +networkPolicy: + ## Enable creation of NetworkPolicy resources. + ## + enabled: false + + ## The Policy model to apply. When set to false, only pods with the correct + ## client label will have network access to the port PostgreSQL is listening + ## on. When true, PostgreSQL will accept connections from any source + ## (with the correct destination port). + ## + allowExternal: true + +## Node labels and tolerations for pod assignment +## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector +## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature +nodeSelector: {} +tolerations: [] +affinity: {} diff --git a/kubernetes/dmaap/requirements.yaml b/kubernetes/dmaap/requirements.yaml new file mode 100644 index 0000000000..a5ef229145 --- /dev/null +++ b/kubernetes/dmaap/requirements.yaml @@ -0,0 +1,18 @@ +# Copyright © 2018 AT&T Intellectual Property. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/dmaap/resources/config/README.txt b/kubernetes/dmaap/resources/config/README.txt new file mode 100644 index 0000000000..5cc01497f5 --- /dev/null +++ b/kubernetes/dmaap/resources/config/README.txt @@ -0,0 +1,10 @@ +This directory contains all external configuration files that +need to be mounted into an application container. + +See the configmap.yaml in the templates directory for an example +of how to load (ie map) config files from this directory, into +Kubernetes, for distribution within the k8s cluster. + +See deployment.yaml in the templates directory for an example +of how the 'config mapped' files are then mounted into the +containers. diff --git a/kubernetes/dmaap/resources/config/application.properties b/kubernetes/dmaap/resources/config/application.properties new file mode 100644 index 0000000000..496a15a531 --- /dev/null +++ b/kubernetes/dmaap/resources/config/application.properties @@ -0,0 +1 @@ +sampleConfigKey=sampleConfigValue
\ No newline at end of file diff --git a/kubernetes/dmaap/resources/config/buscontroller.env b/kubernetes/dmaap/resources/config/buscontroller.env new file mode 100644 index 0000000000..74d7822faa --- /dev/null +++ b/kubernetes/dmaap/resources/config/buscontroller.env @@ -0,0 +1,12 @@ +DMAAPBC_PG_ENABLED=true +DMAAPBC_PGHOST=dmaap-prov-postgresql +DMAAPBC_PGDBNAME={{ .Values.global.postgresDatabase }} +DMAAPBC_PGCRED={{ .Values.global.postgresPassword }} +DMAAPBC_PGUSER={{ .Values.global.postgresUser }} +DMAAPBC_MR_CNAME={{ .Values.dmaapMessageRouterService }} +DMAAPBC_AAF_URL={{ .Values.aafURL }} +DMAAPBC_TOPICMGR_USER={{ .Values.topicMgrUser }} +DMAAPBC_TOPICMGR_PWD={{ .Values.topicMgrPwd }} +DMAAPBC_ADMIN_USER={{ .Values.adminUser }} +DMAAPBC_ADMIN_PWD={{ .Values.adminPwd }} + diff --git a/kubernetes/dmaap/templates/NOTES.txt b/kubernetes/dmaap/templates/NOTES.txt new file mode 100644 index 0000000000..33b47cfc02 --- /dev/null +++ b/kubernetes/dmaap/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Values.global.nsPrefix }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}-prov) + export NODE_IP=$(kubectl get nodes --namespace {{ .Values.global.nsPrefix }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Values.global.nsPrefix }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Values.global.nsPrefix }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/dmaap/templates/configmap.yaml b/kubernetes/dmaap/templates/configmap.yaml new file mode 100644 index 0000000000..0d6a348249 --- /dev/null +++ b/kubernetes/dmaap/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2018 AT&T Intellectual Property. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-configmap + namespace: {{ .Values.global.nsPrefix }} +data: +{{ tpl (.Files.Glob "resources/config/buscontroller.env").AsConfig . | indent 2 }} diff --git a/kubernetes/dmaap/templates/deployment.yaml b/kubernetes/dmaap/templates/deployment.yaml new file mode 100644 index 0000000000..824548bd5e --- /dev/null +++ b/kubernetes/dmaap/templates/deployment.yaml @@ -0,0 +1,113 @@ +# Copyright © 2018 AT&T Intellectual Property. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + #name: {{ .Release.Name }}-{{ include "common.name" . }}-buscontroller + name: {{ include "common.name" . }}-{{ .Values.buscontroller.service }} + namespace: {{ .Values.global.nsPrefix }} + labels: + app: {{ include "common.name" . }}-{{ .Values.buscontroller.service }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.buscontroller.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }}-{{ .Values.buscontroller.service }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }}-{{ .Values.buscontroller.service }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image.buscontrollerImage }}:{{ .Values.image.buscontrollerVersion }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.buscontroller.httpExternalPort }} +# wait till we get SSL certs before enabling this port +# - containerPort: {{ .Values.buscontroller.httpsPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + httpGet: + port: {{ .Values.buscontroller.httpExternalPort }} + path: /webapi/info + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + httpGet: + port: {{ .Values.buscontroller.httpExternalPort }} + path: /webapi/info + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: +#Example environment variable passed to container +# - name: DEBUG_FLAG +# value: {{ .Values.global.debugEnabled | default .Values.debugEnabled | quote }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /opt/app/config + name: {{ include "common.name" . }}-config + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.name" . }}-config + configMap: + name: {{ include "common.fullname" . }}-configmap + items: + - key: buscontroller.env + path: conf +#Example config file mount into container +# - name: {{ include "common.fullname" . }}-config +# configMap: +# name: {{ include "common.fullname" . }}-configmap +# items: +# - key: application.properties +# path: application.properties + imagePullSecrets: + - name: "{{ .Values.global.nsPrefix }}-docker-registry-key" diff --git a/kubernetes/dmaap/templates/service.yaml b/kubernetes/dmaap/templates/service.yaml new file mode 100644 index 0000000000..9580e75590 --- /dev/null +++ b/kubernetes/dmaap/templates/service.yaml @@ -0,0 +1,60 @@ +# Copyright © 2018 AT&T Intellectual Property. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#{{ if not .Values.disableBuscontroller }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.name" . }}-{{ .Values.buscontroller.service }} + namespace: {{ .Values.global.nsPrefix }} + labels: + app: {{ .Values.buscontroller.service }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: +# Example MSB registration annotation +# msb.onap.org/service-info: '[ +# { +# "serviceName": "so", +# "version": "v1", +# "url": "/ecomp/mso/infra", +# "protocol": "REST" +# "port": "8080", +# "visualRange":"1" +# } +# ]' +spec: + type: {{ .Values.buscontroller.type }} + ports: + {{if eq .Values.buscontroller.type "NodePort" -}} + - port: {{ .Values.buscontroller.httpExternalPort }} + targetPort: {{ .Values.buscontroller.httpExternalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.buscontroller.httpPort }} + name: "{{ .Values.buscontroller.name }}-http-port" +# This will be needed when we get SSL certificates +# - port: {{ .Values.buscontroller.httpsExternalPort }} +# targetPort: {{ .Values.buscontroller.httpsExternalPort }} +# nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.buscontroller.httpsPort }} +# name: "{{ .Values.buscontroller.name }}-https-port" + {{- else -}} + - port: {{ .Values.buscontroller.externalPort }} + targetPort: {{ .Values.buscontroller.httpPort }} + name: {{ .Values.buscontroller.name }} + {{- end}} + selector: + app: {{ include "common.name" . }}-{{ .Values.buscontroller.service }} + release: {{ .Release.Name }} + +#{{ end }} diff --git a/kubernetes/dmaap/values.yaml b/kubernetes/dmaap/values.yaml new file mode 100644 index 0000000000..f6c49842a4 --- /dev/null +++ b/kubernetes/dmaap/values.yaml @@ -0,0 +1,118 @@ +# Copyright © 2018 AT&T Intellectual Property. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + postgresDatabase: dmaap + postgresUser: dmaap_admin + postgresPassword: onapdemodb + nsPrefix: onap + + +################################################################# +# Application configuration defaults. +################################################################# +#nsPrefix: onap +pullPolicy: Always + +# application images +repository: nexus3.onap.org:10001 + +image: + buscontrollerImage: onap/dmaap/buscontroller + buscontrollerVersion: 1.0.5 + + +# application configuration +# Example: +config: +# username: myusername +# password: mypassword +dmaapMessageRouterService: dmaap +aafURL: https://onap-aaf:8905/proxy/ +topicMgrUser: m23456@dmaapbc.onap.org +topicMgrPwd: onapdemo +adminUser: m12345@dmaapbc.onap.org +adminPwd: onapdemo + + + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +buscontroller: + service: prov-api + type: NodePort + name: buscontroller + httpExternalPort: 8080 + httpsExternalPort: 8443 + httpPort: 42 + httpsPort: 43 +# default number of instances + replicas: 1 +# flag to enable debugging - application support required + debugEnabled: false + +service: + #Example service definition with external, internal and node ports. + #Services may use any combination of ports depending on the 'type' of + #service being defined. + type: NodePort + name: <onap-app> + externalPort: <8080> + internalPort: <80> + nodePort: <replace with unused node port suffix eg. 23> + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/esr/values.yaml b/kubernetes/esr/values.yaml index 3af491745e..27f4df990e 100644 --- a/kubernetes/esr/values.yaml +++ b/kubernetes/esr/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 diff --git a/kubernetes/helm/starters/onap-app/templates/deployment.yaml b/kubernetes/helm/starters/onap-app/templates/deployment.yaml index 8b2bb4e516..a78795486b 100644 --- a/kubernetes/helm/starters/onap-app/templates/deployment.yaml +++ b/kubernetes/helm/starters/onap-app/templates/deployment.yaml @@ -48,19 +48,19 @@ spec: # name: {{ include "common.name" . }}-readiness containers: - name: {{ include "common.name" . }} - image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + image: "{{ include "common.repository" . }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} ports: - containerPort: {{ .Values.service.internalPort }} # disable liveness probe when breakpoints set in debugger # so K8s doesn't restart unresponsive container - {{- if eq .Values.liveness.enabled true }} + {{ if .Values.liveness.enabled }} livenessProbe: tcpSocket: port: {{ .Values.service.internalPort }} initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} periodSeconds: {{ .Values.liveness.periodSeconds }} - {{ end -}} + {{ end }} readinessProbe: tcpSocket: port: {{ .Values.service.internalPort }} diff --git a/kubernetes/helm/starters/onap-app/templates/service.yaml b/kubernetes/helm/starters/onap-app/templates/service.yaml index cab488aac3..94b81e855c 100644 --- a/kubernetes/helm/starters/onap-app/templates/service.yaml +++ b/kubernetes/helm/starters/onap-app/templates/service.yaml @@ -15,7 +15,7 @@ apiVersion: v1 kind: Service metadata: - name: {{ include "common.fullname" . }} + name: {{ include "common.servicename" . }} namespace: {{ include "common.namespace" . }} labels: app: {{ include "common.name" . }} @@ -42,11 +42,11 @@ spec: #Example internal target port if required #targetPort: {{ .Values.service.internalPort }} nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} - name: {{ .Values.service.name }} + name: {{ .Values.service.portName | default "http" }} {{- else -}} - port: {{ .Values.service.externalPort }} targetPort: {{ .Values.service.internalPort }} - name: {{ .Values.service.name }} + name: {{ .Values.service.portName | default "http" }} {{- end}} selector: app: {{ include "common.name" . }} diff --git a/kubernetes/helm/starters/onap-app/values.yaml b/kubernetes/helm/starters/onap-app/values.yaml index 60b4682c5e..13666a8c2f 100644 --- a/kubernetes/helm/starters/onap-app/values.yaml +++ b/kubernetes/helm/starters/onap-app/values.yaml @@ -17,9 +17,10 @@ ################################################################# global: nodePortPrefix: 302 + repository: nexus3.onap.org:10001 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.0.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 @@ -59,15 +60,21 @@ readiness: initialDelaySeconds: 10 periodSeconds: 10 +#Example service definition with external, internal and node ports. service: - #Example service definition with external, internal and node ports. + # The default service name (exposed in the service.yaml) will be the same + # name as the chart. If the service name needs to be overriden (such as + # when a subchart is shared), uncomment the value below. + #name: <service-name-override> + #Services may use any combination of ports depending on the 'type' of #service being defined. type: NodePort - name: <onap-app> externalPort: <8080> internalPort: <80> nodePort: <replace with unused node port suffix eg. 23> + # optional port name override - default can be defined in service.yaml + #portName: http ingress: enabled: false diff --git a/kubernetes/log/charts/log-elasticsearch/resources/config/elasticsearch.yml b/kubernetes/log/charts/log-elasticsearch/resources/config/elasticsearch.yml index e7933b8570..abdab8beb5 100644 --- a/kubernetes/log/charts/log-elasticsearch/resources/config/elasticsearch.yml +++ b/kubernetes/log/charts/log-elasticsearch/resources/config/elasticsearch.yml @@ -116,7 +116,7 @@ http.port: {{.Values.service.externalPort}} # If a range is specified, the node will bind to the first available port in the range. # Defaults to 9300-9400. # More info: -transport.tcp.port: {{.Values.service.externalPortTcp}} +transport.tcp.port: {{.Values.service.externalPort2}} xpack.graph.enabled: false #Set to false to disable X-Pack graph features. diff --git a/kubernetes/log/charts/log-elasticsearch/templates/deployment.yaml b/kubernetes/log/charts/log-elasticsearch/templates/deployment.yaml index 13caa7e866..fdfc6140fd 100644 --- a/kubernetes/log/charts/log-elasticsearch/templates/deployment.yaml +++ b/kubernetes/log/charts/log-elasticsearch/templates/deployment.yaml @@ -61,8 +61,8 @@ spec: ports: - containerPort: {{ .Values.service.internalPort }} name: {{ .Values.service.name }} - - containerPort: {{ .Values.service.internalPortTcp }} - name: {{ .Values.service.name }}-tcp + - containerPort: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name2 }} # disable liveness probe when breakpoints set in debugger # so K8s doesn't restart unresponsive container {{- if eq .Values.liveness.enabled true }} @@ -74,7 +74,7 @@ spec: {{ end -}} readinessProbe: tcpSocket: - port: {{ .Values.service.internalPortTcp }} + port: {{ .Values.service.internalPort2 }} initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} periodSeconds: {{ .Values.readiness.periodSeconds }} env: diff --git a/kubernetes/log/charts/log-elasticsearch/templates/service.yaml b/kubernetes/log/charts/log-elasticsearch/templates/service.yaml index 72dfc7e817..cdc2ea8e77 100644 --- a/kubernetes/log/charts/log-elasticsearch/templates/service.yaml +++ b/kubernetes/log/charts/log-elasticsearch/templates/service.yaml @@ -27,19 +27,40 @@ spec: type: {{ .Values.service.type }} ports: {{if eq .Values.service.type "NodePort" -}} - - port: {{ .Values.service.externalPort }} + - port: {{ .Values.service.internalPort }} nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} name: {{ .Values.service.name }} - - port: {{ .Values.service.internalPortTcp }} - nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.externalPortTcp }} - name: {{ .Values.service.name }}-tcp {{- else -}} - port: {{ .Values.service.externalPort }} targetPort: {{ .Values.service.internalPort }} name: {{ .Values.service.name }} - - port: {{ .Values.service.externalPortTcp }} - targetPort: {{ .Values.service.internalPortTcp }} - name: {{ .Values.service.name }}-tcp + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name2 }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: {{ .Values.service.type2 }} + ports: + {{if eq .Values.service.type2 "NodePort" -}} + - port: {{ .Values.service.internalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: {{ .Values.service.name2 }} + {{- else -}} + - port: {{ .Values.service.externalPort2 }} + targetPort: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name2 }} {{- end}} selector: app: {{ include "common.name" . }} diff --git a/kubernetes/log/charts/log-elasticsearch/values.yaml b/kubernetes/log/charts/log-elasticsearch/values.yaml index 2e6e08509e..d5ac1d1781 100644 --- a/kubernetes/log/charts/log-elasticsearch/values.yaml +++ b/kubernetes/log/charts/log-elasticsearch/values.yaml @@ -82,15 +82,16 @@ persistence: mountSubPathLogs: log service: - #Example service definition with external, internal and node ports. - #Services may use any combination of ports depending on the 'type' of - #service being defined. - type: ClusterIP + type: NodePort name: log-es externalPort: 9200 internalPort: 9200 - externalPortTcp: 9300 - internalPortTcp: 9300 + nodePort: 54 + type2: ClusterIP + name2: log-es-tcp + externalPort2: 9300 + internalPort2: 9300 + ingress: enabled: false diff --git a/kubernetes/log/charts/log-kibana/templates/deployment.yaml b/kubernetes/log/charts/log-kibana/templates/deployment.yaml index bdd5a447be..09dc88fb20 100644 --- a/kubernetes/log/charts/log-kibana/templates/deployment.yaml +++ b/kubernetes/log/charts/log-kibana/templates/deployment.yaml @@ -53,27 +53,30 @@ spec: - containerPort: {{ .Values.service.internalPort }} name: {{ .Values.service.name }} readinessProbe: - tcpSocket: + httpGet: + path: "/" port: {{ .Values.service.internalPort }} initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} periodSeconds: {{ .Values.readiness.periodSeconds }} + timeoutSeconds: {{ .Values.readiness.timeoutSeconds }} # disable liveness probe when breakpoints set in debugger # so K8s doesn't restart unresponsive container {{- if eq .Values.liveness.enabled true }} livenessProbe: - tcpSocket: + httpGet: + path: "/" port: {{ .Values.service.internalPort }} initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} periodSeconds: {{ .Values.liveness.periodSeconds }} + timeoutSeconds: {{ .Values.liveness.timeoutSeconds }} {{ end -}} env: volumeMounts: - mountPath: /etc/localtime name: localtime readOnly: true - - mountPath: /usr/share/kibana/config/kibana.yml + - mountPath: /usr/share/kibana/config/ name: {{ include "common.fullname" . }} - subPath: kibana.yml resources: {{ toYaml .Values.resources | indent 12 }} {{- if .Values.nodeSelector }} diff --git a/kubernetes/log/charts/log-kibana/values.yaml b/kubernetes/log/charts/log-kibana/values.yaml index 50c6e52ee0..828e23f70e 100644 --- a/kubernetes/log/charts/log-kibana/values.yaml +++ b/kubernetes/log/charts/log-kibana/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 persistence: {} ################################################################# @@ -52,15 +52,17 @@ affinity: {} # probe configuration parameters liveness: - initialDelaySeconds: 120 + initialDelaySeconds: 180 periodSeconds: 10 + timeoutSeconds: 1 # necessary to disable liveness probe when setting breakpoints # in debugger so K8s doesn't restart unresponsive container enabled: true readiness: - initialDelaySeconds: 10 + initialDelaySeconds: 180 periodSeconds: 10 + timeoutSeconds: 1 service: #Example service definition with external, internal and node ports. diff --git a/kubernetes/log/charts/log-logstash/resources/config/onap-pipeline.conf b/kubernetes/log/charts/log-logstash/resources/config/onap-pipeline.conf index 3b4fd768c3..e46d2bac14 100644 --- a/kubernetes/log/charts/log-logstash/resources/config/onap-pipeline.conf +++ b/kubernetes/log/charts/log-logstash/resources/config/onap-pipeline.conf @@ -37,8 +37,20 @@ input { filter { + grok { + break_on_match => false + match => { + "source" => ["/var/log/onap/(?<componentName>[^/]+)/", + "/var/log/onap/%{GREEDYDATA:componentLogFile}" + ] + } + } + # Filter for log4j xml events if "</log4j:event>" in [message] { + + #mutate { add_field => { "orgmsg_log4j" => "%{message}" } } # Copy of orginal msg for debug + #Filter to parse xml event and retrieve data xml { source => "message" @@ -118,7 +130,7 @@ filter { # Filter for logback events else { -# mutate { add_field => { "orgmsg" => "%{message}" } } # Copy of orginal msg for debug + #mutate { add_field => { "orgmsg" => "%{message}" } } # Copy of orginal msg for debug mutate { gsub => [ @@ -128,50 +140,44 @@ filter { 'message', '\t$', '\t' ] } + # The grok below parses the message field for all current logback patterns used by oom components. + # Example logback pattern: %d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg + # Example grok pattern: %{TIMESTAMP_ISO8601:Timestamp}\|%{UUID:RequestId}\|%{GREEDYDATA:message} + # Use the following command to find all logback patterns in oom directory: find oom -name "logback*xml" -exec grep "property.*attern.*value" {} \;|sort|uniq grok { - break_on_match => false match => { - "message" => ["%{TIMESTAMP_ISO8601:Timestamp}\t%{GREEDYDATA:Thread}\t%{SPACE}%{LOGLEVEL:loglevel}%{SPACE}\t%{JAVACLASS:Logger}\t(?:[^\t]+\t)*%{GREEDYDATA:message}", - "(?<MDCs>.*\t)" - ] - "source" => ["/var/log/onap/(?<componentName>[^/]+)/", - "/var/log/onap/%{GREEDYDATA:componentLogFile}" - ] + "message" => [ + "%{TIMESTAMP_ISO8601:Timestamp}\\t[%{GREEDYDATA:Thread}]\\t%{GREEDYDATA:loglevel}\\t%{JAVACLASS:Logger}\\t%{GREEDYDATA:MDCs}\\t%{GREEDYDATA:message}", + "%{TIMESTAMP_ISO8601:BeginTimestamp}\|%{TIMESTAMP_ISO8601:EndTimestamp}\|%{UUID:RequestId}\|%{GREEDYDATA:ServiceInstanceId}\|%{GREEDYDATA:Thread}\|%{GREEDYDATA:Unknown1}\|%{GREEDYDATA:ServiceName}\|%{GREEDYDATA:PartnerName}\|%{GREEDYDATA:TargetEntity}\|%{GREEDYDATA:TargetServiceName}\|%{GREEDYDATA:StatusCode}\|%{GREEDYDATA:ResponseCode}\|%{GREEDYDATA:ResponseDesc}\|%{UUID:InstanceUUID}\|%{GREEDYDATA:loglevel}\|%{GREEDYDATA:AlertSeverity}\|%{IP:ServerIPAddress}\|%{GREEDYDATA:Timer}\|%{HOSTNAME:ServerFQDN}\|%{IPORHOST:RemoteHost}\|%{GREEDYDATA:Unknown2}\|%{GREEDYDATA:Unknown3}\|%{GREEDYDATA:Unknown4}\|%{GREEDYDATA:TargetVirtualEntity}\|%{GREEDYDATA:Unknown5}\|%{GREEDYDATA:Unknown6}\|%{GREEDYDATA:Unknown7}\|%{GREEDYDATA:Unknown8}\|%{GREEDYDATA:message}", + "%{TIMESTAMP_ISO8601:BeginTimestamp}\|%{TIMESTAMP_ISO8601:EndTimestamp}\|%{UUID:RequestId}\|%{GREEDYDATA:ServiceInstanceId}\|%{GREEDYDATA:Thread}\|%{GREEDYDATA:Unknown1}\|%{GREEDYDATA:ServiceName}\|%{GREEDYDATA:PartnerName}\|%{GREEDYDATA:StatusCode}\|%{GREEDYDATA:ResponseCode}\|%{GREEDYDATA:ResponseDesc}\|%{UUID:InstanceUUID}\|%{GREEDYDATA:loglevel}\|%{GREEDYDATA:AlertSeverity}\|%{IP:ServerIPAddress}\|%{GREEDYDATA:Timer}\|%{HOSTNAME:ServerFQDN}\|%{IPORHOST:RemoteHost}\|%{GREEDYDATA:Unknown2}\|%{GREEDYDATA:Unknown3}\|%{GREEDYDATA:Unknown4}\|%{GREEDYDATA:Unknown5}\|%{GREEDYDATA:Unknown6}\|%{GREEDYDATA:Unknown7}\|%{GREEDYDATA:Unknown8}\|%{GREEDYDATA:message}", + "%{TIMESTAMP_ISO8601:Timestamp}\|%{UUID:RequestId}\|%{GREEDYDATA:ServiceInstanceId}\|%{GREEDYDATA:Thread}\|%{GREEDYDATA:ServiceName}\|%{UUID:InstanceUUID}\|%{GREEDYDATA:loglevel}\|%{GREEDYDATA:AlertSeverity}\|%{IP:ServerIPAddress}\|%{HOSTNAME:ServerFQDN}\|%{IPORHOST:RemoteHost}\|%{GREEDYDATA:Timer}\|\[%{GREEDYDATA:caller}\]\|%{GREEDYDATA:message}", + "%{TIMESTAMP_ISO8601:Timestamp}\|%{GREEDYDATA:RequestId}\|%{GREEDYDATA:Thread}\|%{GREEDYDATA:ServiceName}\|%{GREEDYDATA:PartnerName}\|%{GREEDYDATA:TargetEntity}\|%{GREEDYDATA:TargetServiceName}\|%{GREEDYDATA:loglevel}\|%{GREEDYDATA:ErrorCode}\|%{GREEDYDATA:ErrorDesc}\|%{GREEDYDATA:message}", + "%{TIMESTAMP_ISO8601:Timestamp}\|%{GREEDYDATA:RequestId}\|%{GREEDYDATA:Thread}\|%{GREEDYDATA:ClassName}\|%{GREEDYDATA:message}", + "%{TIMESTAMP_ISO8601:Timestamp}\|%{UUID:RequestId}\|%{GREEDYDATA:message}", + "\[%{TIMESTAMP_ISO8601:Timestamp}\|%{LOGLEVEL:loglevel}\|%{GREEDYDATA:Logger}\|%{GREEDYDATA:Thread}\] %{GREEDYDATA:message}" + ] } overwrite => ["message"] } + # The MDCs are key value pairs that are seperated by "," or "\t". Extra space characters are trimmed from the keys and values. kv { source => "MDCs" - field_split => "\t" + field_split => ",\t" trim_key => "\s" trim_value => "\s" remove_field => [ "MDCs" ] } + if (![Timestamp] and [EndTimestamp]) { + mutate { add_field => { "Timestamp" => "%{EndTimestamp}" } } + } date { match => [ "Timestamp", "ISO8601", "yyyy-MM-dd HH:mm:ss,SSS" ] target => "Timestamp" } - if [source] == "/var/log/onap/aai/aai-ml/metrics.log" { - csv { - source => "message" - separator => "|" - quote_char => "`" - columns => ["Begin TS", "End TS", "DuplicateRequestID", "Unknown1", "threadID", "phys/virt server name", "service name", "Partner Name", "Unknown2", "Unknown3", "Unknown4", "Unknown5", "Unknown6", "Unknown7", "Log level", "Unknown8", "Unknown9", "Status code", "Server", "Unknown10", "Unknown11", "Unknown12", "Unknown13", "Unknown14", "Unknown15", "Unknown16", "Unknown17", "Unknown18", "message"] - } - } - else if [source] == "/var/log/onap/aai/aai-ml/audit.log" { - csv { - source => "message" - separator => "|" - quote_char => "`" - columns => ["Begin TS", "End TS", "DuplicateRequestID", "Unknown1", "threadID", "phys/virt server name", "service name", "Partner Name", "Unknown2", "Unknown3", "Unknown4", "Unknown5", "Log level", "Unknown6", "Unknown7", "Status code", "Server", "Unknown10", "Unknown11", "Unknown12", "Unknown13", "Unknown14", "Unknown15", "Unknown16", "Unknown17", "message"] - } - } - mutate { - remove_field => ["DuplicateRequestID", "Unknown1", "Unknown2", "Unknown3", "Unknown4", "Unknown5", "Unknown6", "Unknown7", "Unknown8", "Unknown9", "Unknown10", "Unknown11", "Unknown12", "Unknown13", "Unknown14", "Unknown15", "Unknown16", "Unknown17", "Unknown18"] + remove_field => ["DuplicateRequestID", "Unknown1", "Unknown2", "Unknown3", "Unknown4", "Unknown5", "Unknown6", "Unknown7", "Unknown8"] } if ([source] == "/var/log/onap/sdc/sdc-be/audit.log") { diff --git a/kubernetes/log/charts/log-logstash/templates/deployment.yaml b/kubernetes/log/charts/log-logstash/templates/deployment.yaml index 682c448da8..7735c82616 100644 --- a/kubernetes/log/charts/log-logstash/templates/deployment.yaml +++ b/kubernetes/log/charts/log-logstash/templates/deployment.yaml @@ -52,8 +52,8 @@ spec: ports: - containerPort: {{ .Values.service.internalPort }} name: {{ .Values.service.name }} - - containerPort: {{ .Values.service.internalPortHttp }} - name: {{ .Values.service.name }}-http + - containerPort: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name2 }} readinessProbe: tcpSocket: port: {{ .Values.service.internalPort }} @@ -73,12 +73,10 @@ spec: - mountPath: /etc/localtime name: localtime readOnly: true - - mountPath: /usr/share/logstash/config/logstash.yml - name: {{ include "common.fullname" . }} - subPath: logstash.yml - - mountPath: /usr/share/logstash/pipeline/onap-pipeline.conf - name: {{ include "common.fullname" . }} - subPath: onap-pipeline.conf + - mountPath: /usr/share/logstash/config/ + name: {{ include "common.fullname" . }}-config + - mountPath: /usr/share/logstash/pipeline/ + name: {{ include "common.fullname" . }}-pipeline resources: {{ toYaml .Values.resources | indent 12 }} {{- if .Values.nodeSelector }} @@ -93,12 +91,16 @@ spec: - name: localtime hostPath: path: /etc/localtime - - name: {{ include "common.fullname" . }} + - name: {{ include "common.fullname" . }}-config configMap: name: {{ include "common.fullname" . }} items: - key: logstash.yml path: logstash.yml + - name: {{ include "common.fullname" . }}-pipeline + configMap: + name: {{ include "common.fullname" . }} + items: - key: onap-pipeline.conf path: onap-pipeline.conf imagePullSecrets: diff --git a/kubernetes/log/charts/log-logstash/templates/service.yaml b/kubernetes/log/charts/log-logstash/templates/service.yaml index ca71aa2224..cdc2ea8e77 100644 --- a/kubernetes/log/charts/log-logstash/templates/service.yaml +++ b/kubernetes/log/charts/log-logstash/templates/service.yaml @@ -27,19 +27,40 @@ spec: type: {{ .Values.service.type }} ports: {{if eq .Values.service.type "NodePort" -}} - - port: {{ .Values.service.externalPort }} + - port: {{ .Values.service.internalPort }} nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} name: {{ .Values.service.name }} - - port: {{ .Values.service.internalPortHttp }} - nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.externalPortHttp }} - name: {{ .Values.service.name }}-http {{- else -}} - port: {{ .Values.service.externalPort }} targetPort: {{ .Values.service.internalPort }} name: {{ .Values.service.name }} - - port: {{ .Values.service.externalPortHttp }} - targetPort: {{ .Values.service.internalPortHttp }} - name: {{ .Values.service.name }}-http + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name2 }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: {{ .Values.service.type2 }} + ports: + {{if eq .Values.service.type2 "NodePort" -}} + - port: {{ .Values.service.internalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: {{ .Values.service.name2 }} + {{- else -}} + - port: {{ .Values.service.externalPort2 }} + targetPort: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name2 }} {{- end}} selector: app: {{ include "common.name" . }} diff --git a/kubernetes/log/charts/log-logstash/values.yaml b/kubernetes/log/charts/log-logstash/values.yaml index bfe50b54a8..207182131b 100644 --- a/kubernetes/log/charts/log-logstash/values.yaml +++ b/kubernetes/log/charts/log-logstash/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 persistence: {} ################################################################# @@ -62,12 +62,15 @@ service: #Example service definition with external, internal and node ports. #Services may use any combination of ports depending on the 'type' of #service being defined. - type: ClusterIP + type: NodePort name: log-ls externalPort: 5044 internalPort: 5044 - externalPortHttp: 9600 - internalPortHttp: 9600 + nodePort: 55 + type2: ClusterIP + name2: log-ls-http + externalPort2: 9600 + internalPort2: 9600 ingress: enabled: false diff --git a/kubernetes/message-router/.helmignore b/kubernetes/message-router/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/message-router/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/message-router/Chart.yaml b/kubernetes/message-router/Chart.yaml index 109cce20fe..b3a7491d78 100644 --- a/kubernetes/message-router/Chart.yaml +++ b/kubernetes/message-router/Chart.yaml @@ -13,6 +13,7 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +appVersion: "1.0" +description: ONAP Message Router name: message-router -version: 0.1.0 +version: 2.0.0 diff --git a/kubernetes/message-router/charts/kafka/.helmignore b/kubernetes/message-router/charts/kafka/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/message-router/charts/kafka/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/message-router/charts/kafka/Chart.yaml b/kubernetes/message-router/charts/kafka/Chart.yaml new file mode 100644 index 0000000000..b26f91a04e --- /dev/null +++ b/kubernetes/message-router/charts/kafka/Chart.yaml @@ -0,0 +1,19 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP Global Kafka Service +name: kafka +version: 2.0.0 + diff --git a/kubernetes/message-router/charts/kafka/templates/NOTES.txt b/kubernetes/message-router/charts/kafka/templates/NOTES.txt new file mode 100644 index 0000000000..c60c745ca3 --- /dev/null +++ b/kubernetes/message-router/charts/kafka/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/message-router/charts/kafka/templates/deployment.yaml b/kubernetes/message-router/charts/kafka/templates/deployment.yaml new file mode 100644 index 0000000000..347442f8ef --- /dev/null +++ b/kubernetes/message-router/charts/kafka/templates/deployment.yaml @@ -0,0 +1,111 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: + - command: + - bash + args: + - -c + - "if [ -d /var/tmp/SDC-DISTR-NOTIF-TOPIC-SDC-OPENSOURCE-ENV1-0 ]; then echo nothing to do; else cp -a /opt/config/src/message-router/dcae-startup-vm-message-router/docker_files/data-kafka/* /var/tmp/; fi" + image: "{{ .Values.global.configRepository }}/{{ .Values.global.configImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /var/tmp + name: kafka-data + name: kafka-primer + - command: + - /root/ready.py + args: + - --container-name + - {{ .Values.zookeeper.nameOverride }} + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: KAFKA_ZOOKEEPER_CONNECT + value: "{{.Values.zookeeper.nameOverride}}:{{.Values.config.zookeeperPort}}" + - name: KAFKA_ADVERTISED_HOST_NAME + value: "{{ include "common.fullname" . }}" + - name: KAFKA_BROKER_ID + value: "0" + - name: KAFKA_ADVERTISED_LISTENERS + value: PLAINTEXT://{{ include "common.name" . }}:{{.Values.service.internalPort}} + - name: KAFKA_ADVERTISED_PORT + value: "{{.Values.service.internalPort}}" + - name: KAFKA_PORT + value: "{{.Values.service.internalPort}}" + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /var/run/docker.sock + name: docker-socket + - mountPath: /kafka + name: kafka-data + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: docker-socket + hostPath: + path: /var/run/docker.sock + - name: kafka-data + persistentVolumeClaim: + claimName: {{ include "common.fullname" . }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/message-router/charts/kafka/templates/pv.yaml b/kubernetes/message-router/charts/kafka/templates/pv.yaml new file mode 100644 index 0000000000..8be3d4c9cb --- /dev/null +++ b/kubernetes/message-router/charts/kafka/templates/pv.yaml @@ -0,0 +1,37 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }} +{{- end -}} diff --git a/kubernetes/message-router/charts/kafka/templates/pvc.yaml b/kubernetes/message-router/charts/kafka/templates/pvc.yaml new file mode 100644 index 0000000000..e27c3311e9 --- /dev/null +++ b/kubernetes/message-router/charts/kafka/templates/pvc.yaml @@ -0,0 +1,48 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{- if .Values.persistence.annotations }} + annotations: +{{ toYaml .Values.persistence.annotations | indent 4 }} +{{- end }} +spec: + selector: + matchLabels: + name: {{ include "common.fullname" . }} + accessModes: + - {{ .Values.persistence.accessMode }} + resources: + requests: + storage: {{ .Values.persistence.size }} +{{- if .Values.persistence.storageClass }} +{{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" +{{- end }} +{{- end }} +{{- end -}} diff --git a/kubernetes/vnfsdk/templates/all-services.yaml b/kubernetes/message-router/charts/kafka/templates/service.yaml index b592c47bad..c57d190bb9 100644 --- a/kubernetes/vnfsdk/templates/all-services.yaml +++ b/kubernetes/message-router/charts/kafka/templates/service.yaml @@ -12,37 +12,21 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableVnfsdkPostgres }} apiVersion: v1 kind: Service metadata: - name: postgres - namespace: {{ .Values.nsPrefix }} + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} labels: - app: postgres + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} spec: ports: - - name: postgres-port - port: 5432 + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} selector: - app: postgres - clusterIP: None -#{{ end }} -#{{ if not .Values.disableVnfsdkRefrepo }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: refrepo - name: refrepo - namespace: {{ .Values.nsPrefix }} -spec: - ports: - - name: "refrepo-port" - port: 8702 - nodePort: {{ .Values.nodePortPrefix }}97 - selector: - app: refrepo - type: NodePort -#{{ end }}
\ No newline at end of file + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/message-router/charts/kafka/values.yaml b/kubernetes/message-router/charts/kafka/values.yaml new file mode 100644 index 0000000000..7675ee80b7 --- /dev/null +++ b/kubernetes/message-router/charts/kafka/values.yaml @@ -0,0 +1,115 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + configRepository: oomk8s + configImage: config-init:2.0.0-SNAPSHOT + persistence: {} + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: docker.io +image: wurstmeister/kafka:latest +pullPolicy: Always + +zookeeper: + nameOverride: zookeeper + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: + zookeeperPort: 2181 + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +## Persist data to a persitent volume +persistence: + enabled: true + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: <storageClass> + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # storageClass: "-" + accessMode: ReadWriteMany + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: message-router/data-kafka + +service: + type: NodePort + name: global-kafka + internalPort: 9092 + externalPort: 9092 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/message-router/charts/zookeeper/.helmignore b/kubernetes/message-router/charts/zookeeper/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/message-router/charts/zookeeper/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/message-router/charts/zookeeper/Chart.yaml b/kubernetes/message-router/charts/zookeeper/Chart.yaml new file mode 100644 index 0000000000..dd999e5314 --- /dev/null +++ b/kubernetes/message-router/charts/zookeeper/Chart.yaml @@ -0,0 +1,19 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP Dmaap Zookeeper Service +name: zookeeper +version: 2.0.0 + diff --git a/kubernetes/message-router/charts/zookeeper/templates/NOTES.txt b/kubernetes/message-router/charts/zookeeper/templates/NOTES.txt new file mode 100644 index 0000000000..c60c745ca3 --- /dev/null +++ b/kubernetes/message-router/charts/zookeeper/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/message-router/charts/zookeeper/templates/deployment.yaml b/kubernetes/message-router/charts/zookeeper/templates/deployment.yaml new file mode 100644 index 0000000000..678b83e3bd --- /dev/null +++ b/kubernetes/message-router/charts/zookeeper/templates/deployment.yaml @@ -0,0 +1,79 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: + - command: + - bash + args: + - -c + - "if [ -d /var/tmp/version-2 ]; then echo nothing to do; else cp -a /opt/config/src/message-router/dcae-startup-vm-message-router/docker_files/data-zookeeper/* /var/tmp/; fi" + image: "{{ .Values.global.configRepository }}/{{ .Values.global.configImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /var/tmp + name: zookeeper-data + name: zookeeper-primer + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /opt/zookeeper-3.4.9/data + name: zookeeper-data + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: zookeeper-data + persistentVolumeClaim: + claimName: {{ include "common.fullname" . }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/message-router/charts/zookeeper/templates/pv.yaml b/kubernetes/message-router/charts/zookeeper/templates/pv.yaml new file mode 100644 index 0000000000..8be3d4c9cb --- /dev/null +++ b/kubernetes/message-router/charts/zookeeper/templates/pv.yaml @@ -0,0 +1,37 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size }} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }} +{{- end -}} diff --git a/kubernetes/message-router/charts/zookeeper/templates/pvc.yaml b/kubernetes/message-router/charts/zookeeper/templates/pvc.yaml new file mode 100644 index 0000000000..e27c3311e9 --- /dev/null +++ b/kubernetes/message-router/charts/zookeeper/templates/pvc.yaml @@ -0,0 +1,48 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{- if .Values.persistence.annotations }} + annotations: +{{ toYaml .Values.persistence.annotations | indent 4 }} +{{- end }} +spec: + selector: + matchLabels: + name: {{ include "common.fullname" . }} + accessModes: + - {{ .Values.persistence.accessMode }} + resources: + requests: + storage: {{ .Values.persistence.size }} +{{- if .Values.persistence.storageClass }} +{{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" +{{- end }} +{{- end }} +{{- end -}} diff --git a/kubernetes/consul/templates/consul-server-service.yaml b/kubernetes/message-router/charts/zookeeper/templates/service.yaml index 1a646b4aba..2386125587 100644 --- a/kubernetes/consul/templates/consul-server-service.yaml +++ b/kubernetes/message-router/charts/zookeeper/templates/service.yaml @@ -12,27 +12,21 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableConsulConsulServer }} apiVersion: v1 kind: Service metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} labels: - app: consul-server - name: consul-server - namespace: "{{ .Values.nsPrefix }}" + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} spec: ports: - - name: consul-ui - nodePort: {{ .Values.nodePortPrefix }}70 - port: 8500 - protocol: TCP - targetPort: 8500 - - name: consul-join - nodePort: {{ .Values.nodePortPrefix }}71 - port: 8301 - protocol: TCP - targetPort: 8301 + - port: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} selector: - app: consul-server - type: {{ .Values.service.type | quote }} -#{{ end }}
\ No newline at end of file + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + clusterIP: None diff --git a/kubernetes/message-router/charts/zookeeper/values.yaml b/kubernetes/message-router/charts/zookeeper/values.yaml new file mode 100644 index 0000000000..8a419704c8 --- /dev/null +++ b/kubernetes/message-router/charts/zookeeper/values.yaml @@ -0,0 +1,110 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + configRepository: oomk8s + configImage: config-init:2.0.0-SNAPSHOT + persistence: {} + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: docker.io +image: wurstmeister/zookeeper:latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +## Persist data to a persitent volume +persistence: + enabled: true + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: <storageClass> + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # storageClass: "-" + accessMode: ReadWriteMany + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: message-router/data-zookeeper/ + +service: + type: NodePort + name: zookeeper + internalPort: 2181 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/message-router/requirements.yaml b/kubernetes/message-router/requirements.yaml new file mode 100644 index 0000000000..7beecb385c --- /dev/null +++ b/kubernetes/message-router/requirements.yaml @@ -0,0 +1,22 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + # local reference to common chart, as it is + # a part of this chart's package and will not + # be published independently to a repo (at this point) + repository: '@local' + diff --git a/kubernetes/message-router/resources/config/dmaap/MsgRtrApi.properties b/kubernetes/message-router/resources/config/dmaap/MsgRtrApi.properties index 568d0d4ce0..ed3999d36e 100755 --- a/kubernetes/message-router/resources/config/dmaap/MsgRtrApi.properties +++ b/kubernetes/message-router/resources/config/dmaap/MsgRtrApi.properties @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + ############################################################################### ## ## Cambria API Server config @@ -5,7 +19,7 @@ ## - Default values are shown as commented settings. ## -############################################################################### +############################################################################## ## ## HTTP service ## @@ -15,10 +29,9 @@ ## ## Both Cambria and Kafka make use of Zookeeper. ## -# config.zk.servers=zookeeper.namespace-placeholder:2181 -config.zk.servers=zookeeper:2181 +config.zk.servers={{.Values.zookeeper.nameOverride}}:{{.Values.config.zookeeperPort}} #config.zk.servers=172.17.0.1:2181 -#dmaap.namespace-placeholder:2181 +#dmaap.onap-message-router:2181 #10.208.128.229:2181 #config.zk.root=/fe3c/cambria/config @@ -31,9 +44,9 @@ config.zk.servers=zookeeper:2181 ## configurations (after removing "kafka.") ## if you want to change request.required.acks it can take this one value #kafka.metadata.broker.list=localhost:9092,localhost:9093 -kafka.metadata.broker.list=global-kafka:9092 +kafka.metadata.broker.list={{.Values.kafka.nameOverride}}:{{.Values.config.kafkaPort}} #kafka.metadata.broker.list=172.17.0.1:9092 -#dmaap.namespace-placeholder:9092 +#dmaap.onap-message-router:9092 #10.208.128.229:9092 ##kafka.request.required.acks=-1 #kafka.client.zookeeper=${config.zk.servers} diff --git a/kubernetes/message-router/resources/config/dmaap/cadi.properties b/kubernetes/message-router/resources/config/dmaap/cadi.properties index 1cb00a5cda..9079794517 100755 --- a/kubernetes/message-router/resources/config/dmaap/cadi.properties +++ b/kubernetes/message-router/resources/config/dmaap/cadi.properties @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada, AT&T +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + basic_realm=openecomp.org basic_warn=TRUE diff --git a/kubernetes/message-router/templates/NOTES.txt b/kubernetes/message-router/templates/NOTES.txt new file mode 100644 index 0000000000..c60c745ca3 --- /dev/null +++ b/kubernetes/message-router/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/message-router/templates/all-services.yaml b/kubernetes/message-router/templates/all-services.yaml deleted file mode 100644 index da6fee117d..0000000000 --- a/kubernetes/message-router/templates/all-services.yaml +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMessageRouterZookeeper }} -apiVersion: v1 -kind: Service -metadata: - name: zookeeper - namespace: "{{ .Values.nsPrefix }}" - labels: - app: zookeeper -spec: - ports: - - name: zookeeper1 - port: 2181 - selector: - app: zookeeper - clusterIP: None -#{{ end }} -#{{ if not .Values.disableMessageRouterGlobalKafka }} ---- -apiVersion: v1 -kind: Service -metadata: - name: global-kafka - namespace: "{{ .Values.nsPrefix }}" - labels: - app: global-kafka -spec: - ports: - - name: kafka1 - port: 9092 - selector: - app: global-kafka - clusterIP: None -#{{ end }} -#{{ if not .Values.disableMessageRouterDmaap }} ---- -apiVersion: v1 -kind: Service -metadata: - name: dmaap - namespace: "{{ .Values.nsPrefix }}" - labels: - app: dmaap - version: 1.0.0 - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "message-router", - "version": "v1", - "url": "/", - "protocol": "REST", - "port": "3904", - "visualRange":"1" - } - ]' -spec: - ports: - - name: mr1 - port: 3904 - nodePort: {{ .Values.nodePortPrefix }}27 - - name: mr2 - port: 3905 - nodePort: {{ .Values.nodePortPrefix }}26 - selector: - app: dmaap - type: NodePort -#{{ end }}
\ No newline at end of file diff --git a/kubernetes/message-router/templates/configmap.yaml b/kubernetes/message-router/templates/configmap.yaml new file mode 100644 index 0000000000..911d2e9c0e --- /dev/null +++ b/kubernetes/message-router/templates/configmap.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-msgrtrapi-prop-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/dmaap/MsgRtrApi.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-cadi-prop-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/dmaap/cadi.properties").AsConfig . | indent 2 }} diff --git a/kubernetes/message-router/templates/deployment.yaml b/kubernetes/message-router/templates/deployment.yaml new file mode 100644 index 0000000000..ed3c4ebb7a --- /dev/null +++ b/kubernetes/message-router/templates/deployment.yaml @@ -0,0 +1,95 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: + - command: + - /root/ready.py + args: + - --container-name + - {{ .Values.kafka.nameOverride }} + - --container-name + - {{ .Values.zookeeper.nameOverride }} + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.externalPort }} + - containerPort: {{ .Values.service.externalPort2 }} + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.externalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.externalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties + subPath: MsgRtrApi.properties + name: appprops + - mountPath: /appl/dmaapMR1/etc/cadi.properties + subPath: cadi.properties + name: cadi + - mountPath: /appl/dmaapMR1/etc/keyfile + subPath: mykey + name: mykey + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: appprops + configMap: + name: {{ include "common.fullname" . }}-msgrtrapi-prop-configmap + - name: cadi + configMap: + name: {{ include "common.fullname" . }}-cadi-prop-configmap + - name: mykey + secret: + secretName: {{ include "common.fullname" . }}-secret + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/message-router/templates/dmaap-configmap.yaml b/kubernetes/message-router/templates/dmaap-configmap.yaml deleted file mode 100644 index bd1e629b21..0000000000 --- a/kubernetes/message-router/templates/dmaap-configmap.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: mr-dmaap-cadi-prop-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/dmaap/cadi.properties").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mr-dmaap-msgrtrapi-prop-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/dmaap/MsgRtrApi.properties").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mr-dmaap-mykey-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/dmaap/mykey").AsConfig . | indent 2 }} diff --git a/kubernetes/message-router/templates/message-router-dmaap.yaml b/kubernetes/message-router/templates/message-router-dmaap.yaml deleted file mode 100644 index a0c13802bb..0000000000 --- a/kubernetes/message-router/templates/message-router-dmaap.yaml +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMessageRouterDmaap }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: message-router-dmaap - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.dmaapReplicas }} - selector: - matchLabels: - app: dmaap - template: - metadata: - labels: - app: dmaap - name: message-router-dmaap - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - global-kafka - - --container-name - - zookeeper - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: dmaap-readiness - containers: - - image: {{ .Values.image.dmaap }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: dmaap - ports: - - containerPort: 3904 - - containerPort: 3905 - readinessProbe: - tcpSocket: - port: 3904 - initialDelaySeconds: 5 - periodSeconds: 10 - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties - subPath: MsgRtrApi.properties - name: appprops - - mountPath: /appl/dmaapMR1/etc/cadi.properties - subPath: cadi.properties - name: cadi - - mountPath: /appl/dmaapMR1/etc/keyfile - subPath: mykey - name: mykey - restartPolicy: Always - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: appprops - configMap: - name: mr-dmaap-msgrtrapi-prop-configmap - - name: cadi - configMap: - name: mr-dmaap-cadi-prop-configmap - - name: mykey - configMap: - name: mr-dmaap-mykey-configmap - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -{{ end }} - diff --git a/kubernetes/message-router/templates/message-router-kafka.yaml b/kubernetes/message-router/templates/message-router-kafka.yaml deleted file mode 100644 index 844de040d4..0000000000 --- a/kubernetes/message-router/templates/message-router-kafka.yaml +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMessageRouterGlobalKafka }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: message-router-global-kafka - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.kafkaReplicas }} - selector: - matchLabels: - app: global-kafka - template: - metadata: - labels: - app: global-kafka - name: message-router-global-kafka - spec: - initContainers: - - command: - - bash - args: - - -c - - "if [ -d /var/tmp/SDC-DISTR-NOTIF-TOPIC-SDC-OPENSOURCE-ENV1-0 ]; then echo nothing to do; else cp -a /opt/config/src/message-router/dcae-startup-vm-message-router/docker_files/data-kafka/* /var/tmp/; fi" - image: {{ .Values.image.config }} - imagePullPolicy: {{ .Values.pullPolicy }} - volumeMounts: - - mountPath: /var/tmp - name: kafka-data - name: kafka-primer - - command: - - /root/ready.py - args: - - --container-name - - zookeeper - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: kafka-readiness - containers: - - image: {{ .Values.image.kafka }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: global-kafka - ports: - - containerPort: 9092 - readinessProbe: - tcpSocket: - port: 9092 - initialDelaySeconds: 5 - periodSeconds: 10 - env: - - name: KAFKA_ZOOKEEPER_CONNECT - value: "zookeeper.{{ .Values.nsPrefix }}:2181" - - name: KAFKA_ADVERTISED_HOST_NAME - value: "global-kafka" - - name: KAFKA_BROKER_ID - value: "1" - - name: KAFKA_ADVERTISED_PORT - value: "9092" - - name: KAFKA_PORT - value: "9092" - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /var/run/docker.sock - name: docker-socket - - mountPath: /kafka - name: kafka-data - restartPolicy: Always - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: docker-socket - hostPath: - path: /var/run/docker.sock - - name: kafka-data - persistentVolumeClaim: - claimName: message-router-kafka - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} - diff --git a/kubernetes/message-router/templates/message-router-pv-pvc.yaml b/kubernetes/message-router/templates/message-router-pv-pvc.yaml deleted file mode 100644 index a39a975f33..0000000000 --- a/kubernetes/message-router/templates/message-router-pv-pvc.yaml +++ /dev/null @@ -1,81 +0,0 @@ -{{/* -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*/}} - -#{{ if not .Values.disableMessageRouterGlobalKafka }} -apiVersion: v1 -kind: PersistentVolume -metadata: - name: "{{ .Values.nsPrefix }}-message-router-kafka" - namespace: "{{ .Values.nsPrefix }}" - labels: - name: "{{ .Values.nsPrefix }}-message-router-kafka" -spec: - capacity: - storage: 2Gi - accessModes: - - ReadWriteMany - persistentVolumeReclaimPolicy: Retain - hostPath: - path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/message-router/dcae-startup-vm-message-router/docker_files/data-kafka/ ---- -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: message-router-kafka - namespace: "{{ .Values.nsPrefix }}" -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 2Gi - selector: - matchLabels: - name: "{{ .Values.nsPrefix }}-message-router-kafka" -#{{ end }} -#{{ if not .Values.disableMessageRouterZookeeper }} ---- -apiVersion: v1 -kind: PersistentVolume -metadata: - name: "{{ .Values.nsPrefix }}-message-router-zookeeper" - namespace: "{{ .Values.nsPrefix }}" - labels: - name: "{{ .Values.nsPrefix }}-message-router-zookeeper" -spec: - capacity: - storage: 2Gi - accessModes: - - ReadWriteMany - persistentVolumeReclaimPolicy: Retain - hostPath: - path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/message-router/dcae-startup-vm-message-router/docker_files/data-zookeeper ---- -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: message-router-zookeeper - namespace: "{{ .Values.nsPrefix }}" -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 2Gi - selector: - matchLabels: - name: "{{ .Values.nsPrefix }}-message-router-zookeeper" -#{{ end }} diff --git a/kubernetes/message-router/templates/message-router-zookeeper.yaml b/kubernetes/message-router/templates/message-router-zookeeper.yaml deleted file mode 100644 index 1b3e8f8ed9..0000000000 --- a/kubernetes/message-router/templates/message-router-zookeeper.yaml +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMessageRouterZookeeper }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: message-router-zookeeper - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.zookeeperReplicas }} - selector: - matchLabels: - app: zookeeper - template: - metadata: - labels: - app: zookeeper - name: message-router-zookeeper - spec: - initContainers: - - command: - - bash - args: - - -c - - "if [ -d /var/tmp/version-2 ]; then echo nothing to do; else cp -a /opt/config/src/message-router/dcae-startup-vm-message-router/docker_files/data-zookeeper/* /var/tmp/; fi" - image: {{ .Values.image.config }} - imagePullPolicy: {{ .Values.pullPolicy }} - volumeMounts: - - mountPath: /var/tmp - name: zookeeper-data - name: zookeeper-primer - containers: - - image: {{ .Values.image.zookeeper }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: zookeeper - ports: - - containerPort: 2181 - readinessProbe: - tcpSocket: - port: 2181 - initialDelaySeconds: 5 - periodSeconds: 10 - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /opt/zookeeper-3.4.9/data - name: zookeeper-data - restartPolicy: Always - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: zookeeper-data - persistentVolumeClaim: - claimName: message-router-zookeeper - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} - diff --git a/kubernetes/message-router/templates/secrets.yaml b/kubernetes/message-router/templates/secrets.yaml new file mode 100644 index 0000000000..a7f6e18b39 --- /dev/null +++ b/kubernetes/message-router/templates/secrets.yaml @@ -0,0 +1,27 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }}-secret + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +data: +{{ (.Files.Glob "resources/config/dmaap/mykey").AsSecrets | indent 2 }} +type: Opaque diff --git a/kubernetes/message-router/templates/service.yaml b/kubernetes/message-router/templates/service.yaml new file mode 100644 index 0000000000..7265ecb544 --- /dev/null +++ b/kubernetes/message-router/templates/service.yaml @@ -0,0 +1,54 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "{{ include "common.fullname" . }}", + "version": "v1", + "url": "/", + "protocol": "REST", + "port": "{{.Values.service.internalPort}}", + "visualRange":"1" + } + ]' + +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }}-{{ .Values.service.externalPort }} + - port: {{ .Values.service.externalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: {{ .Values.service.name }}-{{ .Values.service.externalPort2 }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/message-router/values.yaml b/kubernetes/message-router/values.yaml index 68251471e6..9c335710ec 100644 --- a/kubernetes/message-router/values.yaml +++ b/kubernetes/message-router/values.yaml @@ -12,17 +12,85 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/dmaap/dmaap-mr:1.1.3 pullPolicy: Always -nodePortPrefix: 302 -dmaapReplicas: 1 -kafkaReplicas: 1 -zookeeperReplicas: 1 -dataRootDir: /dockerdata-nfs -image: - readiness: oomk8s/readiness-check:1.1.0 - dmaap: attos/dmaap:latest - kafka: wurstmeister/kafka:latest - zookeeper: wurstmeister/zookeeper:latest - config: oomk8s/config-init:2.0.0-SNAPSHOT +nameOverride: dmaap + +kafka: + nameOverride: global-kafka +zookeeper: + nameOverride: zookeeper + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: + zookeeperPort: 2181 + kafkaPort: 9092 + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: message-router + externalPort: 3904 + nodePort: 27 + externalPort2: 3905 + nodePort2: 26 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/msb/charts/kube2msb/templates/deployment.yaml b/kubernetes/msb/charts/kube2msb/templates/deployment.yaml index 94b25a19bf..ad38750a8d 100644 --- a/kubernetes/msb/charts/kube2msb/templates/deployment.yaml +++ b/kubernetes/msb/charts/kube2msb/templates/deployment.yaml @@ -33,11 +33,6 @@ spec: name: {{ include "common.name" . }}-readiness containers: - name: {{ include "common.name" . }} - # TODO: Temporary command: - command: - - /bin/sh - - -c - - export AUTH_TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token); /bin/kube2msb --kube_master_url=${KUBE_MASTER_URL} --msb_url=${MSB_URL} image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} env: diff --git a/kubernetes/msb/charts/kube2msb/values.yaml b/kubernetes/msb/charts/kube2msb/values.yaml index 43810a9781..2022955bc1 100644 --- a/kubernetes/msb/charts/kube2msb/values.yaml +++ b/kubernetes/msb/charts/kube2msb/values.yaml @@ -5,7 +5,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 ################################################################# # Application configuration defaults. @@ -19,7 +19,7 @@ pullPolicy: Always config: routeLabels: "visualRange:1" kubeMasterUrl: https://kubernetes.default:443 - discoveryUrl: http://{{.Release.Name}}-msb-discovery.{{include "common.namespace" .}}:10081 + discoveryUrl: http://msb-discovery.{{include "common.namespace" .}}:10081 # default number of instances replicaCount: 1 diff --git a/kubernetes/msb/charts/msb-discovery/resources/config/log/logback.xml b/kubernetes/msb/charts/msb-discovery/resources/config/log/logback.xml new file mode 100644 index 0000000000..33775962b7 --- /dev/null +++ b/kubernetes/msb/charts/msb-discovery/resources/config/log/logback.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration debug="true" scan="true" scanPeriod="3 seconds"> + <!--<jmxConfigurator /> --> + <!-- specify the base path of the log directory --> + <property name="logDir" value="/var/log/onap" /> + <!-- specify the component name --> + <property name="componentName" value="msb" /> + <!-- specify the sub component name --> + <property name="subComponentName" value="discovery" /> + <!-- The directories where logs are written --> + <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> + <property name="pattern" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <!-- log file names --> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <property name="queueSize" value="256" /> + <property name="maxFileSize" value="50MB" /> + <property name="maxHistory" value="30" /> + <property name="totalSizeCap" value="10GB" /> + <!-- Example evaluator filter applied against console appender --> + <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender>
\ No newline at end of file diff --git a/kubernetes/msb/charts/msb-discovery/templates/configmap.yaml b/kubernetes/msb/charts/msb-discovery/templates/configmap.yaml new file mode 100644 index 0000000000..97c720a6ab --- /dev/null +++ b/kubernetes/msb/charts/msb-discovery/templates/configmap.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }} diff --git a/kubernetes/msb/charts/msb-discovery/templates/deployment.yaml b/kubernetes/msb/charts/msb-discovery/templates/deployment.yaml index f32a5d1544..b2660052dd 100644 --- a/kubernetes/msb/charts/msb-discovery/templates/deployment.yaml +++ b/kubernetes/msb/charts/msb-discovery/templates/deployment.yaml @@ -53,11 +53,13 @@ spec: periodSeconds: {{ .Values.readiness.periodSeconds }} env: - name: CONSUL_IP - value: {{.Release.Name}}-msb-consul.{{ include "common.namespace" . }} + value: msb-consul.{{ include "common.namespace" . }} volumeMounts: - mountPath: /etc/localtime name: localtime readOnly: true + - mountPath: /usr/local/discover-works/logs + name: msb-discovery-logs resources: {{ toYaml .Values.resources | indent 12 }} {{- if .Values.nodeSelector }} @@ -68,9 +70,23 @@ spec: affinity: {{ toYaml .Values.affinity | indent 10 }} {{- end }} + + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /var/log/onap + name: msb-discovery-logs + - mountPath: /usr/share/filebeat/data + name: msb-discovery-filebeat volumes: - name: localtime hostPath: path: /etc/localtime + - name: msb-discovery-logs + emptyDir: {} + - name: msb-discovery-filebeat + emptyDir: {} imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/msb/charts/msb-discovery/values.yaml b/kubernetes/msb/charts/msb-discovery/values.yaml index d10ba6032e..357a7ebc7d 100644 --- a/kubernetes/msb/charts/msb-discovery/values.yaml +++ b/kubernetes/msb/charts/msb-discovery/values.yaml @@ -5,7 +5,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 ################################################################# # Application configuration defaults. diff --git a/kubernetes/msb/charts/msb-eag/resources/config/log/logback.xml b/kubernetes/msb/charts/msb-eag/resources/config/log/logback.xml new file mode 100644 index 0000000000..33775962b7 --- /dev/null +++ b/kubernetes/msb/charts/msb-eag/resources/config/log/logback.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration debug="true" scan="true" scanPeriod="3 seconds"> + <!--<jmxConfigurator /> --> + <!-- specify the base path of the log directory --> + <property name="logDir" value="/var/log/onap" /> + <!-- specify the component name --> + <property name="componentName" value="msb" /> + <!-- specify the sub component name --> + <property name="subComponentName" value="discovery" /> + <!-- The directories where logs are written --> + <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> + <property name="pattern" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <!-- log file names --> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <property name="queueSize" value="256" /> + <property name="maxFileSize" value="50MB" /> + <property name="maxHistory" value="30" /> + <property name="totalSizeCap" value="10GB" /> + <!-- Example evaluator filter applied against console appender --> + <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender>
\ No newline at end of file diff --git a/kubernetes/msb/charts/msb-eag/templates/configmap.yaml b/kubernetes/msb/charts/msb-eag/templates/configmap.yaml new file mode 100644 index 0000000000..97c720a6ab --- /dev/null +++ b/kubernetes/msb/charts/msb-eag/templates/configmap.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }} diff --git a/kubernetes/msb/charts/msb-eag/templates/deployment.yaml b/kubernetes/msb/charts/msb-eag/templates/deployment.yaml index d41518d662..7ca8a8e203 100644 --- a/kubernetes/msb/charts/msb-eag/templates/deployment.yaml +++ b/kubernetes/msb/charts/msb-eag/templates/deployment.yaml @@ -56,15 +56,17 @@ spec: periodSeconds: {{ .Values.readiness.periodSeconds }} env: - name: CONSUL_IP - value: {{.Release.Name}}-msb-consul.{{ include "common.namespace" . }} + value: msb-consul.{{ include "common.namespace" . }} - name: SDCLIENT_IP - value: {{.Release.Name}}-msb-discovery.{{ include "common.namespace" . }} + value: msb-discovery.{{ include "common.namespace" . }} - name: ROUTE_LABELS value: {{ .Values.config.routeLabels }} volumeMounts: - mountPath: /etc/localtime name: localtime readOnly: true + - mountPath: /usr/local/apiroute-works/logs + name: msb-discovery-logs resources: {{ toYaml .Values.resources | indent 12 }} {{- if .Values.nodeSelector }} @@ -75,9 +77,22 @@ spec: affinity: {{ toYaml .Values.affinity | indent 10 }} {{- end }} + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /var/log/onap + name: msb-discovery-logs + - mountPath: /usr/share/filebeat/data + name: msb-discovery-filebeat volumes: - name: localtime hostPath: path: /etc/localtime + - name: msb-discovery-logs + emptyDir: {} + - name: msb-discovery-filebeat + emptyDir: {} imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/msb/charts/msb-eag/values.yaml b/kubernetes/msb/charts/msb-eag/values.yaml index 757b46768b..0540d0d928 100644 --- a/kubernetes/msb/charts/msb-eag/values.yaml +++ b/kubernetes/msb/charts/msb-eag/values.yaml @@ -5,7 +5,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 ################################################################# # Application configuration defaults. diff --git a/kubernetes/msb/charts/msb-iag/resources/config/log/logback.xml b/kubernetes/msb/charts/msb-iag/resources/config/log/logback.xml new file mode 100644 index 0000000000..33775962b7 --- /dev/null +++ b/kubernetes/msb/charts/msb-iag/resources/config/log/logback.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration debug="true" scan="true" scanPeriod="3 seconds"> + <!--<jmxConfigurator /> --> + <!-- specify the base path of the log directory --> + <property name="logDir" value="/var/log/onap" /> + <!-- specify the component name --> + <property name="componentName" value="msb" /> + <!-- specify the sub component name --> + <property name="subComponentName" value="discovery" /> + <!-- The directories where logs are written --> + <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> + <property name="pattern" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <!-- log file names --> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <property name="queueSize" value="256" /> + <property name="maxFileSize" value="50MB" /> + <property name="maxHistory" value="30" /> + <property name="totalSizeCap" value="10GB" /> + <!-- Example evaluator filter applied against console appender --> + <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender>
\ No newline at end of file diff --git a/kubernetes/msb/charts/msb-iag/templates/configmap.yaml b/kubernetes/msb/charts/msb-iag/templates/configmap.yaml new file mode 100644 index 0000000000..97c720a6ab --- /dev/null +++ b/kubernetes/msb/charts/msb-iag/templates/configmap.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/logback.xml").AsConfig . | indent 2 }} diff --git a/kubernetes/msb/charts/msb-iag/templates/deployment.yaml b/kubernetes/msb/charts/msb-iag/templates/deployment.yaml index d41518d662..7ca8a8e203 100644 --- a/kubernetes/msb/charts/msb-iag/templates/deployment.yaml +++ b/kubernetes/msb/charts/msb-iag/templates/deployment.yaml @@ -56,15 +56,17 @@ spec: periodSeconds: {{ .Values.readiness.periodSeconds }} env: - name: CONSUL_IP - value: {{.Release.Name}}-msb-consul.{{ include "common.namespace" . }} + value: msb-consul.{{ include "common.namespace" . }} - name: SDCLIENT_IP - value: {{.Release.Name}}-msb-discovery.{{ include "common.namespace" . }} + value: msb-discovery.{{ include "common.namespace" . }} - name: ROUTE_LABELS value: {{ .Values.config.routeLabels }} volumeMounts: - mountPath: /etc/localtime name: localtime readOnly: true + - mountPath: /usr/local/apiroute-works/logs + name: msb-discovery-logs resources: {{ toYaml .Values.resources | indent 12 }} {{- if .Values.nodeSelector }} @@ -75,9 +77,22 @@ spec: affinity: {{ toYaml .Values.affinity | indent 10 }} {{- end }} + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /var/log/onap + name: msb-discovery-logs + - mountPath: /usr/share/filebeat/data + name: msb-discovery-filebeat volumes: - name: localtime hostPath: path: /etc/localtime + - name: msb-discovery-logs + emptyDir: {} + - name: msb-discovery-filebeat + emptyDir: {} imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/msb/charts/msb-iag/values.yaml b/kubernetes/msb/charts/msb-iag/values.yaml index 6e4877b084..a659dae97c 100644 --- a/kubernetes/msb/charts/msb-iag/values.yaml +++ b/kubernetes/msb/charts/msb-iag/values.yaml @@ -5,7 +5,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 ################################################################# # Application configuration defaults. diff --git a/kubernetes/msb/resources/config/log/discovery/logback.xml b/kubernetes/msb/resources/config/log/discovery/logback.xml new file mode 100644 index 0000000000..33775962b7 --- /dev/null +++ b/kubernetes/msb/resources/config/log/discovery/logback.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration debug="true" scan="true" scanPeriod="3 seconds"> + <!--<jmxConfigurator /> --> + <!-- specify the base path of the log directory --> + <property name="logDir" value="/var/log/onap" /> + <!-- specify the component name --> + <property name="componentName" value="msb" /> + <!-- specify the sub component name --> + <property name="subComponentName" value="discovery" /> + <!-- The directories where logs are written --> + <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> + <property name="pattern" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <!-- log file names --> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <property name="queueSize" value="256" /> + <property name="maxFileSize" value="50MB" /> + <property name="maxHistory" value="30" /> + <property name="totalSizeCap" value="10GB" /> + <!-- Example evaluator filter applied against console appender --> + <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender>
\ No newline at end of file diff --git a/kubernetes/msb/resources/config/log/eag/logback.xml b/kubernetes/msb/resources/config/log/eag/logback.xml new file mode 100644 index 0000000000..dafba4b5d4 --- /dev/null +++ b/kubernetes/msb/resources/config/log/eag/logback.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration debug="true" scan="true" scanPeriod="3 seconds"> + <!--<jmxConfigurator /> --> + <!-- specify the base path of the log directory --> + <property name="logDir" value="/var/log/onap" /> + <!-- specify the component name --> + <property name="componentName" value="msb" /> + <!-- specify the sub component name --> + <property name="subComponentName" value="eag" /> + <!-- The directories where logs are written --> + <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> + <property name="pattern" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <!-- log file names --> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <property name="queueSize" value="256" /> + <property name="maxFileSize" value="50MB" /> + <property name="maxHistory" value="30" /> + <property name="totalSizeCap" value="10GB" /> + <!-- Example evaluator filter applied against console appender --> + <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender>
\ No newline at end of file diff --git a/kubernetes/mso/resources/config/log/filebeat/filebeat.yml b/kubernetes/msb/resources/config/log/filebeat/filebeat.yml index b0d4690754..89c6932577 100644 --- a/kubernetes/mso/resources/config/log/filebeat/filebeat.yml +++ b/kubernetes/msb/resources/config/log/filebeat/filebeat.yml @@ -21,7 +21,7 @@ output.logstash: #List of logstash server ip addresses with port number. #But, in our case, this will be the loadbalancer IP address. #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. - hosts: ["{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] + hosts: ["logstash.{{.Values.nsPrefix}}:5044"] #If enable will do load balancing among availabe Logstash, automatically. loadbalance: true diff --git a/kubernetes/msb/resources/config/log/iag/logback.xml b/kubernetes/msb/resources/config/log/iag/logback.xml new file mode 100644 index 0000000000..f841859592 --- /dev/null +++ b/kubernetes/msb/resources/config/log/iag/logback.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration debug="true" scan="true" scanPeriod="3 seconds"> + <!--<jmxConfigurator /> --> + <!-- specify the base path of the log directory --> + <property name="logDir" value="/var/log/onap" /> + <!-- specify the component name --> + <property name="componentName" value="msb" /> + <!-- specify the sub component name --> + <property name="subComponentName" value="iag" /> + <!-- The directories where logs are written --> + <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> + <property name="pattern" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger{36}\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" /> + <!-- log file names --> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <property name="queueSize" value="256" /> + <property name="maxFileSize" value="50MB" /> + <property name="maxHistory" value="30" /> + <property name="totalSizeCap" value="10GB" /> + <!-- Example evaluator filter applied against console appender --> + <appender class="ch.qos.logback.core.ConsoleAppender" name="STDOUT"> + <encoder> + <pattern>${pattern}</pattern> + </encoder> + </appender>
\ No newline at end of file diff --git a/kubernetes/msb/values.yaml b/kubernetes/msb/values.yaml index 49e5196e41..2a0dbe2ffa 100644 --- a/kubernetes/msb/values.yaml +++ b/kubernetes/msb/values.yaml @@ -18,3 +18,5 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 diff --git a/kubernetes/mso/resources/config/docker-files/scripts/start-jboss-server.sh b/kubernetes/mso/resources/config/docker-files/scripts/start-jboss-server.sh deleted file mode 100755 index 3280253743..0000000000 --- a/kubernetes/mso/resources/config/docker-files/scripts/start-jboss-server.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/sh -# Copyright 2015 AT&T Intellectual Properties -############################################################################## -# Script to initialize the chef-repo branch and.chef -# -############################################################################## -# Copy the certificates -echo 'Copying the *.crt provided in /shared folder' -cp --verbose /shared/*.crt /usr/local/share/ca-certificates -update-ca-certificates - -echo 'Running in JBOSS' -su - jboss - -DEBUG='' -if [ "$JBOSS_DEBUG" = true ] ; then - DEBUG="--debug" -fi - -#Start the chef-solo if mso-docker.json contains some data. -if [ -s /var/berks-cookbooks/${CHEF_REPO_NAME}/environments/mso-docker.json ] -then - echo "mso-docker.json has some configuration, replay the recipes." - chef-solo -c /var/berks-cookbooks/${CHEF_REPO_NAME}/solo.rb -o recipe[mso-config::apih],recipe[mso-config::bpmn],recipe[mso-config::jra] -else - echo "mso-docker.json is empty, do not replay the recipes." -fi - -JBOSS_PIDFILE=/tmp/jboss-standalone.pid -$JBOSS_HOME/bin/standalone.sh ${DEBUG} -c standalone-full-ha-mso.xml & -JBOSS_PID=$! -# Trap common signals and relay them to the jboss process -trap "kill -HUP $JBOSS_PID" HUP -trap "kill -TERM $JBOSS_PID" INT -trap "kill -QUIT $JBOSS_PID" QUIT -trap "kill -PIPE $JBOSS_PID" PIPE -trap "kill -TERM $JBOSS_PID" TERM -if [ "x$JBOSS_PIDFILE" != "x" ]; then - echo $JBOSS_PID > $JBOSS_PIDFILE -fi -# Wait until the background process exits -WAIT_STATUS=128 -while [ "$WAIT_STATUS" -ge 128 ]; do - wait $JBOSS_PID 2>/dev/null - WAIT_STATUS=$? - if [ "$WAIT_STATUS" -gt 128 ]; then - SIGNAL=`expr $WAIT_STATUS - 128` - SIGNAL_NAME=`kill -l $SIGNAL` - echo "*** JBossAS process ($JBOSS_PID) received $SIGNAL_NAME signal ***" >&2 - fi -done -if [ "$WAIT_STATUS" -lt 127 ]; then - JBOSS_STATUS=$WAIT_STATUS -else - JBOSS_STATUS=0 -fi -if [ "$JBOSS_STATUS" -ne 10 ]; then - # Wait for a complete shudown - wait $JBOSS_PID 2>/dev/null -fi -if [ "x$JBOSS_PIDFILE" != "x" ]; then - grep "$JBOSS_PID" $JBOSS_PIDFILE && rm $JBOSS_PIDFILE -fi diff --git a/kubernetes/mso/resources/config/log/logback.apihandler-infra.xml b/kubernetes/mso/resources/config/log/logback.apihandler-infra.xml deleted file mode 100644 index 3e0ea61ea6..0000000000 --- a/kubernetes/mso/resources/config/log/logback.apihandler-infra.xml +++ /dev/null @@ -1,139 +0,0 @@ -<configuration scan="false" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="ApiHandlerInfra"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - -<appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration> diff --git a/kubernetes/mso/resources/config/log/logback.appc.xml b/kubernetes/mso/resources/config/log/logback.appc.xml deleted file mode 100644 index 588f6f39d2..0000000000 --- a/kubernetes/mso/resources/config/log/logback.appc.xml +++ /dev/null @@ -1,138 +0,0 @@ -<configuration scan="false" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="AppCAdapter"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - -<appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration> diff --git a/kubernetes/mso/resources/config/log/logback.asdc.xml b/kubernetes/mso/resources/config/log/logback.asdc.xml deleted file mode 100644 index b4879e017f..0000000000 --- a/kubernetes/mso/resources/config/log/logback.asdc.xml +++ /dev/null @@ -1,138 +0,0 @@ -<configuration scan="false" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="ASDCController"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - -<appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration> diff --git a/kubernetes/mso/resources/config/log/logback.bpmn.xml b/kubernetes/mso/resources/config/log/logback.bpmn.xml deleted file mode 100644 index 3bc3ca157b..0000000000 --- a/kubernetes/mso/resources/config/log/logback.bpmn.xml +++ /dev/null @@ -1,139 +0,0 @@ -<configuration scan="true" scanPeriod="3 seconds" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="BPMN"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - - <appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration> diff --git a/kubernetes/mso/resources/config/log/logback.msorequestsdbadapter.xml b/kubernetes/mso/resources/config/log/logback.msorequestsdbadapter.xml deleted file mode 100644 index 64a5022aa6..0000000000 --- a/kubernetes/mso/resources/config/log/logback.msorequestsdbadapter.xml +++ /dev/null @@ -1,138 +0,0 @@ -<configuration scan="false" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="RequestDB"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - -<appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration> diff --git a/kubernetes/mso/resources/config/log/logback.network.xml b/kubernetes/mso/resources/config/log/logback.network.xml deleted file mode 100644 index 542a8f6f00..0000000000 --- a/kubernetes/mso/resources/config/log/logback.network.xml +++ /dev/null @@ -1,139 +0,0 @@ -<configuration scan="false" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="NetworkAdapter"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - -<appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration> diff --git a/kubernetes/mso/resources/config/log/logback.sdnc.xml b/kubernetes/mso/resources/config/log/logback.sdnc.xml deleted file mode 100644 index 1323a8961d..0000000000 --- a/kubernetes/mso/resources/config/log/logback.sdnc.xml +++ /dev/null @@ -1,138 +0,0 @@ -<configuration scan="false" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="SDNCAdapter"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - -<appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration> diff --git a/kubernetes/mso/resources/config/log/logback.tenant.xml b/kubernetes/mso/resources/config/log/logback.tenant.xml deleted file mode 100644 index a25c182e97..0000000000 --- a/kubernetes/mso/resources/config/log/logback.tenant.xml +++ /dev/null @@ -1,139 +0,0 @@ -<configuration scan="false" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="TenantAdapter"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - -<appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration> diff --git a/kubernetes/mso/resources/config/log/logback.vfc.xml b/kubernetes/mso/resources/config/log/logback.vfc.xml deleted file mode 100644 index d0b66be5bb..0000000000 --- a/kubernetes/mso/resources/config/log/logback.vfc.xml +++ /dev/null @@ -1,138 +0,0 @@ -<configuration scan="false" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="vfcadapter"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - -<appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration> diff --git a/kubernetes/mso/resources/config/log/logback.vnf.xml b/kubernetes/mso/resources/config/log/logback.vnf.xml deleted file mode 100644 index 32f6e69f81..0000000000 --- a/kubernetes/mso/resources/config/log/logback.vnf.xml +++ /dev/null @@ -1,138 +0,0 @@ -<configuration scan="false" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="VnfAdapter"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - -<appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration> diff --git a/kubernetes/mso/resources/config/log/logback.workflow-message-adapter.xml b/kubernetes/mso/resources/config/log/logback.workflow-message-adapter.xml deleted file mode 100644 index a7130a103f..0000000000 --- a/kubernetes/mso/resources/config/log/logback.workflow-message-adapter.xml +++ /dev/null @@ -1,138 +0,0 @@ -<configuration scan="false" debug="true"> - <!--<jmxConfigurator /> --> - <!-- directory path for all other type logs --> - <property name="logDir" value="/var/log/onap" /> - - <!-- directory path for debugging type logs --> - <property name="debugDir" value="/var/log/onap" /> - - <!-- specify the component name - <ECOMP-component-name>::= "MSO" | "DCAE" | "ASDC " | "AAI" |"Policy" | "SDNC" | "AC" --> - <property name="componentName" value="MSO"></property> - <property name="subComponentName" value="WorkflowMessageAdapter"></property> - <!-- log file names --> - <property name="errorLogName" value="error" /> - <property name="metricsLogName" value="metrics" /> - <property name="auditLogName" value="audit" /> - <property name="debugLogName" value="debug" /> - - <property name="errorPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%.-5level|%X{ErrorCode}|%X{ErrorDesc}|%msg%n" /> - <property name="debugPattern" value="%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}|%X{RequestId}|%msg%n" /> - - <property name="auditPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||||||%msg%n" /> - <property name="metricPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread||%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDesc}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{RemoteHost}||||%X{TargetVirtualEntity}|||||%msg%n" /> - <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" /> - <property name="debugLogDirectory" value="${debugDir}/${componentName}/${subComponentName}" /> - - <!-- ============================================================================ --> - <!-- EELF Appenders --> - <!-- ============================================================================ --> - - <!-- The EELFAppender is used to record events to the general application - log --> - - <!-- EELF Audit Appender. This appender is used to record audit engine - related logging events. The audit logger and appender are specializations - of the EELF application root logger and appender. This can be used to segregate - Policy engine events from other components, or it can be eliminated to record - these events as part of the application root log. --> - - <appender name="EELFAudit" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${auditLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${auditLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${auditPattern}</pattern> - </encoder> - </appender> - <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFAudit" /> - </appender> - - <appender name="EELFMetrics" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${metricsLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${metricsLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - - %msg%n"</pattern> --> - <pattern>${metricPattern}</pattern> - </encoder> - </appender> - - - <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFMetrics"/> - </appender> - - <appender name="EELFError" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${logDirectory}/${errorLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${logDirectory}/${errorLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>INFO</level> - </filter> - <encoder> - <pattern>${errorPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFError"/> - </appender> - - <appender name="EELFDebug" - class="ch.qos.logback.core.rolling.RollingFileAppender"> - <file>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log</file> - <rollingPolicy - class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${debugLogDirectory}/${debugLogName}${jboss.server.name}.log.%d</fileNamePattern> - <!--<maxHistory>30</maxHistory>--> - </rollingPolicy> - <encoder> - <pattern>${debugPattern}</pattern> - </encoder> - </appender> - - <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> - <queueSize>256</queueSize> - <appender-ref ref="EELFDebug" /> - <includeCallerData>true</includeCallerData> - </appender> - - - <!-- ============================================================================ --> - <!-- EELF loggers --> - <!-- ============================================================================ --> - - <logger name="com.att.eelf.audit" level="info" additivity="false"> - <appender-ref ref="asyncEELFAudit" /> - </logger> - - <logger name="com.att.eelf.metrics" level="info" additivity="false"> - <appender-ref ref="asyncEELFMetrics" /> - </logger> - - <logger name="com.att.eelf.error" level="debug" additivity="false"> - <appender-ref ref="asyncEELFError" /> - </logger> - <root level="INFO"> - <appender-ref ref="asyncEELFDebug" /> - </root> - -</configuration>
\ No newline at end of file diff --git a/kubernetes/mso/resources/config/mariadb/conf.d/mariadb1.cnf b/kubernetes/mso/resources/config/mariadb/conf.d/mariadb1.cnf deleted file mode 100644 index 39ed022489..0000000000 --- a/kubernetes/mso/resources/config/mariadb/conf.d/mariadb1.cnf +++ /dev/null @@ -1,193 +0,0 @@ -# Example MySQL config file for medium systems. -# -# This is for a system with memory 8G where MySQL plays -# an important part, or systems up to 128M where MySQL is used together with -# other programs (such as a web server) -# -# In this file, you can use all long options that a program supports. -# If you want to know which options a program supports, run the program -# with the "--help" option. - -# The following options will be passed to all MySQL clients -##[client] -##user = root -##port = 3306 -##socket = //opt/app/mysql/mysql.sock - -# Here follows entries for some specific programs - -# The MySQL server -[mysqld] -##performance_schema - -slow_query_log =ON -long_query_time =2 -slow_query_log_file =//var/lib/mysql/slow_query.log - -skip-external-locking -explicit_defaults_for_timestamp = true -skip-symbolic-links -local-infile = 0 -key_buffer_size = 16M -max_allowed_packet = 4M -table_open_cache = 100 -sort_buffer_size = 512K -net_buffer_length = 8K -read_buffer_size = 256K -read_rnd_buffer_size = 512K -myisam_sort_buffer_size = 8M -max_connections = 500 -lower_case_table_names = 1 -thread_stack = 256K -thread_cache_size = 25 -query_cache_size = 8M -query_cache_type = 0 -query_prealloc_size = 512K -query_cache_limit = 1M - -# Password validation -##plugin-load-add=simple_password_check.so -##simple_password_check_other_characters=0 - -# Audit Log settings -plugin-load-add=server_audit.so -server_audit=FORCE_PLUS_PERMANENT -server_audit_file_path=//var/lib/mysql/audit.log -server_audit_file_rotate_size=50M -server_audit_events=CONNECT,QUERY,TABLE -server_audit_logging=on - -# Don't listen on a TCP/IP port at all. This can be a security enhancement, -# if all processes that need to connect to mysqld run on the same host. -# All interaction with mysqld must be made via Unix sockets or named pipes. -# Note that using this option without enabling named pipes on Windows -# (via the "enable-named-pipe" option) will render mysqld useless! -# -#skip-networking - -# Replication Master Server (default) -# binary logging is required for replication -##log-bin=//var/lib/mysql/mysql-bin - -# binary logging format - mixed recommended -binlog_format=row - -# required unique id between 1 and 2^32 - 1 -# defaults to 1 if master-host is not set -# but will not function as a master if omitted - -# Replication Slave (comment out master section to use this) -# -# To configure this host as a replication slave, you can choose between -# two methods : -# -# 1) Use the CHANGE MASTER TO command (fully described in our manual) - -# the syntax is: -# -# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>, -# MASTER_USER=<user>, MASTER_PASSWORD=<password> ; -# -# where you replace <host>, <user>, <password> by quoted strings and -# <port> by the master's port number (3306 by default). -# -# Example: -# -# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, -# MASTER_USER='joe', MASTER_PASSWORD='secret'; -# -# OR -# -# 2) Set the variables below. However, in case you choose this method, then -# start replication for the first time (even unsuccessfully, for example -# if you mistyped the password in master-password and the slave fails to -# connect), the slave will create a master.info file, and any later -# change in this file to the variables' values below will be ignored and -# overridden by the content of the master.info file, unless you shutdown -# the slave server, delete master.info and restart the slaver server. -# For that reason, you may want to leave the lines below untouched -# (commented) and instead use CHANGE MASTER TO (see above) -# -# required unique id between 2 and 2^32 - 1 -# (and different from the master) -# defaults to 2 if master-host is set -# but will not function as a slave if omitted -#server-id = 2 -# -# The replication master for this slave - required -#master-host = <hostname> -# -# The username the slave will use for authentication when connecting -# to the master - required -#master-user = <username> -# -# The password the slave will authenticate with when connecting to -# the master - required -#master-password = <password> -# -# The port the master is listening on. -# optional - defaults to 3306 -#master-port = <port> -# -# binary logging - not required for slaves, but recommended -#log-bin=mysql-bin - -# Uncomment the following if you are using InnoDB tables -##innodb_data_home_dir = //opt/app/mysql/data -##innodb_data_file_path = ibdata1:20M:autoextend:max:32G -##innodb_log_group_home_dir = //opt/app/mysql/iblogs -# You can set .._buffer_pool_size up to 50 - 80 % -# of RAM but beware of setting memory usage too high -#innodb_buffer_pool_size = 6380M -#innodb_additional_mem_pool_size = 2M -# Set .._log_file_size to 25 % of buffer pool size -innodb_log_file_size = 150M -innodb_log_files_in_group = 3 -innodb_log_buffer_size = 8M -#innodb_flush_log_at_trx_commit = 1 -innodb_lock_wait_timeout = 50 -innodb_autoextend_increment = 100 -expire_logs_days = 8 -open_files_limit = 2000 -transaction-isolation=READ-COMMITTED -####### Galera parameters ####### -## Galera Provider configuration -wsrep_provider=/usr/lib/galera/libgalera_smm.so -wsrep_provider_options="gcache.size=2G; gcache.page_size=1G" -## Galera Cluster configuration -wsrep_cluster_name="MSO-automated-tests-cluster" -wsrep_cluster_address="gcomm://" -#wsrep_cluster_address="gcomm://mariadb1,mariadb2,mariadb3" -##wsrep_cluster_address="gcomm://192.169.3.184,192.169.3.185,192.169.3.186" -## Galera Synchronization configuration -wsrep_sst_method=rsync -#wsrep_sst_method=xtrabackup-v2 -#wsrep_sst_auth="sstuser:Mon#2o!6" -## Galera Node configuration -wsrep_node_name="mariadb1" -##wsrep_node_address="192.169.3.184" -wsrep_on=ON -## Status notification -#wsrep_notify_cmd=/opt/app/mysql/bin/wsrep_notify -####### - - -[mysqldump] -quick -max_allowed_packet = 16M - -[mysql] -no-auto-rehash -# Remove the next comment character if you are not familiar with SQL -#safe-updates - -[myisamchk] -key_buffer_size = 20971520 - -##[mysqlhotcopy] -##interactive-timeout -##[mysqld_safe] -##malloc-lib=//opt/app/mysql/local/lib/libjemalloc.so.1 -##log-error=//opt/app/mysql/log/mysqld.log - -general_log_file = /var/log/mysql/mysql.log -general_log = 1 diff --git a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/02-load-additional-changes.sh b/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/02-load-additional-changes.sh deleted file mode 100644 index a163801083..0000000000 --- a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/02-load-additional-changes.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# -# ============LICENSE_START========================================== -# =================================================================== -# Copyright © 2017 AT&T Intellectual Property. All rights reserved. -# =================================================================== -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============LICENSE_END============================================ -# -# ECOMP and OpenECOMP are trademarks -# and service marks of AT&T Intellectual Property. -# -# - -# TODO: update this script to work with the new DB schema - -# mysql -uroot -p$MYSQL_ROOT_PASSWORD -e "UPDATE heat_environment SET ENVIRONMENT='parameters:\n vfw_image_name: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)\n vfw_flavor_name: 4 GB General Purpose v1\n public_net_id: 00000000-0000-0000-0000-000000000000\n unprotected_private_net_id: zdfw1fwl01_unprotected\n protected_private_net_id: zdfw1fwl01_protected\n ecomp_private_net_id: oam_ecomp\n unprotected_private_net_cidr: 192.168.10.0/24\n protected_private_net_cidr: 192.168.20.0/24\n ecomp_private_net_cidr: 192.168.9.0/24\n vfw_private_ip_0: 192.168.10.100\n vfw_private_ip_1: 192.168.20.100\n vfw_private_ip_2: 192.168.9.100\n vpg_private_ip_0: 192.168.10.200\n vpg_private_ip_1: 192.168.9.200\n vsn_private_ip_0: 192.168.20.250\n vsn_private_ip_1: 192.168.9.250\n vfw_name_0: zdfw1fwl01fwl01\n vpg_name_0: zdfw1fwl01pgn01\n vsn_name_0: zdfw1fwl01snk01\n vnf_id: vFirewall_demo_app\n vf_module_id: vFirewall\n webserver_ip: 162.242.237.182\n dcae_collector_ip: 192.168.9.1\n key_name: vfw_key\n pub_key: INSERT YOUR PUBLIC KEY HERE' where id=5;" mso_catalog diff --git a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/automated-tests/create_mso_db-tests.sql b/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/automated-tests/create_mso_db-tests.sql deleted file mode 100644 index 0b3dde54f4..0000000000 --- a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/automated-tests/create_mso_db-tests.sql +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright © 2017 AT&T, Amdocs, Bell Canada -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -SOURCE ../default/create_mso_db-default.sql - -USE `mso_requests`; -DROP USER 'mso'; -CREATE USER 'mso'; -GRANT ALL on mso_requests.* to 'mso' identified by 'mso123' with GRANT OPTION; -FLUSH PRIVILEGES; - -USE `mso_catalog`; -DROP USER 'catalog'; -CREATE USER 'catalog'; -GRANT ALL on mso_catalog.* to 'catalog' identified by 'catalog123' with GRANT OPTION; -FLUSH PRIVILEGES; - -LOCK TABLES `NETWORK_RESOURCE` WRITE; -/*!40000 ALTER TABLE `NETWORK_RESOURCE` DISABLE KEYS */; -/*!40000 ALTER TABLE `NETWORK_RESOURCE` ENABLE KEYS */; -insert into NETWORK_RESOURCE (id, NETWORK_TYPE, VERSION_STR, ORCHESTRATION_MODE ,DESCRIPTION, TEMPLATE_ID, NEUTRON_NETWORK_TYPE, AIC_VERSION_MIN) values -(1, "vlan",'1',"NEUTRON","Cool network",1,"BASIC","0"); -UNLOCK TABLES; - -LOCK TABLES `NETWORK_RECIPE` WRITE; -/*!40000 ALTER TABLE `NETWORK_RECIPE` DISABLE KEYS */; -INSERT INTO `NETWORK_RECIPE`(`NETWORK_TYPE`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`) VALUES -('vlan','CREATE','1',NULL,'/active-bpel/services/REST/CreateNetwork',NULL,180,NULL), -('vlan','DELETE','1',NULL,'/active-bpel/services/REST/DeleteNetwork',NULL,180,NULL); -/*!40000 ALTER TABLE `NETWORK_RECIPE` ENABLE KEYS */; -UNLOCK TABLES; - -LOCK TABLES `VNF_RECIPE` WRITE; -INSERT INTO `VNF_RECIPE`(`ID`, `VNF_TYPE`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`) VALUES -(100,'VPE','CREATE','1','','/active-bpel/services/REST/CreateGenericVNF','',180,'SDN-ETHERNET-INTERNET'), -(101,'VPE','DELETE','1','','/active-bpel/services/REST/DeleteGenericVNF','',180,'SDN-ETHERNET-INTERNET'); -UNLOCK TABLES; - -LOCK TABLES `VF_MODULE` WRITE; -INSERT INTO `VF_MODULE`(`ID`, `TYPE`, `ASDC_SERVICE_MODEL_VERSION`, `MODEL_NAME`, `MODEL_VERSION`, `IS_BASE`, `VNF_RESOURCE_ID`) VALUES -(100,'dns-servicetest/DNSResource-1::VF_DNS::module-1','1.0','VF_DNS::module-1','1.0','1','7'), -(101,'dns-servicetest/DNSResource-1::Mog111..mog_psm..module-1','1.0','Mog111..mog_psm..module-1','1.0','1','7'); -UNLOCK TABLES; - -LOCK TABLES `VNF_RESOURCE` WRITE; -INSERT INTO `VNF_RESOURCE`(`ID`, `VNF_TYPE`, `ASDC_SERVICE_MODEL_VERSION`, `ORCHESTRATION_MODE`, `MODEL_VERSION`) VALUES -(100,'dns-servicetest/DNSResource-1','1.0','VF_DNS::module-1','1.0'); -UNLOCK TABLES; - -DELETE FROM HEAT_TEMPLATE_PARAMS; -DELETE FROM HEAT_TEMPLATE; -DELETE FROM HEAT_ENVIRONMENT; diff --git a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/default/create_mso_db-default.sql b/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/default/create_mso_db-default.sql deleted file mode 100644 index ad303db7db..0000000000 --- a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/default/create_mso_db-default.sql +++ /dev/null @@ -1,154 +0,0 @@ -/* Copyright © 2017 AT&T, Amdocs, Bell Canada -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -SOURCE ../../camunda/mariadb_engine_7.7.3-ee.sql - --- --- Create an admin user automatically for the cockpit --- -SOURCE ../../camunda/mysql_create_camunda_admin.sql - --- --- Current Database: `mso_requests` --- - -DROP DATABASE IF EXISTS `mso_requests`; - -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mso_requests` /*!40100 DEFAULT CHARACTER SET latin1 */; - -USE `mso_requests`; - -SOURCE ../../main-schemas/MySQL-Requests-schema.sql - --- --- Current Database: `mso_catalog` --- - -DROP DATABASE IF EXISTS `mso_catalog`; - -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mso_catalog` /*!40100 DEFAULT CHARACTER SET latin1 */; - -USE `mso_catalog`; - -SOURCE ../../main-schemas/MySQL-Catalog-schema.sql - -SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; - -INSERT INTO `heat_template` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `TIMEOUT_MINUTES`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','Contrail30-l2nodhcp','1',NULL,'heat_template_version: 2015-04-30\n\ndescription:\n HOT template that creates a Contrail Virtual Network with L2NODHCP\n\nparameters:\n network_name:\n type: string\n description: Name of direct network (e.g. core, dmz)\n default: ECOMPNetwork\n shared:\n type: boolean\n description: Shared amongst tenants\n default: False\n external:\n type: boolean\n description: router_external for the VirtualNetwork\n default: False\n route_targets:\n type: comma_delimited_list\n description: Network route-targets (RT)\n default: \"\"\n subnet_list:\n type: json\n description: Network subnets\n default: []\n policy_refs:\n type: comma_delimited_list\n description: Policies referenced by Network\n default: \"\"\n policy_refsdata:\n type: json\n description: Policies referenced by Network\n default: []\n route_table_refs:\n type: comma_delimited_list\n description: Route Tables referenced by Network\n default: \"\"\n virtual_network_properties_allow_transit:\n type: boolean\n description: allow_transit for the VirtualNetwork\n default: True\n virtual_network_properties_forwarding_mode:\n type: string\n description: forwarding_mode for the VirtualNetwork\n default: l2\n virtual_network_properties_rpf:\n type: string\n description: rpf for the VirtualNetwork\n default: disable\n flood_unknown_unicast:\n type: boolean\n description: flood_unknown_unicast for the VirtualNetwork\n default: True\n\noutputs:\n network_id:\n description: Openstack network identifier\n value: { get_resource: network }\n network_fqdn:\n description: Openstack network identifier\n value: {list_join: [\':\', { get_attr: [network, fq_name] } ] }\n\nresources:\n networkIpam:\n type: OS::ContrailV2::NetworkIpam\n properties:\n name: { get_param: network_name }\n\n network:\n type: OS::ContrailV2::VirtualNetwork\n properties:\n name: { get_param: network_name }\n is_shared: {get_param: shared}\n router_external: { get_param: external }\n route_target_list:\n {\n route_target_list_route_target: { get_param: route_targets }\n }\n network_ipam_refs: [{ get_resource: networkIpam }]\n network_ipam_refs_data:\n [\n {\n network_ipam_refs_data_ipam_subnets: { get_param: subnet_list }\n }\n ]\n network_policy_refs: { get_param: policy_refs }\n network_policy_refs_data: { get_param: policy_refsdata }\n route_table_refs: { get_param: route_table_refs }\n flood_unknown_unicast: { get_param: flood_unknown_unicast } \n virtual_network_properties:\n {\n virtual_network_properties_allow_transit: { get_param: virtual_network_properties_allow_transit },\n virtual_network_properties_forwarding_mode: { get_param: virtual_network_properties_forwarding_mode },\n virtual_network_properties_rpf: { get_param: virtual_network_properties_rpf },\n }\n',10,'MANUAL RECORD','2017-10-05 18:52:03'); - -INSERT INTO `heat_template` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `TIMEOUT_MINUTES`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('4885c7a1-a9fe-11e7-8b4b-0242ac120002','Contrail30-gndirect','1',NULL,'heat_template_version: 2015-04-30\n\ndescription:\n HOT template that creates a Contrail Virtual Network for GNDIRECT\n\nparameters:\n network_name:\n type: string\n description: Name of direct network (e.g. core, dmz)\n default: ECOMPNetwork\n shared:\n type: boolean\n description: Shared amongst tenants\n default: False\n external:\n type: boolean\n description: router_external for the VirtualNetwork\n default: False\n route_targets:\n type: comma_delimited_list\n description: Network route-targets (RT)\n default: \"\"\n subnet_list:\n type: json\n description: Network subnets\n default: []\n policy_refs:\n type: comma_delimited_list\n description: Policies referenced by Network\n default: \"\"\n policy_refsdata:\n type: json\n description: Policies referenced by Network\n default: []\n route_table_refs:\n type: comma_delimited_list\n description: Route Tables referenced by Network\n default: \"\"\n virtual_network_properties_rpf:\n type: string\n description: rpf for the VirtualNetwork\n default: disable\n\noutputs:\n network_id:\n description: Openstack network identifier\n value: { get_resource: network }\n network_fqdn:\n description: Openstack network identifier\n value: {list_join: [\':\', { get_attr: [network, fq_name] } ] }\n\nresources:\n networkIpam:\n type: OS::ContrailV2::NetworkIpam\n properties:\n name: { get_param: network_name }\n\n network:\n type: OS::ContrailV2::VirtualNetwork\n properties:\n name: { get_param: network_name }\n is_shared: {get_param: shared}\n router_external: { get_param: external }\n route_target_list:\n {\n route_target_list_route_target: { get_param: route_targets }\n }\n network_ipam_refs: [{ get_resource: networkIpam }]\n network_ipam_refs_data:\n [\n {\n network_ipam_refs_data_ipam_subnets: { get_param: subnet_list }\n }\n ]\n network_policy_refs: { get_param: policy_refs }\n network_policy_refs_data: { get_param: policy_refsdata }\n route_table_refs: { get_param: route_table_refs }\n virtual_network_properties:\n {\n virtual_network_properties_rpf: { get_param: virtual_network_properties_rpf }\n }\n',10,'MANUAL RECORD','2017-10-05 18:52:03'); - -INSERT INTO `heat_template` (`ARTIFACT_UUID`,`NAME`,`VERSION`,`BODY`,`TIMEOUT_MINUTES`,`DESCRIPTION`,`CREATION_TIMESTAMP`,`ARTIFACT_CHECKSUM`) VALUES ('efee1d84-b8ec-11e7-abc4-cec278b6b50a','Generic NeutronNet','1','heat_template_version: 2013-05-23\n\ndescription:\n HOT template that creates a Generic Neutron Network\n\nparameters:\n network_name:\n type: string\n description: Name of direct network (e.g. core, dmz)\n default: ECOMPNetwork\n network_subnet_name:\n type: string\n description: Name of subnet network (e.g. core, dmz)\n default: ECOMPNetwork\n network_subnet_cidr:\n type: string\n description: CIDR of subnet network (e.g. core, dmz)\n default: 10.0.0.0/16\n\noutputs:\n network_id:\n description: Openstack network identifier\n value: { get_resource: network }\n network_fqdn:\n description: Openstack network identifier\n value: {list_join: [\':\', { get_attr: [network, fq_name] } ] }\n\nresources:\n network:\n type: OS::Neutron::Net\n properties:\n name: {get_param: network_name }\n\n subnet:\n type: OS::Neutron::Subnet\n properties:\n name: { get_param: network_subnet_name }\n network_id: { get_resource: network }\n cidr: { get_param: network_subnet_cidr }\n enable_dhcp: false\n',10,'Generic Neutron Template','2017-10-26 14:44:00', 'MANUAL RECORD'); - -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','external','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','flood_unknown_unicast','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','network_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','policy_refs','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','policy_refsdata','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','route_table_refs','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','route_targets','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','shared','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','virtual_network_properties_allow_transit','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','virtual_network_properties_forwarding_mode','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c198-a9fe-11e7-8b4b-0242ac120002','virtual_network_properties_rpf','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c7a1-a9fe-11e7-8b4b-0242ac120002','external','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c7a1-a9fe-11e7-8b4b-0242ac120002','network_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c7a1-a9fe-11e7-8b4b-0242ac120002','policy_refs','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c7a1-a9fe-11e7-8b4b-0242ac120002','policy_refsdata','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c7a1-a9fe-11e7-8b4b-0242ac120002','route_table_refs','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c7a1-a9fe-11e7-8b4b-0242ac120002','route_targets','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c7a1-a9fe-11e7-8b4b-0242ac120002','shared','\0','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('4885c7a1-a9fe-11e7-8b4b-0242ac120002','virtual_network_properties_rpf','\0','string',NULL); - -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (1,'CONTRAIL_BASIC','CREATE',NULL,'/mso/async/services/CreateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (2,'CONTRAIL_BASIC','DELETE',NULL,'/mso/async/services/DeleteNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (3,'CONTRAIL_BASIC','UPDATE',NULL,'/mso/async/services/UpdateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (4,'CONTRAIL_SHARED','CREATE',NULL,'/mso/async/services/CreateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (5,'CONTRAIL_SHARED','UPDATE',NULL,'/mso/async/services/UpdateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (6,'CONTRAIL_SHARED','DELETE',NULL,'/mso/async/services/DeleteNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (7,'CONTRAIL_EXTERNAL','CREATE',NULL,'/mso/async/services/CreateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (8,'CONTRAIL_EXTERNAL','UPDATE',NULL,'/mso/async/services/UpdateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (9,'CONTRAIL_EXTERNAL','DELETE',NULL,'/mso/async/services/DeleteNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (10,'CONTRAIL30_BASIC','CREATE',NULL,'/mso/async/services/CreateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (11,'CONTRAIL30_BASIC','UPDATE',NULL,'/mso/async/services/UpdateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (12,'CONTRAIL30_BASIC','DELETE',NULL,'/mso/async/services/DeleteNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (13,'CONTRAIL30_MPSCE','CREATE',NULL,'/mso/async/services/CreateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (14,'CONTRAIL30_MPSCE','UPDATE',NULL,'/mso/async/services/UpdateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (15,'CONTRAIL30_MPSCE','DELETE',NULL,'/mso/async/services/DeleteNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (16,'VID_DEFAULT','createInstance','VID_DEFAULT recipe to create network if no custom BPMN flow is found','/mso/async/services/CreateNetworkInstance',NULL,180,NULL,'2017-10-05 18:52:03','1.0'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (17,'VID_DEFAULT','updateInstance','VID_DEFAULT recipe to update network if no custom BPMN flow is found','/mso/async/services/UpdateNetworkInstance',NULL,180,NULL,'2017-10-05 18:52:03','1.0'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (18,'VID_DEFAULT','deleteInstance','VID_DEFAULT recipe to delete network if no custom BPMN flow is found','/mso/async/services/DeleteNetworkInstance',NULL,180,NULL,'2017-10-05 18:52:03','1.0'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (19,'CONTRAIL30_L2NODHCP','CREATE',NULL,'/mso/async/services/CreateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (20,'CONTRAIL30_L2NODHCP','UPDATE',NULL,'/mso/async/services/UpdateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (21,'CONTRAIL30_L2NODHCP','DELETE',NULL,'/mso/async/services/DeleteNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (22,'CONTRAIL30_GNDIRECT','CREATE',NULL,'/mso/async/services/CreateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (23,'CONTRAIL30_GNDIRECT','UPDATE',NULL,'/mso/async/services/UpdateNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); -INSERT INTO `network_recipe` (`id`, `MODEL_NAME`, `ACTION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `NETWORK_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`, `CREATION_TIMESTAMP`, `VERSION_STR`) VALUES (24,'CONTRAIL30_GNDIRECT','DELETE',NULL,'/mso/async/services/DeleteNetworkV2',NULL,180,NULL,'2017-10-05 18:52:03','1'); - -INSERT INTO `service` (`MODEL_UUID`, `MODEL_NAME`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `DESCRIPTION`, `CREATION_TIMESTAMP`, `TOSCA_CSAR_ARTIFACT_UUID`) VALUES ('48cc36cc-a9fe-11e7-8b4b-0242ac120002','VID_DEFAULT','48cd56c8-a9fe-11e7-8b4b-0242ac120002','1.0','Default service for VID to use for infra APIH orchestration1707MIGRATED1707MIGRATED','2017-10-05 18:52:03',NULL); -INSERT INTO `service` (`MODEL_UUID`, `MODEL_NAME`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `DESCRIPTION`, `CREATION_TIMESTAMP`, `TOSCA_CSAR_ARTIFACT_UUID`) VALUES ('48cc3acd-a9fe-11e7-8b4b-0242ac120002','*','48ce2256-a9fe-11e7-8b4b-0242ac120002','1.0','Default service to use for infra APIH orchestration1707MIGRATED1707MIGRATED','2017-10-05 18:52:03',NULL); - -INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (1,'createInstance','1','VID_DEFAULT recipe to create service-instance if no custom BPMN flow is found','/mso/async/services/CreateGenericALaCarteServiceInstance',NULL,180,NULL,'2017-10-05 18:52:03','48cc36cc-a9fe-11e7-8b4b-0242ac120002'); -INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (2,'deleteInstance','1','VID_DEFAULT recipe to delete service-instance if no custom BPMN flow is found','/mso/async/services/DeleteGenericALaCarteServiceInstance',NULL,180,NULL,'2017-10-05 18:52:03','48cc36cc-a9fe-11e7-8b4b-0242ac120002'); -INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (3,'createInstance','1','DEFAULT recipe to create service-instance if no custom BPMN flow is found','/mso/async/services/CreateGenericALaCarteServiceInstance',NULL,180,NULL,'2017-10-05 18:52:03','48cc3acd-a9fe-11e7-8b4b-0242ac120002'); -INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (4,'deleteInstance','1','DEFAULT recipe to delete service-instance if no custom BPMN flow is found','/mso/async/services/DeleteGenericALaCarteServiceInstance',NULL,180,NULL,'2017-10-05 18:52:03','48cc3acd-a9fe-11e7-8b4b-0242ac120002'); - --- --- Custom Reciepe for the VoLTE service added temporarily --- - -INSERT INTO `service` (`MODEL_UUID`, `MODEL_NAME`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `DESCRIPTION`, `CREATION_TIMESTAMP`, `TOSCA_CSAR_ARTIFACT_UUID`) VALUES ('dfcd7471-16c7-444e-8268-d4c50d90593a','UUI_DEFAULT','dfcd7471-16c7-444e-8268-d4c50d90593a','1.0','Default service for UUI to use for infra APIH orchestration1707MIGRATED1707MIGRATED','2017-10-23 18:52:03',NULL); - -INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (11,'createInstance','1','Custom recipe to create E2E service-instance if no custom BPMN flow is found','/mso/async/services/CreateCustomE2EServiceInstance',NULL,180,NULL,'2017-10-05 18:52:03','dfcd7471-16c7-444e-8268-d4c50d90593a'); -INSERT INTO `service_recipe` (`id`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `SERVICE_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TIMEOUT_INTERIM`, `CREATION_TIMESTAMP`, `SERVICE_MODEL_UUID`) VALUES (12,'deleteInstance','1','Custom recipe to delete E2E service-instance if no custom BPMN flow is found','/mso/async/services/DeleteCustomE2EServiceInstance',NULL,180,NULL,'2017-10-05 18:52:03','dfcd7471-16c7-444e-8268-d4c50d90593a'); - -INSERT INTO `temp_network_heat_template_lookup` (`NETWORK_RESOURCE_MODEL_NAME`, `HEAT_TEMPLATE_ARTIFACT_UUID`, `AIC_VERSION_MIN`, `AIC_VERSION_MAX`) VALUES ('CONTRAIL30_GNDIRECT','4885c7a1-a9fe-11e7-8b4b-0242ac120002','3.0',NULL); -INSERT INTO `temp_network_heat_template_lookup` (`NETWORK_RESOURCE_MODEL_NAME`, `HEAT_TEMPLATE_ARTIFACT_UUID`, `AIC_VERSION_MIN`, `AIC_VERSION_MAX`) VALUES ('CONTRAIL30_L2NODHCP','4885c198-a9fe-11e7-8b4b-0242ac120002','3.0',NULL); -INSERT INTO `temp_network_heat_template_lookup` (`NETWORK_RESOURCE_MODEL_NAME`, `HEAT_TEMPLATE_ARTIFACT_UUID`,`AIC_VERSION_MIN` , `AIC_VERSION_MAX` ) VALUES ('Generic NeutronNet','efee1d84-b8ec-11e7-abc4-cec278b6b50a','2.0','NULL'); - -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (1,'*','VOLUME_GROUP',NULL,'CREATE',NULL,'1','Recipe Match All for','/mso/async/services/createCinderVolumeV1',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (2,'*','VOLUME_GROUP',NULL,'DELETE',NULL,'1','Recipe Match All for','/mso/async/services/deleteCinderVolumeV1',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (3,'*','VOLUME_GROUP',NULL,'UPDATE',NULL,'1','Recipe Match All for','/mso/async/services/updateCinderVolumeV1',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (4,NULL,'VOLUME_GROUP',NULL,'CREATE_VF_MODULE_VOL',NULL,'1','Recipe Match All for','/mso/async/services/CreateVfModuleVolume',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (5,NULL,'VOLUME_GROUP',NULL,'DELETE_VF_MODULE_VOL',NULL,'1','Recipe Match All for','/mso/async/services/DeleteVfModuleVolume',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (6,NULL,'VOLUME_GROUP',NULL,'UPDATE_VF_MODULE_VOL',NULL,'1','Recipe Match All for','/mso/async/services/UpdateVfModuleVolume',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (7,NULL,'volumeGroup','VID_DEFAULT','createInstance',NULL,'1','VID_DEFAULT recipe t','/mso/async/services/CreateVfModuleVolumeInfraV1',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (8,NULL,'volumeGroup','VID_DEFAULT','deleteInstance',NULL,'1','VID_DEFAULT recipe t','/mso/async/services/DeleteVfModuleVolumeInfraV1',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (9,NULL,'volumeGroup','VID_DEFAULT','updateInstance',NULL,'1','VID_DEFAULT recipe t','/mso/async/services/UpdateVfModuleVolumeInfraV1',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (10,NULL,'vfModule','VID_DEFAULT','createInstance',NULL,'1','VID_DEFAULT recipe t','/mso/async/services/CreateVfModuleInfra',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (11,NULL,'vfModule','VID_DEFAULT','deleteInstance',NULL,'1','VID_DEFAULT recipe t','/mso/async/services/DeleteVfModuleInfra',null,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_components_recipe` (`id`, `VNF_TYPE`, `VNF_COMPONENT_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `SERVICE_TYPE`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (12,NULL,'vfModule','VID_DEFAULT','updateInstance',NULL,'1','VID_DEFAULT recipe t','/mso/async/services/UpdateVfModuleInfra',null,180,'2017-10-05 18:52:03'); - --- --- Default Reciepe for the VNF componnets added start #SO-334, to unblock the VNF operations --- - -INSERT INTO `vnf_components_recipe` (`VNF_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`,`VNF_COMPONENT_TYPE`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`) VALUES (NULL,'POLICY_DEFAULT','createInstance','1','Recipe Match POLICY_DEFAULT for VF Modules if no custom flow exists','/mso/async/services/CreateVfModuleInfra','vfModule',NULL,180,NULL); -INSERT INTO `vnf_components_recipe` (`VNF_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`,`VNF_COMPONENT_TYPE`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`) VALUES (NULL,'POLICY_DEFAULT','updateInstance','1','Recipe Match POLICY_DEFAULT for VF Modules if no custom flow exists','/mso/async/services/UpdateVfModuleInfra','vfModule',NULL,180,NULL); -INSERT INTO `vnf_components_recipe` (`VNF_TYPE`, `VF_MODULE_MODEL_UUID`, `ACTION`, `VERSION`, `DESCRIPTION`, `ORCHESTRATION_URI`,`VNF_COMPONENT_TYPE`, `VNF_COMPONENT_PARAM_XSD`, `RECIPE_TIMEOUT`, `SERVICE_TYPE`) VALUES (NULL,'POLICY_DEFAULT','deleteInstance','1','Recipe Match POLICY_DEFAULT for VF Modules if no custom flow exists','/mso/async/services/DeleteVfModuleInfra','vfModule',NULL,180,NULL); --- --- Default Reciepe for the VNF componnets added End --- - -INSERT INTO `vnf_recipe` (`id`, `VF_MODULE_ID`, `ACTION`, `SERVICE_TYPE`, `VERSION_STR`, `VNF_TYPE`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (1,NULL,'CREATE',NULL,'1','*','Recipe Match All for VNFs if no custom flow exists','/mso/workflow/services/CreateGenericVNFV1',NULL,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_recipe` (`id`, `VF_MODULE_ID`, `ACTION`, `SERVICE_TYPE`, `VERSION_STR`, `VNF_TYPE`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (2,NULL,'DELETE',NULL,'1','*','Recipe Match All for VNFs if no custom flow exists','/mso/async/services//deleteGenericVNFV1',NULL,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_recipe` (`id`, `VF_MODULE_ID`, `ACTION`, `SERVICE_TYPE`, `VERSION_STR`, `VNF_TYPE`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (3,NULL,'UPDATE',NULL,'1','*','Recipe Match All for VNFs if no custom flow exists','/mso/workflow/services/updateGenericVNFV1',NULL,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_recipe` (`id`, `VF_MODULE_ID`, `ACTION`, `SERVICE_TYPE`, `VERSION_STR`, `VNF_TYPE`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (4,'*','CREATE_VF_MODULE',NULL,'1',NULL,'Recipe Match All for VNFs if no custom flow exists','/mso/async/services/CreateVfModule',NULL,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_recipe` (`id`, `VF_MODULE_ID`, `ACTION`, `SERVICE_TYPE`, `VERSION_STR`, `VNF_TYPE`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (5,'*','DELETE_VF_MODULE',NULL,'1',NULL,'Recipe Match All for VNFs if no custom flow exists','/mso/async/services/DeleteVfModule',NULL,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_recipe` (`id`, `VF_MODULE_ID`, `ACTION`, `SERVICE_TYPE`, `VERSION_STR`, `VNF_TYPE`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (6,'*','UPDATE_VF_MODULE',NULL,'1',NULL,'Recipe Match All for VNFs if no custom flow exists','/mso/async/services/UpdateVfModule',NULL,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_recipe` (`id`, `VF_MODULE_ID`, `ACTION`, `SERVICE_TYPE`, `VERSION_STR`, `VNF_TYPE`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (7,NULL,'createInstance',NULL,'1','VID_DEFAULT','VID_DEFAULT recipe to create VNF if no custom BPMN flow is found','/mso/async/services/CreateVnfInfra',NULL,180,'2017-10-05 18:52:03'); -INSERT INTO `vnf_recipe` (`id`, `VF_MODULE_ID`, `ACTION`, `SERVICE_TYPE`, `VERSION_STR`, `VNF_TYPE`, `DESCRIPTION`, `ORCHESTRATION_URI`, `VNF_PARAM_XSD`, `RECIPE_TIMEOUT`, `CREATION_TIMESTAMP`) VALUES (8,NULL,'deleteInstance',NULL,'1','VID_DEFAULT','VID_DEFAULT recipe to delete VNF if no custom BPMN flow is found','/mso/async/services/DeleteVnfInfra',NULL,180,'2017-10-05 18:52:03'); - -SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; diff --git a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-dns/create_mso_db-demo-dns.sql b/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-dns/create_mso_db-demo-dns.sql deleted file mode 100644 index 2bb939b066..0000000000 --- a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-dns/create_mso_db-demo-dns.sql +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright © 2017 AT&T, Amdocs, Bell Canada -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -SOURCE ../default/create_mso_db-default.sql - -USE `mso_requests`; -DROP USER 'mso'; -CREATE USER 'mso'; -GRANT ALL on mso_requests.* to 'mso' identified by 'mso123' with GRANT OPTION; -FLUSH PRIVILEGES; - -USE `mso_catalog`; -DROP USER 'catalog'; -CREATE USER 'catalog'; -GRANT ALL on mso_catalog.* to 'catalog' identified by 'catalog123' with GRANT OPTION; -FLUSH PRIVILEGES; - -SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; - -INSERT INTO `heat_environment` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('EnvArtifact-UUID1','base_vlb.env','1.0','BASE VLB ENV file','parameters:\n vlb_image_name: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)\n vlb_flavor_name: 4 GB General Purpose v1\n public_net_id: 00000000-0000-0000-0000-000000000000\n vlb_private_net_id: zdfw1lb01_private\n ecomp_private_net_id: oam_ecomp\n vlb_private_net_cidr: 192.168.10.0/24\n ecomp_private_net_cidr: 192.168.9.0/24\n vlb_private_ip_0: 192.168.10.111\n vlb_private_ip_1: 192.168.9.111\n vdns_private_ip_0: 192.168.10.211\n vdns_private_ip_1: 192.168.9.211\n vlb_name_0: zdfw1lb01lb01\n vdns_name_0: zdfw1lb01dns01\n vnf_id: vLoadBalancer_demo_app\n vf_module_id: vLoadBalancer\n webserver_ip: 162.242.237.182\n dcae_collector_ip: 192.168.9.1\n key_name: vlb_key\n pub_key: INSERT YOUR PUBLIC KEY HERE','MANUAL RECORD','2016-11-14 13:04:07'); - -INSERT INTO `heat_environment` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('EnvArtifact-UUID2','dnsscaling.env','1.0','DNS Scaling ENV file','parameters:\n vlb_image_name: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)\n vlb_flavor_name: 4 GB General Purpose v1\n public_net_id: 00000000-0000-0000-0000-000000000000\n vlb_private_net_id: zdfw1lb01_private\n ecomp_private_net_id: oam_ecomp\n vlb_private_ip_0: 192.168.10.111\n vlb_private_ip_1: 192.168.9.111\n vdns_private_ip_0: 192.168.10.222\n vdns_private_ip_1: 192.168.9.222\n vdns_name_0: zdfw1lb01dns02\n vnf_id: vLoadBalancer_demo_app\n vf_module_id: vLoadBalancer\n webserver_ip: 162.242.237.182\n dcae_collector_ip: 192.168.9.1\n key_name: vlb_key\n pub_key: INSERT YOUR PUBLIC KEY HERE','MANUAL RECORD','2016-11-14 13:04:07'); - -INSERT INTO `heat_template` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `TIMEOUT_MINUTES`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('Artifact-UUID1','base_vlb.yaml','1.0','Base VLB Heat','heat_template_version: 2013-05-23\n\ndescription: Heat template to deploy vLoadBalancer/vDNS demo app for OpenECOMP\n\nparameters:\n vlb_image_name:\n type: string\n label: Image name or ID\n description: Image to be used for compute instance\n vlb_flavor_name:\n type: string\n label: Flavor\n description: Type of instance (flavor) to be used\n public_net_id:\n type: string\n label: Public network name or ID\n description: Public network that enables remote connection to VNF\n vlb_private_net_id:\n type: string\n label: vLoadBalancer private network name or ID\n description: Private network that connects vLoadBalancer with vDNSs\n ecomp_private_net_id:\n type: string\n label: ECOMP management network name or ID\n description: Private network that connects ECOMP component and the VNF\n vlb_private_net_cidr:\n type: string\n label: vLoadBalancer private network CIDR\n description: The CIDR of the vLoadBalancer private network\n ecomp_private_net_cidr:\n type: string\n label: ECOMP private network CIDR\n description: The CIDR of the protected private network\n vlb_private_ip_0:\n type: string\n label: vLoadBalancer private IP address towards the private network\n description: Private IP address that is assigned to the vLoadBalancer to communicate with the vDNSs\n vlb_private_ip_1:\n type: string\n label: vLoadBalancer private IP address towards the ECOMP management network\n description: Private IP address that is assigned to the vLoadBalancer to communicate with ECOMP components\n vdns_private_ip_0:\n type: string\n label: vDNS private IP address towards the private network\n description: Private IP address that is assigned to the vDNS to communicate with the vLoadBalancer\n vdns_private_ip_1:\n type: string\n label: vDNS private IP address towards the ECOMP management network\n description: Private IP address that is assigned to the vDNS to communicate with ECOMP components\n vlb_name_0:\n type: string\n label: vLoadBalancer name\n description: Name of the vLoadBalancer\n vdns_name_0:\n type: string\n label: vDNS name\n description: Name of the vDNS\n vnf_id:\n type: string\n label: VNF ID\n description: The VNF ID is provided by ECOMP\n vf_module_id:\n type: string\n label: vFirewall module ID\n description: The vLoadBalancer Module ID is provided by ECOMP\n webserver_ip:\n type: string\n label: Webserver IP address\n description: IP address of the webserver that hosts the source code and binaries\n dcae_collector_ip:\n type: string\n label: DCAE collector IP address\n description: IP address of the DCAE collector\n key_name:\n type: string\n label: Key pair name\n description: Public/Private key pair name\n pub_key:\n type: string\n label: Public key\n description: Public key to be installed on the compute instance\n\nresources:\n my_keypair:\n type: OS::Nova::KeyPair\n properties:\n name: { get_param: key_name }\n public_key: { get_param: pub_key }\n save_private_key: false\n\n vlb_private_network:\n type: OS::Neutron::Net\n properties:\n name: { get_param: vlb_private_net_id }\n\n vlb_private_subnet:\n type: OS::Neutron::Subnet\n properties:\n name: { get_param: vlb_private_net_id }\n network_id: { get_resource: vlb_private_network }\n cidr: { get_param: vlb_private_net_cidr }\n\n vlb_0:\n type: OS::Nova::Server\n properties:\n image: { get_param: vlb_image_name }\n flavor: { get_param: vlb_flavor_name }\n name: { get_param: vlb_name_0 }\n key_name: { get_resource: my_keypair }\n networks:\n - network: { get_param: public_net_id }\n - port: { get_resource: vlb_private_0_port }\n - port: { get_resource: vlb_private_1_port }\n metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}\n user_data_format: RAW\n user_data:\n str_replace:\n params:\n __webserver__: { get_param: webserver_ip }\n __dcae_collector_ip__: { get_param: dcae_collector_ip }\n __local_private_ipaddr__: { get_param: vlb_private_ip_0 }\n template: |\n #!/bin/bash\n\n WEBSERVER_IP=__webserver__\n DCAE_COLLECTOR_IP=__dcae_collector_ip__\n LOCAL_PRIVATE_IPADDR=__local_private_ipaddr__\n\n mkdir /opt/config\n cd /opt\n wget http://$WEBSERVER_IP/demo_repo/v_lb_init.sh\n wget http://$WEBSERVER_IP/demo_repo/vlb.sh\n chmod +x v_lb_init.sh\n chmod +x vlb.sh\n echo $WEBSERVER_IP > config/webserver_ip.txt\n echo $DCAE_COLLECTOR_IP > config/dcae_collector_ip.txt\n echo $LOCAL_PRIVATE_IPADDR > config/local_private_ipaddr.txt\n echo \"no\" > config/install.txt\n LOCAL_PUBLIC_IPADDR=$(ifconfig eth0 | grep \"inet addr\" | tr -s \' \' | cut -d\' \' -f3 | cut -d\':\' -f2)\n echo $LOCAL_PUBLIC_IPADDR > config/local_public_ipaddr.txt\n mv vlb.sh /etc/init.d\n update-rc.d vlb.sh defaults\n ./v_lb_init.sh\n\n vlb_private_0_port:\n type: OS::Neutron::Port\n properties:\n network: { get_resource: vlb_private_network }\n fixed_ips: [{\"subnet\": { get_resource: vlb_private_subnet }, \"ip_address\": { get_param: vlb_private_ip_0 }}]\n\n vlb_private_1_port:\n type: OS::Neutron::Port\n properties:\n network: { get_param: ecomp_private_net_id }\n fixed_ips: [{\"subnet\": { get_param: ecomp_private_net_id }, \"ip_address\": { get_param: vlb_private_ip_1 }}]\n\n vdns_0:\n type: OS::Nova::Server\n properties:\n image: { get_param: vlb_image_name }\n flavor: { get_param: vlb_flavor_name }\n name: { get_param: vdns_name_0 }\n key_name: { get_resource: my_keypair }\n networks:\n - network: { get_param: public_net_id }\n - port: { get_resource: vdns_private_0_port }\n - port: { get_resource: vdns_private_1_port }\n metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}\n user_data_format: RAW\n user_data:\n str_replace:\n params:\n __webserver__: { get_param: webserver_ip }\n __lb_oam_int__ : { get_param: vlb_private_ip_1 }\n __lb_private_ipaddr__: { get_param: vlb_private_ip_0 }\n __local_private_ipaddr__: { get_param: vdns_private_ip_0 }\n template: |\n #!/bin/bash\n\n WEBSERVER_IP=__webserver__\n LB_OAM_INT=__lb_oam_int__\n LB_PRIVATE_IPADDR=__lb_private_ipaddr__\n LOCAL_PRIVATE_IPADDR=__local_private_ipaddr__\n\n mkdir /opt/config\n cd /opt\n wget http://$WEBSERVER_IP/demo_repo/v_dns_init.sh\n wget http://$WEBSERVER_IP/demo_repo/vdns.sh\n chmod +x v_dns_init.sh\n chmod +x vdns.sh\n echo $WEBSERVER_IP > config/webserver_ip.txt\n echo $LB_OAM_INT > config/lb_oam_int.txt\n echo $LB_PRIVATE_IPADDR > config/lb_private_ipaddr.txt\n echo $LOCAL_PRIVATE_IPADDR > config/local_private_ipaddr.txt\n echo \"no\" > config/install.txt\n mv vdns.sh /etc/init.d\n update-rc.d vdns.sh defaults\n ./v_dns_init.sh\n\n vdns_private_0_port:\n type: OS::Neutron::Port\n properties:\n network: { get_resource: vlb_private_network }\n fixed_ips: [{\"subnet\": { get_resource: vlb_private_subnet }, \"ip_address\": { get_param: vdns_private_ip_0 }}]\n\n vdns_private_1_port:\n type: OS::Neutron::Port\n properties:\n network: { get_param: ecomp_private_net_id }\n fixed_ips: [{\"subnet\": { get_param: ecomp_private_net_id }, \"ip_address\": { get_param: vdns_private_ip_1 }}]\n',300,'MANUAL RECORD','2016-11-14 13:04:07'); - -INSERT INTO `heat_template` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `TIMEOUT_MINUTES`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('Artifact-UUID2','dnsscaling.yaml','1.0','DNS Scaling Heat','heat_template_version: 2013-05-23\n\ndescription: Heat template to deploy a vDNS for OpenECOMP (scaling-up scenario)\n\nparameters:\n vlb_image_name:\n type: string\n label: Image name or ID\n description: Image to be used for compute instance\n vlb_flavor_name:\n type: string\n label: Flavor\n description: Type of instance (flavor) to be used\n public_net_id:\n type: string\n label: Public network name or ID\n description: Public network that enables remote connection to VNF\n vlb_private_net_id:\n type: string\n label: vLoadBalancer private network name or ID\n description: Private network that connects vLoadBalancer with vDNSs\n ecomp_private_net_id:\n type: string\n label: ECOMP management network name or ID\n description: Private network that connects ECOMP component and the VNF\n vlb_private_ip_0:\n type: string\n label: vLoadBalancer private IP address towards the private network\n description: Private IP address that is assigned to the vLoadBalancer to communicate with the vDNSs\n vlb_private_ip_1:\n type: string\n label: vLoadBalancer private IP address towards the ECOMP management network\n description: Private IP address that is assigned to the vLoadBalancer to communicate with ECOMP components\n vdns_private_ip_0:\n type: string\n label: vDNS private IP address towards the private network\n description: Private IP address that is assigned to the vDNS to communicate with the vLoadBalancer\n vdns_private_ip_1:\n type: string\n label: vDNS private IP address towards the ECOMP management network\n description: Private IP address that is assigned to the vDNS to communicate with ECOMP components\n vdns_name_0:\n type: string\n label: vDNS name\n description: Name of the vDNS\n vnf_id:\n type: string\n label: VNF ID\n description: The VNF ID is provided by ECOMP\n vf_module_id:\n type: string\n label: vFirewall module ID\n description: The vLoadBalancer Module ID is provided by ECOMP\n webserver_ip:\n type: string\n label: Webserver IP address\n description: IP address of the webserver that hosts the source code and binaries\n dcae_collector_ip:\n type: string\n label: DCAE collector IP address\n description: IP address of the DCAE collector\n key_name:\n type: string\n label: Key pair name\n description: Public/Private key pair name\n pub_key:\n type: string\n label: Public key\n description: Public key to be installed on the compute instance\n\nresources:\n vdns_0:\n type: OS::Nova::Server\n properties:\n image: { get_param: vlb_image_name }\n flavor: { get_param: vlb_flavor_name }\n name: { get_param: vdns_name_0 }\n key_name: { get_param: key_name }\n networks:\n - network: { get_param: public_net_id }\n - port: { get_resource: vdns_private_0_port }\n - port: { get_resource: vdns_private_1_port }\n metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}\n user_data_format: RAW\n user_data:\n str_replace:\n params:\n __webserver__: { get_param: webserver_ip }\n __lb_oam_int__ : { get_param: vlb_private_ip_1 }\n __lb_private_ipaddr__: { get_param: vlb_private_ip_0 }\n __local_private_ipaddr__: { get_param: vdns_private_ip_0 }\n template: |\n #!/bin/bash\n\n WEBSERVER_IP=__webserver__\n LB_OAM_INT=__lb_oam_int__\n LB_PRIVATE_IPADDR=__lb_private_ipaddr__\n LOCAL_PRIVATE_IPADDR=__local_private_ipaddr__\n\n mkdir /opt/config\n cd /opt\n wget http://$WEBSERVER_IP/demo_repo/v_dns_init.sh\n wget http://$WEBSERVER_IP/demo_repo/vdns.sh\n chmod +x v_dns_init.sh\n chmod +x vdns.sh\n echo $WEBSERVER_IP > config/webserver_ip.txt\n echo $LB_OAM_INT > config/lb_oam_int.txt\n echo $LB_PRIVATE_IPADDR > config/lb_private_ipaddr.txt\n echo $LOCAL_PRIVATE_IPADDR > config/local_private_ipaddr.txt\n echo \"no\" > config/install.txt\n mv vdns.sh /etc/init.d\n update-rc.d vdns.sh defaults\n ./v_dns_init.sh\n\n vdns_private_0_port:\n type: OS::Neutron::Port\n properties:\n network: { get_param: vlb_private_net_id }\n fixed_ips: [{\"subnet\": { get_param: vlb_private_net_id }, \"ip_address\": { get_param: vdns_private_ip_0 }}]\n\n vdns_private_1_port:\n type: OS::Neutron::Port\n properties:\n network: { get_param: ecomp_private_net_id }\n fixed_ips: [{\"subnet\": { get_param: ecomp_private_net_id }, \"ip_address\": { get_param: vdns_private_ip_1 }}]\n',300,'MANUAL RECORD','2016-11-14 13:04:07'); - -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','dcae_collector_ip','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','ecomp_private_net_cidr','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','ecomp_private_net_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','key_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','public_net_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','pub_key','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vdns_private_ip_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vdns_private_ip_1','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vdsn_name_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vf_module_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vlb_flavor_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vlb_image_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vlb_name_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vlb_private_ip_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vlb_private_ip_1','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vlb_private_net_cidr','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vlb_private_net_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','vnf_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID1','webserver_ip','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','dcae_collector_ip','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','ecomp_private_net_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','key_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','public_net_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','pub_key','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','vdns_private_ip_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','vdns_private_ip_1','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','vdsn_name_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','vf_module_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','vlb_flavor_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','vlb_image_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','vlb_private_ip_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','vlb_private_net_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','vnf_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID2','webserver_ip','','string',NULL); - -INSERT INTO `service` (`MODEL_UUID`, `MODEL_NAME`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `DESCRIPTION`, `CREATION_TIMESTAMP`, `TOSCA_CSAR_ARTIFACT_UUID`) VALUES ('1e34774e-715e-4fd6-bd09-7b654622f35i','dns-service','585822c8-4027-4f84-ba50-e9248606f111','1.0','dns service for unit test','2016-11-14 13:04:07',NULL); - -INSERT INTO `service_to_resource_customizations` (`SERVICE_MODEL_UUID`, `RESOURCE_MODEL_CUSTOMIZATION_UUID`, `MODEL_TYPE`, `CREATION_TIMESTAMP`) VALUES ('1e34774e-715e-4fd6-bd09-7b654622f35i','302aa6be-a9fe-11e7-8b4b-0242ac120002','vnf','2017-10-05 18:51:28'); - -INSERT INTO `vf_module` (`MODEL_UUID`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `MODEL_NAME`, `DESCRIPTION`, `IS_BASE`, `HEAT_TEMPLATE_ARTIFACT_UUID`, `VOL_HEAT_TEMPLATE_ARTIFACT_UUID`, `CREATION_TIMESTAMP`, `VNF_RESOURCE_MODEL_UUID`) VALUES ('1e34774e-715e-4fd5-bd08-7b654622f33e.VF_RI1_DNS::module-1::module-1.group','585822c7-4027-4f84-ba50-e9248606f132','1.0','VF_RI1_DNS::module-1',NULL,1,'Artifact-UUID1',NULL,'2016-11-14 13:04:07','585822c7-4027-4f84-ba50-e9248606f131'); -INSERT INTO `vf_module` (`MODEL_UUID`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `MODEL_NAME`, `DESCRIPTION`, `IS_BASE`, `HEAT_TEMPLATE_ARTIFACT_UUID`, `VOL_HEAT_TEMPLATE_ARTIFACT_UUID`, `CREATION_TIMESTAMP`, `VNF_RESOURCE_MODEL_UUID`) VALUES ('1e34774e-715e-4fd5-bd08-7b654622f33e.VF_RI1_DNS::module-2::module-1.group','585822c7-4027-4f84-ba50-e9248606f133','1.0','VF_RI1_DNS::module-2',NULL,0,'Artifact-UUID2',NULL,'2016-11-14 13:04:07','585822c7-4027-4f84-ba50-e9248606f131'); - -INSERT INTO `vf_module_customization` (`MODEL_CUSTOMIZATION_UUID`, `LABEL`, `INITIAL_COUNT`, `MIN_INSTANCES`, `MAX_INSTANCES`, `AVAILABILITY_ZONE_COUNT`, `HEAT_ENVIRONMENT_ARTIFACT_UUID`, `VOL_ENVIRONMENT_ARTIFACT_UUID`, `CREATION_TIMESTAMP`, `VF_MODULE_MODEL_UUID`) VALUES ('30316d81-a9fe-11e7-8b4b-0242ac120002',NULL,1,0,NULL,NULL,'EnvArtifact-UUID1',NULL,'2017-10-05 18:51:25','1e34774e-715e-4fd5-bd08-7b654622f33e.VF_RI1_DNS::module-1::module-1.group'); -INSERT INTO `vf_module_customization` (`MODEL_CUSTOMIZATION_UUID`, `LABEL`, `INITIAL_COUNT`, `MIN_INSTANCES`, `MAX_INSTANCES`, `AVAILABILITY_ZONE_COUNT`, `HEAT_ENVIRONMENT_ARTIFACT_UUID`, `VOL_ENVIRONMENT_ARTIFACT_UUID`, `CREATION_TIMESTAMP`, `VF_MODULE_MODEL_UUID`) VALUES ('303170ae-a9fe-11e7-8b4b-0242ac120002',NULL,0,0,NULL,NULL,'EnvArtifact-UUID2',NULL,'2017-10-05 18:51:25','1e34774e-715e-4fd5-bd08-7b654622f33e.VF_RI1_DNS::module-2::module-1.group'); -INSERT INTO `vnf_res_custom_to_vf_module_custom` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID`, `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID`, `CREATION_TIMESTAMP`) VALUES ('302aa6be-a9fe-11e7-8b4b-0242ac120002','30316d81-a9fe-11e7-8b4b-0242ac120002','2017-10-05 18:51:26'); - -INSERT INTO `vnf_res_custom_to_vf_module_custom` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID`, `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID`, `CREATION_TIMESTAMP`) VALUES ('302aa6be-a9fe-11e7-8b4b-0242ac120002','303170ae-a9fe-11e7-8b4b-0242ac120002','2017-10-05 18:51:26'); - -INSERT INTO `vnf_resource` (`ORCHESTRATION_MODE`, `DESCRIPTION`, `CREATION_TIMESTAMP`, `MODEL_UUID`, `AIC_VERSION_MIN`, `AIC_VERSION_MAX`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `MODEL_NAME`, `TOSCA_NODE_TYPE`, `HEAT_TEMPLATE_ARTIFACT_UUID`) VALUES ('HEAT','dns service for unit test1707MIGRATED','2016-11-14 13:04:07','585822c7-4027-4f84-ba50-e9248606f131',NULL,NULL,'585822c7-4027-4f84-ba50-e9248606f112','1.0','DNSResource',NULL,NULL); - -INSERT INTO `vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`, `MODEL_INSTANCE_NAME`, `MIN_INSTANCES`, `MAX_INSTANCES`, `AVAILABILITY_ZONE_MAX_COUNT`, `NF_TYPE`, `NF_ROLE`, `NF_FUNCTION`, `NF_NAMING_CODE`, `CREATION_TIMESTAMP`, `VNF_RESOURCE_MODEL_UUID`) VALUES ('302aa6be-a9fe-11e7-8b4b-0242ac120002','DNSResource-1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2017-10-05 18:51:25','585822c7-4027-4f84-ba50-e9248606f131'); - -SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; diff --git a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-vfw/create_mso_db-demo-vfw.sql b/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-vfw/create_mso_db-demo-vfw.sql deleted file mode 100644 index 3206efcb6c..0000000000 --- a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-vfw/create_mso_db-demo-vfw.sql +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright © 2017 AT&T, Amdocs, Bell Canada -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -SOURCE ../default/create_mso_db-default.sql - -USE `mso_requests`; -DROP USER 'mso'; -CREATE USER 'mso'; -GRANT ALL on mso_requests.* to 'mso' identified by 'mso123' with GRANT OPTION; -FLUSH PRIVILEGES; - -USE `mso_catalog`; -DROP USER 'catalog'; -CREATE USER 'catalog'; -GRANT ALL on mso_catalog.* to 'catalog' identified by 'catalog123' with GRANT OPTION; -FLUSH PRIVILEGES; - -SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; - -INSERT INTO `heat_environment` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('EnvArtifact-UUID3','base_vfw.env','1.0','base_vfw ENV file','parameters:\n vfw_image_name: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)\n vfw_flavor_name: 4 GB General Purpose v1\n public_net_id: 00000000-0000-0000-0000-000000000000\n unprotected_private_net_id: zdfw1fwl01_unprotected\n protected_private_net_id: zdfw1fwl01_protected\n ecomp_private_net_id: oam_ecomp\n unprotected_private_net_cidr: 192.168.10.0/24\n protected_private_net_cidr: 192.168.20.0/24\n ecomp_private_net_cidr: 192.168.9.0/24\n vfw_private_ip_0: 192.168.10.100\n vfw_private_ip_1: 192.168.20.100\n vfw_private_ip_2: 192.168.9.100\n vpg_private_ip_0: 192.168.10.200\n vpg_private_ip_1: 192.168.9.200\n vsn_private_ip_0: 192.168.20.250\n vsn_private_ip_1: 192.168.9.250\n vfw_name_0: zdfw1fwl01fwl01\n vpg_name_0: zdfw1fwl01pgn01\n vsn_name_0: zdfw1fwl01snk01\n vnf_id: vFirewall_demo_app\n vf_module_id: vFirewall\n webserver_ip: 162.242.237.182\n dcae_collector_ip: 192.168.9.1\n key_name: vfw_key\n pub_key: INSERT YOUR PUBLIC KEY HERE','MANUAL RECORD','2016-11-14 13:04:07'); - -INSERT INTO `heat_template` (`ARTIFACT_UUID`, `NAME`, `VERSION`, `DESCRIPTION`, `BODY`, `TIMEOUT_MINUTES`, `ARTIFACT_CHECKSUM`, `CREATION_TIMESTAMP`) VALUES ('Artifact-UUID3','base_vfw.yaml','1.0','Base VFW Heat','heat_template_version: 2013-05-23\n\ndescription: Heat template to deploy vFirewall demo app for OpenECOMP\n\nparameters:\n vfw_image_name:\n type: string\n label: Image name or ID\n description: Image to be used for compute instance\n vfw_flavor_name:\n type: string\n label: Flavor\n description: Type of instance (flavor) to be used\n public_net_id:\n type: string\n label: Public network name or ID\n description: Public network that enables remote connection to VNF\n unprotected_private_net_id:\n type: string\n label: Unprotected private network name or ID\n description: Private network that connects vPacketGenerator with vFirewall\n protected_private_net_id:\n type: string\n label: Protected private network name or ID\n description: Private network that connects vFirewall with vSink\n ecomp_private_net_id:\n type: string\n label: ECOMP management network name or ID\n description: Private network that connects ECOMP component and the VNF\n unprotected_private_net_cidr:\n type: string\n label: Unprotected private network CIDR\n description: The CIDR of the unprotected private network\n protected_private_net_cidr:\n type: string\n label: Protected private network CIDR\n description: The CIDR of the protected private network\n ecomp_private_net_cidr:\n type: string\n label: ECOMP private network CIDR\n description: The CIDR of the protected private network\n vfw_private_ip_0:\n type: string\n label: vFirewall private IP address towards the unprotected network\n description: Private IP address that is assigned to the vFirewall to communicate with the vPacketGenerator\n vfw_private_ip_1:\n type: string\n label: vFirewall private IP address towards the protected network\n description: Private IP address that is assigned to the vFirewall to communicate with the vSink\n vfw_private_ip_2:\n type: string\n label: vFirewall private IP address towards the ECOMP management network\n description: Private IP address that is assigned to the vFirewall to communicate with ECOMP components\n vpg_private_ip_0:\n type: string\n label: vPacketGenerator private IP address towards the unprotected network\n description: Private IP address that is assigned to the vPacketGenerator to communicate with the vFirewall\n vpg_private_ip_1:\n type: string\n label: vPacketGenerator private IP address towards the ECOMP management network\n description: Private IP address that is assigned to the vPacketGenerator to communicate with ECOMP components\n vsn_private_ip_0:\n type: string\n label: vSink private IP address towards the protected network\n description: Private IP address that is assigned to the vSink to communicate with the vFirewall\n vsn_private_ip_1:\n type: string\n label: vSink private IP address towards the ECOMP management network\n description: Private IP address that is assigned to the vSink to communicate with ECOMP components\n vfw_name_0:\n type: string\n label: vFirewall name\n description: Name of the vFirewall\n vpg_name_0:\n type: string\n label: vPacketGenerator name\n description: Name of the vPacketGenerator\n vsn_name_0:\n type: string\n label: vSink name\n description: Name of the vSink\n vnf_id:\n type: string\n label: VNF ID\n description: The VNF ID is provided by ECOMP\n vf_module_id:\n type: string\n label: vFirewall module ID\n description: The vFirewall Module ID is provided by ECOMP\n webserver_ip:\n type: string\n label: Webserver IP address\n description: IP address of the webserver that hosts the source code and binaries\n dcae_collector_ip:\n type: string\n label: DCAE collector IP address\n description: IP address of the DCAE collector\n key_name:\n type: string\n label: Key pair name\n description: Public/Private key pair name\n pub_key:\n type: string\n label: Public key\n description: Public key to be installed on the compute instance\n\nresources:\n my_keypair:\n type: OS::Nova::KeyPair\n properties:\n name: { get_param: key_name }\n public_key: { get_param: pub_key }\n save_private_key: false\n\n unprotected_private_network:\n type: OS::Neutron::Net\n properties:\n name: { get_param: unprotected_private_net_id }\n\n protected_private_network:\n type: OS::Neutron::Net\n properties:\n name: { get_param: protected_private_net_id }\n\n unprotected_private_subnet:\n type: OS::Neutron::Subnet\n properties:\n network_id: { get_resource: unprotected_private_network }\n cidr: { get_param: unprotected_private_net_cidr }\n\n protected_private_subnet:\n type: OS::Neutron::Subnet\n properties:\n network_id: { get_resource: protected_private_network }\n cidr: { get_param: protected_private_net_cidr }\n\n vfw_0:\n type: OS::Nova::Server\n properties:\n image: { get_param: vfw_image_name }\n flavor: { get_param: vfw_flavor_name }\n name: { get_param: vfw_name_0 }\n key_name: { get_resource: my_keypair }\n networks:\n - network: { get_param: public_net_id }\n - port: { get_resource: vfw_private_0_port }\n - port: { get_resource: vfw_private_1_port }\n - port: { get_resource: vfw_private_2_port }\n metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}\n user_data_format: RAW\n user_data:\n str_replace:\n params:\n __webserver__: { get_param: webserver_ip }\n __dcae_collector_ip__ : { get_param: dcae_collector_ip }\n template: |\n #!/bin/bash\n\n WEBSERVER_IP=__webserver__\n DCAE_COLLECTOR_IP=__dcae_collector_ip__\n\n mkdir /opt/config\n cd /opt\n wget http://$WEBSERVER_IP/demo_repo/v_firewall_init.sh\n wget http://$WEBSERVER_IP/demo_repo/vfirewall.sh\n chmod +x v_firewall_init.sh\n chmod +x vfirewall.sh\n echo $WEBSERVER_IP > config/webserver_ip.txt\n echo $DCAE_COLLECTOR_IP > config/dcae_collector_ip.txt\n echo \"no\" > config/install.txt\n mv vfirewall.sh /etc/init.d\n sudo update-rc.d vfirewall.sh defaults\n ./v_firewall_init.sh\n\n vfw_private_0_port:\n type: OS::Neutron::Port\n properties:\n network: { get_resource: unprotected_private_network }\n fixed_ips: [{\"subnet\": { get_resource: unprotected_private_subnet }, \"ip_address\": { get_param: vfw_private_ip_0 }}]\n\n vfw_private_1_port:\n type: OS::Neutron::Port\n properties:\n network: { get_resource: protected_private_network }\n fixed_ips: [{\"subnet\": { get_resource: protected_private_subnet }, \"ip_address\": { get_param: vfw_private_ip_1 }}]\n\n vfw_private_2_port:\n type: OS::Neutron::Port\n properties:\n network: { get_param: ecomp_private_net_id }\n fixed_ips: [{\"subnet\": { get_param: ecomp_private_net_id }, \"ip_address\": { get_param: vfw_private_ip_2 }}]\n\n vpg_0:\n type: OS::Nova::Server\n properties:\n image: { get_param: vfw_image_name }\n flavor: { get_param: vfw_flavor_name }\n name: { get_param: vpg_name_0 }\n key_name: { get_resource: my_keypair }\n networks:\n - network: { get_param: public_net_id }\n - port: { get_resource: vpg_private_0_port }\n - port: { get_resource: vpg_private_1_port }\n metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}\n user_data_format: RAW\n user_data:\n str_replace:\n params:\n __webserver__: { get_param: webserver_ip }\n __fw_ipaddr__: { get_param: vfw_private_ip_0 }\n __protected_net_cidr__: { get_param: protected_private_net_cidr }\n __sink_ipaddr__: { get_param: vsn_private_ip_0 }\n template: |\n #!/bin/bash\n\n WEBSERVER_IP=__webserver__\n FW_IPADDR=__fw_ipaddr__\n PROTECTED_NET_CIDR=__protected_net_cidr__\n SINK_IPADDR=__sink_ipaddr__\n\n mkdir /opt/config\n cd /opt\n wget http://$WEBSERVER_IP/demo_repo/v_packetgen_init.sh\n wget http://$WEBSERVER_IP/demo_repo/vpacketgen.sh\n chmod +x v_packetgen_init.sh\n chmod +x vpacketgen.sh\n echo $WEBSERVER_IP > config/webserver_ip.txt\n echo $FW_IPADDR > config/fw_ipaddr.txt\n echo $PROTECTED_NET_CIDR > config/protected_net_cidr.txt\n echo $SINK_IPADDR > config/sink_ipaddr.txt\n echo \"no\" > config/install.txt\n mv vpacketgen.sh /etc/init.d\n sudo update-rc.d vpacketgen.sh defaults\n ./v_packetgen_init.sh\n\n vpg_private_0_port:\n type: OS::Neutron::Port\n properties:\n network: { get_resource: unprotected_private_network }\n fixed_ips: [{\"subnet\": { get_resource: unprotected_private_subnet }, \"ip_address\": { get_param: vpg_private_ip_0 }}]\n\n vpg_private_1_port:\n type: OS::Neutron::Port\n properties:\n network: { get_param: ecomp_private_net_id }\n fixed_ips: [{\"subnet\": { get_param: ecomp_private_net_id }, \"ip_address\": { get_param: vpg_private_ip_1 }}]\n\n vsn_0:\n type: OS::Nova::Server\n properties:\n image: { get_param: vfw_image_name }\n flavor: { get_param: vfw_flavor_name }\n name: { get_param: vsn_name_0 }\n key_name: { get_resource: my_keypair }\n networks:\n - network: { get_param: public_net_id }\n - port: { get_resource: vsn_private_0_port }\n - port: { get_resource: vsn_private_1_port }\n metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}\n user_data_format: RAW\n user_data:\n str_replace:\n params:\n __webserver__: { get_param: webserver_ip }\n __protected_net_gw__: { get_param: vfw_private_ip_1 }\n __unprotected_net__: { get_param: unprotected_private_net_cidr }\n template: |\n #!/bin/bash\n\n WEBSERVER_IP=__webserver__\n PROTECTED_NET_GW=__protected_net_gw__\n UNPROTECTED_NET=__unprotected_net__\n UNPROTECTED_NET=$(echo $UNPROTECTED_NET | cut -d\'/\' -f1)\n\n mkdir /opt/config\n cd /opt\n wget http://$WEBSERVER_IP/demo_repo/v_sink_init.sh\n wget http://$WEBSERVER_IP/demo_repo/vsink.sh\n chmod +x v_sink_init.sh\n chmod +x vsink.sh\n echo $PROTECTED_NET_GW > config/protected_net_gw.txt\n echo $UNPROTECTED_NET > config/unprotected_net.txt\n echo \"no\" > config/install.txt\n mv vsink.sh /etc/init.d\n sudo update-rc.d vsink.sh defaults\n ./v_sink_init.sh\n\n vsn_private_0_port:\n type: OS::Neutron::Port\n properties:\n network: { get_resource: protected_private_network }\n fixed_ips: [{\"subnet\": { get_resource: protected_private_subnet }, \"ip_address\": { get_param: vsn_private_ip_0 }}]\n\n vsn_private_1_port:\n type: OS::Neutron::Port\n properties:\n network: { get_param: ecomp_private_net_id }\n fixed_ips: [{\"subnet\": { get_param: ecomp_private_net_id }, \"ip_address\": { get_param: vsn_private_ip_1 }}]\n \n',300,'MANUAL RECORD','2016-11-14 13:04:07'); - -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','dcae_collector_ip','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','ecomp_private_net_cidr','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','ecomp_private_net_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','key_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','protected_private_net_cidr','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','protected_private_net_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','public_net_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','pub_key','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','unprotected_private_net_cidr','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','unprotected_private_net_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vfw_flavor_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vfw_image_name','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vfw_name_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vfw_private_ip_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vfw_private_ip_1','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vfw_private_ip_2','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vf_module_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vnf_id','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vpg_name_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vpg_private_ip_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vpg_private_ip_1','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vsn_name_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vsn_private_ip_0','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','vsn_private_ip_1','','string',NULL); -INSERT INTO `heat_template_params` (`HEAT_TEMPLATE_ARTIFACT_UUID`, `PARAM_NAME`, `IS_REQUIRED`, `PARAM_TYPE`, `PARAM_ALIAS`) VALUES ('Artifact-UUID3','webserver_ip','','string',NULL); - -INSERT INTO `service` (`MODEL_UUID`, `MODEL_NAME`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `DESCRIPTION`, `CREATION_TIMESTAMP`, `TOSCA_CSAR_ARTIFACT_UUID`) VALUES ('2e34774e-715e-4fd5-bd09-7b654622f35i','vfw-service','585822c7-4027-4f84-ba50-e9248606f112','1.0','VFW service','2016-11-14 13:04:07',NULL); - -INSERT INTO `vf_module` (`MODEL_UUID`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `MODEL_NAME`, `DESCRIPTION`, `IS_BASE`, `HEAT_TEMPLATE_ARTIFACT_UUID`, `VOL_HEAT_TEMPLATE_ARTIFACT_UUID`, `CREATION_TIMESTAMP`, `VNF_RESOURCE_MODEL_UUID`) VALUES ('1e34774e-715e-4fd5-bd08-7b654622f33f.VF_RI1_VFW::module-1::module-1.group','585822c7-4027-4f84-ba50-e9248606f134','1.0','VF_RI1_VFW::module-1',NULL,1,'Artifact-UUID3',NULL,'2016-11-14 13:04:07','685822c7-4027-4f84-ba50-e9248606f132'); - -INSERT INTO `vf_module_customization` (`MODEL_CUSTOMIZATION_UUID`, `LABEL`, `INITIAL_COUNT`, `MIN_INSTANCES`, `MAX_INSTANCES`, `AVAILABILITY_ZONE_COUNT`, `HEAT_ENVIRONMENT_ARTIFACT_UUID`, `VOL_ENVIRONMENT_ARTIFACT_UUID`, `CREATION_TIMESTAMP`, `VF_MODULE_MODEL_UUID`) VALUES ('5aa23938-a9fe-11e7-8b4b-0242ac120002',NULL,1,0,NULL,NULL,'EnvArtifact-UUID3',NULL,'2017-10-05 18:52:03','1e34774e-715e-4fd5-bd08-7b654622f33f.VF_RI1_VFW::module-1::module-1.group'); - -INSERT INTO `vnf_res_custom_to_vf_module_custom` (`VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID`, `VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID`, `CREATION_TIMESTAMP`) VALUES ('5a9bd247-a9fe-11e7-8b4b-0242ac120002','5aa23938-a9fe-11e7-8b4b-0242ac120002','2017-10-05 18:52:03'); - -INSERT INTO `vnf_resource` (`ORCHESTRATION_MODE`, `DESCRIPTION`, `CREATION_TIMESTAMP`, `MODEL_UUID`, `AIC_VERSION_MIN`, `AIC_VERSION_MAX`, `MODEL_INVARIANT_UUID`, `MODEL_VERSION`, `MODEL_NAME`, `TOSCA_NODE_TYPE`, `HEAT_TEMPLATE_ARTIFACT_UUID`) VALUES ('HEAT','VFW service1707MIGRATED','2016-11-14 13:04:07','685822c7-4027-4f84-ba50-e9248606f132',NULL,NULL,'585822c7-4027-4f84-ba50-e9248606f113','1.0','VFWResource',NULL,NULL); - -INSERT INTO `vnf_resource_customization` (`MODEL_CUSTOMIZATION_UUID`, `MODEL_INSTANCE_NAME`, `MIN_INSTANCES`, `MAX_INSTANCES`, `AVAILABILITY_ZONE_MAX_COUNT`, `NF_TYPE`, `NF_ROLE`, `NF_FUNCTION`, `NF_NAMING_CODE`, `CREATION_TIMESTAMP`, `VNF_RESOURCE_MODEL_UUID`) VALUES ('5a9bd247-a9fe-11e7-8b4b-0242ac120002','VFWResource-1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2017-10-05 18:52:03','685822c7-4027-4f84-ba50-e9248606f132'); - -SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; diff --git a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/mariadb_engine_7.7.3-ee.sql b/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/mariadb_engine_7.7.3-ee.sql deleted file mode 100644 index b7adb4e5a5..0000000000 --- a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/mariadb_engine_7.7.3-ee.sql +++ /dev/null @@ -1,1210 +0,0 @@ -/* Copyright © 2017 AT&T, Amdocs, Bell Canada -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -DROP DATABASE IF EXISTS `camundabpmn`; - -CREATE DATABASE `camundabpmn`; - -USE `camundabpmn`; - -# DROP USER IF EXISTS 'camunda'; -delete from mysql.user where User='camunda'; -CREATE USER 'camunda'; -GRANT ALL on camundabpmn.* to 'camunda' identified by 'camunda123' with GRANT OPTION; -FLUSH PRIVILEGES; - -USE `camundabpmn`; - -create table ACT_GE_PROPERTY ( - NAME_ varchar(64), - VALUE_ varchar(300), - REV_ integer, - primary key (NAME_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -insert into ACT_GE_PROPERTY -values ('schema.version', 'fox', 1); - -insert into ACT_GE_PROPERTY -values ('schema.history', 'create(fox)', 1); - -insert into ACT_GE_PROPERTY -values ('next.dbid', '1', 1); - -insert into ACT_GE_PROPERTY -values ('deployment.lock', '0', 1); - -insert into ACT_GE_PROPERTY -values ('history.cleanup.job.lock', '0', 1); - -create table ACT_GE_BYTEARRAY ( - ID_ varchar(64), - REV_ integer, - NAME_ varchar(255), - DEPLOYMENT_ID_ varchar(64), - BYTES_ LONGBLOB, - GENERATED_ TINYINT, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RE_DEPLOYMENT ( - ID_ varchar(64), - NAME_ varchar(255), - DEPLOY_TIME_ timestamp(3), - SOURCE_ varchar(255), - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_EXECUTION ( - ID_ varchar(64), - REV_ integer, - PROC_INST_ID_ varchar(64), - BUSINESS_KEY_ varchar(255), - PARENT_ID_ varchar(64), - PROC_DEF_ID_ varchar(64), - SUPER_EXEC_ varchar(64), - SUPER_CASE_EXEC_ varchar(64), - CASE_INST_ID_ varchar(64), - ACT_ID_ varchar(255), - ACT_INST_ID_ varchar(64), - IS_ACTIVE_ TINYINT, - IS_CONCURRENT_ TINYINT, - IS_SCOPE_ TINYINT, - IS_EVENT_SCOPE_ TINYINT, - SUSPENSION_STATE_ integer, - CACHED_ENT_STATE_ integer, - SEQUENCE_COUNTER_ bigint, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_JOB ( - ID_ varchar(64) NOT NULL, - REV_ integer, - TYPE_ varchar(255) NOT NULL, - LOCK_EXP_TIME_ timestamp(3) NULL, - LOCK_OWNER_ varchar(255), - EXCLUSIVE_ boolean, - EXECUTION_ID_ varchar(64), - PROCESS_INSTANCE_ID_ varchar(64), - PROCESS_DEF_ID_ varchar(64), - PROCESS_DEF_KEY_ varchar(255), - RETRIES_ integer, - EXCEPTION_STACK_ID_ varchar(64), - EXCEPTION_MSG_ varchar(4000), - DUEDATE_ timestamp(3) NULL, - REPEAT_ varchar(255), - HANDLER_TYPE_ varchar(255), - HANDLER_CFG_ varchar(4000), - DEPLOYMENT_ID_ varchar(64), - SUSPENSION_STATE_ integer NOT NULL DEFAULT 1, - JOB_DEF_ID_ varchar(64), - PRIORITY_ bigint NOT NULL DEFAULT 0, - SEQUENCE_COUNTER_ bigint, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_JOBDEF ( - ID_ varchar(64) NOT NULL, - REV_ integer, - PROC_DEF_ID_ varchar(64), - PROC_DEF_KEY_ varchar(255), - ACT_ID_ varchar(255), - JOB_TYPE_ varchar(255) NOT NULL, - JOB_CONFIGURATION_ varchar(255), - SUSPENSION_STATE_ integer, - JOB_PRIORITY_ bigint, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RE_PROCDEF ( - ID_ varchar(64) not null, - REV_ integer, - CATEGORY_ varchar(255), - NAME_ varchar(255), - KEY_ varchar(255) not null, - VERSION_ integer not null, - DEPLOYMENT_ID_ varchar(64), - RESOURCE_NAME_ varchar(4000), - DGRM_RESOURCE_NAME_ varchar(4000), - HAS_START_FORM_KEY_ TINYINT, - SUSPENSION_STATE_ integer, - TENANT_ID_ varchar(64), - VERSION_TAG_ varchar(64), - HISTORY_TTL_ integer, - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_TASK ( - ID_ varchar(64), - REV_ integer, - EXECUTION_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - PROC_DEF_ID_ varchar(64), - CASE_EXECUTION_ID_ varchar(64), - CASE_INST_ID_ varchar(64), - CASE_DEF_ID_ varchar(64), - NAME_ varchar(255), - PARENT_TASK_ID_ varchar(64), - DESCRIPTION_ varchar(4000), - TASK_DEF_KEY_ varchar(255), - OWNER_ varchar(255), - ASSIGNEE_ varchar(255), - DELEGATION_ varchar(64), - PRIORITY_ integer, - CREATE_TIME_ timestamp(3), - DUE_DATE_ datetime(3), - FOLLOW_UP_DATE_ datetime(3), - SUSPENSION_STATE_ integer, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_IDENTITYLINK ( - ID_ varchar(64), - REV_ integer, - GROUP_ID_ varchar(255), - TYPE_ varchar(255), - USER_ID_ varchar(255), - TASK_ID_ varchar(64), - PROC_DEF_ID_ varchar(64), - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_VARIABLE ( - ID_ varchar(64) not null, - REV_ integer, - TYPE_ varchar(255) not null, - NAME_ varchar(255) not null, - EXECUTION_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - CASE_EXECUTION_ID_ varchar(64), - CASE_INST_ID_ varchar(64), - TASK_ID_ varchar(64), - BYTEARRAY_ID_ varchar(64), - DOUBLE_ double, - LONG_ bigint, - TEXT_ LONGBLOB NULL, - TEXT2_ LONGBLOB NULL, - VAR_SCOPE_ varchar(64) not null, - SEQUENCE_COUNTER_ bigint, - IS_CONCURRENT_LOCAL_ TINYINT, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_EVENT_SUBSCR ( - ID_ varchar(64) not null, - REV_ integer, - EVENT_TYPE_ varchar(255) not null, - EVENT_NAME_ varchar(255), - EXECUTION_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - ACTIVITY_ID_ varchar(255), - CONFIGURATION_ varchar(255), - CREATED_ timestamp(3) not null, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_INCIDENT ( - ID_ varchar(64) not null, - REV_ integer not null, - INCIDENT_TIMESTAMP_ timestamp(3) not null, - INCIDENT_MSG_ varchar(4000), - INCIDENT_TYPE_ varchar(255) not null, - EXECUTION_ID_ varchar(64), - ACTIVITY_ID_ varchar(255), - PROC_INST_ID_ varchar(64), - PROC_DEF_ID_ varchar(64), - CAUSE_INCIDENT_ID_ varchar(64), - ROOT_CAUSE_INCIDENT_ID_ varchar(64), - CONFIGURATION_ varchar(255), - TENANT_ID_ varchar(64), - JOB_DEF_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_AUTHORIZATION ( - ID_ varchar(64) not null, - REV_ integer not null, - TYPE_ integer not null, - GROUP_ID_ varchar(255), - USER_ID_ varchar(255), - RESOURCE_TYPE_ integer not null, - RESOURCE_ID_ varchar(64), - PERMS_ integer, - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_FILTER ( - ID_ varchar(64) not null, - REV_ integer not null, - RESOURCE_TYPE_ varchar(255) not null, - NAME_ varchar(255) not null, - OWNER_ varchar(255), - QUERY_ LONGTEXT not null, - PROPERTIES_ LONGTEXT, - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_METER_LOG ( - ID_ varchar(64) not null, - NAME_ varchar(64) not null, - REPORTER_ varchar(255), - VALUE_ bigint, - TIMESTAMP_ timestamp(3), - MILLISECONDS_ bigint DEFAULT 0, - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_EXT_TASK ( - ID_ varchar(64) not null, - REV_ integer not null, - WORKER_ID_ varchar(255), - TOPIC_NAME_ varchar(255), - RETRIES_ integer, - ERROR_MSG_ varchar(4000), - ERROR_DETAILS_ID_ varchar(64), - LOCK_EXP_TIME_ timestamp(3) NULL, - SUSPENSION_STATE_ integer, - EXECUTION_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - PROC_DEF_ID_ varchar(64), - PROC_DEF_KEY_ varchar(255), - ACT_ID_ varchar(255), - ACT_INST_ID_ varchar(64), - TENANT_ID_ varchar(64), - PRIORITY_ bigint NOT NULL DEFAULT 0, - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_RU_BATCH ( - ID_ varchar(64) not null, - REV_ integer not null, - TYPE_ varchar(255), - TOTAL_JOBS_ integer, - JOBS_CREATED_ integer, - JOBS_PER_SEED_ integer, - INVOCATIONS_PER_JOB_ integer, - SEED_JOB_DEF_ID_ varchar(64), - BATCH_JOB_DEF_ID_ varchar(64), - MONITOR_JOB_DEF_ID_ varchar(64), - SUSPENSION_STATE_ integer, - CONFIGURATION_ varchar(255), - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_); -create index ACT_IDX_EXEC_TENANT_ID on ACT_RU_EXECUTION(TENANT_ID_); -create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_); -create index ACT_IDX_TASK_ASSIGNEE on ACT_RU_TASK(ASSIGNEE_); -create index ACT_IDX_TASK_TENANT_ID on ACT_RU_TASK(TENANT_ID_); -create index ACT_IDX_IDENT_LNK_USER on ACT_RU_IDENTITYLINK(USER_ID_); -create index ACT_IDX_IDENT_LNK_GROUP on ACT_RU_IDENTITYLINK(GROUP_ID_); -create index ACT_IDX_EVENT_SUBSCR_CONFIG_ on ACT_RU_EVENT_SUBSCR(CONFIGURATION_); -create index ACT_IDX_EVENT_SUBSCR_TENANT_ID on ACT_RU_EVENT_SUBSCR(TENANT_ID_); -create index ACT_IDX_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_); -create index ACT_IDX_VARIABLE_TENANT_ID on ACT_RU_VARIABLE(TENANT_ID_); -create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_); -create index ACT_IDX_INC_CONFIGURATION on ACT_RU_INCIDENT(CONFIGURATION_); -create index ACT_IDX_INC_TENANT_ID on ACT_RU_INCIDENT(TENANT_ID_); --- CAM-5914 -create index ACT_IDX_JOB_EXECUTION_ID on ACT_RU_JOB(EXECUTION_ID_); --- this index needs to be limited in mariadb see CAM-6938 -create index ACT_IDX_JOB_HANDLER on ACT_RU_JOB(HANDLER_TYPE_(100),HANDLER_CFG_(155)); -create index ACT_IDX_JOB_PROCINST on ACT_RU_JOB(PROCESS_INSTANCE_ID_); -create index ACT_IDX_JOB_TENANT_ID on ACT_RU_JOB(TENANT_ID_); -create index ACT_IDX_JOBDEF_TENANT_ID on ACT_RU_JOBDEF(TENANT_ID_); - --- new metric milliseconds column -CREATE INDEX ACT_IDX_METER_LOG_MS ON ACT_RU_METER_LOG(MILLISECONDS_); -CREATE INDEX ACT_IDX_METER_LOG_NAME_MS ON ACT_RU_METER_LOG(NAME_, MILLISECONDS_); -CREATE INDEX ACT_IDX_METER_LOG_REPORT ON ACT_RU_METER_LOG(NAME_, REPORTER_, MILLISECONDS_); - --- old metric timestamp column -CREATE INDEX ACT_IDX_METER_LOG_TIME ON ACT_RU_METER_LOG(TIMESTAMP_); -CREATE INDEX ACT_IDX_METER_LOG ON ACT_RU_METER_LOG(NAME_, TIMESTAMP_); - -create index ACT_IDX_EXT_TASK_TOPIC on ACT_RU_EXT_TASK(TOPIC_NAME_); -create index ACT_IDX_EXT_TASK_TENANT_ID on ACT_RU_EXT_TASK(TENANT_ID_); -create index ACT_IDX_EXT_TASK_PRIORITY ON ACT_RU_EXT_TASK(PRIORITY_); -create index ACT_IDX_EXT_TASK_ERR_DETAILS ON ACT_RU_EXT_TASK(ERROR_DETAILS_ID_); -create index ACT_IDX_AUTH_GROUP_ID ON ACT_RU_AUTHORIZATION(GROUP_ID_); -create index ACT_IDX_JOB_JOB_DEF_ID on ACT_RU_JOB(JOB_DEF_ID_); - -alter table ACT_GE_BYTEARRAY - add constraint ACT_FK_BYTEARR_DEPL - foreign key (DEPLOYMENT_ID_) - references ACT_RE_DEPLOYMENT (ID_); - -alter table ACT_RU_EXECUTION - add constraint ACT_FK_EXE_PROCINST - foreign key (PROC_INST_ID_) - references ACT_RU_EXECUTION (ID_) on delete cascade on update cascade; - -alter table ACT_RU_EXECUTION - add constraint ACT_FK_EXE_PARENT - foreign key (PARENT_ID_) - references ACT_RU_EXECUTION (ID_); - -alter table ACT_RU_EXECUTION - add constraint ACT_FK_EXE_SUPER - foreign key (SUPER_EXEC_) - references ACT_RU_EXECUTION (ID_); - -alter table ACT_RU_EXECUTION - add constraint ACT_FK_EXE_PROCDEF - foreign key (PROC_DEF_ID_) - references ACT_RE_PROCDEF (ID_); - -alter table ACT_RU_IDENTITYLINK - add constraint ACT_FK_TSKASS_TASK - foreign key (TASK_ID_) - references ACT_RU_TASK (ID_); - -alter table ACT_RU_IDENTITYLINK - add constraint ACT_FK_ATHRZ_PROCEDEF - foreign key (PROC_DEF_ID_) - references ACT_RE_PROCDEF(ID_); - -alter table ACT_RU_TASK - add constraint ACT_FK_TASK_EXE - foreign key (EXECUTION_ID_) - references ACT_RU_EXECUTION (ID_); - -alter table ACT_RU_TASK - add constraint ACT_FK_TASK_PROCINST - foreign key (PROC_INST_ID_) - references ACT_RU_EXECUTION (ID_); - -alter table ACT_RU_TASK - add constraint ACT_FK_TASK_PROCDEF - foreign key (PROC_DEF_ID_) - references ACT_RE_PROCDEF (ID_); - -alter table ACT_RU_VARIABLE - add constraint ACT_FK_VAR_EXE - foreign key (EXECUTION_ID_) - references ACT_RU_EXECUTION (ID_); - -alter table ACT_RU_VARIABLE - add constraint ACT_FK_VAR_PROCINST - foreign key (PROC_INST_ID_) - references ACT_RU_EXECUTION(ID_); - -alter table ACT_RU_VARIABLE - add constraint ACT_FK_VAR_BYTEARRAY - foreign key (BYTEARRAY_ID_) - references ACT_GE_BYTEARRAY (ID_); - -alter table ACT_RU_JOB - add constraint ACT_FK_JOB_EXCEPTION - foreign key (EXCEPTION_STACK_ID_) - references ACT_GE_BYTEARRAY (ID_); - -alter table ACT_RU_EVENT_SUBSCR - add constraint ACT_FK_EVENT_EXEC - foreign key (EXECUTION_ID_) - references ACT_RU_EXECUTION(ID_); - -alter table ACT_RU_INCIDENT - add constraint ACT_FK_INC_EXE - foreign key (EXECUTION_ID_) - references ACT_RU_EXECUTION (ID_); - -alter table ACT_RU_INCIDENT - add constraint ACT_FK_INC_PROCINST - foreign key (PROC_INST_ID_) - references ACT_RU_EXECUTION (ID_); - -alter table ACT_RU_INCIDENT - add constraint ACT_FK_INC_PROCDEF - foreign key (PROC_DEF_ID_) - references ACT_RE_PROCDEF (ID_); - -alter table ACT_RU_INCIDENT - add constraint ACT_FK_INC_CAUSE - foreign key (CAUSE_INCIDENT_ID_) - references ACT_RU_INCIDENT (ID_) on delete cascade on update cascade; - -alter table ACT_RU_INCIDENT - add constraint ACT_FK_INC_RCAUSE - foreign key (ROOT_CAUSE_INCIDENT_ID_) - references ACT_RU_INCIDENT (ID_) on delete cascade on update cascade; - -alter table ACT_RU_EXT_TASK - add constraint ACT_FK_EXT_TASK_ERROR_DETAILS - foreign key (ERROR_DETAILS_ID_) - references ACT_GE_BYTEARRAY (ID_); - -create index ACT_IDX_INC_JOB_DEF on ACT_RU_INCIDENT(JOB_DEF_ID_); -alter table ACT_RU_INCIDENT - add constraint ACT_FK_INC_JOB_DEF - foreign key (JOB_DEF_ID_) - references ACT_RU_JOBDEF (ID_); - -alter table ACT_RU_AUTHORIZATION - add constraint ACT_UNIQ_AUTH_USER - unique (USER_ID_,TYPE_,RESOURCE_TYPE_,RESOURCE_ID_); - -alter table ACT_RU_AUTHORIZATION - add constraint ACT_UNIQ_AUTH_GROUP - unique (GROUP_ID_,TYPE_,RESOURCE_TYPE_,RESOURCE_ID_); - -alter table ACT_RU_VARIABLE - add constraint ACT_UNIQ_VARIABLE - unique (VAR_SCOPE_, NAME_); - -alter table ACT_RU_EXT_TASK - add constraint ACT_FK_EXT_TASK_EXE - foreign key (EXECUTION_ID_) - references ACT_RU_EXECUTION (ID_); - -create index ACT_IDX_BATCH_SEED_JOB_DEF ON ACT_RU_BATCH(SEED_JOB_DEF_ID_); -alter table ACT_RU_BATCH - add constraint ACT_FK_BATCH_SEED_JOB_DEF - foreign key (SEED_JOB_DEF_ID_) - references ACT_RU_JOBDEF (ID_); - -create index ACT_IDX_BATCH_MONITOR_JOB_DEF ON ACT_RU_BATCH(MONITOR_JOB_DEF_ID_); -alter table ACT_RU_BATCH - add constraint ACT_FK_BATCH_MONITOR_JOB_DEF - foreign key (MONITOR_JOB_DEF_ID_) - references ACT_RU_JOBDEF (ID_); - -create index ACT_IDX_BATCH_JOB_DEF ON ACT_RU_BATCH(BATCH_JOB_DEF_ID_); -alter table ACT_RU_BATCH - add constraint ACT_FK_BATCH_JOB_DEF - foreign key (BATCH_JOB_DEF_ID_) - references ACT_RU_JOBDEF (ID_); - --- indexes for deadlock problems - https://app.camunda.com/jira/browse/CAM-2567 -- -create index ACT_IDX_INC_CAUSEINCID on ACT_RU_INCIDENT(CAUSE_INCIDENT_ID_); -create index ACT_IDX_INC_EXID on ACT_RU_INCIDENT(EXECUTION_ID_); -create index ACT_IDX_INC_PROCDEFID on ACT_RU_INCIDENT(PROC_DEF_ID_); -create index ACT_IDX_INC_PROCINSTID on ACT_RU_INCIDENT(PROC_INST_ID_); -create index ACT_IDX_INC_ROOTCAUSEINCID on ACT_RU_INCIDENT(ROOT_CAUSE_INCIDENT_ID_); --- index for deadlock problem - https://app.camunda.com/jira/browse/CAM-4440 -- -create index ACT_IDX_AUTH_RESOURCE_ID on ACT_RU_AUTHORIZATION(RESOURCE_ID_); --- index to prevent deadlock on fk constraint - https://app.camunda.com/jira/browse/CAM-5440 -- -create index ACT_IDX_EXT_TASK_EXEC on ACT_RU_EXT_TASK(EXECUTION_ID_); - --- indexes to improve deployment -create index ACT_IDX_BYTEARRAY_NAME on ACT_GE_BYTEARRAY(NAME_); -create index ACT_IDX_DEPLOYMENT_NAME on ACT_RE_DEPLOYMENT(NAME_); -create index ACT_IDX_DEPLOYMENT_TENANT_ID on ACT_RE_DEPLOYMENT(TENANT_ID_); -create index ACT_IDX_JOBDEF_PROC_DEF_ID ON ACT_RU_JOBDEF(PROC_DEF_ID_); -create index ACT_IDX_JOB_HANDLER_TYPE ON ACT_RU_JOB(HANDLER_TYPE_); -create index ACT_IDX_EVENT_SUBSCR_EVT_NAME ON ACT_RU_EVENT_SUBSCR(EVENT_NAME_); -create index ACT_IDX_PROCDEF_DEPLOYMENT_ID ON ACT_RE_PROCDEF(DEPLOYMENT_ID_); -create index ACT_IDX_PROCDEF_TENANT_ID ON ACT_RE_PROCDEF(TENANT_ID_); -create index ACT_IDX_PROCDEF_VER_TAG ON ACT_RE_PROCDEF(VERSION_TAG_); --- create case definition table -- -create table ACT_RE_CASE_DEF ( - ID_ varchar(64) not null, - REV_ integer, - CATEGORY_ varchar(255), - NAME_ varchar(255), - KEY_ varchar(255) not null, - VERSION_ integer not null, - DEPLOYMENT_ID_ varchar(64), - RESOURCE_NAME_ varchar(4000), - DGRM_RESOURCE_NAME_ varchar(4000), - TENANT_ID_ varchar(64), - HISTORY_TTL_ integer, - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - --- create case execution table -- -create table ACT_RU_CASE_EXECUTION ( - ID_ varchar(64) NOT NULL, - REV_ integer, - CASE_INST_ID_ varchar(64), - SUPER_CASE_EXEC_ varchar(64), - SUPER_EXEC_ varchar(64), - BUSINESS_KEY_ varchar(255), - PARENT_ID_ varchar(64), - CASE_DEF_ID_ varchar(64), - ACT_ID_ varchar(255), - PREV_STATE_ integer, - CURRENT_STATE_ integer, - REQUIRED_ boolean, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - --- create case sentry part table -- - -create table ACT_RU_CASE_SENTRY_PART ( - ID_ varchar(64) NOT NULL, - REV_ integer, - CASE_INST_ID_ varchar(64), - CASE_EXEC_ID_ varchar(64), - SENTRY_ID_ varchar(255), - TYPE_ varchar(255), - SOURCE_CASE_EXEC_ID_ varchar(64), - STANDARD_EVENT_ varchar(255), - SOURCE_ varchar(255), - VARIABLE_EVENT_ varchar(255), - VARIABLE_NAME_ varchar(255), - SATISFIED_ boolean, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - --- create index on business key -- -create index ACT_IDX_CASE_EXEC_BUSKEY on ACT_RU_CASE_EXECUTION(BUSINESS_KEY_); - --- create foreign key constraints on ACT_RU_CASE_EXECUTION -- -alter table ACT_RU_CASE_EXECUTION - add constraint ACT_FK_CASE_EXE_CASE_INST - foreign key (CASE_INST_ID_) - references ACT_RU_CASE_EXECUTION(ID_) on delete cascade on update cascade; - -alter table ACT_RU_CASE_EXECUTION - add constraint ACT_FK_CASE_EXE_PARENT - foreign key (PARENT_ID_) - references ACT_RU_CASE_EXECUTION(ID_); - -alter table ACT_RU_CASE_EXECUTION - add constraint ACT_FK_CASE_EXE_CASE_DEF - foreign key (CASE_DEF_ID_) - references ACT_RE_CASE_DEF(ID_); - --- create foreign key constraints on ACT_RU_VARIABLE -- -alter table ACT_RU_VARIABLE - add constraint ACT_FK_VAR_CASE_EXE - foreign key (CASE_EXECUTION_ID_) - references ACT_RU_CASE_EXECUTION(ID_); - -alter table ACT_RU_VARIABLE - add constraint ACT_FK_VAR_CASE_INST - foreign key (CASE_INST_ID_) - references ACT_RU_CASE_EXECUTION(ID_); - --- create foreign key constraints on ACT_RU_TASK -- -alter table ACT_RU_TASK - add constraint ACT_FK_TASK_CASE_EXE - foreign key (CASE_EXECUTION_ID_) - references ACT_RU_CASE_EXECUTION(ID_); - -alter table ACT_RU_TASK - add constraint ACT_FK_TASK_CASE_DEF - foreign key (CASE_DEF_ID_) - references ACT_RE_CASE_DEF(ID_); - --- create foreign key constraints on ACT_RU_CASE_SENTRY_PART -- -alter table ACT_RU_CASE_SENTRY_PART - add constraint ACT_FK_CASE_SENTRY_CASE_INST - foreign key (CASE_INST_ID_) - references ACT_RU_CASE_EXECUTION(ID_); - -alter table ACT_RU_CASE_SENTRY_PART - add constraint ACT_FK_CASE_SENTRY_CASE_EXEC - foreign key (CASE_EXEC_ID_) - references ACT_RU_CASE_EXECUTION(ID_); - -create index ACT_IDX_CASE_DEF_TENANT_ID on ACT_RE_CASE_DEF(TENANT_ID_); -create index ACT_IDX_CASE_EXEC_TENANT_ID on ACT_RU_CASE_EXECUTION(TENANT_ID_); --- create decision definition table -- -create table ACT_RE_DECISION_DEF ( - ID_ varchar(64) not null, - REV_ integer, - CATEGORY_ varchar(255), - NAME_ varchar(255), - KEY_ varchar(255) not null, - VERSION_ integer not null, - DEPLOYMENT_ID_ varchar(64), - RESOURCE_NAME_ varchar(4000), - DGRM_RESOURCE_NAME_ varchar(4000), - DEC_REQ_ID_ varchar(64), - DEC_REQ_KEY_ varchar(255), - TENANT_ID_ varchar(64), - HISTORY_TTL_ integer, - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - --- create decision requirements definition table -- -create table ACT_RE_DECISION_REQ_DEF ( - ID_ varchar(64) NOT NULL, - REV_ integer, - CATEGORY_ varchar(255), - NAME_ varchar(255), - KEY_ varchar(255) NOT NULL, - VERSION_ integer NOT NULL, - DEPLOYMENT_ID_ varchar(64), - RESOURCE_NAME_ varchar(4000), - DGRM_RESOURCE_NAME_ varchar(4000), - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -alter table ACT_RE_DECISION_DEF - add constraint ACT_FK_DEC_REQ - foreign key (DEC_REQ_ID_) - references ACT_RE_DECISION_REQ_DEF(ID_); - -create index ACT_IDX_DEC_DEF_TENANT_ID on ACT_RE_DECISION_DEF(TENANT_ID_); -create index ACT_IDX_DEC_DEF_REQ_ID on ACT_RE_DECISION_DEF(DEC_REQ_ID_); -create index ACT_IDX_DEC_REQ_DEF_TENANT_ID on ACT_RE_DECISION_REQ_DEF(TENANT_ID_); -create table ACT_HI_PROCINST ( - ID_ varchar(64) not null, - PROC_INST_ID_ varchar(64) not null, - BUSINESS_KEY_ varchar(255), - PROC_DEF_KEY_ varchar(255), - PROC_DEF_ID_ varchar(64) not null, - START_TIME_ datetime(3) not null, - END_TIME_ datetime(3), - DURATION_ bigint, - START_USER_ID_ varchar(255), - START_ACT_ID_ varchar(255), - END_ACT_ID_ varchar(255), - SUPER_PROCESS_INSTANCE_ID_ varchar(64), - SUPER_CASE_INSTANCE_ID_ varchar(64), - CASE_INST_ID_ varchar(64), - DELETE_REASON_ varchar(4000), - TENANT_ID_ varchar(64), - STATE_ varchar(255), - primary key (ID_), - unique (PROC_INST_ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_ACTINST ( - ID_ varchar(64) not null, - PARENT_ACT_INST_ID_ varchar(64), - PROC_DEF_KEY_ varchar(255), - PROC_DEF_ID_ varchar(64) not null, - PROC_INST_ID_ varchar(64) not null, - EXECUTION_ID_ varchar(64) not null, - ACT_ID_ varchar(255) not null, - TASK_ID_ varchar(64), - CALL_PROC_INST_ID_ varchar(64), - CALL_CASE_INST_ID_ varchar(64), - ACT_NAME_ varchar(255), - ACT_TYPE_ varchar(255) not null, - ASSIGNEE_ varchar(64), - START_TIME_ datetime(3) not null, - END_TIME_ datetime(3), - DURATION_ bigint, - ACT_INST_STATE_ integer, - SEQUENCE_COUNTER_ bigint, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_TASKINST ( - ID_ varchar(64) not null, - TASK_DEF_KEY_ varchar(255), - PROC_DEF_KEY_ varchar(255), - PROC_DEF_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - EXECUTION_ID_ varchar(64), - CASE_DEF_KEY_ varchar(255), - CASE_DEF_ID_ varchar(64), - CASE_INST_ID_ varchar(64), - CASE_EXECUTION_ID_ varchar(64), - ACT_INST_ID_ varchar(64), - NAME_ varchar(255), - PARENT_TASK_ID_ varchar(64), - DESCRIPTION_ varchar(4000), - OWNER_ varchar(255), - ASSIGNEE_ varchar(255), - START_TIME_ datetime(3) not null, - END_TIME_ datetime(3), - DURATION_ bigint, - DELETE_REASON_ varchar(4000), - PRIORITY_ integer, - DUE_DATE_ datetime(3), - FOLLOW_UP_DATE_ datetime(3), - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_VARINST ( - ID_ varchar(64) not null, - PROC_DEF_KEY_ varchar(255), - PROC_DEF_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - EXECUTION_ID_ varchar(64), - ACT_INST_ID_ varchar(64), - CASE_DEF_KEY_ varchar(255), - CASE_DEF_ID_ varchar(64), - CASE_INST_ID_ varchar(64), - CASE_EXECUTION_ID_ varchar(64), - TASK_ID_ varchar(64), - NAME_ varchar(255) not null, - VAR_TYPE_ varchar(100), - REV_ integer, - BYTEARRAY_ID_ varchar(64), - DOUBLE_ double, - LONG_ bigint, - TEXT_ LONGBLOB NULL, - TEXT2_ LONGBLOB NULL, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_DETAIL ( - ID_ varchar(64) not null, - TYPE_ varchar(255) not null, - PROC_DEF_KEY_ varchar(255), - PROC_DEF_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - EXECUTION_ID_ varchar(64), - CASE_DEF_KEY_ varchar(255), - CASE_DEF_ID_ varchar(64), - CASE_INST_ID_ varchar(64), - CASE_EXECUTION_ID_ varchar(64), - TASK_ID_ varchar(64), - ACT_INST_ID_ varchar(64), - VAR_INST_ID_ varchar(64), - NAME_ varchar(255) not null, - VAR_TYPE_ varchar(255), - REV_ integer, - TIME_ datetime(3) not null, - BYTEARRAY_ID_ varchar(64), - DOUBLE_ double, - LONG_ bigint, - TEXT_ LONGBLOB NULL, - TEXT2_ LONGBLOB NULL, - SEQUENCE_COUNTER_ bigint, - TENANT_ID_ varchar(64), - OPERATION_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_IDENTITYLINK ( - ID_ varchar(64) not null, - TIMESTAMP_ timestamp(3) not null, - TYPE_ varchar(255), - USER_ID_ varchar(255), - GROUP_ID_ varchar(255), - TASK_ID_ varchar(64), - PROC_DEF_ID_ varchar(64), - OPERATION_TYPE_ varchar(64), - ASSIGNER_ID_ varchar(64), - PROC_DEF_KEY_ varchar(255), - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_COMMENT ( - ID_ varchar(64) not null, - TYPE_ varchar(255), - TIME_ datetime(3) not null, - USER_ID_ varchar(255), - TASK_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - ACTION_ varchar(255), - MESSAGE_ varchar(4000), - FULL_MSG_ LONGBLOB, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_ATTACHMENT ( - ID_ varchar(64) not null, - REV_ integer, - USER_ID_ varchar(255), - NAME_ varchar(255), - DESCRIPTION_ varchar(4000), - TYPE_ varchar(255), - TASK_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - URL_ varchar(4000), - CONTENT_ID_ varchar(64), - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_OP_LOG ( - ID_ varchar(64) not null, - DEPLOYMENT_ID_ varchar(64), - PROC_DEF_ID_ varchar(64), - PROC_DEF_KEY_ varchar(255), - PROC_INST_ID_ varchar(64), - EXECUTION_ID_ varchar(64), - CASE_DEF_ID_ varchar(64), - CASE_INST_ID_ varchar(64), - CASE_EXECUTION_ID_ varchar(64), - TASK_ID_ varchar(64), - JOB_ID_ varchar(64), - JOB_DEF_ID_ varchar(64), - BATCH_ID_ varchar(64), - USER_ID_ varchar(255), - TIMESTAMP_ timestamp(3) not null, - OPERATION_TYPE_ varchar(64), - OPERATION_ID_ varchar(64), - ENTITY_TYPE_ varchar(30), - PROPERTY_ varchar(64), - ORG_VALUE_ varchar(4000), - NEW_VALUE_ varchar(4000), - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_INCIDENT ( - ID_ varchar(64) not null, - PROC_DEF_KEY_ varchar(255), - PROC_DEF_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - EXECUTION_ID_ varchar(64), - CREATE_TIME_ timestamp(3) not null, - END_TIME_ timestamp(3) null, - INCIDENT_MSG_ varchar(4000), - INCIDENT_TYPE_ varchar(255) not null, - ACTIVITY_ID_ varchar(255), - CAUSE_INCIDENT_ID_ varchar(64), - ROOT_CAUSE_INCIDENT_ID_ varchar(64), - CONFIGURATION_ varchar(255), - INCIDENT_STATE_ integer, - TENANT_ID_ varchar(64), - JOB_DEF_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_JOB_LOG ( - ID_ varchar(64) not null, - TIMESTAMP_ timestamp(3) not null, - JOB_ID_ varchar(64) not null, - JOB_DUEDATE_ timestamp(3) NULL, - JOB_RETRIES_ integer, - JOB_PRIORITY_ bigint NOT NULL DEFAULT 0, - JOB_EXCEPTION_MSG_ varchar(4000), - JOB_EXCEPTION_STACK_ID_ varchar(64), - JOB_STATE_ integer, - JOB_DEF_ID_ varchar(64), - JOB_DEF_TYPE_ varchar(255), - JOB_DEF_CONFIGURATION_ varchar(255), - ACT_ID_ varchar(255), - EXECUTION_ID_ varchar(64), - PROCESS_INSTANCE_ID_ varchar(64), - PROCESS_DEF_ID_ varchar(64), - PROCESS_DEF_KEY_ varchar(255), - DEPLOYMENT_ID_ varchar(64), - SEQUENCE_COUNTER_ bigint, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_BATCH ( - ID_ varchar(64) not null, - TYPE_ varchar(255), - TOTAL_JOBS_ integer, - JOBS_PER_SEED_ integer, - INVOCATIONS_PER_JOB_ integer, - SEED_JOB_DEF_ID_ varchar(64), - MONITOR_JOB_DEF_ID_ varchar(64), - BATCH_JOB_DEF_ID_ varchar(64), - TENANT_ID_ varchar(64), - START_TIME_ datetime(3) not null, - END_TIME_ datetime(3), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_EXT_TASK_LOG ( - ID_ varchar(64) not null, - TIMESTAMP_ timestamp(3) not null, - EXT_TASK_ID_ varchar(64) not null, - RETRIES_ integer, - TOPIC_NAME_ varchar(255), - WORKER_ID_ varchar(255), - PRIORITY_ bigint NOT NULL DEFAULT 0, - ERROR_MSG_ varchar(4000), - ERROR_DETAILS_ID_ varchar(64), - ACT_ID_ varchar(255), - ACT_INST_ID_ varchar(64), - EXECUTION_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - PROC_DEF_ID_ varchar(64), - PROC_DEF_KEY_ varchar(255), - TENANT_ID_ varchar(64), - STATE_ integer, - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create index ACT_IDX_HI_PRO_INST_END on ACT_HI_PROCINST(END_TIME_); -create index ACT_IDX_HI_PRO_I_BUSKEY on ACT_HI_PROCINST(BUSINESS_KEY_); -create index ACT_IDX_HI_PRO_INST_TENANT_ID on ACT_HI_PROCINST(TENANT_ID_); -create index ACT_IDX_HI_PRO_INST_PROC_DEF_KEY on ACT_HI_PROCINST(PROC_DEF_KEY_); - -create index ACT_IDX_HI_ACT_INST_START on ACT_HI_ACTINST(START_TIME_); -create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_); -create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_); -create index ACT_IDX_HI_ACT_INST_COMP on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_, END_TIME_, ID_); -create index ACT_IDX_HI_ACT_INST_STATS on ACT_HI_ACTINST(PROC_DEF_ID_, ACT_ID_, END_TIME_, ACT_INST_STATE_); -create index ACT_IDX_HI_ACT_INST_TENANT_ID on ACT_HI_ACTINST(TENANT_ID_); -create index ACT_IDX_HI_ACT_INST_PROC_DEF_KEY on ACT_HI_ACTINST(PROC_DEF_KEY_); - -create index ACT_IDX_HI_TASK_INST_TENANT_ID on ACT_HI_TASKINST(TENANT_ID_); -create index ACT_IDX_HI_TASK_INST_PROC_DEF_KEY on ACT_HI_TASKINST(PROC_DEF_KEY_); - -create index ACT_IDX_HI_DETAIL_PROC_INST on ACT_HI_DETAIL(PROC_INST_ID_); -create index ACT_IDX_HI_DETAIL_ACT_INST on ACT_HI_DETAIL(ACT_INST_ID_); -create index ACT_IDX_HI_DETAIL_CASE_INST on ACT_HI_DETAIL(CASE_INST_ID_); -create index ACT_IDX_HI_DETAIL_CASE_EXEC on ACT_HI_DETAIL(CASE_EXECUTION_ID_); -create index ACT_IDX_HI_DETAIL_TIME on ACT_HI_DETAIL(TIME_); -create index ACT_IDX_HI_DETAIL_NAME on ACT_HI_DETAIL(NAME_); -create index ACT_IDX_HI_DETAIL_TASK_ID on ACT_HI_DETAIL(TASK_ID_); -create index ACT_IDX_HI_DETAIL_TENANT_ID on ACT_HI_DETAIL(TENANT_ID_); -create index ACT_IDX_HI_DETAIL_PROC_DEF_KEY on ACT_HI_DETAIL(PROC_DEF_KEY_); - -create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_); -create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_); -create index ACT_IDX_HI_IDENT_LNK_TENANT_ID on ACT_HI_IDENTITYLINK(TENANT_ID_); -create index ACT_IDX_HI_IDENT_LNK_PROC_DEF_KEY on ACT_HI_IDENTITYLINK(PROC_DEF_KEY_); - -create index ACT_IDX_HI_PROCVAR_PROC_INST on ACT_HI_VARINST(PROC_INST_ID_); -create index ACT_IDX_HI_PROCVAR_NAME_TYPE on ACT_HI_VARINST(NAME_, VAR_TYPE_); -create index ACT_IDX_HI_CASEVAR_CASE_INST on ACT_HI_VARINST(CASE_INST_ID_); -create index ACT_IDX_HI_VAR_INST_TENANT_ID on ACT_HI_VARINST(TENANT_ID_); -create index ACT_IDX_HI_VAR_INST_PROC_DEF_KEY on ACT_HI_VARINST(PROC_DEF_KEY_); - -create index ACT_IDX_HI_INCIDENT_TENANT_ID on ACT_HI_INCIDENT(TENANT_ID_); -create index ACT_IDX_HI_INCIDENT_PROC_DEF_KEY on ACT_HI_INCIDENT(PROC_DEF_KEY_); - -create index ACT_IDX_HI_JOB_LOG_PROCINST on ACT_HI_JOB_LOG(PROCESS_INSTANCE_ID_); -create index ACT_IDX_HI_JOB_LOG_PROCDEF on ACT_HI_JOB_LOG(PROCESS_DEF_ID_); -create index ACT_IDX_HI_JOB_LOG_TENANT_ID on ACT_HI_JOB_LOG(TENANT_ID_); -create index ACT_IDX_HI_JOB_LOG_JOB_DEF_ID on ACT_HI_JOB_LOG(JOB_DEF_ID_); -create index ACT_IDX_HI_JOB_LOG_PROC_DEF_KEY on ACT_HI_JOB_LOG(PROCESS_DEF_KEY_); - -create index ACT_HI_EXT_TASK_LOG_PROCINST on ACT_HI_EXT_TASK_LOG(PROC_INST_ID_); -create index ACT_HI_EXT_TASK_LOG_PROCDEF on ACT_HI_EXT_TASK_LOG(PROC_DEF_ID_); -create index ACT_HI_EXT_TASK_LOG_PROC_DEF_KEY on ACT_HI_EXT_TASK_LOG(PROC_DEF_KEY_); -create index ACT_HI_EXT_TASK_LOG_TENANT_ID on ACT_HI_EXT_TASK_LOG(TENANT_ID_); - -create index ACT_IDX_HI_OP_LOG_PROCINST on ACT_HI_OP_LOG(PROC_INST_ID_); -create index ACT_IDX_HI_OP_LOG_PROCDEF on ACT_HI_OP_LOG(PROC_DEF_ID_); -create table ACT_HI_CASEINST ( - ID_ varchar(64) not null, - CASE_INST_ID_ varchar(64) not null, - BUSINESS_KEY_ varchar(255), - CASE_DEF_ID_ varchar(64) not null, - CREATE_TIME_ datetime(3) not null, - CLOSE_TIME_ datetime(3), - DURATION_ bigint, - STATE_ integer, - CREATE_USER_ID_ varchar(255), - SUPER_CASE_INSTANCE_ID_ varchar(64), - SUPER_PROCESS_INSTANCE_ID_ varchar(64), - TENANT_ID_ varchar(64), - primary key (ID_), - unique (CASE_INST_ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_HI_CASEACTINST ( - ID_ varchar(64) not null, - PARENT_ACT_INST_ID_ varchar(64), - CASE_DEF_ID_ varchar(64) not null, - CASE_INST_ID_ varchar(64) not null, - CASE_ACT_ID_ varchar(255) not null, - TASK_ID_ varchar(64), - CALL_PROC_INST_ID_ varchar(64), - CALL_CASE_INST_ID_ varchar(64), - CASE_ACT_NAME_ varchar(255), - CASE_ACT_TYPE_ varchar(255), - CREATE_TIME_ datetime(3) not null, - END_TIME_ datetime(3), - DURATION_ bigint, - STATE_ integer, - REQUIRED_ boolean, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create index ACT_IDX_HI_CAS_I_CLOSE on ACT_HI_CASEINST(CLOSE_TIME_); -create index ACT_IDX_HI_CAS_I_BUSKEY on ACT_HI_CASEINST(BUSINESS_KEY_); -create index ACT_IDX_HI_CAS_I_TENANT_ID on ACT_HI_CASEINST(TENANT_ID_); -create index ACT_IDX_HI_CAS_A_I_CREATE on ACT_HI_CASEACTINST(CREATE_TIME_); -create index ACT_IDX_HI_CAS_A_I_END on ACT_HI_CASEACTINST(END_TIME_); -create index ACT_IDX_HI_CAS_A_I_COMP on ACT_HI_CASEACTINST(CASE_ACT_ID_, END_TIME_, ID_); -create index ACT_IDX_HI_CAS_A_I_CASEINST on ACT_HI_CASEACTINST(CASE_INST_ID_, CASE_ACT_ID_); -create index ACT_IDX_HI_CAS_A_I_TENANT_ID on ACT_HI_CASEACTINST(TENANT_ID_); --- create history decision instance table -- -create table ACT_HI_DECINST ( - ID_ varchar(64) NOT NULL, - DEC_DEF_ID_ varchar(64) NOT NULL, - DEC_DEF_KEY_ varchar(255) NOT NULL, - DEC_DEF_NAME_ varchar(255), - PROC_DEF_KEY_ varchar(255), - PROC_DEF_ID_ varchar(64), - PROC_INST_ID_ varchar(64), - CASE_DEF_KEY_ varchar(255), - CASE_DEF_ID_ varchar(64), - CASE_INST_ID_ varchar(64), - ACT_INST_ID_ varchar(64), - ACT_ID_ varchar(255), - EVAL_TIME_ datetime(3) not null, - COLLECT_VALUE_ double, - USER_ID_ varchar(255), - ROOT_DEC_INST_ID_ varchar(64), - DEC_REQ_ID_ varchar(64), - DEC_REQ_KEY_ varchar(255), - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - --- create history decision input table -- -create table ACT_HI_DEC_IN ( - ID_ varchar(64) NOT NULL, - DEC_INST_ID_ varchar(64) NOT NULL, - CLAUSE_ID_ varchar(64), - CLAUSE_NAME_ varchar(255), - VAR_TYPE_ varchar(100), - BYTEARRAY_ID_ varchar(64), - DOUBLE_ double, - LONG_ bigint, - TEXT_ LONGBLOB NULL, - TEXT2_ LONGBLOB NULL, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - --- create history decision output table -- -create table ACT_HI_DEC_OUT ( - ID_ varchar(64) NOT NULL, - DEC_INST_ID_ varchar(64) NOT NULL, - CLAUSE_ID_ varchar(64), - CLAUSE_NAME_ varchar(255), - RULE_ID_ varchar(64), - RULE_ORDER_ integer, - VAR_NAME_ varchar(255), - VAR_TYPE_ varchar(100), - BYTEARRAY_ID_ varchar(64), - DOUBLE_ double, - LONG_ bigint, - TEXT_ LONGBLOB NULL, - TEXT2_ LONGBLOB NULL, - TENANT_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - - -create index ACT_IDX_HI_DEC_INST_ID on ACT_HI_DECINST(DEC_DEF_ID_); -create index ACT_IDX_HI_DEC_INST_KEY on ACT_HI_DECINST(DEC_DEF_KEY_); -create index ACT_IDX_HI_DEC_INST_PI on ACT_HI_DECINST(PROC_INST_ID_); -create index ACT_IDX_HI_DEC_INST_CI on ACT_HI_DECINST(CASE_INST_ID_); -create index ACT_IDX_HI_DEC_INST_ACT on ACT_HI_DECINST(ACT_ID_); -create index ACT_IDX_HI_DEC_INST_ACT_INST on ACT_HI_DECINST(ACT_INST_ID_); -create index ACT_IDX_HI_DEC_INST_TIME on ACT_HI_DECINST(EVAL_TIME_); -create index ACT_IDX_HI_DEC_INST_TENANT_ID on ACT_HI_DECINST(TENANT_ID_); -create index ACT_IDX_HI_DEC_INST_ROOT_ID on ACT_HI_DECINST(ROOT_DEC_INST_ID_); -create index ACT_IDX_HI_DEC_INST_REQ_ID on ACT_HI_DECINST(DEC_REQ_ID_); -create index ACT_IDX_HI_DEC_INST_REQ_KEY on ACT_HI_DECINST(DEC_REQ_KEY_); - - -create index ACT_IDX_HI_DEC_IN_INST on ACT_HI_DEC_IN(DEC_INST_ID_); -create index ACT_IDX_HI_DEC_IN_CLAUSE on ACT_HI_DEC_IN(DEC_INST_ID_, CLAUSE_ID_); - -create index ACT_IDX_HI_DEC_OUT_INST on ACT_HI_DEC_OUT(DEC_INST_ID_); -create index ACT_IDX_HI_DEC_OUT_RULE on ACT_HI_DEC_OUT(RULE_ORDER_, CLAUSE_ID_); - - --- mariadb identity: - -create table ACT_ID_GROUP ( - ID_ varchar(64), - REV_ integer, - NAME_ varchar(255), - TYPE_ varchar(255), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_ID_MEMBERSHIP ( - USER_ID_ varchar(64), - GROUP_ID_ varchar(64), - primary key (USER_ID_, GROUP_ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_ID_USER ( - ID_ varchar(64), - REV_ integer, - FIRST_ varchar(255), - LAST_ varchar(255), - EMAIL_ varchar(255), - PWD_ varchar(255), - SALT_ varchar(255), - PICTURE_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_ID_INFO ( - ID_ varchar(64), - REV_ integer, - USER_ID_ varchar(64), - TYPE_ varchar(64), - KEY_ varchar(255), - VALUE_ varchar(255), - PASSWORD_ LONGBLOB, - PARENT_ID_ varchar(255), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_ID_TENANT ( - ID_ varchar(64), - REV_ integer, - NAME_ varchar(255), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -create table ACT_ID_TENANT_MEMBER ( - ID_ varchar(64) not null, - TENANT_ID_ varchar(64) not null, - USER_ID_ varchar(64), - GROUP_ID_ varchar(64), - primary key (ID_) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; - -alter table ACT_ID_MEMBERSHIP - add constraint ACT_FK_MEMB_GROUP - foreign key (GROUP_ID_) - references ACT_ID_GROUP (ID_); - -alter table ACT_ID_MEMBERSHIP - add constraint ACT_FK_MEMB_USER - foreign key (USER_ID_) - references ACT_ID_USER (ID_); - -alter table ACT_ID_TENANT_MEMBER - add constraint ACT_UNIQ_TENANT_MEMB_USER - unique (TENANT_ID_, USER_ID_); - -alter table ACT_ID_TENANT_MEMBER - add constraint ACT_UNIQ_TENANT_MEMB_GROUP - unique (TENANT_ID_, GROUP_ID_); - -alter table ACT_ID_TENANT_MEMBER - add constraint ACT_FK_TENANT_MEMB - foreign key (TENANT_ID_) - references ACT_ID_TENANT (ID_); - -alter table ACT_ID_TENANT_MEMBER - add constraint ACT_FK_TENANT_MEMB_USER - foreign key (USER_ID_) - references ACT_ID_USER (ID_); - -alter table ACT_ID_TENANT_MEMBER - add constraint ACT_FK_TENANT_MEMB_GROUP - foreign key (GROUP_ID_) - references ACT_ID_GROUP (ID_); - diff --git a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/mysql_create_camunda_admin.sql b/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/mysql_create_camunda_admin.sql deleted file mode 100644 index 40fda9a76d..0000000000 --- a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/mysql_create_camunda_admin.sql +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright © 2017 AT&T, Amdocs, Bell Canada -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -USE camundabpmn; - -INSERT INTO `act_id_group` (`ID_`, `REV_`, `NAME_`, `TYPE_`) VALUES ('camunda-admin',1,'camunda BPM Administrators','SYSTEM'); - -INSERT INTO `act_id_user` (`ID_`, `REV_`, `FIRST_`, `LAST_`, `EMAIL_`, `PWD_`, `SALT_`, `PICTURE_ID_`) VALUES ('admin',1,'admin','user','camundaadmin@onap.org','{SHA-512}n5jUw7fvXM9sZBcrIkLiAOCqiPHutaqEkbg6IQVQdylVP1im8SczBJf4f2xL7cvWwIAZjkcSSQzgFTsdaJSEiA==','ftTn4gNgMcq07wdSD0lEJQ==',NULL); - -INSERT INTO `act_id_membership` (`USER_ID_`, `GROUP_ID_`) VALUES ('admin','camunda-admin'); - -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49b0e028-a3c6-11e7-b0ec-0242ac120003',1,1,NULL,'admin',1,'admin',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49b525e9-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,2,'camunda-admin',2); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49b8814a-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,0,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49baa42b-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,1,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49bd8a5c-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,2,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49bfd44d-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,3,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49c1f72e-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,4,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49c41a0f-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,5,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49c77570-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,6,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49ca5ba1-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,7,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49cca592-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,8,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49ceef83-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,9,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49d11264-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,10,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49d38365-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,11,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49d5a646-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,12,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49d83e57-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,13,'*',2147483647); -INSERT INTO `act_ru_authorization` (`ID_`, `REV_`, `TYPE_`, `GROUP_ID_`, `USER_ID_`, `RESOURCE_TYPE_`, `RESOURCE_ID_`, `PERMS_`) VALUES ('49da3a28-a3c6-11e7-b0ec-0242ac120003',1,1,'camunda-admin',NULL,14,'*',2147483647); diff --git a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/MySQL-Catalog-schema.sql b/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/MySQL-Catalog-schema.sql deleted file mode 100644 index d05bc49e08..0000000000 --- a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/MySQL-Catalog-schema.sql +++ /dev/null @@ -1,477 +0,0 @@ -/* Copyright © 2017 AT&T, Amdocs, Bell Canada -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - - - alter table HEAT_TEMPLATE_PARAMS - drop - foreign key FK_p3ol1xcvp831glqohrlu6o07o; - - alter table MODEL_RECIPE - drop - foreign key FK_c23r0puyqug6n44jg39dutm1c; - - alter table SERVICE - drop - foreign key FK_l3qy594u2xr1tfpmma3uigsna; - - alter table SERVICE_RECIPE - drop - foreign key FK_i3r1b8j6e7dg9hkp49evnnm5y; - - alter table SERVICE_TO_RESOURCE_CUSTOMIZATIONS - drop - foreign key FK_kiddaay6cfe0aob1f1jaio1bb; - - alter table VF_MODULE - drop - foreign key FK_12jptc9it7gs3pru08skobxxc; - - alter table VNF_RESOURCE_CUSTOMIZATION - drop - foreign key FK_iff1ayhb1hrp5jhea3vvikuni; - - drop table if exists ALLOTTED_RESOURCE; - - drop table if exists ALLOTTED_RESOURCE_CUSTOMIZATION; - - drop table if exists HEAT_ENVIRONMENT; - - drop table if exists HEAT_FILES; - - drop table if exists HEAT_NESTED_TEMPLATE; - - drop table if exists HEAT_TEMPLATE; - - drop table if exists HEAT_TEMPLATE_PARAMS; - - drop table if exists MODEL; - - drop table if exists MODEL_RECIPE; - - drop table if exists NETWORK_RECIPE; - - drop table if exists NETWORK_RESOURCE; - - drop table if exists NETWORK_RESOURCE_CUSTOMIZATION; - - drop table if exists SERVICE; - - drop table if exists SERVICE_RECIPE; - - drop table if exists SERVICE_TO_ALLOTTED_RESOURCES; - - drop table if exists SERVICE_TO_NETWORKS; - - drop table if exists SERVICE_TO_RESOURCE_CUSTOMIZATIONS; - - drop table if exists TEMP_NETWORK_HEAT_TEMPLATE_LOOKUP; - - drop table if exists TOSCA_CSAR; - - drop table if exists VF_MODULE; - - drop table if exists VF_MODULE_CUSTOMIZATION; - - drop table if exists VF_MODULE_TO_HEAT_FILES; - - drop table if exists VNF_COMPONENTS; - - drop table if exists VNF_COMPONENTS_RECIPE; - - drop table if exists VNF_RECIPE; - - drop table if exists VNF_RESOURCE; - - drop table if exists VNF_RESOURCE_CUSTOMIZATION; - - drop table if exists VNF_RES_CUSTOM_TO_VF_MODULE_CUSTOM; - - create table ALLOTTED_RESOURCE ( - MODEL_UUID varchar(255) not null, - MODEL_INVARIANT_UUID varchar(255), - MODEL_VERSION varchar(255), - MODEL_NAME varchar(255), - TOSCA_NODE_TYPE varchar(255), - SUBCATEGORY varchar(255), - DESCRIPTION varchar(255), - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (MODEL_UUID) - ); - - create table ALLOTTED_RESOURCE_CUSTOMIZATION ( - MODEL_CUSTOMIZATION_UUID varchar(200) not null, - MODEL_INSTANCE_NAME varchar(255), - AR_MODEL_UUID varchar(255), - PROVIDING_SERVICE_MODEL_INVARIANT_UUID varchar(255), - TARGET_NETWORK_ROLE varchar(255), - NF_FUNCTION varchar(255), - NF_TYPE varchar(255), - NF_ROLE varchar(255), - NF_NAMING_CODE varchar(255), - MIN_INSTANCES integer, - MAX_INSTANCES integer, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (MODEL_CUSTOMIZATION_UUID) - ); - - create table HEAT_ENVIRONMENT ( - ARTIFACT_UUID varchar(200) not null, - NAME varchar(100) not null, - VERSION varchar(20) not null, - DESCRIPTION varchar(1200), - BODY longtext not null, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - ARTIFACT_CHECKSUM varchar(200) default 'MANUAL RECORD', - primary key (ARTIFACT_UUID) - ); - - create table HEAT_FILES ( - ARTIFACT_UUID varchar(255) not null, - DESCRIPTION varchar(255), - NAME varchar(255), - VERSION varchar(255), - BODY longtext, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - ARTIFACT_CHECKSUM varchar(255), - primary key (ARTIFACT_UUID) - ); - - create table HEAT_NESTED_TEMPLATE ( - PARENT_HEAT_TEMPLATE_UUID varchar(200) not null, - CHILD_HEAT_TEMPLATE_UUID varchar(200) not null, - PROVIDER_RESOURCE_FILE varchar(100), - primary key (PARENT_HEAT_TEMPLATE_UUID, CHILD_HEAT_TEMPLATE_UUID) - ); - - create table HEAT_TEMPLATE ( - ARTIFACT_UUID varchar(200) not null, - NAME varchar(200) not null, - VERSION varchar(20) not null, - BODY longtext not null, - TIMEOUT_MINUTES integer, - DESCRIPTION varchar(1200), - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - ARTIFACT_CHECKSUM varchar(200) default 'MANUAL RECORD' not null, - primary key (ARTIFACT_UUID) - ); - - create table HEAT_TEMPLATE_PARAMS ( - HEAT_TEMPLATE_ARTIFACT_UUID varchar(255) not null, - PARAM_NAME varchar(255) not null, - IS_REQUIRED bit not null, - PARAM_TYPE varchar(20), - PARAM_ALIAS varchar(45), - primary key (HEAT_TEMPLATE_ARTIFACT_UUID, PARAM_NAME) - ); - - create table MODEL ( - id integer not null auto_increment, - MODEL_TYPE varchar(20) not null, - MODEL_VERSION_ID varchar(40) not null, - MODEL_INVARIANT_ID varchar(40), - MODEL_NAME varchar(40) not null, - MODEL_VERSION varchar(20), - MODEL_CUSTOMIZATION_ID varchar(40), - MODEL_CUSTOMIZATION_NAME varchar(40), - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (id) - ); - - create table MODEL_RECIPE ( - id integer not null auto_increment, - MODEL_ID integer not null, - ACTION varchar(20) not null, - SCHEMA_VERSION varchar(20), - DESCRIPTION varchar(1200), - ORCHESTRATION_URI varchar(256) not null, - MODEL_PARAM_XSD varchar(2048), - RECIPE_TIMEOUT integer, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (id) - ); - - create table NETWORK_RECIPE ( - id integer not null auto_increment, - MODEL_NAME varchar(20) not null, - ACTION varchar(20) not null, - VERSION_STR varchar(20) not null, - SERVICE_TYPE varchar(45), - DESCRIPTION varchar(1200), - ORCHESTRATION_URI varchar(256) not null, - NETWORK_PARAM_XSD varchar(2048), - RECIPE_TIMEOUT integer, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (id) - ); - - create table NETWORK_RESOURCE ( - MODEL_UUID varchar(200) not null, - MODEL_NAME varchar(200) not null, - MODEL_INVARIANT_UUID varchar(200), - MODEL_VERSION varchar(20), - TOSCA_NODE_TYPE varchar(200), - NEUTRON_NETWORK_TYPE varchar(20), - DESCRIPTION varchar(1200), - ORCHESTRATION_MODE varchar(20), - HEAT_TEMPLATE_ARTIFACT_UUID varchar(200) not null, - AIC_VERSION_MIN varchar(20) default 2.5 not null, - AIC_VERSION_MAX varchar(20) default 2.5, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (MODEL_UUID) - ); - - create table NETWORK_RESOURCE_CUSTOMIZATION ( - MODEL_CUSTOMIZATION_UUID varchar(200) not null, - NETWORK_RESOURCE_MODEL_UUID varchar(200) not null, - MODEL_INSTANCE_NAME varchar(255), - NETWORK_TECHNOLOGY varchar(255), - NETWORK_TYPE varchar(255), - NETWORK_SCOPE varchar(255), - NETWORK_ROLE varchar(255), - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (MODEL_CUSTOMIZATION_UUID) - ); - - create table SERVICE ( - MODEL_UUID varchar(200) not null, - MODEL_NAME varchar(200) not null, - MODEL_VERSION varchar(20) not null, - DESCRIPTION varchar(1200), - TOSCA_CSAR_ARTIFACT_UUID varchar(200), - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - MODEL_INVARIANT_UUID varchar(200) default 'MANUAL_RECORD' not null, - SERVICE_TYPE varchar(20), - SERVICE_ROLE varchar(20), - primary key (MODEL_UUID) - ); - - create table SERVICE_RECIPE ( - id integer not null auto_increment, - SERVICE_MODEL_UUID varchar(200) not null, - ACTION varchar(40) not null, - ORCHESTRATION_URI varchar(256) not null, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - VERSION_STR varchar(20), - DESCRIPTION varchar(1200), - SERVICE_PARAM_XSD varchar(2048), - RECIPE_TIMEOUT integer, - SERVICE_TIMEOUT_INTERIM integer, - primary key (id) - ); - - create table SERVICE_TO_ALLOTTED_RESOURCES ( - SERVICE_MODEL_UUID varchar(200) not null, - AR_MODEL_CUSTOMIZATION_UUID varchar(200) not null, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (SERVICE_MODEL_UUID, AR_MODEL_CUSTOMIZATION_UUID) - ); - - create table SERVICE_TO_NETWORKS ( - SERVICE_MODEL_UUID varchar(200) not null, - NETWORK_MODEL_CUSTOMIZATION_UUID varchar(200) not null, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (SERVICE_MODEL_UUID, NETWORK_MODEL_CUSTOMIZATION_UUID) - ); - - create table SERVICE_TO_RESOURCE_CUSTOMIZATIONS ( - MODEL_TYPE varchar(20) not null, - RESOURCE_MODEL_CUSTOMIZATION_UUID varchar(200) not null, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - SERVICE_MODEL_UUID varchar(200) not null, - primary key (MODEL_TYPE, RESOURCE_MODEL_CUSTOMIZATION_UUID) - ); - - create table TEMP_NETWORK_HEAT_TEMPLATE_LOOKUP ( - NETWORK_RESOURCE_MODEL_NAME varchar(200) not null, - HEAT_TEMPLATE_ARTIFACT_UUID varchar(200) not null, - AIC_VERSION_MIN varchar(20) not null, - AIC_VERSION_MAX varchar(20), - primary key (NETWORK_RESOURCE_MODEL_NAME) - ); - - create table TOSCA_CSAR ( - ARTIFACT_UUID varchar(200) not null, - NAME varchar(200) not null, - VERSION varchar(20) not null, - ARTIFACT_CHECKSUM varchar(200) not null, - URL varchar(200) not null, - DESCRIPTION varchar(1200), - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (ARTIFACT_UUID) - ); - - create table VF_MODULE ( - MODEL_UUID varchar(200) not null, - VNF_RESOURCE_MODEL_UUID varchar(200), - MODEL_INVARIANT_UUID varchar(200), - MODEL_VERSION varchar(20) not null, - MODEL_NAME varchar(200) not null, - DESCRIPTION varchar(1200), - IS_BASE integer not null, - HEAT_TEMPLATE_ARTIFACT_UUID varchar(200) not null, - VOL_HEAT_TEMPLATE_ARTIFACT_UUID varchar(200), - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (MODEL_UUID) - ); - - create table VF_MODULE_CUSTOMIZATION ( - MODEL_CUSTOMIZATION_UUID varchar(200) not null, - VF_MODULE_MODEL_UUID varchar(200) not null, - VOL_ENVIRONMENT_ARTIFACT_UUID varchar(200), - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - HEAT_ENVIRONMENT_ARTIFACT_UUID varchar(200), - MIN_INSTANCES integer, - MAX_INSTANCES integer, - INITIAL_COUNT integer, - AVAILABILITY_ZONE_COUNT integer, - LABEL varchar(200), - primary key (MODEL_CUSTOMIZATION_UUID) - ); - - create table VF_MODULE_TO_HEAT_FILES ( - VF_MODULE_MODEL_UUID varchar(200) not null, - HEAT_FILES_ARTIFACT_UUID varchar(200) not null, - primary key (VF_MODULE_MODEL_UUID, HEAT_FILES_ARTIFACT_UUID) - ); - - create table VNF_COMPONENTS ( - VNF_ID integer not null, - COMPONENT_TYPE varchar(20) not null, - HEAT_TEMPLATE_ID integer, - HEAT_ENVIRONMENT_ID integer, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (VNF_ID, COMPONENT_TYPE) - ); - - create table VNF_COMPONENTS_RECIPE ( - id integer not null auto_increment, - VNF_TYPE varchar(200), - VF_MODULE_MODEL_UUID varchar(100), - VNF_COMPONENT_TYPE varchar(45) not null, - ACTION varchar(20) not null, - SERVICE_TYPE varchar(45), - VERSION varchar(20), - DESCRIPTION varchar(1200), - ORCHESTRATION_URI varchar(256) not null, - VNF_COMPONENT_PARAM_XSD varchar(2048), - RECIPE_TIMEOUT integer, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (id) - ); - - create table VNF_RECIPE ( - id integer not null auto_increment, - VF_MODULE_ID varchar(100), - ACTION varchar(20) not null, - VERSION_STR varchar(20) not null, - VNF_TYPE varchar(200), - SERVICE_TYPE varchar(45) default null, - DESCRIPTION varchar(1200), - ORCHESTRATION_URI varchar(256) not null, - VNF_PARAM_XSD varchar(2048), - RECIPE_TIMEOUT integer, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (id) - ); - - create table VNF_RESOURCE ( - MODEL_UUID varchar(200) not null, - MODEL_INVARIANT_UUID varchar(200), - MODEL_VERSION varchar(20) not null, - MODEL_NAME varchar(200), - TOSCA_NODE_TYPE varchar(200), - DESCRIPTION varchar(1200), - ORCHESTRATION_MODE varchar(20) not null, - AIC_VERSION_MIN varchar(20), - AIC_VERSION_MAX varchar(20), - HEAT_TEMPLATE_ARTIFACT_UUID varchar(200), - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (MODEL_UUID) - ); - - create table VNF_RESOURCE_CUSTOMIZATION ( - MODEL_CUSTOMIZATION_UUID varchar(200) not null, - MODEL_INSTANCE_NAME varchar(200) not null, - MIN_INSTANCES integer, - MAX_INSTANCES integer, - AVAILABILITY_ZONE_MAX_COUNT integer, - NF_FUNCTION varchar(200), - NF_TYPE varchar(200), - NF_ROLE varchar(200), - NF_NAMING_CODE varchar(200), - VNF_RESOURCE_MODEL_UUID varchar(200) not null, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (MODEL_CUSTOMIZATION_UUID) - ); - - create table VNF_RES_CUSTOM_TO_VF_MODULE_CUSTOM ( - VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID varchar(200) not null, - VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID varchar(200) not null, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID, VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID) - ); - - alter table MODEL - add constraint UK_rra00f1rk6eyy7g00k9raxh2v unique (MODEL_TYPE, MODEL_VERSION_ID); - - alter table MODEL_RECIPE - add constraint UK_b4g8j9wtqrkxfycyi3ursk7gb unique (MODEL_ID, ACTION); - - alter table NETWORK_RECIPE - add constraint UK_pbsa8i44m8p10f9529jdgfuk9 unique (MODEL_NAME, ACTION, VERSION_STR); - - alter table SERVICE_RECIPE - add constraint UK_2lr377dpqnvl5aqlp5dtj2fcp unique (SERVICE_MODEL_UUID, ACTION); - - alter table VNF_COMPONENTS_RECIPE - add constraint UK_g3je95aaxxiuest25f0qoy2u8 unique (VNF_TYPE, VF_MODULE_MODEL_UUID, VNF_COMPONENT_TYPE, ACTION, SERVICE_TYPE, VERSION); - - alter table VNF_RECIPE - add constraint UK_f3tvqau498vrifq3cr8qnigkr unique (VF_MODULE_ID, ACTION, VERSION_STR); - - alter table HEAT_TEMPLATE_PARAMS - add constraint FK_p3ol1xcvp831glqohrlu6o07o - foreign key (HEAT_TEMPLATE_ARTIFACT_UUID) - references HEAT_TEMPLATE (ARTIFACT_UUID); - - alter table MODEL_RECIPE - add constraint FK_c23r0puyqug6n44jg39dutm1c - foreign key (MODEL_ID) - references MODEL (id); - - alter table SERVICE - add constraint FK_l3qy594u2xr1tfpmma3uigsna - foreign key (TOSCA_CSAR_ARTIFACT_UUID) - references TOSCA_CSAR (ARTIFACT_UUID); - - alter table SERVICE_RECIPE - add constraint FK_i3r1b8j6e7dg9hkp49evnnm5y - foreign key (SERVICE_MODEL_UUID) - references SERVICE (MODEL_UUID); - - alter table SERVICE_TO_RESOURCE_CUSTOMIZATIONS - add constraint FK_kiddaay6cfe0aob1f1jaio1bb - foreign key (SERVICE_MODEL_UUID) - references SERVICE (MODEL_UUID); - - alter table VF_MODULE - add constraint FK_12jptc9it7gs3pru08skobxxc - foreign key (VNF_RESOURCE_MODEL_UUID) - references VNF_RESOURCE (MODEL_UUID); - - alter table VNF_RESOURCE_CUSTOMIZATION - add constraint FK_iff1ayhb1hrp5jhea3vvikuni - foreign key (VNF_RESOURCE_MODEL_UUID) - references VNF_RESOURCE (MODEL_UUID); diff --git a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/MySQL-Requests-schema.sql b/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/MySQL-Requests-schema.sql deleted file mode 100644 index eff696d65b..0000000000 --- a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/MySQL-Requests-schema.sql +++ /dev/null @@ -1,99 +0,0 @@ -/* Copyright © 2017 AT&T, Amdocs, Bell Canada -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - - - drop table if exists INFRA_ACTIVE_REQUESTS; - - drop table if exists SITE_STATUS; - - create table INFRA_ACTIVE_REQUESTS ( - REQUEST_ID varchar(45) not null, - CLIENT_REQUEST_ID varchar(45), - ACTION varchar(45) not null, - REQUEST_STATUS varchar(20), - STATUS_MESSAGE varchar(2000), - PROGRESS bigint, - START_TIME datetime, - END_TIME datetime, - SOURCE varchar(45), - VNF_ID varchar(45), - VNF_NAME varchar(80), - VNF_TYPE varchar(200), - SERVICE_TYPE varchar(45), - AIC_NODE_CLLI varchar(11), - TENANT_ID varchar(45), - PROV_STATUS varchar(20), - VNF_PARAMS longtext, - VNF_OUTPUTS longtext, - REQUEST_BODY longtext, - RESPONSE_BODY longtext, - LAST_MODIFIED_BY varchar(50), - MODIFY_TIME datetime, - REQUEST_TYPE varchar(20), - VOLUME_GROUP_ID varchar(45), - VOLUME_GROUP_NAME varchar(45), - VF_MODULE_ID varchar(45), - VF_MODULE_NAME varchar(200), - VF_MODULE_MODEL_NAME varchar(200), - AAI_SERVICE_ID varchar(50), - AIC_CLOUD_REGION varchar(11), - CALLBACK_URL varchar(200), - CORRELATOR varchar(80), - SERVICE_INSTANCE_ID varchar(45), - SERVICE_INSTANCE_NAME varchar(80), - REQUEST_SCOPE varchar(20), - REQUEST_ACTION varchar(45) not null, - NETWORK_ID varchar(45), - NETWORK_NAME varchar(80), - NETWORK_TYPE varchar(80), - REQUESTOR_ID varchar(80), - primary key (REQUEST_ID) - ); - - create table SITE_STATUS ( - SITE_NAME varchar(255) not null, - STATUS bit, - CREATION_TIMESTAMP datetime default CURRENT_TIMESTAMP, - primary key (SITE_NAME) - ); - create table OPERATION_STATUS ( - SERVICE_ID varchar(255) not null, - OPERATION_ID varchar(255) not null, - SERVICE_NAME varchar(255), - OPERATION_TYPE varchar(255), - USER_ID varchar(255), - RESULT varchar(255), - OPERATION_CONTENT varchar(255), - PROGRESS varchar(255), - REASON varchar(255), - OPERATE_AT datetime, - FINISHED_AT datetime, - primary key (SERVICE_ID,OPERATION_ID) - ); - create table RESOURCE_OPERATION_STATUS ( - SERVICE_ID varchar(255) not null, - OPERATION_ID varchar(255) not null, - RESOURCE_TEMPLATE_UUID varchar(255) not null, - OPER_TYPE varchar(255), - RESOURCE_INSTANCE_ID varchar(255), - JOB_ID varchar(255), - STATUS varchar(255), - PROGRESS varchar(255), - ERROR_CODE varchar(255) , - STATUS_DESCRIPOTION varchar(255) , - primary key (SERVICE_ID,OPERATION_ID,RESOURCE_TEMPLATE_UUID) - ); - alter table INFRA_ACTIVE_REQUESTS - add constraint UK_bhu6w8p7wvur4pin0gjw2d5ak unique (CLIENT_REQUEST_ID); diff --git a/kubernetes/mso/resources/config/mso/aai.crt b/kubernetes/mso/resources/config/mso/aai.crt deleted file mode 100755 index d51c05606e..0000000000 --- a/kubernetes/mso/resources/config/mso/aai.crt +++ /dev/null @@ -1,66 +0,0 @@ -Bag Attributes - friendlyName: aaiopenecomp - localKeyID: 54 69 6D 65 20 31 35 31 30 30 33 33 31 37 31 38 39 32 -subject=/C=US/ST=NJ/L=Bedminister/O=ONAP/CN=aai.api.simpledemo.openecomp.org/emailAddress=aai-host@api.simpledemo.openecomp.org -issuer=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Server CA X1/emailAddress=simpledemo@openecomp.org ------BEGIN CERTIFICATE----- -MIIDyzCCArMCCQDrA8zzZKXznDANBgkqhkiG9w0BAQsFADCBrTELMAkGA1UEBhMC -VVMxCzAJBgNVBAgMAk5KMRMwEQYDVQQHDApCZWRtaW5zdGVyMRIwEAYDVQQKDAlP -cGVuRUNPTVAxEzARBgNVBAsMCnNpbXBsZWRlbW8xKjAoBgNVBAMMIU9wZW5FQ09N -UCBzaW1wbGVkZW1vIFNlcnZlciBDQSBYMTEnMCUGCSqGSIb3DQEJARYYc2ltcGxl -ZGVtb0BvcGVuZWNvbXAub3JnMB4XDTE3MTEwMzIzNDUzNVoXDTE4MTIwNjIzNDUz -NVowgaAxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOSjEUMBIGA1UEBwwLQmVkbWlu -aXN0ZXIxDTALBgNVBAoMBE9OQVAxKTAnBgNVBAMMIGFhaS5hcGkuc2ltcGxlZGVt -by5vcGVuZWNvbXAub3JnMTQwMgYJKoZIhvcNAQkBFiVhYWktaG9zdEBhcGkuc2lt -cGxlZGVtby5vcGVuZWNvbXAub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEA6gFktbGZVt4o78kU6oeCdqx04yPNTd1qRmJ06CD87fgrIDCTXVC+PE7R -hHd1V71aNnoElBzn+mwetn4qG4T9IqAJvFIXxrzLpS7WlKBxStFhe4GNXl+RDqWc -UM+47+s32TwZ3czQrhMVR9VNENUHo2d6XylGaUDcVgrMYWbFYWfmIJ4tO1latW9n -h+perB0nNBxNDK9nYtjLHQk6ukTmONSnldvCgu/TFX5C34qB49cI0LmCf5Lwk9tv -8dmTZ6Um8A0EbQen+uPaaHeEXm/EtFy0FSVzoKmxuQS0g4JNhfnfNCHVDO7zGE+N -pCb9VfUI2fXIZvjNBAemKN/b2i5d6QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBh -93eaeAw0aA4ukAPpuWIODxxAnZlFfDH4uzwnv6smDJzO1biRwQ5BBZfL8qSVozrp -aDKeIPWP7fZvjl3mGfCp8mLkI6WkfXVcZy5IlJGDTnW+G8Cpohq910W/Ibp1J9zx -Ki4IdgKx7FbSYLpgwH2g2EPshHXQX2qFdxYvnEH0PzJjYBKeyyHV3N2kNr6+kM3Q -HpXXIiLNbNcqLT+9zOmuJszN8ILLV56vu8Clzwxld+ru0tiO2OJk2eT+mtw2PI1/ -jcYqEEdOIZycrQiytxXgvte7A9VFQP/1Tl22BBYrAW2BhyW67kopATeiSunK1FmO -DLcT7mR+59F964RV9BJR ------END CERTIFICATE----- -Bag Attributes - friendlyName: root - 2.16.840.1.113894.746875.1.1: <Unsupported tag 6> -subject=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Server CA X1/emailAddress=simpledemo@openecomp.org -issuer=/C=US/ST=NJ/L=Bedminster/O=OpenECOMP/OU=simpledemo/CN=OpenECOMP simpledemo Root Certification Authority/emailAddress=simpledemo@openecomp.org ------BEGIN CERTIFICATE----- -MIIFpTCCA42gAwIBAgIJAJqx8dKnCZZoMA0GCSqGSIb3DQEBCwUAMIG9MQswCQYD -VQQGEwJVUzELMAkGA1UECAwCTkoxEzARBgNVBAcMCkJlZG1pbnN0ZXIxEjAQBgNV -BAoMCU9wZW5FQ09NUDETMBEGA1UECwwKc2ltcGxlZGVtbzE6MDgGA1UEAwwxT3Bl -bkVDT01QIHNpbXBsZWRlbW8gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEn -MCUGCSqGSIb3DQEJARYYc2ltcGxlZGVtb0BvcGVuZWNvbXAub3JnMB4XDTE2MTEy -ODIxMTQyNloXDTIxMTEyNzIxMTQyNlowga0xCzAJBgNVBAYTAlVTMQswCQYDVQQI -DAJOSjETMBEGA1UEBwwKQmVkbWluc3RlcjESMBAGA1UECgwJT3BlbkVDT01QMRMw -EQYDVQQLDApzaW1wbGVkZW1vMSowKAYDVQQDDCFPcGVuRUNPTVAgc2ltcGxlZGVt -byBTZXJ2ZXIgQ0EgWDExJzAlBgkqhkiG9w0BCQEWGHNpbXBsZWRlbW9Ab3BlbmVj -b21wLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALr4rivKQuRk -YNf5Ig40e1nqj6s6LB1vgMOYbKfRziOFpPcUpsHPOhusHowiUsrU1vdFSzPz6Ej7 -PjlmNSg2Qka8YCn9kd6QgM7U0KcPJvIucBp+qjifH3EvP0jgDPhDeVRYxzV454dv -5kQ9uCpswJP7YAnX51dkWeH8nwPUoagt31bOl9LXENSrgxEThxdLYMJnQJWk2CmV -otXM4tT1dxyJxFUrZ6uJCEAYw5VtlplqihHf8lHy+sWQavtsLz/4dc+sGeXSTfoI -voKvoh3uZ5gEhGV8yfJxk1veX5y5/AxP80vQ+smWYjTnQL5QQ57y4bciez4XVBmQ -SWimWtOi4e8CAwEAAaOBtTCBsjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE -AwIBhjAdBgNVHQ4EFgQUTqdsYgGNGubdJHq9tsaJhM9HE5wwcAYDVR0gBGkwZzBl -BgRVHSAAMF0wWwYIKwYBBQUHAgIwTxpNSWYgeW91IHRydXN0IHRoaXMgY2VydCB0 -aGVuIHdlIGhhdmUgYSBicmlkZ2UgdGhhdCB5b3UgbWlnaHQgYmUgaW50ZXJlc3Rl -ZCBpbi4wDQYJKoZIhvcNAQELBQADggIBAKNNlRqFuE/JgV1BHyYK0xoSXH4aZP/7 -IoHtDVcSaZAOOuFOUrwVMUbzRBebbb6RpFwt/X+NLFUGysd+XNLF7W7lzxKtmFNX -n4OpNkBe0y5O7yurus8rERHzu3jiOSgVo+WzDlGpYSRnG3hI2qPWqD+Puzx/WwI8 -XUTuzEQQ3gUSyVFfXHpay3VpYmLZiLJ9WKY5SDw7Ie6Sxrju4Qm1HwnFY8wHZGcs -2KMQzorJ1ZNQf523yUTghbT0rKaSFaD8zugPtI2ONfFG/QgrkQXo78opzPsHnHwa -SxGSiAgeLbwAUCvPNl27zr6k6+7TcNjV0VUivAs0OG3VEAdgi7UWYB+30KfWwHwE -zGmvd4IAGqIqlqLcSVArN5z8JK1B5nfjQn5UrclU1vK+dnuiKE2X4rKuBTRYRFR/ -km+mj4koYFPKFHndmJl1uv2OCJK9l5CSIuKWeI1qv8BASKqgNdoT/SKBXqxgYlCb -o+j4IDjxrxChRO+e5vl9lA7INfRrbljCkUjfLRa+v2q9tWQ3+EQUwwnSrSfihh2T -j0Tksr6b8dDsvMlCdOKG1B+JPcEXORSFKNXVTEfjqpJG8s16kFAocWt3S6xO0k1t -qbQp+3tWQgW2TGnX0rMZzB6NGRNfWhlYmq2zHgXkiCIZ26Ztgt/LNbwEvN3+VlLo -z/Rd+SKtlrfb ------END CERTIFICATE----- diff --git a/kubernetes/mso/resources/config/mso/encryption.key b/kubernetes/mso/resources/config/mso/encryption.key deleted file mode 100644 index eb52241e7f..0000000000 --- a/kubernetes/mso/resources/config/mso/encryption.key +++ /dev/null @@ -1 +0,0 @@ -aa3871669d893c7fb8abbcda31b88b4f diff --git a/kubernetes/mso/resources/config/mso/jboss/standalone-full-ha-mso.xml b/kubernetes/mso/resources/config/mso/jboss/standalone-full-ha-mso.xml deleted file mode 100644 index 86edeb386a..0000000000 --- a/kubernetes/mso/resources/config/mso/jboss/standalone-full-ha-mso.xml +++ /dev/null @@ -1,609 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> - -<server xmlns="urn:jboss:domain:4.2"> - - <extensions> - <extension module="org.jboss.as.clustering.infinispan"/> - <extension module="org.jboss.as.clustering.jgroups"/> - <extension module="org.jboss.as.connector"/> - <extension module="org.jboss.as.deployment-scanner"/> - <extension module="org.jboss.as.ee"/> - <extension module="org.jboss.as.ejb3"/> - <extension module="org.jboss.as.jaxrs"/> - <extension module="org.jboss.as.jdr"/> - <extension module="org.jboss.as.jmx"/> - <extension module="org.jboss.as.jpa"/> - <extension module="org.jboss.as.jsf"/> - <extension module="org.jboss.as.jsr77"/> - <extension module="org.jboss.as.logging"/> - <extension module="org.jboss.as.mail"/> - <extension module="org.jboss.as.modcluster"/> - <extension module="org.jboss.as.naming"/> - <extension module="org.jboss.as.pojo"/> - <extension module="org.jboss.as.remoting"/> - <extension module="org.jboss.as.sar"/> - <extension module="org.jboss.as.security"/> - <extension module="org.jboss.as.transactions"/> - <extension module="org.jboss.as.webservices"/> - <extension module="org.jboss.as.weld"/> - <extension module="org.wildfly.extension.batch.jberet"/> - <extension module="org.wildfly.extension.bean-validation"/> - <extension module="org.wildfly.extension.clustering.singleton"/> - <extension module="org.wildfly.extension.io"/> - <extension module="org.wildfly.extension.messaging-activemq"/> - <extension module="org.wildfly.extension.request-controller"/> - <extension module="org.wildfly.extension.security.manager"/> - <extension module="org.wildfly.extension.undertow"/> - <extension module="org.wildfly.iiop-openjdk"/> - </extensions> - - - <management> - <security-realms> - <security-realm name="ManagementRealm"> - <authentication> - <local default-user="$local" skip-group-loading="true"/> - <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/> - </authentication> - <authorization map-groups-to-roles="false"> - <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/> - </authorization> - </security-realm> - <security-realm name="ApplicationRealm"> - <server-identities> - <ssl> - <keystore path="application.keystore" relative-to="jboss.server.config.dir" keystore-password="password" alias="server" key-password="password" generate-self-signed-certificate-host="localhost"/> - </ssl> - </server-identities> - <authentication> - <local default-user="$local" allowed-users="*" skip-group-loading="true"/> - <properties path="application-users.properties" relative-to="jboss.server.config.dir"/> - </authentication> - <authorization> - <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/> - </authorization> - </security-realm> - </security-realms> - <audit-log> - <formatters> - <json-formatter name="json-formatter"/> - </formatters> - <handlers> - <file-handler name="file" formatter="json-formatter" path="audit-log.log" relative-to="jboss.server.data.dir"/> - </handlers> - <logger log-boot="true" log-read-only="false" enabled="false"> - <handlers> - <handler name="file"/> - </handlers> - </logger> - </audit-log> - <management-interfaces> - <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true"> - <socket-binding http="management-http"/> - </http-interface> - </management-interfaces> - <access-control provider="simple"> - <role-mapping> - <role name="SuperUser"> - <include> - <user name="$local"/> - </include> - </role> - </role-mapping> - </access-control> - </management> - - <profile> - <subsystem xmlns="urn:jboss:domain:logging:3.0"> - <console-handler name="CONSOLE"> - <level name="INFO"/> - <formatter> - <named-formatter name="COLOR-PATTERN"/> - </formatter> - </console-handler> - <periodic-rotating-file-handler name="FILE" autoflush="true"> - <formatter> - <named-formatter name="PATTERN"/> - </formatter> - <file relative-to="jboss.server.log.dir" path="server.log"/> - <suffix value=".yyyy-MM-dd"/> - <append value="true"/> - </periodic-rotating-file-handler> - <logger category="com.arjuna"> - <level name="WARN"/> - </logger> - <logger category="org.jboss.as.config"> - <level name="DEBUG"/> - </logger> - <logger category="sun.rmi"> - <level name="WARN"/> - </logger> - <root-logger> - <level name="INFO"/> - <handlers> - <handler name="CONSOLE"/> - <handler name="FILE"/> - </handlers> - </root-logger> - <formatter name="PATTERN"> - <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/> - </formatter> - <formatter name="COLOR-PATTERN"> - <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/> - </formatter> - </subsystem> - <subsystem xmlns="urn:jboss:domain:batch-jberet:1.0"> - <default-job-repository name="in-memory"/> - <default-thread-pool name="batch"/> - <job-repository name="in-memory"> - <in-memory/> - </job-repository> - <thread-pool name="batch"> - <max-threads count="10"/> - <keepalive-time time="30" unit="seconds"/> - </thread-pool> - </subsystem> - <subsystem xmlns="urn:jboss:domain:bean-validation:1.0"/> - <subsystem xmlns="urn:jboss:domain:datasources:4.0"> - <datasources> - <datasource jndi-name="java:jboss/datasources/mso-requests" pool-name="mso-requests" enabled="true" use-ccm="true"> - <connection-url>jdbc:mariadb://mso-mariadb.{{.Values.nsPrefix}}:3306/mso_requests?autoReconnect=true&connectTimeout=60000&socketTimeout=60000</connection-url> - <driver>mariadb</driver> - <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> - <pool> - <min-pool-size>10</min-pool-size> - <max-pool-size>100</max-pool-size> - <prefill>true</prefill> - <use-strict-min>false</use-strict-min> - <flush-strategy>FailingConnectionOnly</flush-strategy> - </pool> - <security> - <user-name>mso</user-name> - <password>mso123</password> - </security> - <validation> - <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> - <validate-on-match>false</validate-on-match> - <background-validation>true</background-validation> - <background-validation-millis>20000</background-validation-millis> - <use-fast-fail>true</use-fast-fail> - <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/> - </validation> - <timeout> - <idle-timeout-minutes>15</idle-timeout-minutes> - <query-timeout>30</query-timeout> - <allocation-retry>1</allocation-retry> - <allocation-retry-wait-millis>3000</allocation-retry-wait-millis> - </timeout> - </datasource> - <datasource jndi-name="java:jboss/datasources/mso-catalog" pool-name="mso-catalog" enabled="true" use-ccm="true"> - <connection-url>jdbc:mariadb://mso-mariadb.{{.Values.nsPrefix}}:3306/mso_catalog?autoReconnect=true&connectTimeout=60000&socketTimeout=60000</connection-url> - <driver>mariadb</driver> - <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> - <pool> - <min-pool-size>10</min-pool-size> - <max-pool-size>100</max-pool-size> - <prefill>true</prefill> - <use-strict-min>false</use-strict-min> - <flush-strategy>FailingConnectionOnly</flush-strategy> - </pool> - <security> - <user-name>catalog</user-name> - <password>catalog123</password> - </security> - <validation> - <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> - <validate-on-match>false</validate-on-match> - <background-validation>true</background-validation> - <background-validation-millis>20000</background-validation-millis> - <use-fast-fail>true</use-fast-fail> - <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/> - </validation> - <timeout> - <idle-timeout-minutes>15</idle-timeout-minutes> - <query-timeout>30</query-timeout> - <allocation-retry>1</allocation-retry> - <allocation-retry-wait-millis>3000</allocation-retry-wait-millis> - </timeout> - </datasource> - <datasource jta="true" jndi-name="java:jboss/datasources/ProcessEngine" pool-name="ProcessEngine" enabled="true" use-java-context="true" use-ccm="true"> - <connection-url>jdbc:mariadb://mso-mariadb.{{.Values.nsPrefix}}:3306/camundabpmn?autoReconnect=true&connectTimeout=60000&socketTimeout=60000</connection-url> - <driver>mariadb</driver> - <new-connection-sql>set autocommit=1</new-connection-sql> - <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> - <pool> - <min-pool-size>10</min-pool-size> - <max-pool-size>100</max-pool-size> - <prefill>true</prefill> - <use-strict-min>false</use-strict-min> - <flush-strategy>FailingConnectionOnly</flush-strategy> - </pool> - <security> - <user-name>camunda</user-name> - <password>camunda123</password> - </security> - <validation> - <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> - <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/> - </validation> - <statement> - <prepared-statement-cache-size>32</prepared-statement-cache-size> - <share-prepared-statements>true</share-prepared-statements> - </statement> - </datasource> - <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> - <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url> - <driver>h2</driver> - <security> - <user-name>sa</user-name> - <password>sa</password> - </security> - </datasource> - <drivers> - <driver name="h2" module="com.h2database.h2"> - <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> - </driver> - <driver name="mariadb" module="mariadb"> - <xa-datasource-class>org.mariadb.jdbc.MySQLDataSource</xa-datasource-class> - </driver> - </drivers> - </datasources> - </subsystem> - <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0"> - <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:ee:4.0"> - <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement> - <concurrent> - <context-services> - <context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/> - </context-services> - <managed-thread-factories> - <managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/> - </managed-thread-factories> - <managed-executor-services> - <managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" keepalive-time="5000"/> - </managed-executor-services> - <managed-scheduled-executor-services> - <managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" keepalive-time="3000"/> - </managed-scheduled-executor-services> - </concurrent> - <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:jboss/DefaultJMSConnectionFactory" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:ejb3:4.0"> - <session-bean> - <stateless> - <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/> - </stateless> - <stateful default-access-timeout="5000" cache-ref="distributable" passivation-disabled-cache-ref="simple"/> - <singleton default-access-timeout="5000"/> - </session-bean> - <mdb> - <resource-adapter-ref resource-adapter-name="${ejb.resource-adapter-name:activemq-ra.rar}"/> - <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> - </mdb> - <pools> - <bean-instance-pools> - <strict-max-pool name="slsb-strict-max-pool" derive-size="from-worker-pools" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> - <strict-max-pool name="mdb-strict-max-pool" derive-size="from-cpu-count" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> - </bean-instance-pools> - </pools> - <caches> - <cache name="simple"/> - <cache name="distributable" passivation-store-ref="infinispan" aliases="passivating clustered"/> - </caches> - <passivation-stores> - <passivation-store name="infinispan" cache-container="ejb" max-size="10000"/> - </passivation-stores> - <async thread-pool-name="default"/> - <timer-service thread-pool-name="default" default-data-store="default-file-store"> - <data-stores> - <file-data-store name="default-file-store" path="timer-service-data" relative-to="jboss.server.data.dir"/> - </data-stores> - </timer-service> - <remote connector-ref="http-remoting-connector" thread-pool-name="default"/> - <thread-pools> - <thread-pool name="default"> - <max-threads count="10"/> - <keepalive-time time="100" unit="milliseconds"/> - </thread-pool> - </thread-pools> - <iiop enable-by-default="false" use-qualified-name="false"/> - <default-security-domain value="other"/> - <default-missing-method-permissions-deny-access value="true"/> - <log-system-exceptions value="true"/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:io:1.1"> - <worker name="default"/> - <buffer-pool name="default"/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:infinispan:4.0"> - <cache-container name="server" aliases="singleton cluster" default-cache="default" module="org.wildfly.clustering.server"> - <transport lock-timeout="60000"/> - <replicated-cache name="default" mode="SYNC"> - <transaction mode="BATCH"/> - </replicated-cache> - </cache-container> - <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan"> - <transport lock-timeout="60000"/> - <distributed-cache name="dist" mode="ASYNC" l1-lifespan="0" owners="2"> - <locking isolation="REPEATABLE_READ"/> - <transaction mode="BATCH"/> - <file-store/> - </distributed-cache> - <distributed-cache name="concurrent" mode="SYNC" l1-lifespan="0" owners="2"> - <file-store/> - </distributed-cache> - </cache-container> - <cache-container name="ejb" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan"> - <transport lock-timeout="60000"/> - <distributed-cache name="dist" mode="ASYNC" l1-lifespan="0" owners="2"> - <locking isolation="REPEATABLE_READ"/> - <transaction mode="BATCH"/> - <file-store/> - </distributed-cache> - </cache-container> - <cache-container name="hibernate" default-cache="local-query" module="org.hibernate.infinispan"> - <transport lock-timeout="60000"/> - <local-cache name="local-query"> - <eviction strategy="LRU" max-entries="10000"/> - <expiration max-idle="100000"/> - </local-cache> - <invalidation-cache name="entity" mode="SYNC"> - <transaction mode="NON_XA"/> - <eviction strategy="LRU" max-entries="10000"/> - <expiration max-idle="100000"/> - </invalidation-cache> - <replicated-cache name="timestamps" mode="ASYNC"/> - </cache-container> - </subsystem> - <subsystem xmlns="urn:jboss:domain:iiop-openjdk:1.0"> - <orb socket-binding="iiop" ssl-socket-binding="iiop-ssl"/> - <initializers security="identity" transactions="spec"/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/> - <subsystem xmlns="urn:jboss:domain:jca:4.0"> - <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/> - <bean-validation enabled="true"/> - <default-workmanager> - <short-running-threads> - <core-threads count="50"/> - <queue-length count="50"/> - <max-threads count="50"/> - <keepalive-time time="10" unit="seconds"/> - </short-running-threads> - <long-running-threads> - <core-threads count="50"/> - <queue-length count="50"/> - <max-threads count="50"/> - <keepalive-time time="10" unit="seconds"/> - </long-running-threads> - </default-workmanager> - <cached-connection-manager/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:jdr:1.0"/> - <subsystem xmlns="urn:jboss:domain:jgroups:4.0"> - <channels default="ee"> - <channel name="ee" stack="udp"/> - </channels> - <stacks> - <stack name="udp"> - <transport type="UDP" socket-binding="jgroups-udp"/> - <protocol type="PING"/> - <protocol type="MERGE3"/> - <protocol type="FD_SOCK" socket-binding="jgroups-udp-fd"/> - <protocol type="FD_ALL"/> - <protocol type="VERIFY_SUSPECT"/> - <protocol type="pbcast.NAKACK2"/> - <protocol type="UNICAST3"/> - <protocol type="pbcast.STABLE"/> - <protocol type="pbcast.GMS"/> - <protocol type="UFC"/> - <protocol type="MFC"/> - <protocol type="FRAG2"/> - </stack> - <stack name="tcp"> - <transport type="TCP" socket-binding="jgroups-tcp"/> - <protocol type="MPING" socket-binding="jgroups-mping"/> - <protocol type="MERGE3"/> - <protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/> - <protocol type="FD"/> - <protocol type="VERIFY_SUSPECT"/> - <protocol type="pbcast.NAKACK2"/> - <protocol type="UNICAST3"/> - <protocol type="pbcast.STABLE"/> - <protocol type="pbcast.GMS"/> - <protocol type="MFC"/> - <protocol type="FRAG2"/> - </stack> - </stacks> - </subsystem> - <subsystem xmlns="urn:jboss:domain:jmx:1.3"> - <expose-resolved-model/> - <expose-expression-model/> - <remoting-connector/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:jpa:1.1"> - <jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:jsf:1.0"/> - <subsystem xmlns="urn:jboss:domain:jsr77:1.0"/> - <subsystem xmlns="urn:jboss:domain:mail:2.0"> - <mail-session name="default" jndi-name="java:jboss/mail/Default"> - <smtp-server outbound-socket-binding-ref="mail-smtp"/> - </mail-session> - </subsystem> - <subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0"> - <server name="default"> - <cluster password="${jboss.messaging.cluster.password:CHANGE ME!!}"/> - <security-setting name="#"> - <role name="guest" send="true" consume="true" create-non-durable-queue="true" delete-non-durable-queue="true"/> - </security-setting> - <address-setting name="#" dead-letter-address="jms.queue.DLQ" expiry-address="jms.queue.ExpiryQueue" max-size-bytes="10485760" page-size-bytes="2097152" message-counter-history-day-limit="10" redistribution-delay="1000"/> - <http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/> - <http-connector name="http-connector-throughput" socket-binding="http" endpoint="http-acceptor-throughput"> - <param name="batch-delay" value="50"/> - </http-connector> - <in-vm-connector name="in-vm" server-id="0"/> - <http-acceptor name="http-acceptor" http-listener="default"/> - <http-acceptor name="http-acceptor-throughput" http-listener="default"> - <param name="batch-delay" value="50"/> - <param name="direct-deliver" value="false"/> - </http-acceptor> - <in-vm-acceptor name="in-vm" server-id="0"/> - <broadcast-group name="bg-group1" jgroups-channel="activemq-cluster" connectors="http-connector"/> - <discovery-group name="dg-group1" jgroups-channel="activemq-cluster"/> - <cluster-connection name="my-cluster" address="jms" connector-name="http-connector" discovery-group="dg-group1"/> - <jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/> - <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/> - <connection-factory name="InVmConnectionFactory" entries="java:/ConnectionFactory" connectors="in-vm"/> - <connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="http-connector" ha="true" block-on-acknowledge="true" reconnect-attempts="-1"/> - <pooled-connection-factory name="activemq-ra" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory" connectors="in-vm" transaction="xa"/> - </server> - </subsystem> - <subsystem xmlns="urn:jboss:domain:modcluster:2.0"> - <mod-cluster-config advertise-socket="modcluster" connector="ajp"> - <dynamic-load-provider> - <load-metric type="cpu"/> - </dynamic-load-provider> - </mod-cluster-config> - </subsystem> - <subsystem xmlns="urn:jboss:domain:naming:2.0"> - <remote-naming/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:pojo:1.0"/> - <subsystem xmlns="urn:jboss:domain:remoting:3.0"> - <endpoint/> - <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:resource-adapters:4.0"/> - <subsystem xmlns="urn:jboss:domain:request-controller:1.0"/> - <subsystem xmlns="urn:jboss:domain:sar:1.0"/> - <subsystem xmlns="urn:jboss:domain:security-manager:1.0"> - <deployment-permissions> - <maximum-set> - <permission class="java.security.AllPermission"/> - </maximum-set> - </deployment-permissions> - </subsystem> - <subsystem xmlns="urn:jboss:domain:security:1.2"> - <security-domains> - <security-domain name="other" cache-type="default"> - <authentication> - <login-module code="Remoting" flag="optional"> - <module-option name="password-stacking" value="useFirstPass"/> - </login-module> - <login-module code="RealmDirect" flag="required"> - <module-option name="password-stacking" value="useFirstPass"/> - </login-module> - </authentication> - </security-domain> - <security-domain name="jboss-web-policy" cache-type="default"> - <authorization> - <policy-module code="Delegating" flag="required"/> - </authorization> - </security-domain> - <security-domain name="jboss-ejb-policy" cache-type="default"> - <authorization> - <policy-module code="Delegating" flag="required"/> - </authorization> - </security-domain> - <security-domain name="jaspitest" cache-type="default"> - <authentication-jaspi> - <login-module-stack name="dummy"> - <login-module code="Dummy" flag="optional"/> - </login-module-stack> - <auth-module code="Dummy"/> - </authentication-jaspi> - </security-domain> - </security-domains> - </subsystem> - <subsystem xmlns="urn:jboss:domain:singleton:1.0"> - <singleton-policies default="default"> - <singleton-policy name="default" cache-container="server"> - <simple-election-policy/> - </singleton-policy> - </singleton-policies> - </subsystem> - <subsystem xmlns="urn:jboss:domain:transactions:3.0"> - <core-environment> - <process-id> - <uuid/> - </process-id> - </core-environment> - <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:undertow:3.1"> - <buffer-cache name="default"/> - <server name="default-server"> - <ajp-listener name="ajp" socket-binding="ajp"/> - <http-listener name="default" socket-binding="http" enable-http2="true"/> - <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/> - <host name="default-host" alias="localhost"> - <location name="/" handler="welcome-content"/> - <filter-ref name="server-header"/> - <filter-ref name="x-powered-by-header"/> - </host> - </server> - <servlet-container name="default"> - <jsp-config/> - <websockets/> - </servlet-container> - <handlers> - <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> - </handlers> - <filters> - <response-header name="server-header" header-name="Server" header-value="WildFly/10"/> - <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/> - </filters> - </subsystem> - <subsystem xmlns="urn:jboss:domain:webservices:2.0"> - <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host> - <endpoint-config name="Standard-Endpoint-Config"/> - <endpoint-config name="Recording-Endpoint-Config"> - <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM"> - <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/> - </pre-handler-chain> - </endpoint-config> - <client-config name="Standard-Client-Config"/> - </subsystem> - <subsystem xmlns="urn:jboss:domain:weld:3.0"/> - </profile> - - <interfaces> - <interface name="management"> - <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> - </interface> - <interface name="public"> - <inet-address value="${jboss.bind.address:127.0.0.1}"/> - </interface> - <interface name="private"> - <inet-address value="${jboss.bind.address.private:127.0.0.1}"/> - </interface> - <interface name="unsecure"> - <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/> - </interface> - </interfaces> - - <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> - <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/> - <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/> - <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/> - <socket-binding name="http" port="${jboss.http.port:8080}"/> - <socket-binding name="https" port="${jboss.https.port:8443}"/> - <socket-binding name="iiop" interface="unsecure" port="3528"/> - <socket-binding name="iiop-ssl" interface="unsecure" port="3529"/> - <socket-binding name="jgroups-mping" interface="private" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/> - <socket-binding name="jgroups-tcp" interface="private" port="7600"/> - <socket-binding name="jgroups-tcp-fd" interface="private" port="57600"/> - <socket-binding name="jgroups-udp" interface="private" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/> - <socket-binding name="jgroups-udp-fd" interface="private" port="54200"/> - <socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/> - <socket-binding name="txn-recovery-environment" port="4712"/> - <socket-binding name="txn-status-manager" port="4713"/> - <outbound-socket-binding name="mail-smtp"> - <remote-destination host="localhost" port="25"/> - </outbound-socket-binding> - </socket-binding-group> - -</server> diff --git a/kubernetes/mso/resources/config/mso/mso-docker.json b/kubernetes/mso/resources/config/mso/mso-docker.json deleted file mode 100755 index b2775590a6..0000000000 --- a/kubernetes/mso/resources/config/mso/mso-docker.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "name": "mso-docker", - "description": "MSO Docker Images", - "chef_type": "environment", - "json_class": "Chef::Environment", - "default_attributes": - { - "mso_config_path": "/etc/mso/config.d/", - - "mso-api-handler-infra-config": - { - "bpelURL": "http://localhost:8080", - "bpelAuth": "786864AA53D0DCD881AED1154230C0C3058D58B9339D2EFB6193A0F0D82530E1", - "camundaURL": "http://localhost:8080", - "camundaAuth": "5119D1AF37F671FC01FFAD2151D93EFB2BBB503E879FD07104D024EDDF118FD1" - }, - - "asdc-connections": - { - "asdc-controller1": - { - "user": "mso", - "consumerGroup": "sdc-OpenSource-Env1", - "consumerId": "sdc-COpenSource-Env11", - "environmentName": "{{ .Values.dmaapTopic }}", - "asdcAddress": "sdc-be.{{.Values.nsPrefix}}:8443", - "password": "613AF3483E695524F9857643B697FA51C7A9A0951094F53791485BF3458F9EADA37DBACCCEBD0CB242B85B4062745247", - "pollingInterval": 60, - "pollingTimeout": 60, - "relevantArtifactTypes": "HEAT,HEAT_ENV,HEAT_VOL", - "activateServerTLSAuth": "false", - "keyStorePassword": "", - "keyStorePath": "" - } - }, - - "mso-sdnc-adapter-config": - { - "sdncurls": - [ - "http://sdnhost.{{.Values.nsPrefix}}:8282/restconf/operations/L3SDN-API:", - "http://sdnhost.{{.Values.nsPrefix}}:8282/restconf/config/L3SDN-API:", - "http://sdnhost.{{.Values.nsPrefix}}:8282/restconf/operations/Firewall-API:", - "http://sdnhost.{{.Values.nsPrefix}}:8282/restconf/config", - "http://sdnhost.{{.Values.nsPrefix}}:8282/restconf/operations/VNF-API:", - "http://sdnhost.{{.Values.nsPrefix}}:8282/restconf/operations/NBNC-API:", - "http://sdnhost.{{.Values.nsPrefix}}:8282/restconf/operations/NORTHBOUND-API:service-topology-operation", - "http://sdnhost.{{.Values.nsPrefix}}:8282/restconf/operations/GENERIC-RESOURCE-API:", - "http://sdnhost.{{.Values.nsPrefix}}:8282/restconf/operations/VNFTOPOLOGYAIC-API:" - ], - - "bpelurl": "http://localhost:8080/mso/SDNCAdapterCallbackService", - "restbpelurl": "http://localhost:8080/mso/WorkflowMessage", - "myurl": "http://localhost:8080/adapters/rest/SDNCNotify", - "sdncauth": "263f7d5f944d4d0c76db74b4148bec67d0bc796a874bc0d2a2a12aae89a866aa69133f700f391f784719a37f6a68d29bf5a2fbae1dab0402db7788c800c5ba73", - "bpelauth": "5119D1AF37F671FC01FFAD2151D93EFB2BBB503E879FD07104D024EDDF118FD1", - "sdncconnecttime": "5000" - }, - "mso-po-adapter-config": - { - "identity_services": - [ - { - "dcp_clli": "DEFAULT_KEYSTONE", - "identity_url": "{{ .Values.openStackKeyStoneUrl }}/v2.0", - "mso_id": "{{ .Values.openStackUserName }}", - "mso_pass": "{{ .Values.openStackEncryptedPasswordHere }}", - "admin_tenant":"{{ .Values.openStackServiceTenantName }}", - "member_role": "admin", - "tenant_metadata": "true", - "identity_server_type": "KEYSTONE", - "identity_authentication_type": "USERNAME_PASSWORD" - } - ], - - "cloud_sites": - [ - { - "id": "{{ .Values.openStackRegion }}", - "aic_version": "2.5", - "lcp_clli": "{{ .Values.openStackRegion }}", - "region_id": "{{ .Values.openStackRegion }}", - "identity_service_id": "DEFAULT_KEYSTONE" - } - ], - - "vnfbpelauth": "5119D1AF37F671FC01FFAD2151D93EFB2BBB503E879FD07104D024EDDF118FD1", - "checkrequiredparameters": "true", - "nwbpelauth": "5119D1AF37F671FC01FFAD2151D93EFB2BBB503E879FD07104D024EDDF118FD1" - }, - - - "mso-workflow-message-adapter-config": - { - "wmbpelurl": "http://localhost:8080/mso/WorkflowMessage", - "wmbpelauth": "5119D1AF37F671FC01FFAD2151D93EFB2BBB503E879FD07104D024EDDF118FD1" - }, - - "mso-appc-adapter-config": - { - "appc_url": "http://localhost:18080", - "appc_stub": "/AppC-Simulator/action/execute", - "appc_auth": "786864AA53D0DCD881AED1154230C0C3058D58B9339D2EFB6193A0F0D82530E1", - "appc_timeout": "30", - "ueb_cluster_address": "http://localhost:18080", - "ueb_consumer_group": "testgroup", - "ueb_consumer_id": "testuser", - "ueb_topic": "queuetopic", - "ueb_polling_interval": "30", - "ueb_polling_interval": "30", - "ueb_user": "user", - "ueb_password": "1ec0d74615d4e4639f991c0590c83b88", - "bpel_url": "http://localhost:18080", - "bpel_stub": "/AppC-Simulator/bpmn/appCResponse", - "bpel_auth": "786864AA53D0DCD881AED1154230C0C3058D58B9339D2EFB6193A0F0D82530E1", - "bpel_timeout": "30" - }, - - "mso-bpmn-config": - { - "urnFileSystemLoadingEnabled": "true" - }, - - "mso-bpmn-urn-config": - { - "debug":"false", - "invariantIdL3ToHigherLayerDeleteBonding": "50359538-066f-4a8d-807f-f2bc8eaa79dc", - "versionIdL3ToHigherLayerDeleteBonding": "52dbec20-47aa-42e4-936c-331d8e350d44", - "infraCustomerId": "21014aa2-526b-11e6-beb8-9e71128cae77", - "sniroAuth": "test:testpwd", - "sniroEndpoint": "http://sniro-emulator.{{.Values.nsPrefix}}:8080/sniro/api/v2/placement", - "sniroTimeout": "PT30M", - "serviceAgnosticSniroHost": "http://sniro-emulator.{{.Values.nsPrefix}}:8080", - "serviceAgnosticSniroEndpoint": "/sniro/api/v2/placement", - "aaiEndpoint": "https://aai-service.{{.Values.nsPrefix}}:8443", - "aaiAuth": "2630606608347B7124C244AB0FE34F6F", - "adaptersNamespace": "http://org.openecomp.mso", - "adaptersCompletemsoprocessEndpoint": "http://localhost:8080/CompleteMsoProcess", - "adaptersDbEndpoint": "http://localhost:8080/dbadapters/MsoRequestsDbAdapter", - "adaptersOpenecompDbEndpoint": "http://localhost:8080/dbadapters/RequestsDbAdapter", - "catalogDbEndpoint": "http://localhost:8080/ecomp/mso/catalog", - "adaptersSdncEndpoint": "http://localhost:8080/adapters/SDNCAdapter", - "adaptersSdncRestEndpoint": "http://localhost:8080/adapters/rest/v1/sdnc", - "adaptersTenantEndpoint": "http://localhost:8080/tenants/TenantAdapter", - "adaptersDbAuth": "6B0E6863FB8EE010AB6F191B3C0489437601E81DC7C86305CB92DB98AFC53D74", - "adaptersWorkflowMessageEndpoint": "http://localhost:8080/workflows/messages/message", - "workflowMessageEndpoint": "http://localhost:8080/mso/WorkflowMessage", - "workflowSdncAdapterCallback": "http://localhost:8080/mso/SDNCAdapterCallbackService", - "workflowSdncReplicationDelay": "PT5S", - "workflowAaiDistributionDelay": "PT30S", - "msoKey": "07a7159d3bf51a0e53be7a8f89699be7", - "adaptersPoAuth": "6B0E6863FB8EE010AB6F191B3C0489437601E81DC7C86305CB92DB98AFC53D74", - "sdncTimeout": "PT5M", - "rollback": "true", - "adaptersNetworkEndpoint": "http://localhost:8080/networks/NetworkAdapter", - "adaptersNetworkRestEndpoint": "http://localhost:8080/networks/rest/v1/networks", - "adaptersVnfAsyncEndpoint": "http://localhost:8080/vnfs/VnfAdapterAsync", - "workflowVnfAdapterDeleteCallback": "http://localhost:8080/mso/vnfAdapterNotify", - "workflowVnfAdapterCreateCallback": "http://localhost:8080/mso/vnfAdapterNotify", - "adaptersVnfRestEndpoint": "http://localhost:8080/vnfs/rest/v1/vnfs", - "workflowVnfAdapterRestCallback": "http://localhost:8080/mso/vnfAdapterRestNotify", - "poTimeout": "PT5M", - "sdncFirewallYangModel": "http://com/att/svc/mis/firewall-lite-gui", - "sdncFirewallYangModelVersion": "2015-05-15", - "sdncTimeoutFirewall": "20", - "callbackRetryAttempts": "30", - "callbackRetrySleepTime": "1000", - "workflowL3ToHigherLayerAddBondingModelName" : "WAN Bonding", - "workflowL3ToHigherLayerAddBondingModelVersion" : "2.0" - } - }, - - "override_attributes": - { - }, - - "cookbook_versions": - { - "mso-config": "~> 1.0.0" - } -} diff --git a/kubernetes/mso/templates/all-services.yaml b/kubernetes/mso/templates/all-services.yaml deleted file mode 100644 index 70e67e482e..0000000000 --- a/kubernetes/mso/templates/all-services.yaml +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMsoMariadb }} -apiVersion: v1 -kind: Service -metadata: - name: mso-mariadb - namespace: "{{ .Values.nsPrefix }}" - labels: - app: mso-mariadb -spec: - ports: - - port: 3306 - name: mso-mariadb-3306 - selector: - app: mso-mariadb - clusterIP: None -#{{ end }} -#{{ if not .Values.disableMsoMso }} ---- -apiVersion: v1 -kind: Service -metadata: - name: mso - namespace: "{{ .Values.nsPrefix }}" - labels: - app: mso - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "so", - "version": "v1", - "url": "/ecomp/mso/infra", - "protocol": "REST" - "port": "8080", - "visualRange":"1" - }, - { - "serviceName": "so-deprecated", - "version": "v1", - "url": "/ecomp/mso/infra", - "protocol": "REST" - "port": "8080", - "visualRange":"1", - "path":"/ecomp/mso/infra" - } - ]' -spec: - selector: - app: mso - ports: - - name: mso1 - port: 8080 - nodePort: {{ .Values.nodePortPrefix }}23 - - name: mso2 - port: 3904 - nodePort: {{ .Values.nodePortPrefix }}25 - - name: mso3 - port: 3905 - nodePort: {{ .Values.nodePortPrefix }}24 - - name: mso4 - port: 9990 - nodePort: {{ .Values.nodePortPrefix }}22 - - name: mso5 - port: 8787 - nodePort: {{ .Values.nodePortPrefix }}50 - type: NodePort -#{{ end }} diff --git a/kubernetes/mso/templates/db-deployment-configmap.yaml b/kubernetes/mso/templates/db-deployment-configmap.yaml deleted file mode 100644 index 2949876e43..0000000000 --- a/kubernetes/mso/templates/db-deployment-configmap.yaml +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMsoMariadb }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-confd-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/mariadb/conf.d/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-docker-entry-initd-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/mariadb/docker-entrypoint-initdb.d/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-automated-tests-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/automated-tests/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-bulkload-default-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/default/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-demo-dns-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-dns/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-demo-vfw-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-vfw/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-scripts-camunda-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-main-schemas-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/*").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/mso/templates/db-deployment.yaml b/kubernetes/mso/templates/db-deployment.yaml deleted file mode 100644 index 801b7d4038..0000000000 --- a/kubernetes/mso/templates/db-deployment.yaml +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMsoMariadb }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: mso-mariadb - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.dbReplicas }} - selector: - matchLabels: - app: mso-mariadb - template: - metadata: - labels: - app: mso-mariadb - name: mso-mariadb - spec: - hostname: mso-mariadb - containers: - - args: - image: {{ .Values.image.mariadb }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: "mso-mariadb" - env: - - name: MYSQL_ROOT_PASSWORD - value: password - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /etc/mysql/conf.d - name: mso-mariadb-conf - - mountPath: /docker-entrypoint-initdb.d/02-load-additional-changes.sh - name: mso-mariadb-docker-entrypoint-initdb - subPath: 02-load-additional-changes.sh - - mountPath: /docker-entrypoint-initdb.d/01-load-default-sql-files.sh - name: mso-mariadb-docker-entrypoint-initdb - subPath: 01-load-default-sql-files.sh - - mountPath: /docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/automated-tests - name: mso-mariadb-docker-entrypoint-automated-tests - - mountPath: /docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/default - name: mso-mariadb-docker-entrypoint-bulkload-default - - mountPath: /docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-dns - name: mso-mariadb-docker-entrypoint-demo-dns - - mountPath: /docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-vfw - name: mso-mariadb-docker-entrypoint-demo-vfw - - mountPath: /docker-entrypoint-initdb.d/db-sql-scripts/camunda - name: mso-mariadb-docker-entrypoint-camunda - - mountPath: /docker-entrypoint-initdb.d/db-sql-scripts/main-schemas - name: mso-mariadb-docker-entrypoint-main-schemas - - mountPath: /var/lib/mysql - name: mso-mariadb-data - ports: - - containerPort: 3306 - name: mso-mariadb - readinessProbe: - tcpSocket: - port: 3306 - initialDelaySeconds: 5 - periodSeconds: 10 - volumes: - - name: mso-mariadb-conf - configMap: - name: mso-confd-configmap - - name: mso-mariadb-docker-entrypoint-initdb - configMap: - name: mso-docker-entry-initd-configmap - - name: mso-mariadb-docker-entrypoint-automated-tests - configMap: - name: mso-automated-tests-configmap - - name: mso-mariadb-docker-entrypoint-bulkload-default - configMap: - name: mso-bulkload-default-configmap - - name: mso-mariadb-docker-entrypoint-demo-dns - configMap: - name: mso-demo-dns-configmap - - name: mso-mariadb-docker-entrypoint-demo-vfw - configMap: - name: mso-demo-vfw-configmap - - name: mso-mariadb-docker-entrypoint-camunda - configMap: - name: mso-scripts-camunda-configmap - - name: mso-mariadb-docker-entrypoint-main-schemas - configMap: - name: mso-main-schemas-configmap - - name: localtime - hostPath: - path: /etc/localtime - - name: mso-mariadb-data - persistentVolumeClaim: - claimName: mso-db - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/mso/templates/mso-deployment-configmap.yaml b/kubernetes/mso/templates/mso-deployment-configmap.yaml deleted file mode 100644 index 4704c6cc16..0000000000 --- a/kubernetes/mso/templates/mso-deployment-configmap.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMsoMso }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-config-mso-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/mso/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-docker-file-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/docker-files/scripts/start-jboss-server.sh").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: mso-jboss-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/mso/jboss/standalone-full-ha-mso.xml").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/mso/templates/mso-deployment.yaml b/kubernetes/mso/templates/mso-deployment.yaml deleted file mode 100644 index 8a099a4744..0000000000 --- a/kubernetes/mso/templates/mso-deployment.yaml +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMsoMso }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: mso - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.msoReplicas }} - selector: - matchLabels: - app: mso - template: - metadata: - labels: - app: mso - name: mso - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - mso-mariadb - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: mso-readiness - containers: - - command: - - /tmp/start-jboss-server.sh - image: {{ .Values.image.mso }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: mso - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /shared/ - name: mso - - mountPath: /tmp/start-jboss-server.sh - name: mso-docker-files - subPath: start-jboss-server.sh - - mountPath: /opt/jboss/standalone/configuration/standalone-full-ha-mso.xml - name: mso-jboss-config - subPath: standalone-full-ha-mso.xml - - mountPath: /var/log/onap - name: mso-logs - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-po-adapter-config/logback.network.xml - name: mso-logback - subPath: logback.network.xml - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-po-adapter-config/logback.tenant.xml - name: mso-logback - subPath: logback.tenant.xml - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-po-adapter-config/logback.vnf.xml - name: mso-logback - subPath: logback.vnf.xml - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-po-adapter-config/logback.vfc.xml - name: mso-logback - subPath: logback.vfc.xml - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-api-handler-infra-config/logback.apihandler-infra.xml - name: mso-logback - subPath: logback.apihandler-infra.xml - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-appc-adapter-config/logback.appc.xml - name: mso-logback - subPath: logback.appc.xml - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-requests-db-adapter-config/logback.msorequestsdbadapter.xml - name: mso-logback - subPath: logback.msorequestsdbadapter.xml - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-asdc-controller-config/logback.asdc.xml - name: mso-logback - subPath: logback.asdc.xml - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-sdnc-adapter-config/logback.sdnc.xml - name: mso-logback - subPath: logback.sdnc.xml - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-bpmn-config/logback.bpmn.xml - name: mso-logback - subPath: logback.bpmn.xml - - mountPath: /var/berks-cookbooks/mso-config/files/default/mso-workflow-message-adapter-config/logback.workflow-message-adapter.xml - name: mso-logback - subPath: logback.workflow-message-adapter.xml - env: - - name: JBOSS_DEBUG - value: "false" - ports: - - containerPort: 3904 - - containerPort: 3905 - - containerPort: 8080 - - containerPort: 9990 - - containerPort: 8787 - readinessProbe: - tcpSocket: - port: 8080 - initialDelaySeconds: 5 - periodSeconds: 10 - - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: filebeat-onap - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - name: filebeat-conf - subPath: filebeat.yml - - mountPath: /var/log/onap - name: mso-logs - - mountPath: /usr/share/filebeat/data - name: mso-data-filebeat - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: mso-logback - configMap: - name: mso-log-configmap - - name: filebeat-conf - configMap: - name: mso-filebeat-configmap - - name: mso - configMap: - name: mso-config-mso-configmap - items: - - key: mso-docker.json - path: mso-docker.json - mode: 0755 - - key: aai.crt - path: aai.crt - mode: 0755 - - key: encryption.key - path: encryption.key - mode: 0644 - - name: mso-logs - emptyDir: {} - - name: mso-data-filebeat - emptyDir: {} - - name: mso-docker-files - configMap: - name: mso-docker-file-configmap - items: - - key: start-jboss-server.sh - path: start-jboss-server.sh - mode: 0755 - - name: mso-jboss-config - configMap: - name: mso-jboss-configmap - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/mso/templates/mso-pv-pvc.yaml b/kubernetes/mso/templates/mso-pv-pvc.yaml deleted file mode 100644 index 1ee4ab088b..0000000000 --- a/kubernetes/mso/templates/mso-pv-pvc.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{/* -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*/}} - -#{{ if not .Values.disableMsoMariadb }} -apiVersion: v1 -kind: PersistentVolume -metadata: - name: "{{ .Values.nsPrefix }}-mso" - namespace: "{{ .Values.nsPrefix }}" - labels: - name: "{{ .Values.nsPrefix }}-mso" -spec: - capacity: - storage: 2Gi - accessModes: - - ReadWriteMany - persistentVolumeReclaimPolicy: Retain - hostPath: - path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/mso/mariadb/data ---- -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: mso-db - namespace: "{{ .Values.nsPrefix }}" -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 2Gi - selector: - matchLabels: - name: "{{ .Values.nsPrefix }}-mso" -#{{ end }} diff --git a/kubernetes/mso/values.yaml b/kubernetes/mso/values.yaml deleted file mode 100644 index 410246fcbc..0000000000 --- a/kubernetes/mso/values.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nsPrefix: onap -pullPolicy: Always -nodePortPrefix: 302 -openStackUserName: "vnf_user" -openStackRegion: "RegionOne" -openStackKeyStoneUrl: "http://1.2.3.4:5000" -dmaapTopic: "AUTO" -openStackServiceTenantName: "service" -openStackEncryptedPasswordHere: "c124921a3a0efbe579782cde8227681e" -msoReplicas: 1 -dbReplicas: 1 -dataRootDir: /dockerdata-nfs -image: - readiness: oomk8s/readiness-check:1.1.0 - mso: nexus3.onap.org:10001/openecomp/mso:v1.1.2 - mariadb: nexus3.onap.org:10001/mariadb:10.1.11 - filebeat: docker.elastic.co/beats/filebeat:5.5.0 - -config: - logstashServiceName: log-ls - logstashPort: 5044 diff --git a/kubernetes/multicloud/.helmignore b/kubernetes/multicloud/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/multicloud/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/multicloud/Chart.yaml b/kubernetes/multicloud/Chart.yaml index 4f9a154880..3dbbe29986 100644 --- a/kubernetes/multicloud/Chart.yaml +++ b/kubernetes/multicloud/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +description: ONAP multicloud broker name: multicloud -version: 1.1.0 +version: 2.0.0 diff --git a/kubernetes/multicloud/charts/multicloud-ocata/.helmignore b/kubernetes/multicloud/charts/multicloud-ocata/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-ocata/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/multicloud/charts/multicloud-ocata/Chart.yaml b/kubernetes/multicloud/charts/multicloud-ocata/Chart.yaml new file mode 100644 index 0000000000..3dfc80af4e --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-ocata/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP multicloud OpenStack Ocata Plugin +name: multicloud-ocata +version: 2.0.0 diff --git a/kubernetes/multicloud/resources/config/log/ocata/log.yml b/kubernetes/multicloud/charts/multicloud-ocata/resources/config/log/log.yml index ef71b907c8..2ef26b7411 100644 --- a/kubernetes/multicloud/resources/config/log/ocata/log.yml +++ b/kubernetes/multicloud/charts/multicloud-ocata/resources/config/log/log.yml @@ -26,9 +26,9 @@ handlers: formatters: standard: - format: "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:%(message)s" + format: "%(asctime)s|||||%(name)s||%(thread)||%(funcName)s||%(levelname)s||%(message)s" mdcFormat: - format: "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:[%(mdc)s]: %(message)s" - mdcfmt: "{requestID}" + format: "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t" + mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}" datefmt: "%Y-%m-%d %H:%M:%S" - (): onaplogging.mdcformatter.MDCFormatter
\ No newline at end of file + (): onaplogging.mdcformatter.MDCFormatter diff --git a/kubernetes/multicloud/charts/multicloud-ocata/templates/configmap.yaml b/kubernetes/multicloud/charts/multicloud-ocata/templates/configmap.yaml new file mode 100644 index 0000000000..8d506fbfb5 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-ocata/templates/configmap.yaml @@ -0,0 +1,23 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-log-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/*").AsConfig . | indent 2 }} diff --git a/kubernetes/multicloud/charts/multicloud-ocata/templates/deployment.yaml b/kubernetes/multicloud/charts/multicloud-ocata/templates/deployment.yaml new file mode 100644 index 0000000000..db8bcdcd57 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-ocata/templates/deployment.yaml @@ -0,0 +1,117 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ include "common.name" . }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + containers: + - env: + - name: MSB_ADDR + value: "{{ .Values.config.msbgateway }}.{{ include "common.namespace" . }}" + - name: MSB_PORT + value: "{{ .Values.config.msbPort }}" + - name: AAI_ADDR + value: aai.{{ include "common.namespace" . }} + - name: AAI_PORT + value: "{{ .Values.config.aai.port }}" + - name: AAI_SCHEMA_VERSION + value: "{{ .Values.config.aai.schemaVersion }}" + - name: AAI_USERNAME + value: "{{ .Values.config.aai.username }}" + - name: AAI_PASSWORD + value: "{{ .Values.config.aai.password }}" + name: {{ include "common.name" . }} + volumeMounts: + - mountPath: /var/log/onap + name: ocata-log + - mountPath: /opt/ocata/ocata/pub/config/log.yml + name: ocata-logconfig + subPath: log.yml + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + httpGet: + path: /api/multicloud-ocata/v0/swagger.json + port: {{ .Values.service.internalPort }} + scheme: HTTP + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + timeoutSeconds: {{ .Values.liveness.timeoutSeconds }} + successThreshold: {{ .Values.liveness.successThreshold }} + failureThreshold: {{ .Values.liveness.failureThreshold }} + {{ end }} + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: filebeat-onap + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + name: filebeat-conf + subPath: filebeat.yml + - mountPath: /var/log/onap + name: ocata-log + - mountPath: /usr/share/filebeat/data + name: ocata-data-filebeat + + volumes: + - name: ocata-log + emptyDir: {} + - name: ocata-data-filebeat + emptyDir: {} + - name: filebeat-conf + configMap: + name: multicloud-filebeat-configmap + - name: ocata-logconfig + configMap: + name: {{ include "common.fullname" . }}-log-configmap + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" + restartPolicy: Always diff --git a/kubernetes/multicloud/charts/multicloud-ocata/templates/service.yaml b/kubernetes/multicloud/charts/multicloud-ocata/templates/service.yaml new file mode 100644 index 0000000000..f47383e0db --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-ocata/templates/service.yaml @@ -0,0 +1,52 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "multicloud-ocata", + "version": "v0", + "url": "/api/multicloud-ocata/v0", + "protocol": "REST", + "port": "{{ .Values.service.externalPort }}", + "visualRange": "1" + } + ]' +spec: + ports: + {{if eq .Values.service.type "NodePort" -}} + - name: {{ .Values.service.name }} + port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + type: {{ .Values.service.type }} diff --git a/kubernetes/multicloud/charts/multicloud-ocata/values.yaml b/kubernetes/multicloud/charts/multicloud-ocata/values.yaml new file mode 100644 index 0000000000..db0397561a --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-ocata/values.yaml @@ -0,0 +1,80 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/multicloud/openstack-ocata:latest +pullPolicy: Always + +# application configuration +config: + msbgateway: msb-iag + msbPort: 80 + aai: + port: 8443 + schemaVersion: v11 + username: AAI + password: AAI + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + successThreshold: 1 + failureThreshold: 5 + enabled: true + +service: + type: NodePort + name: multicloud-ocata + externalPort: 9006 + internalPort: 9006 + nodePort: 93 + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/multicloud/charts/multicloud-vio/.helmignore b/kubernetes/multicloud/charts/multicloud-vio/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-vio/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/multicloud/charts/multicloud-vio/Chart.yaml b/kubernetes/multicloud/charts/multicloud-vio/Chart.yaml new file mode 100644 index 0000000000..83aa96ab90 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-vio/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP multicloud VIO plugin +name: multicloud-vio +version: 2.0.0 diff --git a/kubernetes/multicloud/resources/config/log/vio/log.yml b/kubernetes/multicloud/charts/multicloud-vio/resources/config/log/log.yml index 91654645c8..91654645c8 100644 --- a/kubernetes/multicloud/resources/config/log/vio/log.yml +++ b/kubernetes/multicloud/charts/multicloud-vio/resources/config/log/log.yml diff --git a/kubernetes/multicloud/charts/multicloud-vio/templates/configmap.yaml b/kubernetes/multicloud/charts/multicloud-vio/templates/configmap.yaml new file mode 100644 index 0000000000..8d506fbfb5 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-vio/templates/configmap.yaml @@ -0,0 +1,23 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-log-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/*").AsConfig . | indent 2 }} diff --git a/kubernetes/multicloud/charts/multicloud-vio/templates/deployment.yaml b/kubernetes/multicloud/charts/multicloud-vio/templates/deployment.yaml new file mode 100644 index 0000000000..903963b34b --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-vio/templates/deployment.yaml @@ -0,0 +1,115 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: multicloud-vio + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + containers: + - env: + - name: MSB_ADDR + value: "{{ .Values.config.msbgateway }}" + - name: MSB_PORT + value: "{{ .Values.config.msbPort }}.{{ include "common.namespace" . }}" + - name: AAI_ADDR + value: aai.{{ include "common.namespace" . }} + - name: AAI_PORT + value: "{{ .Values.config.aai.port }}" + - name: AAI_SCHEMA_VERSION + value: "{{ .Values.config.aai.schemaVersion }}" + - name: AAI_USERNAME + value: "{{ .Values.config.aai.username }}" + - name: AAI_PASSWORD + value: "{{ .Values.config.aai.password }}" + name: {{ include "common.name" . }} + volumeMounts: + - mountPath: /var/log/onap + name: vio-log + - mountPath: /opt/vio/vio/pub/config/log.yml + name: vio-logconfig + subPath: log.yml + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + httpGet: + path: /api/multicloud-vio/v0/swagger.json + port: {{ .Values.service.internalPort }} + scheme: HTTP + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + timeoutSeconds: {{ .Values.liveness.timeoutSeconds }} + successThreshold: {{ .Values.liveness.successThreshold }} + failureThreshold: {{ .Values.liveness.failureThreshold }} + {{ end -}} + + # side car containers + - image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: filebeat-onap + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + name: filebeat-conf + subPath: filebeat.yml + - mountPath: /var/log/onap + name: vio-log + - mountPath: /usr/share/filebeat/data + name: vio-data-filebeat + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + volumes: + - name: vio-log + emptyDir: {} + - name: vio-data-filebeat + emptyDir: {} + - name: filebeat-conf + configMap: + name: multicloud-filebeat-configmap + - name: vio-logconfig + configMap: + name: {{ include "common.fullname" . }}-log-configmap + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" + restartPolicy: Always diff --git a/kubernetes/multicloud/charts/multicloud-vio/templates/service.yaml b/kubernetes/multicloud/charts/multicloud-vio/templates/service.yaml new file mode 100644 index 0000000000..dcaf37d192 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-vio/templates/service.yaml @@ -0,0 +1,52 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "multicloud-vio", + "version": "v0", + "url": "/api/multicloud-vio/v0", + "protocol": "REST", + "port": "{{ .Values.service.externalPort }}", + "visualRange": "1" + } + ]' +spec: + ports: + {{if eq .Values.service.type "NodePort" -}} + - name: {{ .Values.service.name }} + port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + type: {{ .Values.service.type }} diff --git a/kubernetes/multicloud/charts/multicloud-vio/values.yaml b/kubernetes/multicloud/charts/multicloud-vio/values.yaml new file mode 100644 index 0000000000..187f2b9562 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-vio/values.yaml @@ -0,0 +1,80 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/multicloud/vio:latest +pullPolicy: Always + +# application configuration +config: + msbgateway: msb-iag + msbPort: 80 + aai: + port: 8443 + schemaVersion: v11 + username: AAI + password: AAI + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + successThreshold: 1 + failureThreshold: 5 + enabled: true + +service: + type: NodePort + name: multicloud-vio + externalPort: 9004 + internalPort: 9004 + nodePort: 92 + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/multicloud/charts/multicloud-windriver/.helmignore b/kubernetes/multicloud/charts/multicloud-windriver/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-windriver/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/multicloud/charts/multicloud-windriver/Chart.yaml b/kubernetes/multicloud/charts/multicloud-windriver/Chart.yaml new file mode 100644 index 0000000000..ef345f619d --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-windriver/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP multicloud OpenStack WindRiver Plugin +name: multicloud-windriver +version: 2.0.0 diff --git a/kubernetes/multicloud/resources/config/log/windriver/log.yml b/kubernetes/multicloud/charts/multicloud-windriver/resources/config/log/log.yml index 8e2c5c25f9..6c1957db33 100644 --- a/kubernetes/multicloud/resources/config/log/windriver/log.yml +++ b/kubernetes/multicloud/charts/multicloud-windriver/resources/config/log/log.yml @@ -26,9 +26,9 @@ handlers: formatters: standard: - format: "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:%(message)s" + format: "%(asctime)s|||||%(name)s||%(thread)||%(funcName)s||%(levelname)s||%(message)s" mdcFormat: - format: "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:[%(mdc)s]: %(message)s" - mdcfmt: "{requestID}" + format: "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t" + mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}" datefmt: "%Y-%m-%d %H:%M:%S" - (): onaplogging.mdcformatter.MDCFormatter
\ No newline at end of file + (): onaplogging.mdcformatter.MDCFormatter diff --git a/kubernetes/multicloud/charts/multicloud-windriver/templates/configmap.yaml b/kubernetes/multicloud/charts/multicloud-windriver/templates/configmap.yaml new file mode 100644 index 0000000000..8d506fbfb5 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-windriver/templates/configmap.yaml @@ -0,0 +1,23 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-log-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/*").AsConfig . | indent 2 }} diff --git a/kubernetes/multicloud/charts/multicloud-windriver/templates/deployment.yaml b/kubernetes/multicloud/charts/multicloud-windriver/templates/deployment.yaml new file mode 100644 index 0000000000..02a78bbd16 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-windriver/templates/deployment.yaml @@ -0,0 +1,117 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ include "common.name" . }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + containers: + - env: + - name: MSB_ADDR + value: "{{ .Values.config.msbgateway }}.{{ include "common.namespace" . }}" + - name: MSB_PORT + value: "{{ .Values.config.msbPort }}" + - name: AAI_ADDR + value: aai-service.{{ include "common.namespace" . }} + - name: AAI_PORT + value: "{{ .Values.config.aai.port }}" + - name: AAI_SCHEMA_VERSION + value: "{{ .Values.config.aai.schemaVersion }}" + - name: AAI_USERNAME + value: "{{ .Values.config.aai.username }}" + - name: AAI_PASSWORD + value: "{{ .Values.config.aai.password }}" + name: {{ include "common.name" . }} + volumeMounts: + - mountPath: /var/log/onap + name: windriver-log + - mountPath: /opt/windriver/titanium_cloud/pub/config/log.yml + name: windriver-logconfig + subPath: log.yml + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + httpGet: + path: /api/multicloud-titanium_cloud/v0/swagger.json + port: {{ .Values.service.internalPort }} + scheme: HTTP + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + timeoutSeconds: {{ .Values.liveness.timeoutSeconds }} + successThreshold: {{ .Values.liveness.successThreshold }} + failureThreshold: {{ .Values.liveness.failureThreshold }} + {{ end }} + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: filebeat-onap + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + name: filebeat-conf + subPath: filebeat.yml + - mountPath: /var/log/onap + name: windriver-log + - mountPath: /usr/share/filebeat/data + name: windriver-data-filebeat + + volumes: + - name: windriver-log + emptyDir: {} + - name: windriver-data-filebeat + emptyDir: {} + - name: filebeat-conf + configMap: + name: multicloud-filebeat-configmap + - name: windriver-logconfig + configMap: + name: {{ include "common.fullname" . }}-log-configmap + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" + restartPolicy: Always diff --git a/kubernetes/multicloud/charts/multicloud-windriver/templates/service.yaml b/kubernetes/multicloud/charts/multicloud-windriver/templates/service.yaml new file mode 100644 index 0000000000..dd3bd4214f --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-windriver/templates/service.yaml @@ -0,0 +1,53 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# # +# # Licensed under the Apache License, Version 2.0 (the "License"); +# # you may not use this file except in compliance with the License. +# # You may obtain a copy of the License at +# # +# # http://www.apache.org/licenses/LICENSE-2.0 +# # +# # Unless required by applicable law or agreed to in writing, software +# # distributed under the License is distributed on an "AS IS" BASIS, +# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# # See the License for the specific language governing permissions and +# # limitations under the License. +*/}} + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "multicloud-titanium_cloud", + "version": "v0", + "url": "/api/multicloud-titanium_cloud/v0", + "protocol": "REST", + "port": "{{ .Values.service.internalPort }}", + "visualRange": "1" + } + ]' + +spec: + ports: + {{ if eq .Values.service.type "NodePort" }} + - name: {{ .Values.service.name }} + port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + {{ else }} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{ end }} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + type: {{ .Values.service.type }} diff --git a/kubernetes/multicloud/charts/multicloud-windriver/values.yaml b/kubernetes/multicloud/charts/multicloud-windriver/values.yaml new file mode 100644 index 0000000000..1126284f11 --- /dev/null +++ b/kubernetes/multicloud/charts/multicloud-windriver/values.yaml @@ -0,0 +1,80 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/multicloud/openstack-windriver:latest +pullPolicy: Always + +# application configuration +config: + msbgateway: msb-iag + msbPort: 80 + aai: + port: 8443 + schemaVersion: v11 + username: AAI + password: AAI + +service: + type: NodePort + name: multicloud-windriver + externalPort: 9005 + internalPort: 9005 + nodePort: 94 + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + successThreshold: 1 + failureThreshold: 5 + enabled: true + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/multicloud/requirements.yaml b/kubernetes/multicloud/requirements.yaml new file mode 100644 index 0000000000..ce82a2f838 --- /dev/null +++ b/kubernetes/multicloud/requirements.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/multicloud/templates/all-services.yaml b/kubernetes/multicloud/templates/all-services.yaml deleted file mode 100644 index c58cd7486e..0000000000 --- a/kubernetes/multicloud/templates/all-services.yaml +++ /dev/null @@ -1,132 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMulticloudFramework }} -apiVersion: v1 -kind: Service -metadata: - name: framework - namespace: "{{ .Values.nsPrefix }}" - labels: - name: framework - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "multicloud", - "version": "v0", - "url": "/api/multicloud/v0", - "protocol": "REST", - "port": "9001", - "visualRange": "1" - } - ]' -spec: - ports: - - name: "framework-port" - port: 9001 - nodePort: {{ .Values.nodePortPrefix }}91 - selector: - app: framework - type: NodePort -#{{ end }} -#{{ if not .Values.disableMulticloudMulticloudVio }} ---- -apiVersion: v1 -kind: Service -metadata: - name: multicloud-vio - namespace: "{{ .Values.nsPrefix }}" - labels: - name: multicloud-vio - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "multicloud-vio", - "version": "v0", - "url": "/api/multicloud-vio/v0", - "protocol": "REST", - "port": "9004", - "visualRange": "1" - } - ]' - -spec: - ports: - - name: "multicloud-port" - port: 9004 - nodePort: {{ .Values.nodePortPrefix }}92 - selector: - app: multicloud-vio - type: NodePort -#{{ end }} -#{{ if not .Values.disableMulticloudMulticloudOcata }} ---- -apiVersion: v1 -kind: Service -metadata: - name: multicloud-ocata - namespace: "{{ .Values.nsPrefix }}" - labels: - name: multicloud-ocata - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "multicloud-ocata", - "version": "v0", - "url": "/api/multicloud-ocata/v0", - "protocol": "REST", - "port": "9006", - "visualRange": "1" - } - ]' - -spec: - ports: - - name: "multicloud-port" - port: 9006 - nodePort: {{ .Values.nodePortPrefix }}93 - selector: - app: multicloud-ocata - type: NodePort -#{{ end }} -#{{ if not .Values.disableMulticloudMulticloudWindriver }} ---- -apiVersion: v1 -kind: Service -metadata: - name: multicloud-windriver - namespace: "{{ .Values.nsPrefix }}" - labels: - name: multicloud-windriver - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "multicloud-titanium_cloud", - "version": "v0", - "url": "/api/multicloud-titanium_cloud/v0", - "protocol": "REST", - "port": "9005", - "visualRange": "1" - } - ]' - -spec: - ports: - - name: "multicloud-port" - port: 9005 - nodePort: {{ .Values.nodePortPrefix }}94 - selector: - app: multicloud-windriver - type: NodePort -#{{ end }}
\ No newline at end of file diff --git a/kubernetes/mso/templates/mso-log-configmap.yaml b/kubernetes/multicloud/templates/configmap.yaml index ed6b16a2a7..e420fb99f7 100644 --- a/kubernetes/mso/templates/mso-log-configmap.yaml +++ b/kubernetes/multicloud/templates/configmap.yaml @@ -1,3 +1,4 @@ +{{/* # Copyright © 2017 Amdocs, Bell Canada # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -11,21 +12,20 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +*/}} -#{{ if not .Values.disableMsoMso }} apiVersion: v1 kind: ConfigMap metadata: - name: mso-log-configmap - namespace: {{ .Values.nsPrefix }} + name: multicloud-filebeat-configmap + namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/log/*").AsConfig . | indent 2 }} +{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }} --- apiVersion: v1 kind: ConfigMap metadata: - name: mso-filebeat-configmap - namespace: {{ .Values.nsPrefix }} + name: {{ include "common.fullname" . }}-log-configmap + namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }} -#{{ end }} +{{ tpl (.Files.Glob "resources/config/log/framework/*").AsConfig . | indent 2 }} diff --git a/kubernetes/multicloud/templates/deployment.yaml b/kubernetes/multicloud/templates/deployment.yaml new file mode 100644 index 0000000000..f42d5f3f8f --- /dev/null +++ b/kubernetes/multicloud/templates/deployment.yaml @@ -0,0 +1,117 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ include "common.name" . }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + containers: + - env: + - name: MSB_ADDR + value: {{ .Values.config.msbgateway }}.{{ include "common.namespace" . }} + - name: MSB_PORT + value: "{{ .Values.config.msbPort }}" + - name: AAI_ADDR + value: "aai.{{ include "common.namespace" . }}" + - name: AAI_PORT + value: "{{ .Values.config.aai.port }}" + - name: AAI_SCHEMA_VERSION + value: "{{ .Values.config.aai.schemaVersion }}" + - name: AAI_USERNAME + value: "{{ .Values.config.aai.username }}" + - name: AAI_PASSWORD + value: "{{ .Values.config.aai.password }}" + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }} + volumeMounts: + - mountPath: /var/log/onap + name: framework-log + - mountPath: /opt/multivimbroker/multivimbroker/pub/config/log.yml + name: framework-logconfig + subPath: log.yml + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + httpGet: + path: /api/multicloud/v0/swagger.json + port: {{ .Values.service.internalPort }} + scheme: HTTP + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + timeoutSeconds: {{ .Values.liveness.timeoutSeconds }} + successThreshold: {{ .Values.liveness.successThreshold }} + failureThreshold: {{ .Values.liveness.failureThreshold }} + {{ end -}} + + # side car containers + - image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: filebeat-onap + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + name: filebeat-conf + subPath: filebeat.yml + - mountPath: /var/log/onap + name: framework-log + - mountPath: /usr/share/filebeat/data + name: framework-data-filebeat + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + volumes: + - name: framework-log + emptyDir: {} + - name: framework-data-filebeat + emptyDir: {} + - name: filebeat-conf + configMap: + name: multicloud-filebeat-configmap + - name: framework-logconfig + configMap: + name: {{ include "common.fullname" . }}-log-configmap + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" + restartPolicy: Always diff --git a/kubernetes/multicloud/templates/framework-deployment.yaml b/kubernetes/multicloud/templates/framework-deployment.yaml deleted file mode 100644 index b2f0440263..0000000000 --- a/kubernetes/multicloud/templates/framework-deployment.yaml +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMulticloudFramework }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: multicloud-framework - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.frameworkReplicas }} - selector: - matchLabels: - app: framework - template: - metadata: - labels: - app: framework - name: multicloud-framework - spec: - containers: - - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbgateway . }} - - name: MSB_PORT - value: "{{ .Values.msbPort }}" - - name: AAI_ADDR - value: aai-service.{{ .Values.nsPrefix }} - - name: AAI_PORT - value: "8443" - - name: AAI_SCHEMA_VERSION - value: "v11" - - name: AAI_USERNAME - value: "AAI" - - name: AAI_PASSWORD - value: "AAI" - image: {{ .Values.image.framework }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: framework - volumeMounts: - - mountPath: /var/log/onap - name: framework-log - - mountPath: /opt/multivimbroker/multivimbroker/pub/config/log.yml - name: framework-logconfig - subPath: log.yml - ports: - - containerPort: 9001 - livenessProbe: - httpGet: - path: /api/multicloud/v0/swagger.json - port: 9001 - scheme: HTTP - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 10 - successThreshold: 1 - failureThreshold: 5 - - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: filebeat-onap - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - name: filebeat-conf - subPath: filebeat.yml - - mountPath: /var/log/onap - name: framework-log - - mountPath: /usr/share/filebeat/data - name: framework-data-filebeat - volumes: - - name: framework-log - emptyDir: {} - - name: framework-data-filebeat - emptyDir: {} - - name: filebeat-conf - configMap: - name: multicloud-filebeat-configmap - - name: framework-logconfig - configMap: - name: multicloud-framework-log-configmap - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" - restartPolicy: Always -#{{ end }} diff --git a/kubernetes/multicloud/templates/multicloud-log-configmap.yaml b/kubernetes/multicloud/templates/multicloud-log-configmap.yaml deleted file mode 100644 index 1050f1061e..0000000000 --- a/kubernetes/multicloud/templates/multicloud-log-configmap.yaml +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVidVidServer }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: multicloud-filebeat-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: multicloud-framework-log-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/framework/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: multicloud-vio-log-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/vio/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: multicloud-ocata-log-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/ocata/*").AsConfig . | indent 2 }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: multicloud-windriver-log-configmap - namespace: {{ .Values.nsPrefix }} -data: -{{ tpl (.Files.Glob "resources/config/log/windriver/*").AsConfig . | indent 2 }} -#{{ end }} diff --git a/kubernetes/multicloud/templates/multicloud-ocata-deployment.yaml b/kubernetes/multicloud/templates/multicloud-ocata-deployment.yaml deleted file mode 100644 index ecbd74b067..0000000000 --- a/kubernetes/multicloud/templates/multicloud-ocata-deployment.yaml +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMulticloudMulticloudOcata }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: multicloud-ocata - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.ocataReplicas }} - selector: - matchLabels: - app: multicloud-ocata - template: - metadata: - labels: - app: multicloud-ocata - name: multicloud-ocata - spec: - containers: - - env: - - name: MSB_ADDR - value: "{{ tpl .Values.msbgateway . }}" - - name: MSB_PORT - value: "{{ .Values.msbPort }}" - - name: AAI_ADDR - value: aai-service.{{ .Values.nsPrefix }} - - name: AAI_PORT - value: "8443" - - name: AAI_SCHEMA_VERSION - value: "v11" - - name: AAI_USERNAME - value: "AAI" - - name: AAI_PASSWORD - value: "AAI" - name: multicloud-ocata - volumeMounts: - - mountPath: /var/log/onap - name: ocata-log - - mountPath: /opt/ocata/ocata/pub/config/log.yml - name: ocata-logconfig - subPath: log.yml - image: {{ .Values.image.ocata }} - imagePullPolicy: {{ .Values.pullPolicy }} - ports: - - containerPort: 9006 - livenessProbe: - httpGet: - path: /api/multicloud-ocata/v0/swagger.json - port: 9006 - scheme: HTTP - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 10 - successThreshold: 1 - failureThreshold: 5 - - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: filebeat-onap - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - name: filebeat-conf - subPath: filebeat.yml - - mountPath: /var/log/onap - name: ocata-log - - mountPath: /usr/share/filebeat/data - name: ocata-data-filebeat - volumes: - - name: ocata-log - emptyDir: {} - - name: ocata-data-filebeat - emptyDir: {} - - name: filebeat-conf - configMap: - name: multicloud-filebeat-configmap - - name: ocata-logconfig - configMap: - name: multicloud-ocata-log-configmap - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" - restartPolicy: Always -#{{ end }} diff --git a/kubernetes/multicloud/templates/multicloud-vio-deployment.yaml b/kubernetes/multicloud/templates/multicloud-vio-deployment.yaml deleted file mode 100644 index e15108116d..0000000000 --- a/kubernetes/multicloud/templates/multicloud-vio-deployment.yaml +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMulticloudMulticloudVio }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: multicloud-vio - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.vioReplicas }} - selector: - matchLabels: - app: multicloud-vio - template: - metadata: - labels: - app: multicloud-vio - name: multicloud-vio - spec: - containers: - - env: - - name: MSB_ADDR - value: "{{ tpl .Values.msbgateway . }}" - - name: MSB_PORT - value: "{{ .Values.msbPort }}" - - name: AAI_ADDR - value: aai-service.{{ .Values.nsPrefix }} - - name: AAI_PORT - value: "8443" - - name: AAI_SCHEMA_VERSION - value: "v11" - - name: AAI_USERNAME - value: "AAI" - - name: AAI_PASSWORD - value: "AAI" - name: multicloud-vio - volumeMounts: - - mountPath: /var/log/onap - name: vio-log - - mountPath: /opt/vio/vio/pub/config/log.yml - name: vio-logconfig - subPath: log.yml - image: {{ .Values.image.vio }} - imagePullPolicy: {{ .Values.pullPolicy }} - ports: - - containerPort: 9004 - livenessProbe: - httpGet: - path: /api/multicloud-vio/v0/swagger.json - port: 9004 - scheme: HTTP - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 10 - successThreshold: 1 - failureThreshold: 5 - - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: filebeat-onap - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - name: filebeat-conf - subPath: filebeat.yml - - mountPath: /var/log/onap - name: vio-log - - mountPath: /usr/share/filebeat/data - name: vio-data-filebeat - volumes: - - name: vio-log - emptyDir: {} - - name: vio-data-filebeat - emptyDir: {} - - name: filebeat-conf - configMap: - name: multicloud-filebeat-configmap - - name: vio-logconfig - configMap: - name: multicloud-vio-log-configmap - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" - restartPolicy: Always -#{{ end }} diff --git a/kubernetes/multicloud/templates/multicloud-windriver-deployment.yaml b/kubernetes/multicloud/templates/multicloud-windriver-deployment.yaml deleted file mode 100644 index c1b385865b..0000000000 --- a/kubernetes/multicloud/templates/multicloud-windriver-deployment.yaml +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableMulticloudMulticloudWindriver }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: multicloud-windriver - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.windRiverReplicas }} - selector: - matchLabels: - app: multicloud-windriver - template: - metadata: - labels: - app: multicloud-windriver - name: multicloud-windriver - spec: - containers: - - env: - - name: MSB_ADDR - value: "{{ tpl .Values.msbgateway . }}" - - name: MSB_PORT - value: "{{ .Values.msbPort }}" - - name: AAI_ADDR - value: aai-service.{{ .Values.nsPrefix }} - - name: AAI_PORT - value: "8443" - - name: AAI_SCHEMA_VERSION - value: "v11" - - name: AAI_USERNAME - value: "AAI" - - name: AAI_PASSWORD - value: "AAI" - name: multicloud-windriver - volumeMounts: - - mountPath: /var/log/onap - name: windriver-log - - mountPath: /opt/windriver/titanium_cloud/pub/config/log.yml - name: windriver-logconfig - subPath: log.yml - image: {{ .Values.image.windriver }} - imagePullPolicy: {{ .Values.pullPolicy }} - ports: - - containerPort: 9005 - livenessProbe: - httpGet: - path: /api/multicloud-titanium_cloud/v0/swagger.json - port: 9005 - scheme: HTTP - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 10 - successThreshold: 1 - failureThreshold: 5 - - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: filebeat-onap - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - name: filebeat-conf - subPath: filebeat.yml - - mountPath: /var/log/onap - name: windriver-log - - mountPath: /usr/share/filebeat/data - name: windriver-data-filebeat - volumes: - - name: windriver-log - emptyDir: {} - - name: windriver-data-filebeat - emptyDir: {} - - name: filebeat-conf - configMap: - name: multicloud-filebeat-configmap - - name: windriver-logconfig - configMap: - name: multicloud-windriver-log-configmap - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" - restartPolicy: Always -#{{ end }} diff --git a/kubernetes/multicloud/templates/service.yaml b/kubernetes/multicloud/templates/service.yaml new file mode 100644 index 0000000000..9f18c5e236 --- /dev/null +++ b/kubernetes/multicloud/templates/service.yaml @@ -0,0 +1,52 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "multicloud", + "version": "v0", + "url": "/api/multicloud/v0", + "protocol": "REST", + "port": {{ .Values.service.externalPort }}, + "visualRange": "1" + } + ]' +spec: + ports: + {{if eq .Values.service.type "NodePort" -}} + - name: {{ .Values.service.name }} + port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + type: {{ .Values.service.type }} diff --git a/kubernetes/multicloud/values.yaml b/kubernetes/multicloud/values.yaml index d43ee61343..8a30d1aa58 100644 --- a/kubernetes/multicloud/values.yaml +++ b/kubernetes/multicloud/values.yaml @@ -12,25 +12,76 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/multicloud/framework:latest pullPolicy: Always -nodePortPrefix: 302 -dataRootDir: /dockerdata-nfs -frameworkReplicas: 1 -ocataReplicas: 1 -vioReplicas: 1 -windRiverReplicas: 1 -image: - readiness: oomk8s/readiness-check:1.1.0 - framework: nexus3.onap.org:10001/onap/multicloud/framework:latest - vio: nexus3.onap.org:10001/onap/multicloud/vio:latest - ocata: nexus3.onap.org:10001/onap/multicloud/openstack-ocata:latest - windriver: nexus3.onap.org:10001/onap/multicloud/openstack-windriver:latest - filebeat: docker.elastic.co/beats/filebeat:5.5.0 -# domain name of msb gateway -msbgateway: msb-iag.{{ .Values.nsPrefix }} -msbPort: 80 +# application configuration config: + msbgateway: msb-iag + msbPort: 80 logstashServiceName: log-ls logstashPort: 5044 + aai: + port: 8443 + schemaVersion: v11 + username: AAI + password: AAI + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + successThreshold: 1 + failureThreshold: 5 + enabled: true + +service: + type: NodePort + name: multicloud + externalPort: 9001 + internalPort: 9001 + nodePort: 91 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/onap/requirements.yaml b/kubernetes/onap/requirements.yaml index 434acb0faf..8d4f42c676 100644 --- a/kubernetes/onap/requirements.yaml +++ b/kubernetes/onap/requirements.yaml @@ -34,14 +34,14 @@ dependencies: repository: '@local' condition: clamp.enabled - name: cli - version: ~0.1.0 + version: ~2.0.0 repository: '@local' condition: cli.enabled - name: common version: ~2.0.0 repository: '@local' - name: consul - version: ~1.1.0 + version: ~2.0.0 repository: '@local' condition: consul.enabled - name: dcaegen2 @@ -57,7 +57,7 @@ dependencies: repository: '@local' condition: log.enabled - name: message-router - version: ~0.1.0 + version: ~2.0.0 repository: '@local' condition: message-router.enabled - name: mock @@ -69,7 +69,7 @@ dependencies: repository: '@local' condition: msb.enabled - name: multicloud - version: ~1.1.0 + version: ~2.0.0 repository: '@local' condition: multicloud.enabled - name: policy @@ -89,7 +89,7 @@ dependencies: repository: '@local' condition: sdc.enabled - name: sdnc - version: ~0.1.0 + version: ~2.0.0 repository: '@local' condition: sdnc.enabled - name: so @@ -101,7 +101,7 @@ dependencies: repository: '@local' condition: uui.enabled - name: vfc - version: ~0.1.0 + version: ~2.0.0 repository: '@local' condition: vfc.enabled - name: vid @@ -109,6 +109,6 @@ dependencies: repository: '@local' condition: vid.enabled - name: vnfsdk - version: ~1.1.0 + version: ~2.0.0 repository: '@local' condition: vnfsdk.enabled diff --git a/kubernetes/onap/resources/environments/dev.yaml b/kubernetes/onap/resources/environments/dev.yaml index 8bbaa279e8..a8dd5243ff 100644 --- a/kubernetes/onap/resources/environments/dev.yaml +++ b/kubernetes/onap/resources/environments/dev.yaml @@ -23,12 +23,17 @@ global: # with other instances running within the same k8s cluster nodePortPrefix: 302 - # image repositories - repository: nexus3.onap.org:10001 - repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== - # readiness check + # ONAP Repository + # Uncomment the following to enable the use of a single docker + # repository but ONLY if your repository mirrors all ONAP + # docker images. This includes all images from dockerhub and + # any other repository that hosts images for ONAP components. + #repository: nexus3.onap.org:10001 + #repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + + # readiness check - temporary repo until images migrated to nexus3 readinessRepository: oomk8s - # logging agent + # logging agent - temporary repo until images migrated to nexus3 loggingRepository: docker.elastic.co # image pull policy @@ -56,7 +61,7 @@ clamp: enabled: true cli: enabled: false -consul: # Consul Health Check Monitoring +consul: enabled: false dcaegen2: enabled: false @@ -76,13 +81,26 @@ policy: enabled: false portal: enabled: false -robot: # Robot Health Check +robot: enabled: true sdc: enabled: false sdnc: enabled: false -so: # Service Orchestrator + + replicaCount: 1 + + config: + enableClustering: false + + dmaap-listener: + config: + dmaapPort: 3904 + + mysql: + disableNfsProvisioner: false + replicaCount: 1 +so: enabled: true replicaCount: 1 diff --git a/kubernetes/onap/resources/environments/disable-allcharts.yaml b/kubernetes/onap/resources/environments/disable-allcharts.yaml new file mode 100644 index 0000000000..7e27a316cb --- /dev/null +++ b/kubernetes/onap/resources/environments/disable-allcharts.yaml @@ -0,0 +1,73 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# This override file is useful to test one or more subcharts. +# It overrides the default ONAP parent chart behaviour to deploy +# all of ONAP. +# +# Example use to enable a single subchart (from this directory): +# +# helm install local/onap -n onap --namespace onap -f disable-allcharts.yaml --set so.enabled=true + +################################################################# +# Enable/disable and configure helm charts (ie. applications) +# to customize the ONAP deployment. +################################################################# +aaf: + enabled: false +aai: + enabled: false +appc: + enabled: false +clamp: + enabled: false +cli: + enabled: false +consul: + enabled: false +dcaegen2: + enabled: false +esr: + enabled: false +log: + enabled: false +message-router: + enabled: false +mock: + enabled: false +msb: + enabled: false +multicloud: + enabled: false +policy: + enabled: false +portal: + enabled: false +robot: + enabled: false +sdc: + enabled: false +sdnc: + enabled: false +so: + enabled: false +uui: + enabled: false +vfc: + enabled: false +vid: + enabled: false +vnfsdk: + enabled: false
\ No newline at end of file diff --git a/kubernetes/onap/values.yaml b/kubernetes/onap/values.yaml index ee7d00b441..a2427711cd 100644 --- a/kubernetes/onap/values.yaml +++ b/kubernetes/onap/values.yaml @@ -23,12 +23,17 @@ global: # with other instances running within the same k8s cluster nodePortPrefix: 302 - # image repositories - repository: nexus3.onap.org:10001 + # ONAP Repository + # Uncomment the following to enable the use of a single docker + # repository but ONLY if your repository mirrors all ONAP + # docker images. This includes all images from dockerhub and + # any other repository that hosts images for ONAP components. + #repository: nexus3.onap.org:10001 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== - # readiness check + + # readiness check - temporary repo until images migrated to nexus3 readinessRepository: oomk8s - # logging agent + # logging agent - temporary repo until images migrated to nexus3 loggingRepository: docker.elastic.co # image pull policy @@ -57,13 +62,13 @@ clamp: enabled: true cli: enabled: true -consul: # Consul Health Check Monitoring +consul: enabled: true dcaegen2: enabled: true esr: enabled: true -log: # ONAP Logging ElasticStack +log: enabled: true message-router: enabled: true @@ -77,13 +82,26 @@ policy: enabled: true portal: enabled: true -robot: # Robot Health Check +robot: enabled: true sdc: enabled: true sdnc: enabled: true -so: # Service Orchestrator + + replicaCount: 1 + + config: + enableClustering: false + + dmaap-listener: + config: + dmaapPort: 3904 + + mysql: + disableNfsProvisioner: true + replicaCount: 1 +so: enabled: true replicaCount: 1 diff --git a/kubernetes/policy/Chart.yaml b/kubernetes/policy/Chart.yaml index d033bf1858..5922cf8d10 100644 --- a/kubernetes/policy/Chart.yaml +++ b/kubernetes/policy/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: Policy access point +description: ONAP Policy Administration Point name: policy version: 2.0.0 diff --git a/kubernetes/policy/charts/brmsgw/Chart.yaml b/kubernetes/policy/charts/brmsgw/Chart.yaml index d6aafe4488..2a16757f81 100644 --- a/kubernetes/policy/charts/brmsgw/Chart.yaml +++ b/kubernetes/policy/charts/brmsgw/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: Policy BRMS GW +description: ONAP Policy BRMS GW name: brmsgw version: 2.0.0 diff --git a/kubernetes/policy/charts/brmsgw/resources/config/pe/brmsgw.conf b/kubernetes/policy/charts/brmsgw/resources/config/pe/brmsgw.conf index 6a0012dafa..ab8ce5e7ba 100644 --- a/kubernetes/policy/charts/brmsgw/resources/config/pe/brmsgw.conf +++ b/kubernetes/policy/charts/brmsgw/resources/config/pe/brmsgw.conf @@ -18,8 +18,8 @@ BRMSGW_JMX_PORT=9989 COMPONENT_X_MX_MB=1024 COMPONENT_X_MS_MB=1024 -REST_PAP_URL=http://{{ .Release.Name }}-{{ .Values.global.pap.nameOverride }}:9091/pap/ -REST_PDP_ID=http://{{ .Release.Name }}-{{ .Values.global.pdp.nameOverride }}:8081/pdp/ +REST_PAP_URL=http://{{ .Release.Name }}-{{ .Values.global.pap.nameOverride }}:{{.Values.config.papPort}}/pap/ +REST_PDP_ID=http://{{ .Release.Name }}-{{ .Values.global.pdp.nameOverride }}:{{.Values.config.pdpPort}}/pdp/ PDP_HTTP_USER_ID=testpdp PDP_HTTP_PASSWORD=alpha123 @@ -29,10 +29,10 @@ PDP_PAP_PDP_HTTP_PASSWORD=alpha123 M2_HOME=/usr/share/maven snapshotRepositoryID=policy-nexus-snapshots snapshotRepositoryName=Snapshots -snapshotRepositoryURL=http://{{ .Release.Name }}-{{ .Values.global.nexus.nameOverride }}:8081/nexus/content/repositories/snapshots +snapshotRepositoryURL=http://{{ .Release.Name }}-{{ .Values.global.nexus.nameOverride }}:{{.Values.config.nexusPort}}/nexus/content/repositories/snapshots releaseRepositoryID=policy-nexus-releases releaseRepositoryName=Releases -releaseRepositoryURL=http://{{ .Release.Name }}-{{ .Values.global.nexus.nameOverride }}:8081/nexus/content/repositories/releases +releaseRepositoryURL=http://{{ .Release.Name }}-{{ .Values.global.nexus.nameOverride }}:{{.Values.config.nexusPort}}/nexus/content/repositories/releases repositoryUsername=admin repositoryPassword=admin123 UEB_URL=dmaap diff --git a/kubernetes/policy/charts/brmsgw/templates/NOTES.txt b/kubernetes/policy/charts/brmsgw/templates/NOTES.txt index 91d8ed42f1..c60c745ca3 100644 --- a/kubernetes/policy/charts/brmsgw/templates/NOTES.txt +++ b/kubernetes/policy/charts/brmsgw/templates/NOTES.txt @@ -13,7 +13,7 @@ export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') echo http://$SERVICE_IP:{{ .Values.service.externalPort }} {{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} {{- end }} diff --git a/kubernetes/policy/charts/brmsgw/templates/deployment.yaml b/kubernetes/policy/charts/brmsgw/templates/deployment.yaml index cd715e4606..e0969022f6 100644 --- a/kubernetes/policy/charts/brmsgw/templates/deployment.yaml +++ b/kubernetes/policy/charts/brmsgw/templates/deployment.yaml @@ -71,8 +71,12 @@ spec: - mountPath: /etc/localtime name: localtime readOnly: true - - mountPath: /tmp/policy-install/config + - mountPath: /tmp/policy-install/config/brmsgw-tweaks.sh name: pe-brmsgw + subPath: brmsgw-tweaks.sh + - mountPath: /tmp/policy-install/config/brmsgw.conf + name: pe-brmsgw + subPath: brmsgw.conf - mountPath: /tmp/policy-install/config/base.conf name: pe subPath: base.conf diff --git a/kubernetes/policy/charts/brmsgw/values.yaml b/kubernetes/policy/charts/brmsgw/values.yaml index 3890e9e6ab..e436c0ef59 100644 --- a/kubernetes/policy/charts/brmsgw/values.yaml +++ b/kubernetes/policy/charts/brmsgw/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.0.0 + readinessImage: readiness-check:2.0.0 ################################################################# # Application configuration defaults. @@ -33,10 +33,10 @@ pullPolicy: Always debugEnabled: false # application configuration -# Example: -config: {} -# username: myusername -# password: mypassword +config: + papPort: 9091 + pdpPort: 8081 + nexusPort: 8081 # default number of instances replicaCount: 1 diff --git a/kubernetes/policy/charts/drools/Chart.yaml b/kubernetes/policy/charts/drools/Chart.yaml index 4f753c07f4..15ad44b6a3 100644 --- a/kubernetes/policy/charts/drools/Chart.yaml +++ b/kubernetes/policy/charts/drools/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: Drools Policy Engine +description: ONAP Drools Policy Engine name: drools version: 2.0.0 diff --git a/kubernetes/policy/charts/drools/charts/nexus/Chart.yaml b/kubernetes/policy/charts/drools/charts/nexus/Chart.yaml index 65916b652c..c16f6450a4 100644 --- a/kubernetes/policy/charts/drools/charts/nexus/Chart.yaml +++ b/kubernetes/policy/charts/drools/charts/nexus/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: Policy Nexus +description: ONAP Policy Nexus name: nexus version: 2.0.0 diff --git a/kubernetes/policy/charts/drools/charts/nexus/templates/deployment.yaml b/kubernetes/policy/charts/drools/charts/nexus/templates/deployment.yaml index 910ade9108..c4cc253b7f 100644 --- a/kubernetes/policy/charts/drools/charts/nexus/templates/deployment.yaml +++ b/kubernetes/policy/charts/drools/charts/nexus/templates/deployment.yaml @@ -30,21 +30,6 @@ spec: app: {{ include "common.name" . }} release: {{ .Release.Name }} spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - {{ .Values.global.mariadb.nameOverride }} - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" - imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} - name: {{ include "common.name" . }}-readiness containers: - name: {{ include "common.name" . }} image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" diff --git a/kubernetes/policy/charts/drools/charts/nexus/values.yaml b/kubernetes/policy/charts/drools/charts/nexus/values.yaml index f8d80b0fca..d197ef6709 100644 --- a/kubernetes/policy/charts/drools/charts/nexus/values.yaml +++ b/kubernetes/policy/charts/drools/charts/nexus/values.yaml @@ -19,24 +19,21 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.0.0 + readinessImage: readiness-check:2.0.0 ################################################################# # Application configuration defaults. ################################################################# # application image repository: nexus3.onap.org:10001 -image: onap/policy-nexus:1.2-SNAPSHOT-latest +image: sonatype/nexus:2.14.8-01 pullPolicy: Always # flag to enable debugging - application support required debugEnabled: false # application configuration -# Example: config: {} -# username: myusername -# password: mypassword # default number of instances replicaCount: 1 diff --git a/kubernetes/policy/charts/drools/resources/config/drools/settings.xml b/kubernetes/policy/charts/drools/resources/config/drools/settings.xml index e899a004da..8b110bddd3 100755 --- a/kubernetes/policy/charts/drools/resources/config/drools/settings.xml +++ b/kubernetes/policy/charts/drools/resources/config/drools/settings.xml @@ -47,7 +47,7 @@ <repositories> <repository> <id>policy-nexus-snapshots</id> - <url>http://{{.Release.Name}}-{{.Values.global.nexus.nameOverride}}:8081/nexus/content/repositories/snapshots/</url> + <url>http://{{.Release.Name}}-{{.Values.global.nexus.nameOverride}}:{{.Values.config.nexusPort}}/nexus/content/repositories/snapshots/</url> <releases> <enabled>false</enabled> <updatePolicy>always</updatePolicy> @@ -60,7 +60,7 @@ <repository> <id>policy-nexus-releases</id> - <url>http://{{.Release.Name}}-{{.Values.global.nexus.nameOverride}}:8081/nexus/content/repositories/releases/</url> + <url>http://{{.Release.Name}}-{{.Values.global.nexus.nameOverride}}:{{.Values.config.nexusPort}}/nexus/content/repositories/releases/</url> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> diff --git a/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/apps-install.sh b/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/apps-install.sh new file mode 100644 index 0000000000..72f7a74695 --- /dev/null +++ b/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/apps-install.sh @@ -0,0 +1,124 @@ +#!/bin/bash +# +# ============LICENSE_START======================================================= +# ONAP +# ================================================================================ +# Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# + +# ################################# +# Usage +# ################################# + +function usage { + echo + echo "Usage: $(basename $0) <application-name> <zipped-application-version> <download-directory>" + echo "Example: $(basename $0) controlloop 1.2.0 /opt/policy/config/drools" + echo +} + +# ################################# +# snapshot url computation +# ################################# + +function url_snapshot { + if [[ $DEBUG == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + APP_URL="${APP_URL}/snapshots/org/onap/policy/drools-applications/${APP_NAME}/packages/apps-${APP_NAME}/${APP_VERSION}" + + local APP_METADATA_URL="${APP_URL}/maven-metadata.xml" + local APP_SNAPSHOT_VERSION=$(curl --silent "${APP_METADATA_URL}" | grep -Po "(?<=<value>).*(?=</value>)" | sort -V | tail -1) + + if [[ -z ${APP_SNAPSHOT_VERSION} ]]; then + echo "ERROR: cannot compute SNAPSHOT version" + usage + exit 1 + fi + + APP_URL="${APP_URL}/apps-${APP_NAME}-${APP_SNAPSHOT_VERSION}.zip" +} + +# ################################# +# release url computation +# ################################# + +function url_release { + if [[ $DEBUG == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + APP_URL="${APP_URL}/releases/org/onap/policy/drools-applications/${APP_NAME}/packages/apps-${APP_NAME}/${APP_VERSION}/apps-${APP_NAME}-${APP_VERSION}.zip" +} + +# ################################# +# Main +# ################################# + +if [[ $DEBUG == y ]]; then + set -x +fi + +APP_NAME=$1 +if [[ -z ${APP_NAME} ]]; then + echo "ERROR: no APPLICATION NAME provided (ie. controlloop)" + usage + exit 1 +fi + +APP_VERSION=$2 +if [[ -z ${APP_VERSION} ]]; then + echo "ERROR: no APPLICATION VERSION provided" + usage + exit 1 +fi + +DOWNLOAD_DIR=$3 +if [[ -z ${DOWNLOAD_DIR} ]]; then + echo "ERROR: no DOWNLOAD DIRECTORY provided" + usage + exit 1 +fi + +if [[ ! -d ${DOWNLOAD_DIR} ]]; then + echo "ERROR: ${DOWNLOAD_DIR} is not a directory" + usage + exit 1 +fi + +APP_GROUP_ID="org.onap.policy.drools-applications.${APP_NAME}.packages" +APP_ARTIFACT_ID="apps-${APP_NAME}" +APP_BASE_URL="https://nexus.onap.org/content/repositories" + +APP_URL="${APP_BASE_URL}" + +if [[ ${APP_VERSION} =~ \-SNAPSHOT$ ]]; then + url_snapshot +else + url_release +fi + +wget "${APP_URL}" -O "${DOWNLOAD_DIR}"/apps-"${APP_NAME}".zip +if [[ $? != 0 ]]; then + echo "ERROR: cannot download ${DOWNLOAD_DIR}/apps-${APP_NAME}.zip" + exit 1 +fi + +echo "APP ${APP_NAME} stored at ${DOWNLOAD_DIR}/apps-${APP_NAME}.zip" +ls -l "${DOWNLOAD_DIR}"/apps-"${APP_NAME}".zip diff --git a/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/base.conf b/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/base.conf index aec7bf20ee..a7ab3ee141 100644 --- a/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/base.conf +++ b/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/base.conf @@ -1,4 +1,4 @@ -# Copyright © 2017 Amdocs, Bell Canada, AT&T +# Copyright © 2017-2018 Amdocs, Bell Canada, AT&T # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,9 +15,9 @@ # SYSTEM software configuration POLICY_HOME=/opt/app/policy -POLICY_LOGS=/var/log/ONAP/policy +POLICY_LOGS=/var/log/onap/policy/pdpd JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 -KEYSTORE_PASSWD=PolicyR0ck$ +KEYSTORE_PASSWD=Pol1cy_0nap # Telemetry credentials @@ -29,9 +29,9 @@ ENGINE_MANAGEMENT_PASSWORD=31nst31n # nexus repository snapshotRepositoryID=policy-nexus-snapshots -snapshotRepositoryUrl=http://{{.Release.Name}}-{{.Values.global.nexus.nameOverride}}:8081/nexus/content/repositories/snapshots/ +snapshotRepositoryUrl=http://{{.Release.Name}}-{{.Values.global.nexus.nameOverride}}:{{.Values.config.nexusPort}}/nexus/content/repositories/snapshots/ releaseRepositoryID=policy-nexus-releases -releaseRepositoryUrl=http://{{.Release.Name}}-{{.Values.global.nexus.nameOverride}}:8081/nexus/content/repositories/releases/ +releaseRepositoryUrl=http://{{.Release.Name}}-{{.Values.global.nexus.nameOverride}}:{{.Values.config.nexusPort}}/nexus/content/repositories/releases/ repositoryUsername=admin repositoryPassword=admin123 diff --git a/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/drools-tweaks.sh b/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/drools-tweaks.sh index 62822ac824..65ef7053cd 100644 --- a/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/drools-tweaks.sh +++ b/kubernetes/policy/charts/drools/resources/config/opt/policy/config/drools/drools-tweaks.sh @@ -1,4 +1,6 @@ -# Copyright © 2017 Amdocs, Bell Canada, AT&T +#! /bin/bash + +# Copyright © 2017-2018 Amdocs, Bell Canada, AT&T # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +14,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -#! /bin/bash ${POLICY_HOME}/bin/features enable healthcheck diff --git a/kubernetes/policy/charts/drools/templates/NOTES.txt b/kubernetes/policy/charts/drools/templates/NOTES.txt index 91d8ed42f1..c60c745ca3 100644 --- a/kubernetes/policy/charts/drools/templates/NOTES.txt +++ b/kubernetes/policy/charts/drools/templates/NOTES.txt @@ -13,7 +13,7 @@ export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') echo http://$SERVICE_IP:{{ .Values.service.externalPort }} {{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} {{- end }} diff --git a/kubernetes/policy/charts/drools/templates/deployment.yaml b/kubernetes/policy/charts/drools/templates/statefulset.yaml index 349f88245e..7a616d71e6 100644 --- a/kubernetes/policy/charts/drools/templates/deployment.yaml +++ b/kubernetes/policy/charts/drools/templates/statefulset.yaml @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -apiVersion: extensions/v1beta1 -kind: Deployment +apiVersion: apps/v1beta1 +kind: StatefulSet metadata: name: {{ include "common.fullname" . }} namespace: {{ include "common.namespace" . }} @@ -23,7 +23,11 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} spec: + serviceName: {{ include "common.fullname" . }} replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ include "common.name" . }} template: metadata: labels: @@ -48,7 +52,7 @@ spec: imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} name: {{ include "common.name" . }}-readiness hostAliases: - - ip: "{{ .Values.aaiServiceClusterIp }}" + - ip: "{{ .Values.config.aaiServiceClusterIp }}" hostnames: - "aai.api.simpledemo.openecomp.org" containers: @@ -96,6 +100,9 @@ spec: - mountPath: /tmp/policy-install/config/drools-tweaks.sh name: drools-config subPath: drools-tweaks.sh + - mountPath: /tmp/policy-install/config/apps-install.sh + name: drools-config + subPath: apps-install.sh - mountPath: /usr/share/maven/conf/settings.xml name: drools-settingsxml subPath: settings.xml diff --git a/kubernetes/policy/charts/drools/values.yaml b/kubernetes/policy/charts/drools/values.yaml index 14ebe31be2..5006bc01f8 100644 --- a/kubernetes/policy/charts/drools/values.yaml +++ b/kubernetes/policy/charts/drools/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.0.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 ubuntuImage: ubuntu:16.04 @@ -28,21 +28,19 @@ global: ################################################################# # application image repository: nexus3.onap.org:10001 -image: onap/policy-drools:1.2-SNAPSHOT-latest +image: onap/policy-drools:1.2-STAGING-latest pullPolicy: Always # flag to enable debugging - application support required debugEnabled: false -aaiServiceClusterIp: 10.43.255.254 # application configuration -# Example: -config: {} -# username: myusername -# password: mypassword +config: + nexusPort: 8081 + aaiServiceClusterIp: 10.43.255.254 # default number of instances -replicaCount: 1 +replicaCount: 4 nodeSelector: {} diff --git a/kubernetes/policy/charts/mariadb/Chart.yaml b/kubernetes/policy/charts/mariadb/Chart.yaml index c420e67379..c7c9a7d0a1 100644 --- a/kubernetes/policy/charts/mariadb/Chart.yaml +++ b/kubernetes/policy/charts/mariadb/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: Policy MariaDB Service +description: ONAP Policy MariaDB Service name: mariadb version: 2.0.0 diff --git a/kubernetes/policy/charts/mariadb/templates/deployment.yaml b/kubernetes/policy/charts/mariadb/templates/deployment.yaml index 65eb02cd6e..1709af7df2 100644 --- a/kubernetes/policy/charts/mariadb/templates/deployment.yaml +++ b/kubernetes/policy/charts/mariadb/templates/deployment.yaml @@ -39,6 +39,8 @@ spec: # disable liveness probe when breakpoints set in debugger # so K8s doesn't restart unresponsive container {{- if eq .Values.liveness.enabled true }} + args: + - --lower-case-table-names=1 livenessProbe: tcpSocket: port: {{ .Values.service.internalPort }} diff --git a/kubernetes/policy/charts/mariadb/templates/pv.yaml b/kubernetes/policy/charts/mariadb/templates/pv.yaml index da117f4919..8be3d4c9cb 100644 --- a/kubernetes/policy/charts/mariadb/templates/pv.yaml +++ b/kubernetes/policy/charts/mariadb/templates/pv.yaml @@ -33,5 +33,5 @@ spec: - {{ .Values.persistence.accessMode }} persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} hostPath: - path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }} + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Namespace }}/{{ .Values.persistence.mountSubPath }} {{- end -}} diff --git a/kubernetes/policy/charts/pdp/Chart.yaml b/kubernetes/policy/charts/pdp/Chart.yaml index 09a65ead9d..b849e18b3a 100644 --- a/kubernetes/policy/charts/pdp/Chart.yaml +++ b/kubernetes/policy/charts/pdp/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: Policy PDP +description: ONAP Policy PDP name: pdp version: 2.0.0 diff --git a/kubernetes/policy/charts/pdp/resources/config/pe/pdp.conf b/kubernetes/policy/charts/pdp/resources/config/pe/pdp.conf index 9dae9f2552..8325d42ddf 100644 --- a/kubernetes/policy/charts/pdp/resources/config/pe/pdp.conf +++ b/kubernetes/policy/charts/pdp/resources/config/pe/pdp.conf @@ -29,8 +29,8 @@ TOMCAT_X_MX_MB=1024 UEB_CLUSTER=dmaap -REST_PAP_URL=http://{{ .Release.Name }}-{{ .Values.global.pap.nameOverride }}:9091/pap/ -REST_PDP_ID=http://{{ include "common.fullname" . }}:8081/pdp/ +REST_PAP_URL=http://{{ .Release.Name }}-{{ .Values.global.pap.nameOverride }}:{{.Values.config.papPort}}/pap/ +REST_PDP_ID=http://{{ include "common.fullname" . }}:{{.Values.service.externalPort}}/pdp/ REST_PDP_CONFIG=/opt/app/policy/servers/pdp/bin/config REST_PDP_WEBAPPS=/opt/app/policy/servers/pdp/webapps REST_PDP_REGISTER=true diff --git a/kubernetes/policy/charts/pdp/resources/config/pe/pdplp.conf b/kubernetes/policy/charts/pdp/resources/config/pe/pdplp.conf index 141eb28acd..2021c09439 100644 --- a/kubernetes/policy/charts/pdp/resources/config/pe/pdplp.conf +++ b/kubernetes/policy/charts/pdp/resources/config/pe/pdplp.conf @@ -17,7 +17,7 @@ LOGPARSER_JMX_PORT=9997 LOGPARSER_X_MS_MB=1024 LOGPARSER_X_MX_MB=1024 -SERVER=http://{{ include "common.fullname" . }}:8081/pdp/ +SERVER=http://{{ include "common.fullname" . }}:{{.Values.service.externalPort}}/pdp/ LOGPATH=/opt/app/policy/servers/pdp/logs/pdp-rest.log PARSERLOGPATH=IntegrityMonitor.log diff --git a/kubernetes/policy/charts/pdp/templates/NOTES.txt b/kubernetes/policy/charts/pdp/templates/NOTES.txt index 91d8ed42f1..c60c745ca3 100644 --- a/kubernetes/policy/charts/pdp/templates/NOTES.txt +++ b/kubernetes/policy/charts/pdp/templates/NOTES.txt @@ -13,7 +13,7 @@ export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') echo http://$SERVICE_IP:{{ .Values.service.externalPort }} {{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} {{- end }} diff --git a/kubernetes/policy/charts/pdp/templates/service.yaml b/kubernetes/policy/charts/pdp/templates/service.yaml index aed3fd1ae9..df63d38c54 100644 --- a/kubernetes/policy/charts/pdp/templates/service.yaml +++ b/kubernetes/policy/charts/pdp/templates/service.yaml @@ -29,7 +29,7 @@ metadata: "version": "v1", "url": "/pdp", "protocol": "REST", - "port": "8081", + "port": "{{ .Values.service.externalPort }}", "visualRange":"1" }, ]' @@ -49,4 +49,3 @@ spec: app: {{ include "common.name" . }} release: {{ .Release.Name }} sessionAffinity: None - diff --git a/kubernetes/policy/charts/pdp/templates/statefulset.yaml b/kubernetes/policy/charts/pdp/templates/statefulset.yaml index 367cde49bd..d09c446381 100644 --- a/kubernetes/policy/charts/pdp/templates/statefulset.yaml +++ b/kubernetes/policy/charts/pdp/templates/statefulset.yaml @@ -78,8 +78,15 @@ spec: - mountPath: /tmp/policy-install/config/base.conf name: pe subPath: base.conf - - mountPath: /tmp/policy-install/config/ + - mountPath: /tmp/policy-install/config/pdp-tweaks.sh name: pe-pdp + subPath: pdp-tweaks.sh + - mountPath: /tmp/policy-install/config/pdplp.conf + name: pe-pdp + subPath: pdplp.conf + - mountPath: /tmp/policy-install/config/pdp.conf + name: pe-pdp + subPath: pdp.conf - mountPath: /tmp/policy-install/do-start.sh name: pe-scripts subPath: do-start.sh diff --git a/kubernetes/policy/charts/pdp/values.yaml b/kubernetes/policy/charts/pdp/values.yaml index c2b7580347..9595b9d40c 100644 --- a/kubernetes/policy/charts/pdp/values.yaml +++ b/kubernetes/policy/charts/pdp/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 @@ -35,13 +35,11 @@ pullPolicy: Always debugEnabled: false # application configuration -# Example: -config: {} -# username: myusername -# password: mypassword +config: + papPort: 9091 # default number of instances -replicaCount: 1 +replicaCount: 2 nodeSelector: {} diff --git a/kubernetes/policy/charts/policy-common/Chart.yaml b/kubernetes/policy/charts/policy-common/Chart.yaml index f853be0bc8..be8724932c 100644 --- a/kubernetes/policy/charts/policy-common/Chart.yaml +++ b/kubernetes/policy/charts/policy-common/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: Policy Common +description: ONAP Policy Common name: policy-common version: 2.0.0 diff --git a/kubernetes/policy/charts/policy-common/resources/config/pe/base.conf b/kubernetes/policy/charts/policy-common/resources/config/pe/base.conf index 885a114a97..4549406f76 100644 --- a/kubernetes/policy/charts/policy-common/resources/config/pe/base.conf +++ b/kubernetes/policy/charts/policy-common/resources/config/pe/base.conf @@ -14,11 +14,12 @@ JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 POLICY_HOME=/opt/app/policy -KEYSTORE_PASSWD=PolicyR0ck$ +POLICY_LOGS=/var/log/onap +KEYSTORE_PASSWD=Pol1cy_0nap JDBC_DRIVER=org.mariadb.jdbc.Driver -JDBC_URL=jdbc:mariadb://{{ .Release.Name }}-{{ .Values.global.mariadb.nameOverride }}:3306/onap_sdk?failOverReadOnly=false&autoReconnect=true -JDBC_LOG_URL=jdbc:mariadb://{{ .Release.Name }}-{{ .Values.global.mariadb.nameOverride }}:3306/log?failOverReadOnly=false&autoReconnect=true +JDBC_URL=jdbc:mariadb://{{ .Release.Name }}-{{ .Values.global.mariadb.nameOverride }}:{{.Values.config.mariadbPort}}/onap_sdk?failOverReadOnly=false&autoReconnect=true +JDBC_LOG_URL=jdbc:mariadb://{{ .Release.Name }}-{{ .Values.global.mariadb.nameOverride }}:{{.Values.config.mariadbPort}}/log?failOverReadOnly=false&autoReconnect=true JDBC_USER=policy_user JDBC_PASSWORD=policy_user diff --git a/kubernetes/policy/charts/policy-common/templates/NOTES.txt b/kubernetes/policy/charts/policy-common/templates/NOTES.txt index 91d8ed42f1..c60c745ca3 100644 --- a/kubernetes/policy/charts/policy-common/templates/NOTES.txt +++ b/kubernetes/policy/charts/policy-common/templates/NOTES.txt @@ -13,7 +13,7 @@ export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') echo http://$SERVICE_IP:{{ .Values.service.externalPort }} {{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} {{- end }} diff --git a/kubernetes/policy/charts/policy-common/values.yaml b/kubernetes/policy/charts/policy-common/values.yaml index 8ac609d264..268d08bdf7 100644 --- a/kubernetes/policy/charts/policy-common/values.yaml +++ b/kubernetes/policy/charts/policy-common/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.0.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 @@ -27,10 +27,10 @@ global: debugEnabled: false # application configuration -# Example: config: logstashServiceName: log-ls logstashPort: 5044 + mariadbPort: 3306 # default number of instances replicaCount: 1 diff --git a/kubernetes/policy/requirements.yaml b/kubernetes/policy/requirements.yaml index 2bf0d7b9e5..f639633537 100644 --- a/kubernetes/policy/requirements.yaml +++ b/kubernetes/policy/requirements.yaml @@ -18,4 +18,4 @@ dependencies: # local reference to common chart, as it is # a part of this chart's package and will not # be published independently to a repo (at this point) - repository: '@local' + repository: '@local' diff --git a/kubernetes/policy/resources/config/pe/console.conf b/kubernetes/policy/resources/config/pe/console.conf index 3ed6ed439c..a47956bd21 100644 --- a/kubernetes/policy/resources/config/pe/console.conf +++ b/kubernetes/policy/resources/config/pe/console.conf @@ -91,7 +91,7 @@ REFRESH_RATE=40000 # -REST_PAP_URL=http://{{.Release.Name}}-{{.Values.global.pap.nameOverride}}:9091/pap/ +REST_PAP_URL=http://{{.Release.Name}}-{{.Values.global.pap.nameOverride}}:{{.Values.service.externalPort2}}/pap/ # # Config/Action Properties location. @@ -99,7 +99,7 @@ REST_PAP_URL=http://{{.Release.Name}}-{{.Values.global.pap.nameOverride}}:9091/p REST_CONFIG_HOME=/opt/app/policy/servers/pap/webapps/Config/ REST_ACTION_HOME=/opt/app/policy/servers/pap/webapps/Action/ -REST_CONFIG_URL=http://{{.Release.Name}}-{{.Values.global.pap.nameOverride}}:9091/ +REST_CONFIG_URL=http://{{.Release.Name}}-{{.Values.global.pap.nameOverride}}:{{.Values.service.externalPort2}}/ REST_CONFIG_WEBAPPS=/opt/app/policy/servers/pap/webapps/ # PAP account information diff --git a/kubernetes/policy/resources/config/pe/pap.conf b/kubernetes/policy/resources/config/pe/pap.conf index 28c2da1a14..768ebc9d23 100644 --- a/kubernetes/policy/resources/config/pe/pap.conf +++ b/kubernetes/policy/resources/config/pe/pap.conf @@ -28,7 +28,7 @@ TOMCAT_X_MX_MB=1024 # pap properties PAP_PDPS=/opt/app/policy/servers/pap/bin/pdps -PAP_URL=http://{{ include "common.fullname" . }}:9091/pap/ +PAP_URL=http://{{ include "common.fullname" . }}:{{.Values.service.externalPort2}}/pap/ PAP_INITIATE_PDP=true PAP_HEARTBEAT_INTERVAL=10000 @@ -39,8 +39,7 @@ REST_ADMIN_REPOSITORY=repository REST_ADMIN_WORKSPACE=workspace # PDP related properties - -PAP_PDP_URL=http://{{ .Release.Name }}-{{ .Values.global.pdp.nameOverride }}:8081/pdp/ +PAP_PDP_URL=http://{{ .Release.Name }}-{{ .Values.global.pdp.nameOverride }}-0.{{ .Release.Name }}-{{ .Values.global.pdp.nameOverride }}:{{ .Values.config.pdpPort }}/pdp/,http://{{ .Release.Name }}-{{ .Values.global.pdp.nameOverride }}-1.{{ .Release.Name }}-{{ .Values.global.pdp.nameOverride }}:{{ .Values.config.pdpPort }}/pdp/ PAP_PDP_HTTP_USER_ID=testpdp PAP_PDP_HTTP_PASSWORD=alpha123 diff --git a/kubernetes/policy/resources/config/pe/paplp.conf b/kubernetes/policy/resources/config/pe/paplp.conf index 7124fde01a..430feb4064 100644 --- a/kubernetes/policy/resources/config/pe/paplp.conf +++ b/kubernetes/policy/resources/config/pe/paplp.conf @@ -17,7 +17,7 @@ LOGPARSER_JMX_PORT=9996 LOGPARSER_X_MS_MB=1024 LOGPARSER_X_MX_MB=1024 -SERVER=http://{{ include "common.fullname" . }}:9091/pap/ +SERVER=http://{{ include "common.fullname" . }}:{{.Values.service.externalPort2}}/pap/ LOGPATH=/opt/app/policy/servers/pap/logs/pap-rest.log PARSERLOGPATH=IntegrityMonitor.log diff --git a/kubernetes/policy/resources/config/pe/push-policies.sh b/kubernetes/policy/resources/config/pe/push-policies.sh index 5e0172bce9..3392fc743c 100644 --- a/kubernetes/policy/resources/config/pe/push-policies.sh +++ b/kubernetes/policy/resources/config/pe/push-policies.sh @@ -26,7 +26,7 @@ wget -O cl-amsterdam-template.drl https://git.onap.org/policy/drools-application sleep 2 -curl -v --silent -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -F "file=@cl-amsterdam-template.drl" -F "importParametersJson={\"serviceName\":\"ClosedLoopControlName\",\"serviceType\":\"BRMSPARAM\"}" 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/policyEngineImport' +curl -v --silent -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -F "file=@cl-amsterdam-template.drl" -F "importParametersJson={\"serviceName\":\"ClosedLoopControlName\",\"serviceType\":\"BRMSPARAM\"}" 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/policyEngineImport' echo "PRELOAD_POLICIES is $PRELOAD_POLICIES" @@ -56,7 +56,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a%0D%0A++trigger_policy%3A+unique-policy-id-1-modifyConfig%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-modifyConfig%0D%0A++++name%3A+modify+packet+gen+config%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+ModifyConfig%0D%0A++++target%3A%0D%0A++++++%23+TBD+-+Cannot+be+known+until+instantiation+is+done%0D%0A++++++resourceID%3A+Eace933104d443b496b8.nodes.heat.vpg%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+300%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard" } } -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/createPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/createPolicy' sleep 2 @@ -76,7 +76,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0D%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-scale-up%0D%0A++++name%3A+Create+a+new+VF+Module%0D%0A++++description%3A%0D%0A++++actor%3A+SO%0D%0A++++recipe%3A+VF+Module+Create%0D%0A++++target%3A%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard" } } -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/createPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/createPolicy' sleep 2 @@ -96,7 +96,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b%0D%0A++trigger_policy%3A+unique-policy-id-1-restart%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-restart%0D%0A++++name%3A+Restart+the+VM%0D%0A++++description%3A%0D%0A++++actor%3A+VFC%0D%0A++++recipe%3A+Restart%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard" } } -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/createPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/createPolicy' sleep 2 @@ -116,7 +116,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0D%0A++trigger_policy%3A+unique-policy-id-1-restart%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+true%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-restart%0D%0A++++name%3A+Restart+the+VM%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+Restart%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard" } } -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/createPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/createPolicy' #########################################Create Micro Service Config policies########################################## @@ -130,7 +130,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "policyConfigType": "MicroService", "policyName": "com.MicroServicevFirewall", "onapName": "DCAE" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/createPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/createPolicy' sleep 2 @@ -141,7 +141,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "policyConfigType": "MicroService", "policyName": "com.MicroServicevDNS", "onapName": "DCAE" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/createPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/createPolicy' sleep 2 @@ -152,7 +152,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "policyConfigType": "MicroService", "policyName": "com.MicroServicevCPE", "onapName": "DCAE" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/createPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/createPolicy' #########################################Creating Decision Guard policy######################################### @@ -179,7 +179,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "guardActiveEnd": "00:00:00-05:00" } } -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/createPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/createPolicy' #########################################Push Decision policy######################################### @@ -190,7 +190,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "pdpGroup": "default", "policyName": "com.AllPermitGuard", "policyType": "DECISION" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/pushPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/pushPolicy' #########################################Pushing BRMS Param policies########################################## @@ -203,7 +203,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "pdpGroup": "default", "policyName": "com.BRMSParamvFirewall", "policyType": "BRMS_Param" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/pushPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/pushPolicy' sleep 2 @@ -212,7 +212,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "pdpGroup": "default", "policyName": "com.BRMSParamvDNS", "policyType": "BRMS_Param" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/pushPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/pushPolicy' sleep 2 @@ -221,7 +221,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "pdpGroup": "default", "policyName": "com.BRMSParamVOLTE", "policyType": "BRMS_Param" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/pushPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/pushPolicy' sleep 2 @@ -230,7 +230,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "pdpGroup": "default", "policyName": "com.BRMSParamvCPE", "policyType": "BRMS_Param" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/pushPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/pushPolicy' #########################################Pushing MicroService Config policies########################################## @@ -243,7 +243,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "pdpGroup": "default", "policyName": "com.MicroServicevFirewall", "policyType": "MicroService" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/pushPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/pushPolicy' sleep 10 @@ -252,7 +252,7 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "pdpGroup": "default", "policyName": "com.MicroServicevDNS", "policyType": "MicroService" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/pushPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/pushPolicy' sleep 10 @@ -261,4 +261,4 @@ curl -v --silent -X PUT --header 'Content-Type: application/json' --header 'Acce "pdpGroup": "default", "policyName": "com.MicroServicevCPE", "policyType": "MicroService" -}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:8081/pdp/api/pushPolicy' +}' 'http://{{.Release.Name}}-{{.Values.global.pdp.nameOverride}}:{{.Values.config.pdpPort}}/pdp/api/pushPolicy' diff --git a/kubernetes/policy/templates/NOTES.txt b/kubernetes/policy/templates/NOTES.txt index 91d8ed42f1..c60c745ca3 100644 --- a/kubernetes/policy/templates/NOTES.txt +++ b/kubernetes/policy/templates/NOTES.txt @@ -13,7 +13,7 @@ export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') echo http://$SERVICE_IP:{{ .Values.service.externalPort }} {{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} {{- end }} diff --git a/kubernetes/policy/templates/deployment.yaml b/kubernetes/policy/templates/deployment.yaml index 88b3de35c0..8dca8ab34f 100644 --- a/kubernetes/policy/templates/deployment.yaml +++ b/kubernetes/policy/templates/deployment.yaml @@ -45,19 +45,6 @@ spec: image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} name: {{ include "common.name" . }}-readiness - - command: ["/bin/bash", "-c", "echo $POD_IP > /config/ip_addr.txt"] - env: - - name: POD_IP - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: status.podIP - volumeMounts: - - mountPath: /config/ - name: pe - image: {{ .Values.global.ubuntuImage }} - imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} - name: generate-ip-addr-txt containers: - command: - /bin/bash @@ -88,11 +75,30 @@ spec: - mountPath: /etc/localtime name: localtime readOnly: true + - mountPath: /tmp/policy-install/config/push-policies.sh + name: pe-pap + subPath: push-policies.sh + - mountPath: /tmp/policy-install/config/pap-tweaks.sh + name: pe-pap + subPath: pap-tweaks.sh + - mountPath: /tmp/policy-install/config/paplp.conf + name: pe-pap + subPath: paplp.conf + - mountPath: /tmp/policy-install/config/pap.conf + name: pe-pap + subPath: pap.conf + - mountPath: /tmp/policy-install/config/mysql.conf + name: pe-pap + subPath: mysql.conf + - mountPath: /tmp/policy-install/config/elk.conf + name: pe-pap + subPath: elk.conf + - mountPath: /tmp/policy-install/config/console.conf + name: pe-pap + subPath: console.conf - mountPath: /tmp/policy-install/config/base.conf name: pe subPath: base.conf - - mountPath: /tmp/policy-install/config/ - name: pe-pap - mountPath: /tmp/policy-install/do-start.sh name: pe-scripts subPath: do-start.sh diff --git a/kubernetes/policy/values.yaml b/kubernetes/policy/values.yaml index 171ea1078c..bfd2ae1ecf 100644 --- a/kubernetes/policy/values.yaml +++ b/kubernetes/policy/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.0.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 ubuntuImage: ubuntu:16.04 @@ -41,7 +41,7 @@ global: ################################################################# # application image repository: nexus3.onap.org:10001 -image: onap/policy-pe:1.2-SNAPSHOT-latest +image: onap/policy-pe:1.2-STAGING-latest pullPolicy: Always subChartsOnly: @@ -64,9 +64,9 @@ nexus: debugEnabled: false # application configuration -# Example: config: preloadPolicies: true + pdpPort: 8081 # default number of instances replicaCount: 1 diff --git a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/music.properties b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/music.properties index 95ece9e912..3fada2e063 100644 --- a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/music.properties +++ b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/music.properties @@ -13,7 +13,7 @@ music.serialize.compress = true #By default it's eventual music.atomic.get = false music.atomic.put = true -cassandra.host={{.Values.cassandra.service.name}}.{{.Release.Namespace}} -zookeeper.host={{.Values.zookeeper.service.name}}.{{.Release.Namespace}} +cassandra.host={{.Release.Name}}-{{.Values.cassandra.chart.name}}.{{.Release.Namespace}} +zookeeper.host={{.Release.Name}}-{{.Values.zookeeper.chart.name}}.{{.Release.Namespace}} cassandra.user={{.Values.cassandra.config.cassandraUsername}} cassandra.password={{.Values.cassandra.config.cassandraPassword}}
\ No newline at end of file diff --git a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties index 1ef1febfcc..0e3381c61a 100755 --- a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties +++ b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/portal.properties @@ -16,9 +16,14 @@ ueb_app_key = 7GkVcrO6sIDb3ngW ueb_app_secret = uCYgKjWKK5IxPGNNZzYSSWo9 ueb_app_mailbox_name = ECOMP-PORTAL-INBOX -ueb_url_list = dmaap.{{.Release.Namespace}} +ueb_url_list = {{.Values.messageRouter.chart.name}}.{{.Release.Namespace}} ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX # Consumer group name for UEB topic. # Use the special tag to generate a unique one for each sdk-app server. ueb_app_consumer_group_name = {UUID} + +role_access_centralized = remote + +ext_req_connection_timeout = 15000 +ext_req_read_timeout = 20000 diff --git a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties index 9a3ee56117..765ba02b57 100755 --- a/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties +++ b/kubernetes/portal/charts/portal-app/resources/config/deliveries/properties/ONAPPORTAL/system.properties @@ -1,6 +1,6 @@ #mysql db.driver = org.mariadb.jdbc.Driver -db.connectionURL = jdbc:mariadb:failover://{{.Values.mariadb.service.name}}.{{.Release.Namespace}}:3306/portal +db.connectionURL = jdbc:mariadb:failover://{{.Release.Name}}-{{.Values.mariadb.chart.name}}.{{.Release.Namespace}}:3306/portal db.userName =root db.password =Aa123456 db.hib.dialect = org.hibernate.dialect.MySQLDialect @@ -44,7 +44,7 @@ log_cron = 0 * * * * ? * sessiontimeout_feed_cron = 0 0/5 * * * ? * #Front end URL -frontend_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/applicationsHome +frontend_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/applicationsHome # An Unqiue 128-bit value defined to indentify a specific version of @@ -82,7 +82,7 @@ notification_update_duration = 900 #Microservices Related Properties for Portal microservices.widget.protocol = http -microservices.widget.hostname = {{.Values.widget.service.name}}.{{.Release.Namespace}} +microservices.widget.hostname = {{.Release.Name}}-{{.Values.widget.chart.name}}.{{.Release.Namespace}} microservices.widget.username = widget_user microservices.widget.password = M+KcrCMVrR1rAxtiFE49n1uXC3FCkNBqFgeYsubEC/U= #This property won't be needed after consul is functional on VMs - diff --git a/kubernetes/portal/charts/portal-app/templates/deployment.yaml b/kubernetes/portal/charts/portal-app/templates/deployment.yaml index bfe1033821..7ed8cca681 100644 --- a/kubernetes/portal/charts/portal-app/templates/deployment.yaml +++ b/kubernetes/portal/charts/portal-app/templates/deployment.yaml @@ -31,14 +31,14 @@ spec: release: {{ .Release.Name }} spec: initContainers: - - name: {{ include "common.name" . }}-readiness + - name: {{ include "common.name" . }}-job-completion image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" - imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + imagePullPolicy: "{{ .Values.global.pullPolicy | default .Values.pullPolicy }}" command: - - /root/ready.py + - /root/job_complete.py args: - - --container-name - - {{ .Values.mariadb.nameOverride }} + - --job-name + - {{ .Release.Name }}-portal-db-config env: - name: NAMESPACE valueFrom: diff --git a/kubernetes/portal/charts/portal-app/values.yaml b/kubernetes/portal/charts/portal-app/values.yaml index 44156351f4..6d87daebd7 100644 --- a/kubernetes/portal/charts/portal-app/values.yaml +++ b/kubernetes/portal/charts/portal-app/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 @@ -28,7 +28,7 @@ global: ################################################################# # application image repository: nexus3.onap.org:10001 -image: onap/portal-app:latest +image: onap/portal-app:2.1-STAGING-latest pullPolicy: Always # flag to enable debugging - application support required @@ -67,23 +67,23 @@ service: nodePort3: 14 mariadb: - nameOverride: portal-db - service: + chart: name: portal-db widget: - service: + chart: name: portal-widget - cassandra: - service: + chart: name: portal-cassandra config: cassandraUsername: root cassandraPassword: Aa123456 - zookeeper: - service: - name: portal-zk + chart: + name: portal-zookeeper +messageRouter: + chart: + name: message-router ingress: enabled: false diff --git a/kubernetes/portal/charts/portal-cassandra/templates/pv.yaml b/kubernetes/portal/charts/portal-cassandra/templates/pv.yaml new file mode 100644 index 0000000000..184728f8ad --- /dev/null +++ b/kubernetes/portal/charts/portal-cassandra/templates/pv.yaml @@ -0,0 +1,37 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" + name: {{ include "common.fullname" . }} +spec: + capacity: + storage: {{ .Values.persistence.size}} + accessModes: + - {{ .Values.persistence.accessMode }} + persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }} + hostPath: + path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }} +{{- end -}} diff --git a/kubernetes/portal/charts/portal-cassandra/templates/pvc.yaml b/kubernetes/portal/charts/portal-cassandra/templates/pvc.yaml new file mode 100644 index 0000000000..e27c3311e9 --- /dev/null +++ b/kubernetes/portal/charts/portal-cassandra/templates/pvc.yaml @@ -0,0 +1,48 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{- if .Values.persistence.annotations }} + annotations: +{{ toYaml .Values.persistence.annotations | indent 4 }} +{{- end }} +spec: + selector: + matchLabels: + name: {{ include "common.fullname" . }} + accessModes: + - {{ .Values.persistence.accessMode }} + resources: + requests: + storage: {{ .Values.persistence.size }} +{{- if .Values.persistence.storageClass }} +{{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" +{{- end }} +{{- end }} +{{- end -}} diff --git a/kubernetes/portal/charts/portal-cassandra/values.yaml b/kubernetes/portal/charts/portal-cassandra/values.yaml index 530fdfa6d9..f66b848274 100644 --- a/kubernetes/portal/charts/portal-cassandra/values.yaml +++ b/kubernetes/portal/charts/portal-cassandra/values.yaml @@ -50,6 +50,29 @@ readiness: initialDelaySeconds: 10 periodSeconds: 10 +## Persist data to a persitent volume +persistence: + enabled: true + + ## A manually managed Persistent Volume and Claim + ## Requires persistence.enabled: true + ## If defined, PVC must be created manually before volume will be bound + # existingClaim: + volumeReclaimPolicy: Retain + + ## database data Persistent Volume Storage Class + ## If defined, storageClassName: <storageClass> + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # storageClass: "-" + accessMode: ReadWriteMany + size: 2Gi + mountPath: /dockerdata-nfs + mountSubPath: portal/cassandra/data + service: type: ClusterIP name: portal-cassandra diff --git a/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/Apps_Users_OnBoarding_Script.sql b/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/Apps_Users_OnBoarding_Script.sql deleted file mode 100644 index ff7093a203..0000000000 --- a/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/Apps_Users_OnBoarding_Script.sql +++ /dev/null @@ -1,380 +0,0 @@ --- Loads database tables with details about applications accessible from Portal in ONAP -USE portal; - -SET FOREIGN_KEY_CHECKS=1; - --- Apps; note that the IDs are used below. - -INSERT INTO `fn_app` (`app_id`, `app_name`, `app_image_url`, `app_description`, `app_notes`, `app_url`, `app_alternate_url`, `app_rest_endpoint`, `ml_app_name`, `ml_app_admin_id`, `mots_id`, `app_password`, `open`, `enabled`, `thumbnail`, `app_username`, `ueb_key`, `ueb_secret`, `ueb_topic_name`, `app_type`,`auth_central`,`auth_namespace`) VALUES -(2, 'xDemo App', 'images/cache/portal-222865671_37476.png', NULL, NULL, 'http://portal.api.simpledemo.onap.org:8990/ONAPPORTALSDK/welcome.htm', NULL, 'http://portal.api.simpledemo.onap.org:8989/ONAPPORTALSDK/api/v2', '', '', NULL, '2VxipM8Z3SETg32m3Gp0FvKS6zZ2uCbCw46WDyK6T5E=', 'N', 'Y', NULL, 'Default', 'ueb_key', 'ueb_secret', 'ECOMP-PORTAL-OUTBOX', 1,'N',NULL), -(3, 'DMaaP Bus Ctrl', 'images/cache/portal944583064_80711.png', NULL, NULL, 'http://portal.api.simpledemo.onap.org:8989/ECOMPDBCAPP/dbc#/dmaap', NULL, 'http://portal.api.simpledemo.onap.org:8989/ECOMPDBCAPP/api/v2', '', '', NULL, 'okYTaDrhzibcbGVq5mjkVQ==', 'N', 'N', NULL, 'Default', 'ueb_key', 'ueb_secret', 'ECOMP-PORTAL-OUTBOX', 1,'N',NULL), -(4, 'SDC', 'images/cache/portal956868231_53879.png', NULL, NULL, 'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal', NULL, 'http://sdc.api.be.simpledemo.onap.org:8080/api/v2', '', '', NULL, '78ot0W94rpB0o4FYzVoIOg==', 'N', 'Y', NULL, 'Default', 'ueb_key', 'ueb_secret', 'ECOMP-PORTAL-OUTBOX', 1,'N',NULL), -(5, 'Policy', 'images/cache/portal1470452815_67021.png', NULL, NULL, 'http://policy.api.simpledemo.onap.org:8443/onap/policy', NULL, 'http://policy.api.simpledemo.onap.org:8443/onap/api/v2', '', '', NULL, 'okYTaDrhzibcbGVq5mjkVQ==', 'N', 'Y', NULL, 'Default', 'ueb_key', 'ueb_secret', 'ECOMP-PORTAL-OUTBOX', 1,'N',NULL), -(6, 'Virtual Infrastructure Deployment', 'images/cache/portal-345993588_92550.png', NULL, NULL, 'http://vid.api.simpledemo.onap.org:8080/vid/welcome.htm', NULL, 'http://vid.api.simpledemo.onap.org:8080/vid/api/v2', '', '', NULL, 'okYTaDrhzibcbGVq5mjkVQ==', 'N', 'Y', NULL, 'Default', '2Re7Pvdkgw5aeAUD', 'S31PrbOzGgL4hg4owgtx47Da', 'ECOMP-PORTAL-OUTBOX-90', 1,'N',NULL), -(7, 'A&AI UI', 'images/cache/portal-345993588_92550.png', NULL, NULL, 'http://aai.api.simpledemo.onap.org:9517/services/aai/webapp/index.html#/viewInspect', NULL, 'http://aai.api.simpledemo.onap.org:9517/api/v2', '', '', NULL, 't1oqm6wCXrGUXUSL8mS7pQ==', 'N', 'Y', NULL, 'aaiui', 'ueb_key', 'ueb_secret', 'ECOMP-PORTAL-OUTBOX', 1,'N',NULL), -(8, 'CLI', 'images/cache/portal-345993588_92550.png', NULL, NULL, 'http://cli.api.simpledemo.onap.org:8080/', NULL, NULL, '', '', NULL, '', 'Y', 'Y', NULL, '', '', '', '', 2,'N',NULL); - --- insert ASDC users user id2-8 - -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (2,NULL,NULL,'Jimmy',NULL,'Hendrix',NULL,NULL,NULL,'admin@onap.org',NULL,NULL,NULL,'jh0003',NULL,'jh0003','95LidzVz7nSpsTsRUrDNVA==','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (3,NULL,NULL,'Carlos',NULL,'Santana',NULL,NULL,NULL,'designer@onap.org',NULL,NULL,NULL,'cs0008',NULL,'cs0008','95LidzVz7nSpsTsRUrDNVA==','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (4,NULL,NULL,'Joni',NULL,'Mitchell',NULL,NULL,NULL,'tester@onap.org',NULL,NULL,NULL,'jm0007',NULL,'jm0007','95LidzVz7nSpsTsRUrDNVA==','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (5,NULL,NULL,'Steve',NULL,'Regev',NULL,NULL,NULL,'ops@onap.org',NULL,NULL,NULL,'op0001',NULL,'op0001','95LidzVz7nSpsTsRUrDNVA==','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (6,NULL,NULL,'David',NULL,'Shadmi',NULL,NULL,NULL,'governor@onap.org',NULL,NULL,NULL,'gv0001',NULL,'gv0001','95LidzVz7nSpsTsRUrDNVA==','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (7,NULL,NULL,'Teddy',NULL,'Isashar',NULL,NULL,NULL,'pm1@onap.org',NULL,NULL,NULL,'pm0001',NULL,'pm0001','95LidzVz7nSpsTsRUrDNVA==','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (8,NULL,NULL,'Eden',NULL,'Rozin',NULL,NULL,NULL,'ps1@onap.org',NULL,NULL,NULL,'ps0001',NULL,'ps0001','95LidzVz7nSpsTsRUrDNVA==','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); - --- insert demo user to account admin role for all apps id2-7 - -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,999,null,2); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,999,null,3); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,999,null,4); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,999,null,5); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,999,null,6); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,999,null,7); - --- insert users id2-8 roles to SDC app - -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (2,999,null,4); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (3,16,null,4); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (4,16,null,4); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (5,16,null,4); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (6,16,null,4); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (7,16,null,4); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (8,16,null,4); - --- insert VID users id9-11 - -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (9,NULL,NULL,'vid1',NULL,'user',NULL,NULL,NULL,'vid1@onap.org',NULL,NULL,NULL,'vid1',NULL,'vid1','95LidzVz7nSpsTsRUrDNVA==','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (10,NULL,NULL,'vid2',NULL,'user',NULL,NULL,NULL,'vid2@onap.org',NULL,NULL,NULL,'vid2',NULL,'vid2','95LidzVz7nSpsTsRUrDNVA==','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (11,NULL,NULL,'vid3',NULL,'user',NULL,NULL,NULL,'vid3@onap.org',NULL,NULL,NULL,'vid3',NULL,'vid3','95LidzVz7nSpsTsRUrDNVA==','2016-10-20 15:11:16','Y',NULL,'2016-10-14 21:00:00',1,'2016-10-20 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); - --- insert users id9-11 roles to VID app - -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (9,16,null,6); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (10,16,null,6); -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (11,16,null,6); - --- insert AAI UI users id12 - -Insert into fn_user (USER_ID, ORG_ID, MANAGER_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,PHONE,FAX,CELLULAR,EMAIL,ADDRESS_ID,ALERT_METHOD_CD,HRID,ORG_USER_ID,ORG_CODE,LOGIN_ID,LOGIN_PWD,LAST_LOGIN_DATE,ACTIVE_YN,CREATED_ID,CREATED_DATE,MODIFIED_ID,MODIFIED_DATE,IS_INTERNAL_YN,ADDRESS_LINE_1,ADDRESS_LINE_2,CITY,STATE_CD,ZIP_CODE,COUNTRY_CD,LOCATION_CLLI,ORG_MANAGER_USERID,COMPANY,DEPARTMENT_NAME,JOB_TITLE,TIMEZONE,DEPARTMENT,BUSINESS_UNIT,BUSINESS_UNIT_NAME,COST_CENTER,FIN_LOC_CODE,SILO_STATUS) values (12,NULL,NULL,'steve',NULL,'user',NULL,NULL,NULL,'steve@onap.org',NULL,NULL,NULL,'steve',NULL,'steve','95LidzVz7nSpsTsRUrDNVA==','2017-05-19 15:11:16','Y',NULL,'2017-05-19 21:00:00',1,'2017-05-19 15:11:16','N',NULL,NULL,NULL,'NJ',NULL,'US',NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL); - --- insert users id9-11 roles to AAI UI app - -Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (12,16,null,7); - --- insert fn_roles for the on boarded apps -insert into fn_role values(1000,'System Administrator','Y',1,2,1); -- SDK from 999 to 1 -insert into fn_role values(1001,'Standard User','Y',1,2,16); -- SDK -insert into fn_role values(1002,'System Administrator','Y',1,3,1); -- DMaap from 999 to 1 -insert into fn_role values(1003,'Standard User','Y',1,3,16); -- DMaap -insert into fn_role values(1004,'ADMIN','Y',1,4,0); -- SDC from 999 to 1 -insert into fn_role values(1005,'TESTOR','Y',1,4,1); -- SDC -insert into fn_role values(1006,'System Administrator','Y',1,5,1); -- Policy from 999 to 1 -insert into fn_role values(1007,'Standard User','Y',1,5,16); -- Policy -insert into fn_role values(1008,'System Administrator','Y',1,6,1); -- VID from 999 to 1 -insert into fn_role values(1009,'Standard User','Y',1,6,16); -- VID - -insert into fn_role values(1011,'View','Y',1,7,1); -- AAI UI from 999 to 1 -insert into fn_role values(1012,'Standard User','Y',1,7,16); -- AAI UI - - -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (1,1000,NULL,2); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (1,1001,NULL,2); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (1,1002,NULL,3); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (1,1004,NULL,4); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (1,1006,NULL,5); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (1,1008,NULL,6); - -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (2,1004,NULL,4); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (3,1005,NULL,4); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (4,1005,NULL,4); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (5,1005,NULL,4); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (6,1005,NULL,4); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (7,1005,NULL,4); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (8,1005,NULL,4); - -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (9,999,NULL,1); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (9,1008,NULL,6); - -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (10,1008,NULL,6); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (10,1009,NULL,6); - -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (12,1011,NULL,7); -INSERT INTO `fn_user_role` (`user_id`,`role_id`,`priority`,`app_id`) VALUES (12,1012,NULL,7); - --- new 1610.2 --- Ignore errors if the application is not onboarded in this environment - -INSERT IGNORE INTO `fn_app_contact_us` (app_id, contact_name, contact_email, url, active_yn, description) VALUES ( - (select min(app_id) from fn_app where app_name like "%SDC%" and enabled = "Y"), - "SDC Team","sdc@lists.onap.org","https://wiki.onap.org/display/DW/Approved+Projects",NULL, - "Service Design and Creation (SDC)."); -INSERT IGNORE INTO `fn_app_contact_us` (app_id, contact_name, contact_email, url, active_yn, description) VALUES ( - (select min(app_id) from fn_app where app_name like "%Policy%"), - "Policy Team","policy@lists.onap.org","https://wiki.onap.org/display/DW/Approved+Projects",NULL, - "Policy."); -INSERT IGNORE INTO `fn_app_contact_us` (app_id, contact_name, contact_email, url, active_yn, description) VALUES ( - (select min(app_id) from fn_app where app_name like "%DMaaP Bus%"), - "DBC Team","portal@lists.onap.org","https://wiki.onap.org/display/DW/Approved+Projects",NULL, - "DBC."); -INSERT IGNORE INTO `fn_app_contact_us` (app_id, contact_name, contact_email, url, active_yn, description) VALUES ( - (select min(app_id) from fn_app where app_name like "%Virtual Infrastructure%"), - "VID Team","vid@lists.onap.org","https://wiki.onap.org/display/DW/Approved+Projects",NULL, - "Virtual Infrastructure Design."); -INSERT IGNORE INTO `fn_app_contact_us` (app_id, contact_name, contact_email, url, active_yn, description) VALUES ( - (select min(app_id) from fn_app where app_name like "%Demo%"), - "Portal SDK Team","portal@lists.onap.org","https://wiki.onap.org/display/DW/Approved+Projects",NULL, - "xDemo Application"); -INSERT IGNORE INTO `fn_app_contact_us` (app_id, contact_name, contact_email, url, active_yn, description) VALUES ( - (select min(app_id) from fn_app where app_name like "%AI UI%"), - "AAI UI Team","aaiui@lists.onap.org","https://wiki.onap.org/display/DW/Approved+Projects",NULL, - "AAI UI Application"); -INSERT IGNORE INTO `fn_app_contact_us` (app_id, contact_name, contact_email, url, active_yn, description) VALUES ( - (select min(app_id) from fn_app where app_name like "%CLI%"), - "CLI Team","onap-discuss@lists.onap.org","https://wiki.onap.org/display/DW/Approved+Projects",NULL, - "CLI Application"); --- end new 1610.2 - --- --- Data for table fn_menu_functional --- -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (175,1,'Manage',NULL,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (1,2,'Design',175,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (316,11,'Administration',1,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (2,8,'ECOMP Platform Management',175,'','N',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (3,5,'Technology Insertion',175,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (5,7,'Performance Management',175,'','N',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (6,6,'Technology Management',175,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (7,4,'Capacity Planning',175,'','N',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (8,3,'Operations Planning',175,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (11,1,'Product Design',1,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (12,2,'Resource/Service Design & Onboarding',1,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (13,3,'Orchestration (recipe/Process) Design',1,'','N',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (14,4,'Service Graph visualizer',1,'','N',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (15,5,'Distribution',1,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (16,6,'Testing',1,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (17,7,'Simulation',1,'','N',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (18,8,'Certification',1,'','N',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (19,9,'Policy Creation/Management',1,'http://policy.api.simpledemo.onap.org:8443/onap/policy','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (20,10,'Catalog Browser',1,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (24,5,'Create/Manage Policy',12,'http://policy.api.simpledemo.onap.org:8443/onap/policy','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (56,1,'Policy Engineering',8,'http://policy.api.simpledemo.onap.org:8443/onap/policy','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (115,1,'Test/Approve a Resource or Service',16,'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (130,1,'Favorites',175,'','y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (139,2,'Approve a Service for distribution',12,'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (142,3,'Create a License model',12,'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/onboardVendor','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (145,1,'Distribute a Service',15,'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (148,1,'User Management / Category Management',316,'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/adminDashboard','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (178,2,'Support',NULL,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (181,1,'Contact Us',178,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (184,2,'Get Access',178,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (301,1,'Create a Product',11,'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/dashboard','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (304,2,'Create a Vendor Software Product',11,'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/onboardVendor','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (307,1,'Manage a Resource/Service',20,'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/catalog','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (310,2,'Manage a Product',20,'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/catalog','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (313,3,'View a Resource/Service/Product',20,'http://sdc.api.simpledemo.onap.org:8181/sdc1/portal#/catalog','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (317,1,'Message Bus Management',6,'http://portal.api.simpledemo.onap.org:8989/ECOMPDBCAPP/dbc#/dmaap','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (318,1,'Infrastructure Provisioning',3,'','Y',NULL); -INSERT INTO `fn_menu_functional` (`menu_id`,`column_num`,`text`,`parent_menu_id`,`url`,`active_yn`,`image_src`) VALUES (319,1,'Infrastructure VNF Provisioning',318,'http://vid.api.simpledemo.onap.org:8080/vid/welcome.htm','Y',NULL); --- --- Data for table fn_menu_functional_ancestors --- -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (1,175,175,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (2,178,178,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (3,11,11,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (4,12,12,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (5,13,13,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (6,14,14,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (7,15,15,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (8,16,16,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (9,17,17,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (10,18,18,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (11,19,19,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (12,20,20,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (13,316,316,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (14,318,318,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (15,317,317,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (16,56,56,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (17,301,301,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (18,304,304,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (19,24,24,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (20,139,139,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (21,142,142,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (22,145,145,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (23,115,115,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (24,307,307,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (25,310,310,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (26,313,313,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (27,1,1,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (28,2,2,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (29,3,3,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (30,5,5,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (31,6,6,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (32,7,7,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (33,8,8,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (34,130,130,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (35,181,181,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (36,184,184,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (37,148,148,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (38,319,319,0); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (64,11,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (65,12,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (66,13,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (67,14,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (68,15,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (69,16,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (70,17,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (71,18,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (72,19,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (73,20,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (74,316,1,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (75,318,3,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (76,317,6,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (77,56,8,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (78,301,11,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (79,304,11,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (80,24,12,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (81,139,12,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (82,142,12,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (83,145,15,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (84,115,16,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (85,307,20,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (86,310,20,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (87,313,20,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (88,1,175,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (89,2,175,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (90,3,175,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (91,5,175,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (92,6,175,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (93,7,175,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (94,8,175,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (95,130,175,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (96,181,178,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (97,184,178,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (98,148,316,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (99,319,318,1); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (127,301,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (128,304,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (129,24,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (130,139,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (131,142,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (132,145,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (133,115,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (134,307,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (135,310,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (136,313,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (137,148,1,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (138,319,3,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (139,11,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (140,12,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (141,13,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (142,14,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (143,15,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (144,16,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (145,17,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (146,18,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (147,19,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (148,20,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (149,316,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (150,318,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (151,317,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (152,56,175,2); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (158,301,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (159,304,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (160,24,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (161,139,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (162,142,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (163,145,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (164,115,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (165,307,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (166,310,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (167,313,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (168,148,175,3); -INSERT INTO `fn_menu_functional_ancestors` (`id`,`menu_id`,`ancestor_menu_id`,`depth`) VALUES (169,319,175,3); - --- new 1610.2 which one? add-on 3rd script -insert IGNORE into fn_menu_functional_roles (menu_id, app_id, role_id) -( -select a.menu_id, b.app_id, b.role_id from -( -select a.menu_id from fn_menu_functional a where upper(text) like '%POLICY%' -) a, -( -select * from fn_role where app_id = (select app_id from fn_app where app_name = 'Policy') -) b -); - - -insert IGNORE into fn_menu_functional_roles (menu_id, app_id, role_id) -( -select a.menu_id, b.app_id, b.role_id from -( -select a.menu_id from fn_menu_functional a where url like '%sdc1%' -) a, -( -select * from fn_role where app_id = (select app_id from fn_app where app_name = 'SDC') -) b -); - -insert IGNORE into fn_menu_functional_roles (menu_id, app_id, role_id) -( -select a.menu_id, b.app_id, b.role_id from -( -select a.menu_id from fn_menu_functional a where url like '%vid%' -) a, -( -select * from fn_role where app_id = (select app_id from fn_app where app_name like 'Virtual%') -) b -); - -insert IGNORE into fn_menu_functional_roles (menu_id, app_id, role_id) -( -select a.menu_id, b.app_id, b.role_id from -( -select a.menu_id from fn_menu_functional a where url like '%DBC%' -) a, -( -select * from fn_role where app_id = (select app_id from fn_app where app_name = 'DMaaP Bus Ctrl') -) b -); - -insert IGNORE into fn_menu_functional_roles (menu_id, app_id, role_id) -( -select a.menu_id, b.app_id, b.role_id from -( -select a.menu_id from fn_menu_functional a where url like '%SDK%' -) a, -( -select * from fn_role where app_id = (select app_id from fn_app where app_name = 'xDemo App') -) b -); --- end new -INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (6,'NEWS','http://about.att.com/innovationblog/next_att_labs','What\'s Next at AT&T Labs? AI Set to Revolutionize the Network',NULL,NULL,10); -INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (7,'NEWS','http://about.att.com/innovationblog/ecomp_code','Code, Community and Commitment - the 3 Cs of Open Source',NULL,NULL,20); -INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (8,'NEWS','http://about.att.com/story/orange_testing_att_open_source_ecomp_platform.html','Orange Testing AT&Ts Open Source ECOMP Platform for Building Software-Defined Network Capabilities',NULL,NULL,30); -INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (9,'NEWS', 'http://about.att.com/innovationblog/linux_foundation','Opening up ECOMP: Our Network Operating System for SDN',NULL,NULL,40); -INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (10,'EVENTS',NULL,'OpenECOMP Launches into Open Source',NULL,'2017-02-14',1); -INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (11,'IMPORTANTRESOURCES','http://about.att.com/content/dam/snrdocs/ecomp.pdf','ECOMP White Paper',NULL,NULL,1); -INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (12,'IMPORTANTRESOURCES','https://wiki.onap.org/','ONAP Wiki',NULL,NULL,2); -INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (13,'IMPORTANTRESOURCES','https://wiki.onap.org/display/DW/Portal','ONAP Wiki for Portal',NULL,NULL,3); -INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (14,'IMPORTANTRESOURCES','https://wiki.onap.org/display/DW/Development+Guides','ONAP User Guide',NULL,NULL,4); - --- app thumbnails - -UPDATE `fn_app` SET `thumbnail` = 0x89504E470D0A1A0A0000000D49484452000001680000012C0806000000EE2C29AF0000200049444154785EEC9D099C5D6579FFBF67B9EBEC5B6626B364DFC91E12080142D87710595C0A5A37B455FBD75AB56A6D6BD55A6D6D6D6B6BAB15045111C50504917D95B0869090909DEC997DEE7AF6FFE77DCFBD333721C0850C3093BCE7C3903B73DF7BEE39BF73CEEF3CE7F7FE9EE7D1508B424021A01050088C4A04B451B9556AA314020A018580420045D0EA24500828041402A3140145D0A3F4C0A8CD5208280414028AA0D539A010500828044629028AA047E981519BA510500828041441AB734021A01050088C520414418FD203A3364B21A0105008288256E780424021A01018A50828821EA507466D96424021A0105004ADCE018580424021304A1150043D4A0F8CDA2C8580424021A0085A9D030A01858042609422A0087A941E18B5590A018580424011B43A0714020A0185C028454011F4283D306AB314020A0185802268750E280414020A81518A8022E8517A60D466290414020A0145D0EA1C500828041402A3140145D0A3F4C0A8CD5208280414028AA0D539A010500828044629028AA047E981519BA510500828041441AB734021A01050088C520414418FD203A3364B21A0105008288256E780424021A01018A50828821EA507466D96424021A0105004ADCE018580424021304A1150043D4A0F8CDA2C8580424021A0F5A6EC40C1A010500828041402A30F0145D0A3EF98A82D520828041402120145D0EA44500828041402A3140145D0A3F4C0A8CD5208280414028AA0D539A010500828044629028AA047E981519BA510500828041441AB734021A01050088C520414418FD203A3364B21A0105008288256E780424021A01018A50828821EA507466D96424021A0105004ADCE018580424021304A1150043D4A0F8CDA2C8580424021A0085A9D030A01858042609422A0087A941E18B5590A018580424011B43A0714020A0185C028454011F4283D306AB314020A0185802268750E280414020A81518A8022E8517A60D466290414020A0145D0EA1C500828041402A3140145D0A3F4C0A8CD5208280414028AA0D539A010500828044629028AA047E981519BA510500828041441AB734021A01050088C520414418FD203A3364B21A0105008288256E780424021A01018A5088C28416B1A68E27F6A510828041402C718024110100423BBD3234AD0B1884E32668CEC16AAB5290414020A81318080E5F8642D6F44B75411F488C2A956A61050081CAB0828823E568FBCDA6F85804260D423A0087AD41F22B5810A81A31701A1B18A45CD331DFE182B823E7ACF7DB5670A81518DC08E1D83DC7BEF4EB98DAB5675306142F5A8DEDEB763E31441BF1DA8ABEF54081CE308B8AECBAF7EF5221FFAF0831289EBAF3B830B2E988CAEEBC7383207EFBE2268753A280414026F3902B66D73D34D6B79FF9F3E2CBFFB673F3D8BCB2E9B8E6128C756E9C15004FD969F9AEA0B15020A817C3ECF0D373ECB873FFCB804E327379D21093A128928704A105004AD4E07858042E02D472097CBF1A31B9EE1DA6B9F90DF7DD34DA7F3CECB6628823EE44828827ECB4F4DF5850A01858024E81F3DC3B51F5504FD6A6783226875AD280414026F39028AA0CB835C11747938A9510A0185C00822A008BA3C3015419787931AA51050088C20028AA0CB035311747938A9510A0185C00822A008BA3C3015419787931AA51050088C20028AA0CB035311747938A9510A0185C00822A008BA3C3015419787931AA51050088C20028AA0CB035311747938A9510A0185C00822A008BA3C3015419787931AA51050088C20028AA0CB035311747938A9510A0185C00822A008BA3C3015419787931AA51050088C20028AA0CB035311747938A9510A0185C00822A008BA3C3015419787931AA51050088C20028AA0CB035311747938A9510A0185C00822A008BA3C3015419787931AA51050088C20028AA0CB035311747938A9510A0185C00822A008BA3C3015419787931AA51050088C20028AA0CB0353117479388DECA8C027E8DB4490EB26705290EB016B407E879FD9034E06341D2D568B166F18FEEEAA7630A2F26F5A450B5A55C7C86E975A9B42E02D4240117479402B822E0FA7231BE5D9787B1F23E8D900D97DF87D9B09522F110822F62D70B2E0E6E57704760A7C1BD0C04CA09989E1EF8ED5806EA0991510AD444B8C43AB6845AB9B8ADEB400BDE93888541DD9B6AA4F2B04DE020414419707B222E8F2702A6B54E064F1773D10FEEC790CDC4C48BA411046C86E163C9BC0CD41E095B5CE571DA4E961442D483C528516A900CD90DC8E66A25577A2371F8F31E522B4FA1947FE7D6A0D0A81114240117479402A822E0FA7571D153869FCDD0FE33CF8391919E33BE0BB829A4760ED47B00A41E0BA8956D18631F14C8C1957A2B79E1092B85A14026F23028AA0CB035F11747938958C0A0A32842789D87BF116DCD55F23103AF2DB4DC8AFB92F1A5A653BD1737F84563F538ED68CA8945284E67D444BE01FF93A8E6803D487C712028AA0CB3B5A8AA0CBC349926F90EF87D40EECDF7F00BF677DE1936F73945CF6F6970E141A48B8E813CE20B2E43352C7D6E28D523279DD8BEFE1F73C8F5E33456AE36A5108BC16028AA05F0BA1F07D45D065E024A2E3A0E779BCADB7E36DFC0941B6AB8C4F8D9D21C22DA2B79F823EE97CCC199783997C5D1BEFEF7F1AE7912F1039E9ABE8CD0BC3094EB528045E050145D0E59D1E8AA05F15A780207B006FFD0DB8CFFF1FC1E08E9199DC2BEFD8BCF5A38C3891657F8DDEB112BD711E98F1D7DE063787F3E89771D7FC37D10B6FC6987096923A5E1BB5637E8422E8F24E0145D087C3C9B371D77E9F6060AB24687FCF2304E9DDE5213AD6471931F4A6F9D2B6A7554FC098740E5AFDAC9793AE67E1EF79146FCB6FF05EBA97A06F23D1F36EC2987AF13137095914B90E7A6E38EC1FC7FAC93172DBAF08BA3C2C15411F062777C34F711FF834415E4CFC1DAB8B06D12AF471F331A65F8131ED32B4787D0846E0E16DBF0BF7B12FE377AF1B7AAA889EF13D8C59EF91CE91A37E11D6C921460E5F084E1E7E558A80927C0E3D1F144197778528822EC129187C09F7C97FC2DB7A1B41665F79081EEDA3444663BC1EF3946F624EBB2C9C44B453E46F5A4630B84D98BC8710889EFE5F18B3FFE4D8216841C99A349D176E5CE2F7024D07E26FC5F78FF693E4F5EF9F22E8F23053045DC0C9DBF63B9C873E2F650DE96356CBC108442A3067BE1BF384BF913730E79E8FBDCC561859F135CC851F073D72D4A327EE4B828A050F0B2A9626456935D408D0C2FB56E13D153FBFFC7450045DDE25726C13B4A88931B00DE7F1AFE26DFA257861BAB55A5E0D8122DDBCDC5E689EF02569D97B4356BD510CBACC042D2C322E16241C804B40CE87BC1BE0BA015EE0636A1A31D3A0361206D732BE9651B65A4A1150045DDEF970EC12B4A88FB1EB01DCC7BF8EBFF7D1F2D052A35E150173E127899CF4F760C4DE52A402E151470BC970580816A5A70AF2C3213715C9B705F61CDA521112879244715D22440ED71D126DA005E41CC8783EBD399FFD298BFDFD167927C0F1021CDF470B7C6246C0B82A9386AA38CDD5719A92260953470FD732AC5617C3EFB714ADD1F1658AA0CB3B0EC72C41FBDD6BB17F7DC9B1E3CE28EF7C38A251C6DC0F113DE59BE5D9F38EE89B0EF970416E10EC2CA25D3D64D39249BB428EA7E064190D0B223E38DD5D727620A859BC1B927DB804782252767C7AF32E2F7459F4E61CB2B64822D0B0020DBFA0377B22B9544CA0FA2E9A9BC7C4A73AA633BBA592992D55D4554431C4BAB5A1DB49E12B8E3DAD5A11747917C03147D041BE177FF3ADD27DE0AEF96E7928A951652160CC7C37D1D3FF334C1D7FCB96909D8BD41A68BE50802110AAB02E63683B08C87922E2CD3360B9641D485B3EAE0F9E1F485295E42C43E580A20745C7A33611A33259417FCEE140DAA1D7127F15045E903964E0ED83EFE37B3E7E10E0061EBEE71278E25F8FA4EED25A1B637C759C8698C6FC094DE1DCA2F84EF1427EEFB1258328822EEF0239A6085A249AB8CFFC3BEEDAFF05CF2A0F2135AA6C048CC917C83A1FAF3713B1EC2F78D9C030622ECD5C143C27485944B53DB6C78BBD3976A65C76A61D3674E5E8CA7BA41D8D8CE5E00BDD5844BB9E85E179E88120581F538811814F7D4594396DCDB4D7D71574643FBC19F822AAF62531FB5E611B84262D09DAC317A9EFAE8D2F483BF0B17D5FBE879527A9D9BC7FC54C3AC755A10782EAF5B0F6F71B07614C7E5211747987ED982268FBDE3FC37BE12610E53ED532E2081813CF217AFE4D6F3A418773768589BB21D942BCD0480501BB52369BBBD33CD365F14C9747BF15907675D29E81E30798BE4BA59F2111D844F048682E31CDC790D28329A58CEACA1A6674B631AE224E4484D6224A0E021128E307A1941112B420EA50BF766420ED11F81EAEEB84442DA3690FCFF37005613B2E932BE0B485139935BE16B320CF8848FA58226945D0E55D7EC70C418B7A11F61DEF0D6D746A795310D05B9711BBF47720EA528FC47270703CB4462929C8B8599072381198436767D6E5B60D0758D765B32FEDD2E3C5496B7149A49AEF92D0032A758F3AC365BC99A7427388E113D73C0C215CE8069617A1DFAC605C731B159118BA274AC70A32464A1BC2A9218857B2B4F89B27DE13441C482216E42C48DBF15C193D8BD79EE7E2FA01AEA7A189D7F92C13EB34CE5B3A9599CDF568F8324297D1F431B228822EEF401FF5041DA477491B9DBFF9370456FFDB5B4BC38862B42E43EB380D73F6D5A0BF81CA71C5E3EAA4F15EBA077FDF9304FB1EC7EFDFF2B6FBB7F5A6B9C42EBF0F22475ED16EC83921E977386F5A44AB9A9888D34DB27EC0833B06F9ED867EF63B06B66630E847707C0DDFB1A88AF8CCA88FD35913A53E1145CFF4E1A57AF173299C5C56BA2E021101FB1E8316F47911DAA6CEA2A65AB4190B35E6A0206548995946D0A15EED89509A90A0FDC09551B47C2DA2651129FB829885DC11FE1BFEF8F8AE8BE3DA684E8E981E70F6FC0ECE5B1436530865E863238E5604AD085A12B2FBE43FE33EF39DB74773D60D6939D31BE6622EFA24C6A4730B0E8791BE0803BC6D77E2BF7833EE8E3F803D0822F27B8BEB536B15E3895DFD2C5AB4BABCB3EF554785141D52B398F813C4A8E36B06BE1FB07130CBDD9B7B79648FC77EBF02CF088DC7819DA54273195F6932735C2553EBE218BE8D97CB92EEDA4F3E3D8863E5C9E52D5CD796137929CB67902A5A672DA4A1A989C0B6C3893FA95C08520E658CE26BB945051216842D74EC21822E21E4E218296F8888DA15DAB48B23E63F1C3171E971D2F446DE7FCA5C12868E9CE01CAACB3DD2E7C8081C92115C8522E8F2C03C7A2368CF92C927F6FDFF0F44E4FC562C661C2DD1282348D17E4A9F7016C6940BD11B8E7B8B92370A74B66F35CE837F45201BD10690EF0FEB8AC82E2F6FDEA225C711BBE6F91121681929173655389185D52D6B7B64ED803BB70FF0D8CE4176E60D5C2389661818BA89A1F94CACF0985897A4A53A4652F3D06C1BD7B2B133830C76EF259F4D63DB16996C56EAC4AEEF918D34D230653EE3C6B586BAB2EFA1090943C4CF7E48CC45722E9275F15F215F841383C311B378EDBAEE10897BAE3B1C5D7B1EB663E10A95C473195F1DE1B2A5535838B995A8A117DC1D85F4F1A398A3154197771D1E9D042D1E81B7FC264CDD1EDC5E1E1247384A448DA2A09031F783E8CD8B0A6B7B3BAFB0822C200867FB9DB8CF5F87DFBD8620B52B9CF07A9396F8B5FB6437F2235D849C204D7281262D725BFA73DCBFB597A7F6E5D81B6B0E73AC038D58E0D2561130B93E416B65942ACD1EF2310BF9C2C967C9A57AC9F60F30D0DF8D95CB60E7F3643359529E4EC6A862CAFC65348FEF905639690191138021297B624250FCBDF8BBD09905714BF942481D05D78688A40F913464042DA26741D04592F67D6C4744D10E81EBE0E472B4D5E87CF0BC1399DDD91A4E488682C7512D7728822EEF0A392A09DA3FF02CF69DD7C812986FF6A245ABD01AE76174ACC498FFD130821E858B683AE0EFBA4F4A21A2E98098F87A33969122683909878FA7C1133BFBB9FDC51E36E5A2E48C04B611C3F05CA2F84CAE3139AE394175C44017A41E88A70431D916E0B90EB9C13E327D7DE407FB1918ECC1CEE4B0F27906B2797AA964DCD4794C993E8398190953B8A52B4310B2F837F4498BDF872368A1390BDD3AD4995D394958785D42C245B22E12B4EB384304EED80EAE277E5C1CDBC2B0D35CBAFC382E5BB180642C8226273EC53EBC9D37F837E3EC185EA722E8F2F03D2A09DAFACDA5F8DBEE280F812319251EAB279D87B9F4F3E80DB3DFF214E737B4E9F620CE93DFC2DF7E17229B7244BA8B976C48FCFD1B651DE9D7B71C5CA85364FB0951C30D74B6F5E6F8C5865E9E1ED071A2893043D0F5A8323CDA6B624CA98FD310054338354A547749AE769E74CF7ED27DBDE4D2830C0EF460A72DAC7C96DDB98044DB2CE62C3A9E8A8A4A49CCC2972CA366797318D6990F92388250AE2812F6101117648DD2285A4E18BAA1E54E46D18508DB16B28BE7E2899E968E8D9549735C5B1D9FB8FC4C263454A369E2E629321D1541BFBEF3E8E81B7DD411B4A8B466DF76E588134FE9A1D79B9760CCBC0AADA205AD6E067AE3DC317566B8EB7E88BBFA1B6107F211963B62EF79E2F5E321095952A2A4249164B2664F3F4FEF49B1C38EB0336F92F185633920E6DBCC1F5F43B5E15117D3881B05122BA64F0F293B3EF9CC207D7B77911DE8259B4E3338D0473E9D23E3B8C4A79F48E794695455540D4D060AC786FCEF9049C1E1DF45C4EC1C44CEAF48D04E48C87282D00DA3E7A22E6DD9B69C2CF43D1BC7B1C85BC2F2E771ED25A772CEE25918BA70AA88041645D063EAC27A1336F6A822E820B513EBB7EF20E85AFB264035BCCAF8D56BD0AA278E8D88F93048E47F309920BDE74DC12876E9EDE89DA7BFBE754B3B9B706978B24646D685AFDFF322FBFC24D9682522B74F44B871CD62725D8C79E31232EB2F8CB443395A96D728D4D090E288EB4A79A36BD776B283BD58990C03FD29329914079C08275F752DF18889CCF716E9DEC5B24842572E44C862278A041C46D182A08563637842B07432B0F85A4C1C7A43045DF041BB6E18450B0DDAB2A4FE2C2418DBB1C9BB0E5A3ECDFBCE5ACA9F9C750211532790553B8EDE45491CE51DDBA387A07D07E7EE8FE26EFCE99BE656D02295444EFBB7B06BC8185DDC47BF8CF3C437DEB4AD8F5DF44BF449E7BDAEF58799819E4CD6C8A273DF867DDCB2C3213013385A4C929A48919ED118A7B3364195970BED76D2922688BA506DAEF0AD527E701D327DDD74EFDC4636DD4F2E9B61A027C5817496C15813175E750DBEE30C45CF82A48B245CF4380F5BE9428D59BC1F46D0E1EF87BA358674E6E2C4E050041D927351E6102E8EC0B1E5F7DBAE70A638C434978F5F761A172F9D8121DC1C52E278854C9DD785EEE81CAC08BABCE3727410B4886CD65D8FFBE8970872DDE5EDF9EB19A519E8F5332439EBE34F1A7B4D51858CE1E5711EFC2C42DE1879BBDD70E9CED885BF40177EEFD27A70C5A240AF8079B1DEB2706EDFFDC25EEED8D045AABE1D373024D655584C6F8CD35E1D23E2B918854A756175A3E145FCE6E9A07B019E6D91EAE9A27BD736B2A901B2B90CFDBD29B6A55C262E5AC9FCB9B343392308B30385AD4ED4D8184A4639C8EB3C4CC842372E7A9E8B12C610593BCE505AB7533A29E83838452747E0625B7902DB9263C5053868392493493E7BCD799C3FBD49EC32BA22E8D773851EB5638F0A829605901EFF1A81D537F2074A74BA3EF59B98733F3846276D02DCA7BE8DFBC43F859994872EA27F60690714DD402BCD70946C2192404AD29045DB2B59AE332448BD6A025AB245BED666BF07BDE37499622252988533A248D6438FEC850247A2BEB2AC4317183CB3B397DFACEF62AFD98863C6F00257AE43A466CF6E4AD092142E8D32EC81528AF064324AAAFB00DDBBB64B592397C9B2617F9696E356B060F102022B47E08B6CC1128F7321392524DC421D8D82BFB9384E44C132922EF89CC3ECC1A29D2ED49A053917DF77E524A1156ACE52F670C8590E9A97C77534F6EFCCB2DFAB22DFDA8EE70DF0FCD72E624A4DAC509D4F24AE1C5C1675E44FF0B7678D2A822E0FF7A380A0039C073E83FBEC7F94B7C7AF6754A40263F285984B3F875E3FF3F57C72F48C75F3B84FFF2BDE965F0F6F53AC6EE8B5B005EA95E387DF8BD74265C7F0FBD14AB48A5634235E1410A076329815720EAB58B728CC5216948CF40ECB1F517FA2F023A95546D282EB75C4DC5E54D788E8A1FDF8862776F374DAC48D26080283C07749EA1E136AA2B45747881D142D9746CEA54A6DB10F958F9DCF91EADA4FF7EEED64B329B2D93CBBEC2A169E722E15C9B8D4808BA45B9A2D38246B14ABD215A48CE29821CD596607869380421F179F731C7B6832B0286738628C63E18BF7A4CCE160E75D02CBA6F7A51EF6AEDF47CEAC21367F01D9C66AFEF2CC4EFEF2AC9924A2A0FB1ABA2C6E7DF42D8AA0CB3BA6639EA0835C9724684F68CF23B908729E7E854CD11EB3E42CF070F304B903F2DFE2A2D54D7B0DA45E9D14427A0CFF2F26E67C7C59252EEB06A41D9F7D595766FC651C9F8CE591737DDCC2849EA60798862EB3E66A22260D0903CBB1B977A7CD3EDB9451B24714337098506DD2561B23AEB98542FBC3B98507EF4089C12E0CCAB1F35952DDFBE9DDBD834C2E454A54D86F5DC09459C785E42CEF188592A142DA2868CCA5045DEA6F2E92B9888E4B53B8858D2E4C5A0909BA48E0C24A17A67887041D5AED7C3C274FC4F278E9B92DECDFB8172DA3E3E9519C8E0ECC8573A8AC36F8CA550BB962712771B123C2CC71144E172A822E8FACC6344107D90378EBAEC35DFBFDD03236528B192772D25731269F1FBA35D4328C80205AADD0F6296BD39B73E9B321E56A64DC80941DD093B125613B5E6892F0440D8D02A9CB24104DD46DD33074D1BF4F7424F118744D9C20228958C365526D84D64484B819BA3B6481FC728F83F86E2B47BAFB00BD7B7791CE66D9D59F63E2E255D4D7D687645CC80E0C35E7E1449450BE10863EF1B790788BA45B2A6DC8D4EE82C75992B41827A40DE1E010E9DCD2EB2CA40F1BCFB6B11D07CD7798D652CBC9D327B167D376BCACCFB34FEDE00F773D8F1B4DE2B58DC35FBA9089ED493E7CEA24DEB9A08371C9E106BC47536F4345D0E59DCC6397A0453AF7F6BB70EEF93382CCC85AC6F496E3895DF95079081E6DA3645FBE304216C9D6C51E7FA5D5E5065C8FD53B07D995121D4620E31B7242CF2F481C82600D024C4DC7D075F442417A41B122CF2F10937C22CAF57DF2521E10A590345C4D481B3ED59ACDA2B64A0C1F7491B42199B91825CB02D00583434995BBE1E70349AE5E3E4BBAA797BEFD7BE94B6779B1DB62E189A7529D88E3A1CB0A766252505AF264BAB6D88ED04A17DAECFC421AF7C13536A47D4E96112D789CA5AE2C3CCD3E8E889285B75910B72DD629A2680BCF72F13219668EAFE53DE7AF64765B3DA669629A70FD0FEEE6CB7FFD1320229BD006679F46B6BD9D96448EBF3B6F16EF3E7E62D815B168F72E3CB78CF5D34E1174794770CC12B494361EF922DEFA1F85CD3E4768D192CDB2E8BC746B1C934BB14DAAC0542F31196BB283F54B83393675A559DF07592D2A2701A503423C8D8B76513AD4C4848461C81FD1E5DA1C9A272C8823225B0F64946DB9E2C7A7CFF2C8D86194D95E5B495B8588B143CD5A9775374A3BC28A770A5AC641253A430D5C4817BE20E8BE3EFABBF6B3BB37C39E7C8C79F317509988CA9B81E88452ACAFE1FBC58247226F6798984B4B850EC91A8290658D8D83AD73E27D1125FB2285DBF5B12C4F5650F4FC1CBAE5B368C2781A2339CE5E71022DCD09224682542AC3BF7CF397FCE8BA87087413D3D7E8EB68A1F2E453B0123E57CDA9E2BB572F2FECAB48E229765E19FBBAB422E8F2C865CC12B4DFF52CD62D6785A535476A31A244CFBD514A1B8736151DA9AF18BDEB292ACBC566AB855ED9F2CF3A5D399B67F7A7D8D827122B4CD2A688443574DF23AA7924220615D11815A6415264F50D3546152E8D029916495570A3E45CAD10750B7FB14ED676A503A2B62A4E2408CBA58AD653A2C6864CF12E74DC96938845538988CE75D188B564C63270F16D8B7C7F2FFDDD5DBCB0378D956C64D6B4A952FB16DB5DACB921562DEA39CB4E2805B943481A6219AEE35C8CB043194390BB4C462990743199C595B246585AD4B184734344E52EDD2F6CE5FCC57338616127B95496D3CF9A876926D8B1753F5FFADC8D3CF2E84B843DBF0306741B6DFE71C416CF63D9D41AAEFF9345D4C6C4934C98C473B4E8D18AA0CB63823149D0819DC2FAD10282CCEEF2F6B28C51A22468F4829FA1D54E2963F4D1386428264597C5E803990CD263793CBB67807503016922328A132363814D753442752C414C4E64899E7E61A0EB16026FBDE08A93997E251284142C869414591B0E3F083DC4B82EBAEF080B88ACC521A5132326234C0C83401335A1CD90D865C966596EAEB0F6403658D1752F8CDAAD0C07F6EE63F5F61E264E9D496763B57487084D1C5F4CF6850F5FC311F470F2496979D183B205EDD04A5724E7A25B43DAEB44753A173C51903F9726D3956560FB368C9E1C99BE34FFF0CD0FD37D600FEF7A9748E4091D1A8F3CBC817FFCEA4FD9F8C25E342D82E7EB58BA8F3F7D0A0D272EE2FCA575FCD5B9F3185F119337BDA3A53E8722E8F238646C12B4D54FFEBF43DFED482DD133FE0B63D67B0FF6048FD4CAC7D47AC20ED50E3A2F0D5A3C2BEA616475F2BA298BC9EB1E183A3455992422427E084B82CAC7EF21A9342C052A5D120769A701811ECA2132AA16516BB16EB2F005CB4ED8521426E71BE8461C5DD8EECC381866988E2D3E26B2088BB2967487143569999018B6B8127BE0FBF41CE865DDCEBD4C9E3C85A6AA78E8B8D07402D1D43510242F9253C2087A285BB0B04DC58494616B5D18410F47D607CB1C395754A60BF7899C4D76C77E1A4C93DE3D7DF4F7F5F1F75FFD30BB766EE4F2779E8B666852833ED095E56B7FF7536EFBCD13327BD04378A05DAC649CE8B2C54C387E027F73E12CCE9AD1425411F498BA92466263C72641A7F720EA498CD862C6899EF793B0E3C9B1BA14345E99D517681CC839FC7E730F075C13DF48485434DF23AE05542522544544342DDC0EF29D30242E4E2DFAA1FE20125104414B322E261BCA529D61EB28D9F95A140EF25C701DA947677D0D2B8044552391681CCD8884845A1281CBE8B650BD2E944FC2C85DC6E28198001465472D8240978D65D2C2DA6646658358D9AE4A4A1CA2EBB6B81784DB22BAA2941274A9DC21FCCBC59E83A254E870C5BA509209A3690FD7B1713C1BCD72493DBF9B591DEDC47483679F59CBA92B8EE3A413A793C90EB2EACC2572F2547CFF9A67B6F1CDAFDFC2534FEC243084D061E2EB2EA2E7BC376306D5A72EE45DC78FE32F56CD05F8E9980000200049444154A035190DA59CB12F41A322E8F28866EC11B4C8127BFC1F711FFF4A797BF81AA3B4783DFAC4B3892CFD3C5ADDF41159E7985C492112CD3A3E7B07F36CCBF8ACED71F08CA8E45E91541237022A2286AC2057CC1B09FB9E849379B2EBF590F61CF276283F87EE084D4CAEC91467D1FE29D470450A74266FA1099B991E27EF413499A4B2AAA630F77B88BDAE90F957ECB83224CC14826841B8A1C02D32FEC4A45F78F310FD0085BC216F0E224897DEE502F10E15DD0F2D7787764329FDDD91FEE642012441CCD25A27925544F289456D328696CEB26BF5666A9249E90469AC4F72E925A7626879DA3B5A19DF568BEB6ADC73CFB3FCFC670FB2E6995D64D3BED4D50D7103110A8C48F4696B2376C6494C6C31F9F8E993B970763B8948A1EBCA18676945D0E5B1C49823E860701BF91F2D94B5258E78D13459CF3972F237D06AA71EF1EAC6E60A42660B894E63F5CE3E9EE9CACBC2F89A1E911367E2C1BB361125618849AA70E2AEAC4508C2821045042AAAB78908339F95C48CE7627BB03FEB9173A0B1AD938A9AFAC2649F30C2BDBCC3753159446E6D8971A758CB43BE2FC3E2F0CDC3950D3D2821454A1B0737782D7A9D8B29DC323A2E494E2926A014A366DB11892A3681936362758CE5D3A6A00FA6184CE564D1A38898344D98B4B737D1DED68C6906446326B93C7CEF7BB773E30D0F92C91452DE8550248F45B8EF7E5515C6F22598131A58DC11E5DFAE58425B9DA8892DACE4633B8C56045DD615246BB5648523680417AD57642B8CD0128BE82463C3F508DC67FF13E7814F8FC8DA450F3D73D917308FFB008849A86364199E6A2AB82B0AD1A7E5C3CF9FD94F774444B326119953E25111D1A88A849639C97D8714292AB1E90E491B61990DD1C5DAC6CDE724397B82E8EC9C7CB477759DAEAC478F15A1B9B595EA9A5AA9718B6E2261958F83097A989CC346AE434B21422F9276D875FBF0CD5E8B641C16E50F5B5589649430221E766A94164112BE67910558B4DC494943C8197E2133D0168E911CA66F71F1E2494C6B692016C0E0604E626598060DF595D4D6C6D1759D4824413C5E496068AC5EBD99AFFCED4F79716377F81C229374C2671291DAE3440CFC59D3491E3F8F9A44C0CF3FBC94E9CD95614B2F45D0C7C4D53AA6085AF4D3B36E3D8FA0EFC5233E385AAC0663C19F61CEFFD8A86D5375C43BF90A2B18266831ED1652C2BE812CCFEDE9678B5D8DA78B093F5F3A2112D2D32CD22884AE1B6AC16191A38397E1782E407444153286487116197D5E3E272500291F68263BBB53EC1DB4E998328DFABA3AE2B1F8505D8FA2C9EFD06A78A551B2F8E6E2EF52832E1072694D8DD22248A58E8C62042D09B91041BFAC2A5D21F124CC142C46D0218187198285FD131DBAD3194C2B4F1D0133C7D572C292195455E8C4A249A2B118A6283AA2F998119DAE9E1CB7FCE27EB66EEDA6BEBE86CD5BBAD8B6653FAE250A2709D8C4646B44EE8F30037A41805D5B4DCD49228A6EE53FAE9ECF19936B0BE246F118BC3C921E0BE4AD22E8F2AEEE3145D0EEFA1B71EEFBF383EA4A94B79B2F1FA5D5CF2076E9EFD02ADBDEE82AC6ECE742822E265F6BA42D8F3F6ED9C7D69C8615AB938FD9A2FD5345CC2026324F8417B9CCB929E1D7F5F2966C3725C9D9B664F42C4A9C0AC259BFCF626B5796798B16D0D9DE84212ACA8571B7DC2A59FD4EBA42866F0282188BCB417246B1F3F7219DB75FAD0892889C65328ACC16149383C3D1F310514B1B5DF8775943A35846D4F711DD508487DAF65C74C72261E789BB79E6774C62EFAEAD9C71F2121AABE338A64977574E584E68195F41736B1D4F3CB19D4F7FFA7BA4D28284435D7EF98953B9E4A21359BB660BB7DEFA0039CB0C495A3CBDF82E9609C90573A858BA808F9DD5C9B527761211369AF02E75F0E469E15146A6B31464ABD14AD68AA0CBA38F3145D0F61D57E36DFAC588B4B3D29BE6117BF7EAF2503A2A4785F634E16858B76B802777A7C957544A8FB1889E45C45C1B8FBD42058C62E28900264C139471B8AC71E162A70764B94F41CE72324E94E8F46D2C3DCA6F9EDDC3CA534FA6655C3D81E34B57B5F8FF2B2D879336A414209256640DE7E18EDB8746D087D6D810A42B2606C537CAB2A1E277D925254CDB2E56A62BED1F28AC7FC29D1188F7456ABA206B57E8E73ECD519DD3674C20EE7BF41CE867DAD4F154C4C57A3D1E7D7A3FFFF3BDDFC8CE2A9FFC8BCB58B56A11BFBFF349BEFDED5F93F54C343F82E66579EFBB8EE7739FB99275EB77F2B9CFFF2FDB76E540BCEF69F86E8A5CE0109D3A9571AB4E65C5C25AFEF2C27934579A4481D05B134A49D20EAE891F0DA320FBC80AB1D24613DEEE0AC9FBA3E26C56045DDE611833041D0CEEC0FAD58523226FC82481D665C4AEB8BF3C948ED25182D0BAD2791ED9D2CB012F8A174F8471ACE8986DE854C5A2AF52A26838C295AAA92067619B732CD96A4AE8CDD239E1D9B88E4B2A30D9D29367E2ACB98C1F57876B87198622320F55D7972FA5E45C94354AF56741CEF2F7C2A460D1B75C2A6FBCAC4A5DC15227C958A6758791F210418B424BC2FA57F8BBCC0A141AB46C572592516C3C51CFD9B1995C5341936FF0F8236BC8D80133A78CE3E20B961389EA7CFE0BB7B271F36E342360C1DC164E5CDC29E645B9F781E7D979004CDD2011B178F7554B79EFBB4F2195F2F9D6B77EC1A3AB77E3D92EB1288C1F5F41B2A282A7B67553BFE2541293C6D1520BB515D05C9564666B3D6D0D5574D625A88FE8529212924A65DC90FF1613C38B754CC4113BDCE4EBDB717A2B822E0FF53143D061D1F96F1CBEE87C79FB3A3C4AF89E57FE1BC69C6B5EEF27C7F4F862E4296B55482B9AC6B3BBFB796C9F875E511146589E4D4483642C8A71D8C48850B32EC664923885DE6C0BBD398B9BCBE0E6B272124D44CF8EA7B1A13BC70B072C8E5F348F299DE3110FF122CA139B5070C1BD0CD7C3C91AA5242DFB1116A48D22098BF75F4EC8C54A75C35EE7522943F89BE5EF25353686BBA18814F490A045FF40E1950E2C9FD481019A8D80E3A775F2C4939BC858018F3CBA86CB2F5949A66F0F7FF197D7F0B14F7C8F0D9BBAD0CD084BE78DE7C37F72226D2D06916805DFBFEE3E3A3ADA9935BD93CEF62AAA2A7574DD249509B8E79E27E9EDEBE18A2B2F62F2E426366DDECB97BE72231B064C2A16CD837852B6D615C9E862A2559471B5BD3C7AE0501D37185F6370F58A49CC6F6F607C659CEA9849B450C44AC847A58E72F9FCF3364D362A822E8F4AC60C418BAA75EE0B37806797B767AF324AABEA2476E583B22BF7B1B98436B5BC1BF0D4BE1CEBFA020253D49F0B307D979829B46761A913DAEFCBA3DBE149C6F0F1DAB32C1C41CC96F81996360449BFD4EFF2E4DE2C53A64D67C9AC293241239C637C659B5829391749B9F45F91065EAA3317A50D31A6D8F0B57432301C2B087A385296A45C283B2A12518A2543A537BB245B50C81F610DE8D0BD91EBCAF3E2531B684BC225672F65CDBAED38BEC9D66D07386E7A070D35011FFDD8152C3FEDB3387E42660C365519BCEFAAE59C7C621B11C3438FD5108B4464612943F3D145828A261C1E11A2F14AE992314D8D6CDEE697BF7E9A7FFBF7DB493911F4A67A3022B2E1811635312A931889387A55257E65054E24826DFA541B1653C655B268623D67CE6EE5F8CE3A92C23F5DB0F14979E835DA90BDD9D78522E8F2101E33046DDF7639DE96DF96B757AF31CA987D0DD133BF3722EB1AB32B09020EA42D1EDD99A1CB8FE1EB614C1C0D7CD9ED5AD46A2E54B57FD92E16095A5AC37C17279BC14EA7F0EC9C94396C613D135A74E0B3F6804B2A5EC7890B6753138D86135B929B43DDF9658EBD42C1A262647790A451485211045D1A4D17ED73C508BAF87B314B3024F0E1087AA87E46C1032DE50B37246F31AE94A045228D903564228AABF1FCC3EBE9DEDACDE23993B8E8ECE3D0FC1C1B37EDC5334C2A2301975EBC9C5CCEE6437FFE63FAD38EB4D9E164B8F0AC595CFDAEE554C504C746314C9388114117F545D089464D62A2B398A1631886ACD3B16B6F3FFFF8AD5F71F71FD66106313C212A17F465D1D6C0D17DCC680C3D99C4A8AAC4A84A12D4D762B677E0450D0C3360767B928B17B470D2C446A6B55493940D69DF7E0FB522E8F298E3D823683D22B567BD797179081D45A364E05A48BB1607FEE91D3DACEB75D12AAAF17571F107C4651B2AE1B31DF6481F0A812C312AB3F4449FBD3C766A1027932AF8853D1C3B2F33025FECB6C946AA5930FF38EAAA2A0BC5F88B6B3B4C645E24E0121BDDC1B24668AF9313838531A5DEE6A2065D8CA4C3BE826171FE506B0EAD7EA13BA390A4228A3249096398A045D76D51DF597640112E0E3B4B65D4A47B571FABEFDB4A6005B434C4387BE5143A9A1368668CDEC114B9748E8A8A2A5E7CF180D4944D532797B769AC8B73F2099D1C376B3C095323E3983CFDF47A6CCBA3B373A26C58904A0D62E811AAAA222C5F3E9FCAA4CE60DAE2B1D59BB9EBCEA7E93990A6B232414F6F8A679EDAC8A489AD2C5C3C8DFBEF7F8E7DFBFA993C651CA7AC9A8FA399DC72CF0BE8C90A2C714C1BAA699F3591899D2D34D646397F7A152B66B7D19810425368510CDB29840A7538A1F8E653B822E8F288E5982368BD712EB1773F3EF63A7397773C5F635468ED12015457C6E5EEE776D16F561215FA73A11E7ED21417AE68562A29F07039290482C0A53BC3C1CDA5B15329F9AFA843E1F83ABE9D664B46E3B16D3916CD9DC9F2E3A6C9758A08503BB8B4DDD0F61E6E42B0F8A620D9904386C9B9288314258DA2CC51FA7B585F232C235A4ACAA58E0D59856EA8C9AB983874B16D0BD713FA738067E54906164B674EA4677737B7FE622DA9816E2EBB7019EFBC7839BD5DBD3CB7712777DEF3047D030EFBBA2DE29128FFF0E9F3A9A9D0C8BB3E158908F535E2A9C424168BF19F3FB853661876B435B164D15CE2C988F464F7F4E4B9F9E63B983C793CD75E7B05D555BA749A7477E7C8641CAAAA4DBA7B72BCEFEA2F326BFA243EF8E1F3F8F94F1EE2A9273672C1852772C699F348A72CAE79FFBF138D26A9AA8A921CDFC89E4812AD7D025A730BE36A3C4E9BD9C0BB4F9ACCE28E46E9D609B3436505ABC275F1CAAE9A11390D41D5E22813C8B141D0A68B7DFBBBF0B6FDAECCDD7AE561E6E24F1159F1B5235ECFD85B41C16825224A74B67465B877DD3EB4867168221345689281465C3C92CB72FA32982A743339786FC5C49E2E745A3131984961675292C8022F8FED050C3A3A77BDD88F9BACE792954B6916A5320541CB28FDB51D1B61465DB8C83C944281A56281FDC3D9E90ED59C65642DB304C32EDC45821EAADD2CAD7FA2F0FE702FC1A20DCFB6457D0D11417B44BD3C0BDBEA583167221586CEB6032EE9812E96CE9D44476B1DBE11E5869F3FCA3F7FF7F70CA41D3CD3208ACEF7BFFA4EEA2B5D3CD15D46B82B44701A89E193E4735FFC1F2E7FC7E92C5934858A8A2855D555242A4C296D7CF39B37F3F4535BB9F2DD6773F1C50B8919A20094417757370D753544E3557CE04FFF9AC6DA06AE7AD7E974ED4BD1D337404B6B0D9515115C4BE3FFFDC5FFA09926E79CB78464BC821FFFE271F658106BEF20B26C31B6E130B71E3E79C66C2E3B7E52A1BAA008A0C5F4A3005DD68F7D531715419707EF9820E8447E07F65D1FC2DFF348797BF52AA3A2EFBC1BA36DC511AF67ACAD406AB9D2D226A2508DD59B0EF0D4AE0CC9D6567CD15B4A14330A3462824D8AA923C345EA0EDA5DC9B1560E5768CF9934563E856BBB18760ED77378B227C6635B539C7FE652164C6D2370C42D4168CFA113F7D0E5708E0D912C534CC428D598C5670FF53797CA1CD2DF5C48020927050FAEB75194368A3EE8A1641459BC49A470FB389683232622DD3CD31A139C377F0AAD0993B809664D35C9A8B8E178442231D24EC037BFF32B6EFCD573785E8440D4A2D63596CEA8E6FCB317336D5223B1427DEA4832C97D8FADA7B5B193B6E6188978841736ECE5D9E7B6327FFE4CCE387D0935B5716EBFE3596EF8D14FF8D2973EC07173DAA5D4B267F71E9CBCCB9E7DBDF4F5F5D13EBE9588E9239AF08A42FEA29B8BB0F10985B9FB80472E97A7ADAD8AC71E7B81EBAF7B845456C3094CFC855349CC9D493652C1C2D608FFF927F399D35415362B9085AE7499A8A4087A745CE16382A063FBEF97F53782DE0D47849A5E3F5BBA3788561ED17A46FB87C389B5D0A72C0D71B28646802BFB004257CEE18117F69237AA885726866A4008028DCA1653C58E27AF10F0FA0176AA17279DC6CD67F0F27949108E98300CA27CE7D16EDE73F14AE6743622BE54FA718B0D4F4AC03B5C128A0CE0048DCBFC1321C90CFF1489FCD02248A5B24691A0852C52EC7A52D49DA5CE5CA8FB2C9D1905DDB9B4F8BEEBBBB8791BDFCDD15615E19CB993993EAE964854F4103449C46398A22E891123123788C76264F23E37DEF2000F3DB199CEB6361E79683DCFBFD44760E75836A7853F7DD7623ADBEAC86434FEFDFBB7F3E71F3C035D8B70E73DEBB8F1D6A7B182288E35C0F4CE6AEEBDFD6FE94F7BFCD5A7FF83258BA671ED47CE95B54BBABB7A181C48234A57899E878303199E58BD81A79EDCC6C4894D9C71E602B66DDFCBAE97063969C53462B1F02964CBA6FDFCE29627E8ED4F3363662BEBD674F1D29E41EC4651EA602EB4B7B0A833C95F5E3497D327354AFFBB903ADE6C155A45D0E5B1C8D820E81DBFC479E40B048347D6B95BB4B28A9E7B0398C9F2D019D5A38AE9CF61265FA807842F7D21D816EA1E3B3EF4E75DD97D7BC0F2C9381EBDB68F25EB6A0839A3F8F9508B14057D0E2A1577E8A3AE206FCFC5EADB2FE50DCFB2B12D0B57A47613B0291D636BB682CBCF399EB858A31F66FD1D6E795582F6C4A3FDC1045D9A8052943986A3E7302BB0E8C41822E5621124A9290FD77216759D0357746D11138661328D90385CDFC3CD0E521F373963CE44668F1F8768B12584A1A86952D790A0321923669844449317DD9451772A67914E79C41311FEF0D07A3EFEF99F4A1FF909F3C7F3BECB17D3D1524126A7F19DFFBE8D0F7DF07412D12477DDBB9E1B6F7D8AAC6DE0BA29E64CA9E70FBFFE222FED1CE0BAEBEFE08C558B983EAD01C7F1C80929C989B06B6F9EBBFFF0088DF515444D839FDF7C3FA79FB9844B2E3D953FDCF5383FFCDFDB39E7DCC55C74C90A2A2B62128FBEDE2C8EE7D1D454CB7F7DE71E1E7A68037A3C8AD5D244F4C4A5588918735A63FCDFFB9731635C95EC4A1318A1E4351C498F6C58AD08BA3C721913041D7DF187B87FFC7B82EC81F2F6EA154689C2489193BF0E46EC88D6337A3E5CC8E62B5E3B525F0E3B64F7E63DFAAC9098BBB32E693BC00944BB284D7A730BE59B0F22681971BF56E28248DC736D72DD7B70B2697CCB91936A2222CDF83A776D4D71FA69AB98DA5E876F0B4DF3B5C939149A87E56E593B5AB6A23ABCDFB954831EB2D405616D8DB09091F85CD1AD51A85257ACE15C88A25D3B4CA41111B3746A48EFB3D0AA1D92DE202B66CF60FAB866366EDACD93EB7630904EC9AC9AB9D33B58B67812F36775D0545B81EF59E4450125272097CD61D93932B918E7BEF79F9938BE91954B27B262C9046AAB23B87A941B6FBE8F534F5EC2F8E64A76EF1DE0C7B73CC9F3CF1FA0AE46E73D57ADE0931F3B87DBEE788ADFDFF118975F7E0A2D8D49C19632FD7ECDDA3DFCDF0FEF62DDBACDBCF39D2BB8F28A93D9B9B397EAEA18F58D49F6EEEBE3A1079E67F2C47666CE9EC4E64DDBA9AC8CD1D9592FC1CD657D3EF5E91F31D02BFA48826546C877B661CE9E85555BC5972F9DCCFB4E984CBDB8F3489D235C868FE0C809D38AA0CB6391B141D0CFFE23CE93DF023757DE5EBDC2A8C819FF8D29DB5A1D2DA5458B151634D2B6477FDE21E3F8E4029D03695746CBB2B934A2C9AA8802C30AFAA2A4671825178B5B0E5F8C52147995EB505AD6AC3C9903BB64D6A02726D46C9B8CA3F15CB7CD93FBB2FCF507AE20A20B7B5B28B11CBA1C94882227270F2E21FA4A9981F221A130E137AC4317124E4469D342224A91B40FB6D37961995069AF2B383764D53A91BE1D7A9DC58D47773D8E1FDF447F6F0EC7D648A732385E9EF1CDB574F76519D790E0B9B55B696A1CC79927CFE2DC5366E13A1676DE2697CF33386873EF231BD8D735C8CCC94DB4B7D6938C0AAD188C68820D9B77F3C4532F71FCE269B20C695F7F9EFDFBFA98D0398E19B326B0F1C52DDC76FB6AC635D672C53B575095D0A5FD2E5911E3C9275FE4A187D7CA4495450BA632635A13BA1E953715F17420BEC471024CC3249DB1F9ED6F1E116D1C39FBDCC524A251D2A93C7FF7F7B7E0BA1102DBA3A73743CE30099A9AF0DAC7D3B16432E72C69E7ACA9F59C34B355F69A0C6D78B200F5880AD38AA0CBA3B2D14FD0864BE48F9FC37DEEC8134B84FEACB71C3FA2275A79308FFCA89052C30833E3066CECB6D89D71C97922D013979470B7CA82CE0521599AE786FB01BEC14D1276302F9B26B57F275E2E2B1BA48AA2F5FB3206B7BD3848754B339FB8E81459D02A54410F26E843ED74A17BE4E57A73E9B8C3799D87248E12A786187750379482DF59DE5464324AD8C1457CB658783F7003F29ED8870C86956566CB380677E7F8D91D4F307B4A3B1FB86225F1B8869DB7C8E71D49763FF8C1EDAC7E6E278D4D4D7CFAFDABE86C34A56DCCCAE71948EB7CE9DB3FE7E295C75355A5CBF65DF555111A6AA2B2FE46241AE1073FFB2303FD196A2A13AC5CB984BA9A38AE67D3DD6D71EFFD8FC908F8AA2B4F236E0A6923C340CA4133A2C4A26282D70E1D3162424188D3F2F00A374A207F04A3CA7ADBBECE9EDDA271408ACE090DB2029E382BD6AEDD851718A407036EFBF5A3BCB4B34F4A3879132267ACC26B6E605A93C797DFB180B3A70B794778DE45275E71AB5511F41BBC6CDEF0C7463F417BBD987FFC1CDE869FBCE19D2C7E50F89FF5A6F947BC9EB77D0562C61D106D11BA320EBBFAF3ECCB055832522E542FF30359DE532ACBB2EEC6F0B4E1CBB7BF34821E7EB760851EFA83ECF957D06807F7BE842F9C1C8E8DE5FAACEB0AF8C3F634A79FB294F38E9B24279A0AA6ADE1CF9724A214A3E1E277149D1743C45C42DA877A9D0FD69F8733040F47D0A57537647BAA42828A2C7A24BBA104D86E1E2FD7CFC49A4ACE3D7E111FFF9BFFA3BABA8153164CA0637C0BBFBEF75976F6F449FFC9E5672FE4BD979E483693E5A777ACA5B936C15567CF0527473A9B12FDCEF9E12F9FE48107D613AD88E004010BA6B773C959C7D1586D08C3057937CE9AE7B7B16EC30E4090BB88BCFB686A68E1B24B4F66DAC47A6286905C3406D236BFBEED61FEF8C4063EFD89CB18D7501936CC95A4A94B0B5E36EBC8CCCF6884B03142A1AFA460EFAEDE14CFAFDD4C67BB68B555174A165A848D2F7471C30FEF65DBF61E594D509C0156472B15272E215B19E1EC6915DCF8C193C2F415697B0CCFAB915A54045D1E92A39FA0AD7D988F7F166FD32FCBDBA3571935B6093AAC9F519C5FB77D9F8D3D595E1A74487B4658A54CD7A4C62C62D762E727D9B95A62F2C666E64B2F49499E9E879DED27B56787943A44169ED0B71FDA65B379C0E79A4BCE607A43A5D4B24B09FA952604C34D1B2E7C344CD007BB3786258D42C3D9429660A9AC213E5B1A41CB946ED13CA0904558DA915BE8E69E982414371C2B4D53D4E7ACB9D398D2D2C6D91FFD365FF8C47B3975F1447EFCABA7F8DF5B1E473345395593A8DFCBDF7CE2024E3E7E269FFED2F7A96968E6AF3EB08AE66A91F99792938DDBF7E4B9E5F6B53CBD790FFBFA2C1AE206579C398BF3CF9C4522A6614685B32646366FB0BF6B90FE8134C97884F1AD0D744EA844D610742D1C342C2BCA962D7BD8B5B78F850B3AA888990579CAA367D0E7DEFB9E938D676B6AE29CB6721EF3E77662BBE942D6A6C6FD0FBCC075D7DDC505179ECCD967CF97D98B77DEF1240F3EB89E7DFB2C904D02C4790379313F31A593CA139630AEA5921B3FB89069F549793E89E256C508FA35E729CAB8521541970192B8698EFA9657D65ECC3F7E166FF3ADE5EDD15148D03272150E559150A7C1F6812C9B7AB2A47D51DB423831741CDD43383644728520E54016030E67E18B9DAF87A0293B102A991E2AB499129D52ACC13E52BBB7E13A79A93FEFCBC05DDBF3548D6BE5FD179D4432081FA7C36D18962F8AAF4B0F914C4A2929B87FA853A35473169F2BBA338AC5F60FD59D8B042DC95A44CC857E82B2334AE1C70B7CACBC2027F1378B79CDD59C3EBD9DBAAA18BD76824BFFDF75BCFBF4395C71DE095CFFBB35FCF2FE0D61179920C0C9F6B3727633FFFAB50FF1FB479EE1C7373FC8673E743673DAAB480FA6B1DC3C96E5921DB0B9E9EE17B9FB8F3B69694EF2912B4F64E98C4634C3A53AD904A6B80159619AB51960EA3A51334AA2BA194D384ADC0C795BE7F7F73EC9AF7EF7282B4F5DCA79A7CE2126928A74979D7BD2FCC5E76E606FB72D356A31A7675B69CE397D0E9FF9D42A7C574C2C06F4F4A67966CD36D94477F1E2690441826F7DFDA7AC7EE245B448122396C0F0C2BA2B82846D4D67A03641ED8AA5CC98DDC45F5F308F55339B10A5B3C2E8BBEC93E755AF5745D0E5D19922E8F2707A5B47C94C3A4D931EE66D5D2936F7E5C8184939D96914E48B8C8804458DE382EE5B24C7305DFBF012C66BEFD4B0052FECF9272268177BA09781DD5B65D71441803B07E1AE1D361D53A7F2DEB317127545BA83D046C3AA69A12F3B5C4A5FCBDFFD973B36C4DF0FAD4A375C00A93019284A7F160A2B15B3030F9A142CE8D1B20FA2C44614DE0F35E83019C5C2772D702DCE9BD9CEB249CDD2EB6C6BB59CFBE7FFC1BF7CE9232C9D5DC7F76EFE23FFF5F3A7C08C482D56CFF4F1D90F9FCE490BA7F1D9AFFE90CAEA717CEA9A93E968D4490F0E62D9196C4F279D8971C3AF9FE681A776B2EAA4697CE01DF369A88960C422FCE496C7E9983891D933DA185F671217968A888EEB193CF8C85A2AE31AA7AD5C246A0BB2FAB95DFCFD577E4867CB383EFF990B68AAAD92730FDB77F573CDC7FE879C1B0B537F021D3B6BB3604E2DDFFDF6D532B925D06C742D86615648FDDCCE67652A7B4F7796679FDDC2BD0F6CE0F98D3D44021D5364558A3040B83D0870A6745073C672CE9A5DC35F9D771C53EB92AFD256E1B5CFA4434728822E0F3345D0E5E1F4B68E129AA3E5796CECCDB3ADCFC6D1A204BA29BDB9A2B09BD05145C3D7B001529831286D03AFB01CA6A5E06BEE5F512316F537EC811E06766DC5B1454B2B871DA980BB77794C9D3993F79C311FD31D8EB25E89A04B13504A23E822391F9A8C529A3D2826D44A53BB8B045DD4A08B5E6841C8C5085A24A8086B9D48F2081353B244038789D5559C3AA38DCE862411334AACB292D33FF67F242B2A3973C9049A1B6AF8ED7D6BB089CA4CBE93E67770D1394B18CC64B9F1670F31ADA396779E3E07138B6C368365D9ACDDD2CF8EFD197918F6F5E6A9ACAC64D9DC76AA2A626CDDD5C70D37DF4375A28271E3925C76F65C56F6ECE2F600002000494441542E9F4ECA8AF0A31FDF475B5B0D0BE74D66F2C466621193ADBB7BF8F92DF7D3D6D8C439E7CC26198FA3FB1E7BBAFAF99BAFFF86ED3BB3E4F3AED4A0135138E7F4195CFBBE95B8B29598C58E97FAB8E79E3554D72458B572A14873A1BB2F232596471F7D89EBAFBF8F88AEA3FB01AE485011A78F68ED555745E28255D4D447F8D35327F3BEA513A98F475EF33C29778022E8F29052045D1E4E6FF1A8E1A40041CE83AECF969E0C3BD326AE8C633C9C00B26E801BB6D90E7BF9BD89CB90D3C2B5C90F76D3B7630B8E9D95A4B72BE373DF2E9F0953A6F3BEB3162314F1701EEBF0BD04C3505A3442092BCD95BA380EADA9513A2128E50E69A5B30B76BBE16E28C5085B960A15FAB4A8F72C1BBEBA327A96A46D7B8584141BCDCDB2A8A38565D33A694C68C462069188705918DCF3743FDFBEE17744137196CCEDE0C25366316B6A27F73FB691B696763EF5B73F6057F720A72C9CC4973E703251D325675958B91CDBF6E6F88F1F3FCA9F5C7916EF3A773EF94C967FF8EFBBF8F99DCF485C4CCDE7FFBEF54192A6C73D8FAC2716D3B8E6AA553CF8E456BEF2ED5B98377322E3C735B0706EBBB4F1897D58B771A7B4ED2D5F34998AA429A360218D740F183CFCD80BAC5DBF95DA9A4A4E3EF138664F6BC6F35204BE284C65F0F8D39BB9FE477772C6AAE339EB8C053CB5662BDFF8E62DE4AD28AE2B52950ADD1F45FD0DE9D81025397C5C53C39B3189CAA58BA8A886EF5E398F93A736C94317CA1C4796B8A208BABC8B5511747938BD65A3E4692F66E80B9A5FCAF1D9DC9767F7A08555E842276A26E47C911518BA34E4E55248A51EB24295CA1A877077F91174F1422CCA1342CAB4A5C4D1B363236E3E2735E8BD599F07766BD4B775F0C10B9713D38C50CA286CC3A1124758C9544CF689ECBF509429B5D21DD6565778049772856841E5879F1F766984D24758CB397C1D367C2DD6D870E5CD44764E716DB2FD39A6348DA3311963E9F446664FAA236A6898310333D6C8ED0F6FE0C6DB1F63E38EBD2C9A3F8D96867AEEBEEF71264F9AC4FA2DBB686FACE18A55B3B8F8A44EAA6BAA71FC80AD9BB6B265771FB7FC7E03D7FEE9859C38A7153F6F71C36D4FF1AB073690496798DA56CB173E76169695E1F70F6F67C3D67DAC38711E0FADDEC4DD8F6DC4CD8425528F9B51C9B7BE740D6DCD757CFFC6DBB9E99607F8D7AF7D94C5F3DAF19D5C88997892F20DB2962BEB474784AE2D4AA54A8BA3B0DD451848B96CDBBA9B86FA18CD4DD5FCFA8E67F8F677EEC430AAA5475ADAE870E571105DDBA563C31713CD60D75753B57C095A5B1DFF72C51C2E3AAE45E69E86245D284FFA06AF0C45D0E50137FA09DAED09270937FEACBC3D7A955163C3C5115AE88A997E3B072C9EEFCA91173193268A43EAE43D8F9C78542F55055F4D673E34B82EC9DA7BBDA006AE8333D847D7B60D78D92C8E93A73717F0E83E03B7BA9E0FBF6315B551531244B1B46891A043D2966C7C5021A4A2AC513A41585A204946BF41584CFF95AC74227B50269D48CD5964040A19C339A8F8BE2D9351845FD963CDBA3E3C4B448B1AD79C3B87F79D3D839A6840C48C10ABACC0D3A2ACDF76805BEF5EC3C34F6D61206B61B92E139A2A993FB59365F32631797C82E6DA186DEDED18A6CE0BCFBFC0819E3E06337166CE6EA5BED294FD05F7F5E4D9DB93931A7543459CFA069F6CDEE4A6DFAEE3B67BD7108B2749673C328E256B74882784E5F31AF8F2272F65F6B476563FBB9DAF7CE326FEF29397B17CD94490859184BD50C81182A8455ABC2DDCD1E019F8BE8E70F9AC59B38B3D7B7A58B6741AD55526E203BBF6A7B9E5D6A7B9EF81E748A79C822FDE970D033C471488124D741D74238A1B89139B3D83CAC5B3F9C87993F8C8091D54897E68E209A95058E9F59E3FC5F18AA0CB436EF413B4E111F9E367472651E5AA47467DA1FE7042509744B4B32FCBE63E87415FA4DEEAD2F79C753C6CDF905ED7D219F5D735117898C24505D5E155CF1A39D5278A09A507D8BFF9799C94A8C591236D3BACEB8FB1211FE7A23357B07C5253C16257F05F9746D28526AFA51A7451C628FE6D485316581C525FA318359746CF42069004ED7B8852A143B63A9198229C1CB25D958393CF5315093869C102563FFE025535AD3CF6FC0E164F6BE02FDEB984C60A88181AB1448268348A6E98ECDE3FC0D69DFBC966F39214639180AACA040931A997CFCB47FD8E09AD3436D492CFFBE4F396246BADD8FD44A4DE8B92A6AE2B13595CCB2197CF48FBD4B63D19EE7E7823DB77F7326D721BAD0D491E7D720B0D0D157CF0BDA733AEA19AEACA28220774E3E6977869670F0FAF7E01C7F53967D5024E5E36155364120A4B9E63C93EDF791B0C23206F6B5C77FDED18BACF1597AF24168DF1E4531BD87760102BAFF3C0C34F93CFDB9C77F672060607686CACE1C0BE2E3C4F67D6EC697CF73B374B32F7AB6BA85CBA8459CB3AF8FC457358D159272D9DBE5E9C8E7E63D29A22E8A385A0233A9167BE86FBD43F832B2E8837BE442FB81963F205A3BA58BF8C32358DFD83799ED9D54F464F821112F440CE262BB2C5C4A36DA1C07AE9E5F17A2E95C3F93A5ED5EB515CB9B0AFE50638B0E939F2FD7DB2925DCECAB22717E3F1BE04D367CEE4FDABE613C8BA1FE11A4B270A05798A4941C9F525B5360E4D46092368F1E82DBAA184F5358A51F541D982059D5910B9F8BB23258D82AC213307056187EE0D3B635111C007DE790EE3E319D66E4BF1AF3F79800B4F9EC79F5DB8105377D1A326D5958942F53D61C71384EA228A2B897E8BE96C1ECB1637823C563E47E0384CEC6CA3797C2B6622269F0C743C06F3067B0F0C4AFFF2C0608E6432C6B8BA4AEA2B22D8763F962DDA6841FFA0452AEB9248681858FCFC77DB59FDEC06162D984ECECA71D292E95C728EA8EB0CF73CF002DFFCCEEDAC796133575F79325FF8D455AC7F612735B5513A3AEBD9BE2DC58D3FBE8F8ECE24175DB092FD7BF7C93AD46DADF5BCB8F100FFF29D5FB16173376D4DB55C76C54AEAEA74162F9C295D2D56D6A1B2CAA4BEA91E5D8BF3FDFFB999813E83DFDDF128FD4D6D542E9FC307CE99CEA74E9B4E5C78DC656661B16EF7EB39F3C2EB571174793C36FA23E8884EF4F9EFE0AEFE47027BA0BCBD7A8551A250BFB9F0E3A08FDC6CF4116DD0613E2CC82CE7073CFAE27EFAFC18463C5EC808343890B3B134A1136A8812CE2398795BF66E08C274ED0C3D9B9E23D7DB8393CB62E5B2F45BF074BA023BD9C417AFB940DAF1867A7F9756A513E45C983C3C1C411F5C6363B84555697D8D525B9DACAF51F03A4B0DBAD0BEAAD8EC5554AA13B52A703CF6EC4DC9CCB9692D0D5CF73797F3ECF39BF99F5F3EC8DC9953F9B32B57D13A2E89AF9BECEB4D317D7C1542CEC9A4B2B2C7A088C48543C3CAD932C1C5B2F2E49C3CB5B535B4B7B4128D478956082F739CADFB737CE55F7EC9DA8D3BD9DF93C672908E8CE6BA1873A73773ED7BCFA4BA52C74D0F4A4D5CD4CF10371622113EF4C55FB0A3CB420B5C34CF65C1F47AFEFEB357B064EE4499F1B77D678AEB7F7C2BADE36AA9AA6AE09BFFFE332E3E7F059FFCC43BF8ED6F1FE4AFBF701DE79D731C1FFFC8A574B4D7C93ADD426E7AF299ED7CEDEBBF664FF720313DCF673F730573664DE69E7BD7B07AF533B434D7306DCA783239970B2E398FA953EAF9C5CD0FF2D5AF5C47AAA299DA734E65E9DC66FEF9EA654C4C98050DAED8D5A1ECD36768A022E8F2301B13041DDB743DCE637F4790DD5FDE5EBDC22863DE47889EF20D30E247B49E37E3C34305E9029F6777F7B3EE409E644D9D4C991673F639C7A74F5CC8087216133AA12821FF79BD014CC18957BA1FAFD0E864A8E5959453A4842C269FF2F46C594FA66B3F7666102B93216BD96C722AD998ADE41B9F788F944286DB1A163305C3EE289444D0826CC5F2B2D6557E2855944A19C5A495E1FE8161D42CE48BE264A19C189456BA30ADDB96F2874D904FD3D6D0CA434F6C6560C0E56FDF7B22C7CFEAE4406F3FBF7A681D8E11E7FCB397B1FAF10DDCF5E85A2E3E753EEF38750E6D8D7172D99424E79CA5E15869A2318D8816913246BC2A492216150F38E4F538773EB49E1FDCFC304F6DD8433C9E90B53722C2DC261C24A257A3888A67B471D945CB387E4E0B869F93DB8F6FB2E5A5149FFCD6EF481391BEE4381E679F3285BFFAB3F319DF5089EDD9329DDB301274ED1FE0D6DB1FE4C1D59B9933B583ABDF751A9B366E67D3A67E2EBDF80462A683655B589E887303EC40E7BBFF75071D1DE389472D664E6E63FD0B5BF9F7FFFC151133C6C7AEBD185D37F9C63F5DCFC4C9CD7CECA39713040E37FDF40FECEC75094E5841DDF83ABE78D93C2E98DA50A8F1A208FACDE082D2758E09828EEFFD03F6839F21E8DB74447868F533885FF9304485D97FF42C438625F1388FC60D7FDC4675739B2439F1C09C760306F236AE26AAF0C9A4EE90280BC4FC7AF939A4F68397575AC7CBFE2EA3618FCCDE9DF4EFDB49A6673FB9C15E9C5C9A8CA7F1A2D3C0F2732F65E994163CA18BCA4941C1C98592A28568BAD4D75C9A2D18EAD122B12424E82152164938C5D655B2546858FF39EC27188E15846C89DFC5EC9967E1DB2EA201AC20D7A6CA4A3E7FE5198C4BEAF4A7323CFEDC1E3C372F1FFFFFF7CE75DCB57E3F3927862977D89451E607CF9DC9C72E582823D93B9FD8CE3FDEF07B164CEAE423979D4847438CA4E9138BEA44A2097A2D8DCB3F7BE3FF67EF3CC0ACAACEF5FFDBED9439D30BD319981960E8D23B82A0A8891A6BAC29A6F7DEFEC9BD3726F7A627D7146F62A229C6A8B125512CA8A8802220BD0E7D18A6F776EA3E7BEFFFB3D63E0706053D5272AF66B60F0F32B3CF2EEBECFDAE6F7DDFFBBD2F075A7A98775E2535792A9FFFE8E51CDE77446A6578FD1E8A470EE7DB3FFC235DC10C36EF3E484196C167AE9DC7B2B915C4AD08A613E0C6CFDD49BF290208958C3495658B2732764C392B57AEA7E148339FFDC8E55C7DC554E962138B0A77700B4DA6776C3979C762B654A18BC735EE7B6815BFB8F369028174465595D1D6D6C5F471D9DC74E3321E78E859FCFE346EBCEE02145DA33F14A6BCA4587E57ED5D1D1414E4A16A169B371FE43FFFF33EC2E7CD451B59C2D22A1F3FBB6EE671D12DA1FD721ADB50049DDAA0BD3D00BA7303B1173E87D3B13DB5BB3AC55E8AEEC7FB813D2881A2333ACE59FD70C2BD44469B8AC3919E101B9AE3E81EE1741227E63874456CC2A2334CD564FE5CD0F04E24C09DD52B7A938309AEAC45A4A79DDE96467A5B1A0876B7486D68A110D71E0FD0513E979B2F9A438EC099B840679195750B7E227A7E2D38BBC09BB0A63AD61DF8FA08FA58349D10D73F46A54BD85589283A2AA874C228362EBA1C6DA93DD1D91FA3B9B5939F7CF40A1657E7D0D0DEC3577EF30263CB73B8EA82496C3EDCC1BD2F1EE0506B5C52CC4C3B4C866671D9EC0AA68ECE273F3B83E7371DE2A1557BB04371668C29E6C3974F656A550E5E03E24A1AF73FB795DF3EB18B505F275FFAC0855C30B98CC9132AF0790DA9156D9B361DFD7D6CDD7D8467371CE5DE475F116E855CB168145FBA71219A3D80E9683CB67217BD4131F1D81C69EC64DD96161C5D98CF86890D04F9B74F5DCE37BE70312DAD1D3CFFC2368A4AF21835B2180783D5EBF6B273E7513E72CB6232B2D2F8D3FD6BF8D91D4F62DA5ECC6888F2920CBEFB95CBA5D0FFF77EF62899593EBEF7ADF7B27D571D7F7B6213975F3C9BEBAE9E8FEE31D8BAFD00C1C800C545053CFCF04BBC14CCA63337979AAC280F7C7C51C21C3E2943FAD69FBF21804E6DCCDE1600ED379B89ADB815BB61756A77F5067B79DEF3185AC545677C9CB3738044549930AE306D8515DBF613CFAE9020261A5204D7B92322AC47C54E2E0BF53863E3F4A297D3BF7637D6173248B1503F031D2D74371DA1BFA59EE8401F91984938E6B0D1338E65E7CF654E4D398665CA6298E87A14138EC4E8C1C541DB923A1012A093DC68E16C92307B3DB13BD04D79B862FB6EF1F07554BA9809428FC48A10150EDD2187C3CD411ADB83DCFEC94BB86A5A213B0F7771F96D8FF29E59D5BCEFA209ACDDDDCAFD6BEA68E80E93E9D1C84C73C822C2A76F5C4ADF401F79197E0E3675F3DB47D79199974F535D1D5FBD611E972F18236979BB8FF6F1A33FBF80E1CB60E69861541705F8C8F5737114836028CAC04018BF57473344FDC0E07FFEF2140D6D0EAFEC6A223D4DE56BB72CA0A2409379E8984863490A9DC6C69D2D7CEFCE55988A8EA3DB38E1305FFEF8C5DC7AFD0CC20321F6EF3B443466535D554A7BB7CDB7BEF317F61DEAE4131F5CCC65974C61FBB646FEE7EE2739D21EC289EB32EDF1DDAF5F4A46208D1FFEEC11468EC8E72B9FBE8C47FEF112F73CB09E6BAE98C67FDEF6613A3A43FCFBB7EFE4AAF7CC63E182892C7F6A330FD546E8C81B468ED6C7B35F5CE2A6A9A4C7A4D00F7FEBCFE11040A7F616BE2D005A745DC59EB8FEACB87A6BA3AFC373C93DA98DCE39DE2B11344B2924C1DCD8D5D8CDAABD8D948CA892790101D1BD11E88C5852E3D9CD030F7A194ED6717226B21B27BBDFD71DCFFD81742119E8A1AFB581CE43B5F4773449801674AFDA78319EE2D1CC993289492386E1157AC5223123DC4B060923C9885802F471AFC06403CAEB54E912D655526FC37485F68F19BECAE614578B2466464044D8669CEC4C3F0BC68EC4B61522518B25532A1916D038D4D8CDD7EE7C8E8B678D62F1C4E13CFAD23ED6D6F5E0317432358BAB178EA5B3BD930963CA098623E466FA39DAD84ECF401453F5B273F77EAE3E7F32E5055E06A20AF7BDB897879EDFCB8D974EE7BAA53514A4EBD2626AF781A3540E2F2533238DE6F62E0ED71D61E1F4C992E7DCDC61F18F557B7879D35E96CDAEE48A4535188A70A7B1D8B9BF995DFB5BD871A09DB5DBDA7144CD44D0DAE271468D18C6D47139BCFFEAB94C195B4267CF00CFADDEC5F2957B58BDFE30B198C69C89597CF5F357931BD079716D2DBF7F701DF547FBF0E90E1FBC7E0AB3678CE6851737A1281AB3A68D95935E5D7D1B1326543275EA6899427BECF1754C9F3E8ADC9C4CFE78EF4A9E3E1441193716D5E967CD5716CBD670292025D3D0A7961538D52B3404D0A981CBDB03A0BD1AB1E5D7621D7C3CB5BB7A83BD14231DEF47EB51FE0FF812BAF460297E40D85278E4E57DF4797C9414E449301639C58EB04D8F10DA10E02C0D5106472BA78BC6A73F8C32E52852BC227232C3447A3B68AEDD4957FD7E9987B6A3033446FCB4798A482F19CDC5F3CEA3AA301B4B74A909FA9B743E71BB0C93002D9A5092CC8C6379E6846EF3F122A12B1DEA02F4F1085A449D82B9216450456130160BCA966E33AE909399CE2D8BA730B7A698CC808F17B71DE268632FC387E5B163DF3EC6578DA0A727C4F20D07C1EFE7D259A3C9F32B1CA96FE6C08123CC9C310E9FC79014BD7DFBEA78F79259F83C3AD1A84D9AEED0DDD3C191CE28BFFCC7665ED9D3CD7F7C703197CC2A21CBAFB362DD5EFAFA07B862D96C29C224AEF977F72D67EAC4092C9B5D4D4BA7C5F31B0EF1E7E5EBA92CC9E43337CE23C70FDD6195EFDEFE08DBF737513EBC90BE7E4BF2A5354DF0A155E2518BD2BC087FB8FD134CAACC055DE3BF7EF138773FF03271DB8F1989F29B1FDCC485E78F47B1426CDBD5CC776E7F926DBB5AF0185E46975B7CE93357CA7CFE5F1F5A437757841BAF5BC89C59A37865C34176EE3EC89C59E3A81E59826A183CBD621D1B361F615FC44FE6AC29C408F3E297CFC727177F2E956828823EFDF7E9CD3EF92F07D06240BC573F8B5AB6E0CDC6E69CFFDEED78B625F61EED0CF3E09A3D148CAE22CB2B3AF15444EB417BD8A63F96606B9CF32B4AFD042222564503486480B603BB69DEB78B486FA7644B74866D7A1D3FDDE92398357B0E4BA78D910EDA22D5612554E88E6B6CB85D82C7DCB813EDDBAF7546B107E59945AE3B09DC029C054759A64DE282B9102266C531C30EDDBD712E9A51C317AF9985473778EFF71EA4F65013D3CB73F87F1F58847053F9FD935B79EA957D8C2ACBE72BB72C233F5D65F3CE7A543BC2D489C3A5EB89B0988A5A3699693E2C33447666366D4D6D7474F6D2D4A772C73F36B2F15037D7CF29E1B3372C24C36BF0D7E736515E5EC8ACC923A96B6CE3BCB115DCFBF73598C0A7AE99C7A18630B7DFFD142BD61F66DE79357CE9FD7329C854680D3B7CF5DFEF62F6CC69DC78ED5C0E1D69E3377F5EC9FA1D6285A2A29961164C2BE0E7DFFF38A5394234CB61E79E56F61C68A72FE4D0D1D1C6273F7011861A053BC6BA4DF57CE7F615EC3FD283A2EA5CB67034D75D3607AF07D66FACE50F7F5ACE55572DE0C61B2FE6D39FFE09FB0F1D62F1A2697CE93337A0F974FEED5B7FE4D5CD0DA48F1D43C545F3315593155F5C40BA8C2D5C95C5D3715A198AA0537BD7FE25015A9FF54D8CD9FF96DA089DE3BD441422F278EBF735B272672BD5E78DC327B514544236B484E284E3A75A42FEF323689975948C3BD7C854B1A2F4341EA679DF767A9B1B880CF4110E0E108EC669338AA898BA984BCE9F454017AEDA0A8EC84927981C96A4D125CC5E0745CCAFCD3B4BFD8C41CD2749F076F59DDD766E91F270E216B1480433D6C7F8B2524CD28944427CEE86F33954DFC257EF5E4986C7E0FAF913B9727E353DFD31566C6B94ADD8B3ABF3193D3C93E52F6E60EE941A8A057D4E350864FAF1780D34434CA436E118787418E8EBA2B72FCEC18630BF5EBE8D757B5BB8FD2BEF61D6A84C0CC561F596FDB4B5F5F0BEEB2E213B53A72F14E547BFFC0B4B16CDE192E9D5F45A3A1B0EB6F18BBB9EA52C3DC0E7DE378FDC348BCEA0CD4F7FF157AEBFF6122E5D3A51AE18B6ED6FE6C7BF7D9C504861F1EC712C9C554D557996E44A4BDE8FE391D2A46271250D73A33184359910107F76D54EBEFD932769EB73D0741FA34BD3F1C7A30C2F0D70CD758BA9AB6B276A06292BCD65CD9A7D8C1E3F82C58B66E3516D56AFDBC58BAB6A797EE556BCD515542E5B886DD82CFFDC5C32E56ACE5DD90D01F4B90389B70D409B6B842FE16F211E3AF3D1300278AF7A0AB568E6991FEB8C8EE04AF1F7C5151E787127FD5A265555A5A8F108263ADD5187D6011353E49F4F83EE7C4697F6261F96D1BF34034076D585DA9BE8ADDB4DC791FD7435374B3B2CC1A8684B1B41E6F8455C38F73CCA3234ECB85BE893A90CE16F28803541911BACEF7C2C829646AF2EA73999061111B4C837CB7F4B9A5D18D190220A8B66D0E45DF3E7306A7809F150174BA78C42157E7C1E4853559ABBFB68EB8C70F30F1E624F4B04CD085093E3F0C5F74C9682F5AB37EEE243974E27A6F87968CD6E1E786E27936B4AF8E6871633B9A2905FDFFF38E98100572E9E4B6BC3513A43264F6F6DE6AF2F1CA6AA3893FFF7FE0554157AC8503D1C0D3A3CBF612BCD2DADD4540FE7CA8BE65098E9939D7BAFD4B6F0F51F3F4A575794AF7DF8022E9A3712D58CC97674512C35BC3AF9B9D93285613B2A5ED5C0B4A2C44527A960C2881491F87FB12C114F919CF4145984154EE58A1D97A92891BFEE0AC153CF6EE2A18756B178F1242EBE702A15C539B4363773E4681B5959856CDEB297E933C771FBED7F22AFA084EA9A49FCF72F1F4133A4510F81CAE1542D5B84EDB1F8FB276792257E282DD54E4FC47F28824EEDED7CDB00B4B5F7414CC1853EC36615392C9A0763EA17D0E7DE96DA289DABBDC403AEB8207CCFCA9D78871533A22417C516A0ACD311B4690D99B251E5ADD7C9CFCD452714A71334BF84D4A9484B840718686BA4E3E01EEA776EC0944A7751FA940CBAB36BA89E349325D36BC8540598B8A2476EEED915DE7F9DD9AB28048A7D04E80EF212143F8B460550B9EDDFD2834FE8520BA797B84347D022BF60381D5D3D0CCFF1F1EDF72D66DBF61D8C1951C48C51C3D974B49DDF3DFC22EB9B606F7318AFA671D3EC726E983D9C83F5CDAC5CBF9DCF5C339FA0E3E7AEA737F3E48606C65464F2EFB72E64EE980A1AFAFB8974072909A4D1DDDB43674F2F073AA2DCFDE44E3C812C469764529619E3D64BA7A27935344F3AAA9646C0AFE26816BAEEE5177F788CA63E87F5B51D14A4F9F9CE272FA2B4C88B1535B14362A511C774A2E46467911908C8894CB42B498F492909EA4ED7429B251E170A83A21148E482C57322BE1321CC1FC5892B6E4F90A611770CEAEB3B292F2D4053A2C4A3415A3BC23CF7F201D66FAA63C3E69D5CB8E47C9E79661DA6ADE3F77931851D9623689D161963CAA8BA6801966EF1B74FCE9011B44C710CE5A0CFCD8B9638EADB06A09DBE7A624FDF82DDB2E1988CE5E98F8C825A3A0FEF35CF9DFE21CECA274504E2B0BFAD9F3FBEB09BD2CA6ACA0B32112D0716BA04EED6601C4BD2EB5E2341774C1B63D0859CF0B3C16C8FE43E2791B17BED71DEA40699AC511EFB58C252CBB16C62E11003AD0D1C7AE5597A3BDD2EC3483446B796472C7F0C93CF9BC2FC89A3F16A8256771CA093290D195927981DA245F9C4EEC0C4BF851B8AF41374591B02A0ED585416E10C8F8F57EB43744684CAB1C6F8F23C968CCB9574C0EB2F9ACAAC51651CEAB779FFB7FFC49EDE742C5BC5438C4B261672C3CC52BCBAC5FEA39D4CAFC845F3186C6BEC66DDAE26C6561470F9BC1A32020196AF59477E7A16D34795D3D3DB416747AFB4897AB9B69D07D63470B4AD8B65F34673DDBCD18C28CE241E8E2452242A597905EC3DDCCADD8FBFCCCA17F7505452CC47AF9EC527AE9E8162C788C42CFEF0C87A0CC3275BC2C754E6332C2B204156342505C3260D2D5D7409479D8843437B90EEBE20FDFD11A96F921EF09395994E699E261DC005FB64586E3AC2C65040A9AA8B62652CA1FAE7F0FCDA43FCECD7CFD2D51B930541316A49BB34F15D688AC8928867CF266F4225232F9C434C35F9C7C7A71348E6A08700FAAC20C1A90EF2B601687103F10DDFC7DCF07DB062673C286AC124BC37ACFB5F174E1200FDEA9136FEB07A1F93274CA434C7475C11D1A34ECB80497348E41913F29D83F8A62E01E4D439E89355D68FB146CE70F4125DDFC7F59E931D8D62E96DC668DBBB85D603B5F4341C20D8D5268571426A80504E2517BCFBBD4CA82844111A19423B43E44C85425EA21B5000BD00665344C6096ADDE0085AB6710B2FC4A4BFA0480BC462A8668459E346F1CCEE767AC21AC53939146579A8CAF370C1B4914C1C9E855F57E973FC7CFABF1FE1F13D2255A649AAD9CC8A4CAE9C94C3D8021FAD9D3D74456164413A238BB3F1FBBD780D15DD9FC18EBA3646E406D044039119A7ABBB9B48FF008663A17B7C3CBCA985A73637D3128C32BA20939A51651CAD3B4AC0508859363593C6B2F2A56D34B60D50539AC907AE98C6754B27929BEE9500DC3710E7435FFF2D55230AF9FC872E939D8642DF595CA7C8313FF0CC761E59B18D1DB50DF405E3320DE65155A9C02744F6ADB84644E8B4587DE464FA98589DC775EF9ACA82E91520A26C494237E5337FB825CC8F7EF5349B76F724D267B6D4821691B8C85DD98AE0E9086D68B8B6DBAC0000200049444154F7392B9B359EE18BA711B50678FCA3B3E513298D225EA3AA98EAA33594E2486DA4DE56006D376F20FAB74BC00CA676776FB097925D85F7DD0FA1E48D3BE3639DC901C463BEF640237F58B39F69E74DA12CC78B684BB16D8DE6605CFE912DDEB22960F0262A42A73EF371807ECDE7DE4A5D5102EFEB3F70B2E0FD9820883064ED6AA2BBA19EF643B5B41EDA43B0A39998E510D4B3F04DBE841953A75053988962C52485CD357E75B9CD326D3108A0933E8372BF24F7391A763D06A520BF89190E529D97C1758BE6D0118912B11546E4E79217F09091263CFF84E59FD07AF660695E9EDF7E845F3F53CBDE862EDAFB2CAA0B7C5C581360C9E812B23C2AF73CB785E125C31857293A4E856B8D82E928043C2A23F23339D2D2CD81CE8894171D9EA1519A019A1D27A807D872A49B977635B3F560BBBC0EC712024A82871DC7AB397815583CA78AAB2F98C8E2E923C8F40B8714D77641AC0A0E36761248F752989D8EF05314631DC760EBBE16BEFCA3BFB3A74E00AA978047A3A0C0436B530F936BCAF1EA0EEBB71C46248D8533555F5850A7A3CC9D52C6C76F399FB165B9684E08413B178E914290E927BF7B86755B9B133C66D7BC57344149912BD9879268A4B26D2A174DA36CEE646CAB9B473F3C47A637444A6508A0CFE4ED7FF3CFBEAD009A7898C8BDD3717A0FBEF99DBDC91E8A27137DDA17D1677EFD8C8F75260710F0F7D2BEA3FC6ED55E664E9BC6F05C3F36222FABD13C10A741444A8A50DF3B19509EFBCCF4C9087E273BABCC8BCAC8CB41318344FB7A659761FDCE5769DDB75DE6A84D5BA5BB700A199553993D711423F203A882B72C73D089A25F92EB3C485F4344D002A05DAEB385191502436EA150880F05548B2B674E666ECD08D23C0E8AE641D76C54D54155353445435555148F1745D3246DEE4047880DFB5B7962DD5E46E4A771DDF935F86361FADADB69ED8DCA2EC0CEBE10D1B8499AA4D7C1A4AA723C19693CB9763FF7AFDE8382CECCE1395C34A588E20C01C4AA2CEA7504159EDBD3CE11918EE81542FF0E695E83E23C0F13471673FD4593292D10A907054D17D7A6618B13D831E29A5F521185283F8E8EED68ACDB51CF2FEF7F81F53B3A89251C638A7333F9E42D0B58B76E3353C755929B13E0CF0FAF60446905078F76B3657FA7745911E3317B5219B75EB3800995E9B2482B24B762B6CE3F9EDBCFF7EF582E5DC1454A488E95D0B2967E648A2BC895B0191B7BF17C8AA78DC16B7771EF07E7BA1C68E9C69268837D8B2FC150049DDA80BDBD005A4413DB7F87F9C26752BBBB37DA4BC876E68C469FFB1DB4AACBCFFC7867708457EA5AB9FDC92D4C993C99B1E5B9600B912183B688C3A1DE1831C74D71BC267E4EB97098FCEC5BA5439D2AD87E2D408B55F1894D8D82F32C5AB223F4341DA271F716BAEBF6D1DFD986198B13F11760948EA7B2663C534795499DEFA43595E04BBBC2FB2ED739A9F12C53209610DE8F6346232E50C74D86A57BB9786215E755E4E3F778F16AC2EC5C14E73C58AA87A86899D73C78BC3EB27C6EBF8F4851689A2EB9CD5DFD11D27C06F959E9C4A3513AC32677FF63A3C4C7FD878E503A2C939EBE209565E518BE007F5DBF9FCE9E28ED7DA23A675193AF73F3F92319374CC710D1A7EE45511D59609346BE8E23CF251A5EFC690659997E0A72B264E1B02B6CF2B717B7B0EB40334BE74EE082699564FB5D5F402148D5DE17E3AF2B76F2C0333B38DA1EC60C45583CB59A6B2E9D8C19EC615CF570F61E6AA6BDBB4F6A880845BD9AD1C54482260D6D7D1869593CF8E44676EE6DA0345BE5EA8B26F39E25D518C2100295AE8108F54D21D7CFD23669E930B9EB9EA768EFB1510C0FAA68F2741C4CDB64FAB54BC91D534645468C1FBF678A0C2204A8CB89F934E28421804E0D30DE76004DAC8FC81FC7E1843B52BBC33701696DECCD180B7E80E2CB3DF3E3BDD5232410706B7317DF7F781DD5636B985153816345A4F75B8FA9B3BF3BCA80C08264D76182DE264EF5DAF76230A09EEA776FF6F354332027D412072937B9B42B7191C2845488FBF7D3DF7A94AEBABD341DDC4BFFE1EDA8964D9FAF0C5FF54C66CD9E4E41C070991882929028FEC512396801C43149B38BC94614272614EB6212B823668C9955C5DC346702E90298555532297AE236B58DDDEC6BEAA6A3A783886033E0E7BC9179CC9E54C1F8D21C1C3386A65A32BA56745D82BA652BFCE6C9EDFCF2B12D44C226A1984561A687F6EE7EF20259A4F93DEC12D29B9683660BD5B838178C49E7BA9925641BD0D21BA1B12344F5C86114A48928DEC1301CD23C017C5E3FBAD7405563A8DE00583E7EFFF87A7EFBD4767A223AB99E105FFDE022A90DA2AB22E7ACF26A6D3D9FFFF19352C449F8079A7D9DD23FF1875FBF16271EE7AE0737B06977036D7D21D90894E6D3A828CDE657FFF62172D2355EDEBC9FEFFEEA310EB79B92765791E3E1CF3FBD018FE2B22FA4988023FC5A84588A494CCBE2A7BF7E8615CFD7A2FAD3A4EEB86C22B2E3CCB9E922B2471631AB348D2F2E1AE9D6AC132DDEA781CF4382FD2962C5DB0FA001F3C52F10DFF6EB146FF18D7753F3C7632CFC316AF90567E5786FE9200952C5FEAE20B7DDF7121945C52C9B3D1EB19ED69D3803B68703BD269DE1B8949F74D31CC76546DFD2B9CEE9CE276769BB4C2C0B27D24FA4AB95D6FA031C78E93962A2E3D08181AC4A72269DCFA4AA0A728CA8044DDB52888BDC74425F437A0B8A42A088A00548C74C82824B2DF635C32C9B38822B678D93FC5FC39BC10BFBDAD9B6FF103B9B06B0550F5FB8763EB5879BF9FD632FB1647A15A1602F15A5657CE3C6C5F824B7212ED30C86A653D7D9CBF5DFF8131BFAF3DD82992AF2B842D75A41B15CAEB1A27951054D109B2C9FCA7BA79470C9B85C2CC7E2278F6E667B5D37238A037CEBCA69B23350D521EA78E8891B0C44A394E76530A2D027F59FEFF8DB36EE5EB193385ED2F520DFFDE4C55C37AF1255D41B1483675FADE77DDFFE078E6690E3B7B87EC978A6560F931A214FADDDC3777FBB12430F8010531257246889F10897CF2CE20B1FBD52A62A9E59BD8B67D71F60DB8166AC5090E7FFF0297C7A58E69B053B44B6DE3B269A62D03CA073F7FDEB79EE859D685E9F6B6D25D22D3ACCBAF142F287E773C58422AE99982781FDB58C9EB7F2880D45D0A98DD6DB12A0ED968D44FF3A3FB53B7CB3BD140D6DFC076467E1FF8A0CA9E3D012B6F8CEC3AFD01054B969D90C7CAA2DBBF484C1D7A13E9BC67ED159E882A0CB7375E3DC5389ECBFD92D9FFDDF2762A8D75D902B4729A237271624DCD7CDA1575FA153E876743711B675FAF3C65154319AF1E5B9D22F302E4D4F5D668654B4139C60F1FF42465476134609C5903A2023B20C2E9B3E8EAAE2610C381E1A431A773FB3815B2E9A21ADA57A3ABA593C71047D11879D8DADCC9E54CAD3AF1CE5570F3DCF17AF9FCFF431E514667BC80E783034C18080BB976FE44B7FDD03A23BCFCD35B86C05416770DCBCAC224D6F05B726CEF080CAF4AA42429110F5ADDDD2C75080FA4DB34B19579E83A378786CD3519ED9DE48576F3F534695F1A30FCD970982BFACDCCBFD2FEE46513C8C29F473DBA72E61628968A2B6B0149D47571FE1D33F7E12C3A392E977B8F38BEF964A79ABB61FE5BF1F7889C65EA18EA74A0307D934925CFE845BB962C9443E75CB52A90BFDCB7B5FE4D9B57BA460D4BDFF752DD5E57EC984110174D4B4E80AC568EF8E73CFC36BD9BCA71DF0C8274DA438E28E495A410653AF58486545161F983792F38609929DE05DBB63733ADB1040A7366A6F4B8076A2BD44EE2C962FC9D9DAA45FE13F3D17ED86D05114EE5ABD87DF3EBB9B1BDEBD88B18569AE9A9DEA70B4CF626F97852DB4A045482791396989727A2FC7D91AB3138F934487E3D1B46001C8FC66A2A941FC6D0F7433D0DE44DB9143741CD84647533D617F11C5131750555E449A139251B274E016AC0E91738E455D4F4091EEB063D803212AF3025CBB702A0579B96C6CECE7D57D8DCC1B3F8A8A4C1FC3F3540CD544D7BCA0EB688A28C6093A9A23B58E1D7C6C6D0B72DB9D4F307B42259FBD7C1A25D93E34D1E8A1298CBCF54E8EF4795144D14F4E8D3AB6E8469486B78A3403C8F55AE4A57B38DA19251277F0C50778F9E737317EC43039A1FCF1C1A7C9C9C8A4ADCBE468284E5B5F9CF5BBDB69EC1EE0BD8B27E25322747675525C94CBF4F1C3A92A2DA0625806861391DF73C8F6F0AB8737F18B07379395A6307FCA483EF1EE1AFA43369FFAC183B4C7BCF8155D3ABBCB967B4744FBEEFBA0C8E6C230D72D1DCDA50B26F2F8EA6DACDFDA40635B9C8F5D359E9B2F9B4C38D48BAA68D4350FF0AB7B56B17177379AD020571CD951292D212C074B8D3366CE04C6CF1ACD85938771F5E4323C89EFF474F3CFE2E843009DDA5BF8B6046862FD44EE9B81D35B97DA5DA6B097B1E40EF4B1B7C882D23F6D4B584889F33D53DBCCD7EE5DCD94A953B8625AB9FBD2290A4D0371767599B2502838BB6E249D781165DAE3FFC2969C284F4C75B8854301D222F8749D0944CA231E0B11E96EA3BD762B0D5B5EA63718225E3E93E155359467AB1822C72C0A81827E970468C1E410D1B465931EEDE58A3993995E3D9CFA5E93BBD6D63160C6F8D2BBA6333EDB83AAC4B00D1F2D41D8DB1AC2B21C72D374A657E592ED17AC62A86D37F9F9DF5F26689A7CF6B2192C9E301255B1D134856FFD65356B76B5CA0E4E51446CEE8DD36F09F70111559A8C2FF470D5DC115497E6F0F8EA5DB4F645195592C737DE3B8382AC34D9C5B7BD56687CF453DFD4C9E40923A9AA2C63CDCE467EF78FADACDFDDCCC4520F5FFFC845CC1A5342A6A1BB5443332A530AA27B7BC0D6F9E9FDAFF2BB27F690996673D1F44A3E73C56436EEAEE79BBF7A9A982F0F4D86CC82BFECE6FC45E94FA4617461D86B47397F723E5FBAF5121A3A82FCF1E1977875472B372CA9E05337CC23141E90CF577D5B88FFB96F1D1B7777A088204040BEFC3A8571818D2FCBC7AC4BE631615C3E57CD28676A71967419175CEAE3CCA2B71E280C01746AEFEDDB13A0AD28E6DAFF20BEF9F6D4EE3285BDD4E14BF12CB90325B32285BDCFD22E12C0C4C38E2C067EE6AE67E9B4FD7CEB86F9C2A44FE63E7B62B0BB3B4657C4CD4BBA4ED9C251E5E479DFB374656FF13083A3E7133FEABEBA6EC7A4B851D1FE2022512516A1B7E930F51B9E9352A5DD6923304AC75153964B8E1AC30E07654AC315438AC9885A44D0F198C3ACB2742E9F35994CAFCEC6A3BD3CB1AB93F29C00EF99594145BA435C0FB0BD23CAE35B8EB2E17037C2012B60C0F5F34673F5F44A8AD34D6268B40C44D975A495E2DC74E68F2997C0AD8A49B12F486B77580254534F88BFAED9C7939B3A08590A694E90DB6E59C0F5E757E1B1E334B5F7C9083A3F379D7C617FA5D832EAB41C3FE1688C50344AA6DF4B7ABA977E74BEF9EB95FCE1E97DCC199DC3AFBE7115A372546241A1BFE1E6828576B548A1F4391A3F7B600BBF7FAA1645A419EC5EFEF29D9B254FFA6B3F5F8EE9CD4195939F28584A5DA4E3E228B62639E68BA61570D9F96379F8B1F56C3B3C40C8D4B879E9703E76DD1CC2E101F9BD347646B9FBAFEB78695B23A801195523849644711087B2D165CCBA643ED3AA035C755E3185012F9A08D11DE1EE73EAEFFDCD1EA021807EB311727FFFF604682114D3B11D73D557B01BCFDC65458E84E6432B3F1F7DFEF750F3C6A7367A67B897CC5424F29CA2A9E19EF507B9EDA175DCFED9EBF1119536514243A1330207BA06E8347509CD2EA8FF5F02E8D40742AAE149FEACD0BDEAA3E7F00E5AF76CE1486337E1BCD1949416539D69E304071202492E408B3FC26F50B7A27CEDDDE7939F25E86C1E5E38D44B7D5F94778D2F6378A64654F1F2974D0DBC58D7475D579490A8AFCA79D0A130C3C3D4615E3EB264148B46E7E0185E9ED97A98C6EE20372E18C7B0805746FBBAE0AB25F8BDCDC118773CBD933B97EFA6330CDE583F5FB9FC3C3E71C514BC4E0455C0BAC03431F5D8AA6485C8158323920F02F1D5844E8650C8D0B873F9666EFBE32B1465194C1B53C2F0FC0025F9695417E530B3A6149F21F2DB1651C7E09E670EF0DDBFACC7A32A8C2EF6F1D5F7CEA2AC28979FFEE9399ED9D48C62A4498016AB2D194C8B71552C9C984D49B6C2973EB098EA11053CFAD4569E58B38F8E7E93EFDC3A8B0BA695108985E598C42216758D5D34754758B7AD83CDB58DF447DDA274667E3A3396CEA1645421EF9998CBBC113918AA822681F9CC566F43009DDA3BF3F60468716F560C6BEF03C45EFC3C986741E12E315EDA8865782E7B08297FF64FD8645CE922358783261FB86305172D5CC0D4522F51E1462DF29F8E4E437F84ED3D36A6941E15F969F1B9337B49FE09B7F7BA530872972CBA89175CB035BA9A69DFBF83BD9B36D1172823B3743863B31CD4900BD0A250285C524491301A0E316944011F9B7F1EB6E610D7023CBAB38DEEF000EF9F3D8A228FC38E1E2F5FFBDB469AE2DEC47798588ACB85878D1AECE6FD73CAF9C98DD3244DACB93FCEEA3D752C1C57C6D8C23C2C2D8E070F0396CD81B65E1E59BB9F075F3C446F30268969237254FEEDE625CC2C139E91A62BBBAA3A38BA9781709448D096CC88CC7C0F9982F121DCC565C940C1D1143A623A5FFDC5638CAA28E3506317ABB7D64BFD8B9A0283FFF8D8C54C2C4B9391B4781E9EDAD0C6277EB512C3F0936E585C3E65189FBB7EB1EC64FCCFBB5F606753D08D78E5F420645BC1107F625D7CE4DAF97CE8AAF93CB5660777FD6D3D2D9D31FAC2511EF88F2B28CBB23085238AE81CB44518E04E48ED418DBFAFAEE56F2B76A0FBD21933A38AE94B67E3D743BC6F5A09E38A3265FDC3ED527DEB698DC10FC31040A7F6F6BD7D015A3C96DDFB30577F15ABEEE9D4EE3695BD541D63CEB7D1A77F3995BDCF6C9F64114D3EF482F0A5F0F3E7F7F3E4C17E3E7ED144BC8897DBAD96472C83550D03F4C5F50407F5389BE3CC2EE2DC7C5ABEC26F44AA1691A688FC82DD52B3A3F6A517E85272F0978E605C868D1AEE77BDF912006D86C3A42B36EF5D348D490519E8C2895AF353DB0BF95E8551D9C291DB6175639C6F3DB593A0919158F24BF16A771345B4F0004B47F879E0B38B5D4686D7CF139BF731A62C9F29A5C3A400BEC8F3FFF685DDDCB97C2B755D71FC9ACE4D4B2671DEC85CB2BC3129A664C44258A2F8A829C46C833D473BD85FDF2AA14EFC1154C16105394C1C554E6E9AC7A51B8A31D1344251C8F07BD87CB49B6FFFE16536D7F6123006F8DA07E672C3B49128AA255923ABB7B7F3F1DB9FC624434E665FBF7936372D1A2BF3192B371DE16BB7FF9D889D8662884E53E12A13271EB1F9CA0D53F9F0B58BC8CBF0F2F3FBD7F0837BD6A0AB7EF4581F8FFCE47AD2957EF9ACB9591137FA562D15C7EBE381A777F1C747F7905590CFB21B17935F964D893FC2B5934B2913097CB90D01F4B9796B5E7FD4B735404BB3D19D77115BF38DB3A2CF911C1EC59B85EF63CDE75E482909D072D9EF46D107FB4C267DF3413EFFDE8B9855918F1D176DC72273EBE195A63EEA07043FD7EBE2CD6B10F0CC629A933F72A936AE9CECD3A7BA1E9183161E8B12396321826D0DD4AE5A415BD487BF78046302266AB84FFAFA49808E8650A261168DAB66E9A44ABC6234349BA0E6A3C14A6798DF4FA1164151636C6857F9FA937BE857B3130A80421759A4844491D24089F4F3AE9A4CEEF9D02C2C4DE795031D3CBFF520372F9DC884924C6C1191DAF0C9DF3FCF1F9FAB43F5A6737E75806F5D33839AC234D7762B16C7D04494ABD3692ABCBCF9203D7D034C9F3A0DD51790E90DBF1966C7BEFD7476754999D5CAA20C297A250B8D8A85D7B6E85302FC74F96EFEE71F9BC18C70EDEC32FEEB9645788C18B61263E7A13EBE79F77A763545E524FD891BE662F77630A2C0C3FCE9A379FAE5033CFB4A2D750D3DB2F53D274B61C6D891FCE7976FA0BEA59DBD871AD976B09BDF3DF2AA5C818C2B31F8E9672FC2AB4425033C6A6B0CC47421F62108D1F49A0A77DEBF922DFB06C82DCBE77D9F7D2FBAD5C3BCCA4CE6570D23CD487EA367BE721B8AA05383F8B737404B94B230577DF9AC35AEC8615375F471EFC758F84330A4B9CF39DA121CDB63045611BBA92CFBEFA7597FB8971B2F9AC19289A57884909088EC84087C5F9CCD4DBD0C38BE44EE53148A34B7927F963779C893A0EC1B46C6295C83CBE54E04B642FBBABF87FD2F3F4B634F8C404E29237C119C50A72CD2093124AF1D63E98431CCAD2AC650A2A86A3A8A1143D1FD2CAFED655B731F1F5F308A919982C29BC513B5ADFC62CD11BAE33E6CD18227625A278E27DAC7DC0A0F3FB8793195E996A4E1B53B5E8E76F533AE20409E5F45B7350EC72CAEFBE1636CAE07DD037346A4F3A1D963983ADC4FBA1694EEEA82DF7CA4B5875D473B28ABA8E6A117B7B2727B1D39E97E0C4F1AF54DED8C294EE3D6F72C24CF17A73CDB4B71769A8C5B35C5A47140E7377FDFCA63EBF69393E1E5E60BCFE3AAF963C8D2FBA51B8A62E95214E95057905F3DBA96155B9BB1AC00A61964E1A4726EB9741607F7ECE4F26553F1797C7875039FCFCB532BB7523DA18AA757EEE0378FBC420C956CC564D9CC6A6EBC6402697AD89DF01D8D577775F1DDDFAF268AA0D72968899E7D6F96C265D72C65D4A842E6566633AB220BBFD01E7DAD77CAE9D3A087687629BC276297B73F408BC59D705BD9F28BB3CA8B56BCD9E8D3BF843EF9936048F5DB73BA09CD037773787047335FFCE32AD233F3F8E0B249D4148BE5BA483A2385FCEB7A4DF6B485E8B184D3B72AA351B9B41E243F7A0EF0FAD8FD0FEAEC7ECB6372A2E7ADEB08120F0539B4FE799A3BFAF0650EA354741586BB880B3D0FD362644136174EAAA128DDC0706CB20C0B47881EE91E36368768337D2CAACC23D788E2D321AC66F08FBDDD3CB6BD9EFA3E9794A863727E652E9F583286C9C5E2FBB4A522DD4BFB1AA4FCE9F935C578B0112CE95575DDDCFC3311D10710A2C8AA196252B6C2B7AE9ACE84121DCD51A52A5E7BC8A6A12FC60B3B1A7878F52EAE5A3A93922C91065058B7E728AF6CDBCBF88A3CCE1F9DC794CA02A65697A2A971A9B35CD7EDF0ADBB9EA77DC0E413574E67D9B4110444641B15AB0BE15C28F44C5C9EF3DEC620BF7F62232B77F710313572FD0A8134132516E373EF5F2A0D6DD3FC5EE6CE3A8F7FFFDE9F30B27289C4140E37764BB1A425138BB866F1388AB314B7655EB1885906CB5F69E2F7CB6B31142D61E61BC7D162CC59369B050B27C962ED053585E407C4F3255B57DEF2F77DAA0F0C45D0A90DE53B02A0E33B7F4FFC95DBCE8EDBCAA07153B22A31E6DEE636B088A68773BDC93E0893EE98CA771FDBC8BDAB0FB06CE604AE59300AD556E58B2596E0160607BB0758DF2C981E82CD90C80ACA94897B91C9C0F75C01F5095A1C27199753A5375E0FD03656344CFDA697686CE9262D9045A13A801DEEC58E9B882EF7B4DC128A0B8B49D354B2149B1B2666CA8611A17571B027CA9A86089606534B73995F16C0ABEB4455832D2D415E3ADC230B6239693AD74C1FCEA83CD1AA0DA6EEE5F7ABF672DFF39BF8EA3573B9694E952B9FA9EAEC6AECE4DFEFDBC8CB7561FA2DB79839C21FE17B37CC65D230034D50E2148596A8CEFE8E28772CDF40477F9C4B678D61E7FE2384A336572F9AC6531B76B3B7AE91F74C2D614665010B278E24CD7079CB5DA6CE1D8F6F24666B7CF9FA79E47B5CFD6BD9491917290D211AE5DA5B39AA8F836D11BE73CF8B6CAFEFC134C554E29095A631AA3483E68E7EE98358599ECFD6DDF5D2E24AE83AA71BB0786201375D3C8EA24C1D251E952DE962C68AC40D1E79E930F7AE3C8221532F82561761FC946A165FBE80BC0C8D778FCA6074BED0E410359204B3E52CBD0343009DDA40BE2300DA1968C2AABD9FF8969FE384DA52BBF354F65214D482C918F3BF8F5ABEE88C2BD7A99C529AC83A50DB19E44F6BF6B2B539C284AA32A6541692A9DBB23025E0376239ECEB8AD21C84B6B045548ACF27D1F9383CBABD226717A64F06BEAF3D432AF9F04482072716A163F7461A1ADBF1682A39561F56A44F1609459EB6C75F424CCF92CC429F15E3474BCAA84C17195D13212BB5B3C3646D5D177E436771753E05191E46E606500D0F4121066483DF6790E773D00C95DA96309B8EB4D113B649F368BC6BCA084617F82523428826C5559DDD0D5DACAE6D6563FD00B190C9F85C87C5E38A18E613EC606121A5D218843DED26773CB15136B59C5796C3DA5D4770743F5FBB6E012B36EC62FDDEA35C33633853CBB35838A182748F8056240FFB6073377B1B7A8888D94541E689FB4C15331AA73C5767CED8620A33F4447D42E795DD0DD43674D3153668EE8971B0BE959E601F31D3E5410BE794CC4C3F63CA0BC84933C8F6D94CAAC8A6B2240BC7162C14C1F470B08496091ABBEAFBF9C3937B39DC1AC67234662CAC61EACCB10CCBF731BED0C792EA3CBC32684EEA20A6F2ADA6F2940F7512A6364AEF901487C4207380F8DA7F23BEFD2ED735E22C6E5AE5BB30E67F0F2567F4B90769D970E76A01B7854DBEBB7C078F6C6EE0F27913B9A0A648AAA3894D134A632874871D6A7B22ECEF8D1376C402DD7D890699AF9CC591383B873A06E62EC7102D16C269D8CBE1C30DC4234102F17EE2E120038E418FAF90605A29961648A4794CDE5D6071F3E41C0A3C31544DC1D0BC7446743635F7B07CDB61AA8665F3E98BA793A65B44E351F27C06217442A6437E513E7F7E7E27B58D1DDC306F1CB347E690EE111AA442AED32379CBE91E4D1AA58A16FC97F6B4D2D33640558E8D6345319C38A6307045A533AA53D71DE70FCF6F6757733F372F988A6599042351B2337D3CFDEA5EC2C120EF9A50C0B491F9CC195D86CF10B436712BAE13CAAA1D6DFCF0B19DB48685C1208445F389A331CC30B971C1486EBD681C9A1996E02A3C62510C229642E780C9C1967EDAFB061818084B100FF87CE465FB18939F85DF2B0AA371B90A911DE08A228D07C26614BFC783138F108ED9BCB8BD9FBFAEDC415A410157DE742139E90A63867958505940AE57979DED6E7AE30C12CE27796C8622E8D4DEA57744049DBC55A7EF08D1BFBD0BA7E7406A779FEA5E7A1A5AE5253292563286A7FAA9D3DB4FA639C432D835FCBCEFD5437CE58157C113E09B379DCF884C11BDB90C32B154B6559581B8C2FAC630077A84FB8AC877B8CB51D169265E4C378A3E45DAE3B5B98A37CB5DBCE95D25E0571EC7CD560FEE377B5DA4EDD878CC20FECE23D4D6EE271AECC71B0F4AFFBD1E239B604629713DC395B694DAC336B9D16E3E7A5E018BAB33F0383174CD902245225ABE6B631B475BDBB960D22899571D0845B87CD638F6B7B4F2FC8E064616A5130C4679EF828954E679F02B96549CD3FD016A5B43FC7DCD2E164FA96478718EF4F07BFED53AD22C8B09855E29D4A4C6632852AE53A725285AF11D7637F7F397976AC9C9CA627C45812C806DDEDF42381C65414D21D3CAFCCA875F6A0000200049444154D4146532B62C0F552810A1CB083A62DA3CB1B589FF79760F41D1FD27F929315735CF8C73614D163FF9E07CC9F397D90E6187620B7D0C370A8F0B072BD1D7628A5597A06288261221702464EAA2529343C4FB62D2198819BCB2A389FDF50D4C1F3B9AD1A5D982C7C18A4D4D6CACEF66CA82998C189EC398021FF347E54870D6456BBE6884392169F6A60F404A3B0C01744AC3F4CE28121EBF550767A099C8DD95A9DDFD5BD94BF3A0F80BD0465D25E549CFE9964031F19E09AD88DD1D41EE786E272FECEB65CEB8E15C3E6F1C99822B6B09BA9410CB51080B011A47A73B62B3BFBD8FDA6E8BB8E6435544AF9BCB99960D0909E0948BD6415A20C7EE47EC7AAC16741C4E8F81AC8BF927D94EFCE1A9922AF2F0426744008CA390AEC49990A7D077643FAB366C23DAD7836E866857B308665660EA4238CAA5A7C989C7B1B961B8CDD563D2C9D54CC92BD6849091F85B35888A3CAEAA60A4A511B5BCF4471D3C5E0D5553C9F4E86479E368B649567AA6E4302B9AC3917E87BB5EDCCF337B3AE9300DD20CB7655B48720A10152DDD3E254A45BACD6D978E47D38504A949D4D4D8D1D84F6B4F98E2D20AB6377473A4AD13D37298515DCEC8C2743A5B1A29CA30185F9EED1E5351082B69DCF55C2D2B76B611C64758E42824BFC3BD3F81BA996A844F2CA9E2BDF3CA5D0EB5E2A7BD3F427A204D4E2A829E18B54C99BD127C7291AF76A406B7C0F0B8D431C112A93085159B0EF3D8C626BAA37EE296894F084759114A0AB3587AF1F9A4E767621831DE35AE8011593E3C862205934EE66B79B69EFB21804E6D24DF511174F296C37764415C986D9E9BCDFFE9DE7356341CBC9014FA0CB26D4251A90B9A5CFAFDA7D8DB1163FEC4726E3C7F02E542F75D2C7E85672171745100D20CA923BDAEB18FFAEE103D118798EA939AC2C20249B6054B6C160B5797EA762CCE1D146527E3DF63B07B2C8F9DA05BC976E6C4F84ADEDDA920F9B5C0ADCADCB1BC3347654C86C38C620F3BB7EEE4E9B55B88F77649879596CCD144FD0538F2DE124D2662668846B9E7DD65142903EE1D081B2BAF079F306E151D78BAA01F0A4710074315943701B6A02B068E6A6328BA04660C1D5DD389695E7EFCEC3E7EBBA681A8A6BB4A4A22272CD6F6B2A53E21391A47D2F41EFCF044F2552104EB8AFD47F1B0E7681F754D1D8C18399CF4DC6C29AFDAD3D24A5D7B3799012F3347E6C922A5AB8C67D318D4F9C6BD6BD9DBEF47F3A4C973298EF826458DC1062BCEE4020FFFEF9A198CCAB5D17583C35D2A3F796015F9F9994CAB1AC6F8E24C86650A8EB7489988DCB9473E070290AD81303ED5D5CF8E2906CBB7B670DFAA8344A30AC2E550083269AAC9D20B6670C1D29968911E46E76BCCAF2A244D17CE07EE126D08A0CF0D7EBC95A3BE23013ABEED37986BBE7A56DCBF4F36985AF9628CA5BF41C9283FEBCD2C2766FA5C80164B5E1109FF78C50EFE7B85D054B09834A6882F5C3D9780EA6A31A8426847A2AAE0442B44342FDDD138477B821CEA8AD2167288383A9668C490FA0D83531183EE72702A24991E49C2EF2007E7E3B44037BF795CBC6910501FB3FF4E08F9C8E388285E38975AE4191A17946A940614D6ACDFC1332FBD2AC5FC4504DA523417E704654121D0A3A0C5C3FCED8A5274332A2DAD36B705D9D212625A4511938BBC147A44BC2D96F526AA21C0589334324DF5A0796C74250D29DA6608FB409D305EBEF5C45EEEDBD28EA28B494380931B891E97DE76530B7A2CC27D375452E2890B0F1239430989D2B8E1A52B14A7F650832C3C8AF1280C2894161753989381CF11EC89648C6C115132F8FB9666EE5F7B884E4B70B53D9229A1D9624524581C312695A6F3B9774F664C81876D47BAF8CBCA5DBC7A6440AAFC79549B456372B9EDFAA99236D71F5359B7A785BD4DFDB4076DB29508375E38950C8F28FEA9BC54DBC3EF9FDD4D5F5095FA2E79393E162D9ECC94A955F8D52863727D4C2DCF255DF88539A2BE212E36B9DA7A2B7092FABE4311746A63F58E0468612E2B5C57ACA32F20F2D2677D13BCE3A219E8D3BF22859594AC9167FD1489B0D1D581932FB72515CE1EDF58C7832FEFA739AC525494CF799545E405340A33D3F07B451E5380AF800F055B1380ACD21D3269E9138A78367D518B7E11652584E8E57906119B4F88AA05409F84AF775CA73D11469F346F9DA0FC258491E4491272CAEE2464519CA631BF340D3D1E65C5CB5B7876CD3ACC8101C29E2C7A8AA6268A820298937DE3AAA03AF0E9C9B9E4F80DEA7BC2BCD2D0CBBE9E18C3FC1E2616A5B16C7436E3730C8A7D22B72CF2B57EBA438E144DB2359B989A260B80938B3DA4193AAAE6E53F56ECE7771B9A712495528094183F916A107F89EB762DA14A7D0EBF7E572901CD211A17CD1E96648EC8A2AE2AF8E85E4C61AF251CC0FD0A9A484158368EAA21F487064261390C1E7F169B5B4DEE5973504E9E8E88DC45FED889E3885CB4580D1065CAF04CC60F2F62F5F6831C6A17FB098A1F98164C2A54F8DDAD33885926AF1EEEE1CE277772B0DDC4527D646A11DE3DAB9205E3F2C9F2C0C6035DFC6D733326E9548ECC64D6CC7154550C23DB30A9CED1A9CA4F27DD10ADF762B5F6BA769473F26C0F01746AC3FACE046871EF5614C18F16407DCE3691DFADB9C12D1EA6159C3D86C7A0303A19C8897CA8284E25E3B0B547BAF9DC9FD7B1B7A51F5F9A972BE78E65D6E852B2035E3CAA852D8A44B2582872D4C95672C1A5D6B045AAE384944432E9EDE61D9331B004E76301F16BA87BAF1BD4443130E1EC21AF3BA1017DBCC894B0EB1201AE9B00478D3BF25A1F79660D2B5F5E4FD849235A301AD3275AB593A98D44449B3CA7084745514C74094AB1204935702B66A14EBEB47024378ECD96D6547511953FBF7A941DAD3199EEE9366D0CC7E2F6EBA67181D087F6387CEFF97DFC6A6D2B66427848E6BCDD3CD0B19C304E0CC30AF3AD459514A42B1C68EA40B51DE65764135005DF435C86681CB2E404105704DF5A90EF2CDA6206AF369AACDFD784C7D018969FCBB3DBEAE9890B0EBB2601DD4D1CB94C0D4D5A6AB98029FE3BD68494982CC43EA3B21C7EFD91D972E2F8C3CAFD3CB4B10D5BF54A9689E81ED4E241AA720DC60ECF278443766139E3C6955298E3274B8B5396E3A7BA2040814CBDB88EEC82F5214B828E98E8CFDEE37CB2F76F08A05343A5772E408BF7B57E25B1A7DF7F760C664F319E4A7A09DAE86BD0C77FD0A5E1C997FCEC6EC7F2C489B484789D43A6C5AA836DFC7D733D2FEC6E2564AB8CA8C863D2F062C616E75051E095CD0AB2FC2F8B72E2D51B649825C133F912BA12A0C9A8DDFD3B193D275CA6A573B72B24F446EFAE5BB4728125A91572D29AA23CBD0B82966D72EFDF9EE5C557B713CDAA20965526B5AF4FD85E97E23E36750DAA6A0A7B9A7E3E35B3840F4CCAC2346D9E3C12E4AEF54DB4C404854E3ACBCA22E5C46C9B5BE7D7505D94C15D6B0FF0D8AEDE04C73C419191E74B8C91046B1182C7A9CED2C9F4281CEDE8265DD3B86E5C0E73CBBDA489DCBE6AB85DE58A22036FDD8EC963ACAA1BE0DE2DFD34F40BB08DA31BC2515C914D311298ED845C68623674D34F8A9B6E11558664DA494CB4D24B50919CEE5B6697E231749EDBD9C6B6237D325217CB2D2B1E45D72C0A32BD9C377638D3A68EA17098900A35199EA95095EBA338C38F5F7F2DBFF95851E1EC3EC02739DA1040A736C4EF688076822DC437FC80F8EE3F21D21EE76C33D2D14AE7635CF04B372FFD4FD844E55ED0ED9AFAA3BC72A89D5F3EB7978DF59D6478BC9415E673D99C6ACAF3B2C8F31B3267E936C02473ACAFAFD00F8A9BDDC0F5358A652E5E253C0693E09EC88D1C67D489A324402D21D2EF8275721B4CBB3B9EB7B66C9BDFDEF70F5EAE6DC4CCAF266E641D97C23BF6E1C1087D62A63ED147E99E2432C08D130BF8C49C323AFA42FC6A7D13AB1A22C445FA22999B7104788629CF36C8494BA3AE2B4297C0D2E48A4102B2E0AF25E7AC44342DA9273109D46267BFE2704985C10D13F3C822445B44677D53AF34899D9067303ADF900C9A27F60EF0A76DFD745BE2DF9614E777437E573A5644FA72D844ADE1585F51621CA59F43625A4C5C9334E1722C32B430AA6A108C2239CD8E6D636830B22C8BCA91C58CAE2CA6B424879C804A40B1284833985C964196474BF262FED708F343009D1A48BCA3015A1A69069BB00EFC9DF8965FE2F49D3D8BACD70DAF28CE154E43CD1D833EF5F328E75CF43F69122AA854710EB60DD0D617A1351467435D072B763648C3509FE1252DDDCBB0EC348A7202146405282BC8425745AE34017449C3D1632965F7D8B2A162502419883631A3F1E7F8E35D3C31EA77123864C4EC724D8E83B350AB4BFC549CE38446C6041089F1932C0C79009BE756ADA525A262F9B2254809B6810BED8949258995493A59E2E7C9CE4B37E214A4064B6A550CCFD088991607FB1DFAE309EC4D9C4B90142CC1F1156A88526E5314C404748AF4C2F1CECBE48426D4E9A45D97B85E995E71ADA544AE789861511550284C536818B0D8D32BEA9FC262CB6464965772940FF798D4851462028005BF5D887927274BD16E243D055D435A29C1EA0EEAB1BFE5E429CF271644E25BB1F0192AB99959E4650618599E4F69491E693E8F6C7F0F786DF2B2FC146779A54468815FC3A722E975018FB04E73574567E288921ABC9C7AAF21804E6D04DFD9009D1C837898F8E69F13DFFCDF08C3D973BAA9064A7A29FAE48FA14F3D87F9EF647E22F1A225B156D83BF5454C56EE6FE7E57D4DBC7AB0833D4D4182111BC3D0D07D3A395969927D20013A918E108713AD2D2E68BB9B649008A8B51D2EF0EFE08B590F5365EF256CE92CEDBA936E2B4D5E45F233C9683919272763E7C1491141B2139B889F05DB4D80A3E5C4B96C5A19934797A32B22FF291201EE5E492A4572A290E792AA6BC92B4C80996B9AE2325964938F9B6291FA2512DC0400BB91B1C8F10A3D1301B871D13822D3406E94ECA6710605CFC9F191054357E3C2E594BB1387885A85B9AA6EBBCC0E29572A24525553E0289663B8632C9833096D8D586212702738C16116809FE430278E993C76C22DE518688B2F58B1C8C90E503AAC8874BF419A17B94AD245D38F62519CA35390E1931D94E9BA60B124925B623C4E103C7AB384D5B97B5386003AB5B1FDD70068F9D2DA44EF9F8DDDBE3DB59139C3BD04481BE7FF04ADF232295F7AB6373766158821F29DE2E5B66405DEC56B0122AA9070A7251C67D59E4656ED6E626FF3004D5DFD0C44E238B228E482B0CC838A3A9BEA46A14923EE2408E66B7DFC34EF4EE67977CA1F0985B5C7C3F3F88F9E0F21F806F2B3C97487B48B7217EF026865DC294E25FF08817B910756E4D25FF8FF698235615B7CE0C209D494E5488A9CD09493544089D1C7F3A4121A251E27D20F12705C6790E426582BF26A1202F92E8F595C872D8B80627F01D0925F2D8B716E87A2EB66ED46ED525AFF58E2DC1D4B39A5481D6B710DEED8B9B9E204584BE016002D605A3407895A847B9D72A2905720181F6EB47CFC04AA7B4F897B914D408955CBF1C9CFDD475CA725CF6B4BA716C7114A243601CD20434CBC3E4DF2AD856FA084643131C9F11F5C5F48145C4FD08C3D6995E06C3FB2271C6F08A0531BDE7F1D8016E9436134BBE72F38C1E604952AB5413AEDBD743F5AD565E8533E235BC4153DE04A979E35A10C1798DC629B28048AB84E808D6B3C2A5F4CA1D0868268DBE989DA74F447E80D9928826A702CA79C04D004208ACF5911887693D6B38BC2DD3F23D0B951024372B38D4CBAC67E9C9E9A8FA37A335165C12B015C09F84970014EB8DD2458BBD8EB829EAA3804445E54152C08F77E04582663E82458CADF25532E890B3996914844FEC7FCC513FF76FF72514F46D072C044A12DB9424870B49379F564149E484027825E773293BF4BD8DF0E5A7D24AF4174F3090075F984EEA4E0AE5092D1BDDBAA2E521C6E047EEC72DC887FD00FA4A8913CDF71F094BF561DA9E1E15515C95B1634BF0C8F815F97EE88C70EE84273227F7D02FEBEBE187CDACFF7197C7008A0531BBC7F298096AF8E1924F6C40DD80D2F9EB34696930DBD225C98ABDF835E733D4A76154A7A596ADFD05BD86B70F34812CC8EBD9BC9B6EE24C56E70C13E991F112F756C00A7FF28D6E127A4F8D49B6D6AC95C8C853F411D2678CB2772AA8F058A83EB7BAF39E071B878839D5E7B11830027195F9F78EF83412D71DC934C8A278B1B8F657812BF749B24075DDBF165CA2016CCB1B03771A583417070C224F9EBD74A779EB84F72184FBCEDE43113CC9CC4BCE3AE33DCEB9314C91312FEC78BC1C99F9FCBEEC0377B5606FF7E08A0531BAD7F39809620DD7F14F385CF611D7E32B5513A8B7B295278E95234D1E4925DFD4F310348468D6E92F5D8EBFCBABB72C21DC477FD1167DF23D8ED5B53BB6B45C558F07DF4C99F76696C12CF12803128FA3BE5C14EB9BA3E19609FC9523CC5E3BDD16E8327A093D8CAA43EC5B8D3CAB1FD4F2264754286E558642C47F778F35062F5343861F2465F9ADB8872266398DA2391CA5E43009DCA28BD83E44653BBDDC45EA230D3B08AE8DF2F3FEBD2A4295D87607C94CC412D5B885A3453B23F8410D3B9DA8E4764C948EDC497546868DBCDEBB18FBE407CE7DD6F7965A18DBA127DEE7FA266559EF5F4CDC9A3C8D31DA9D742E85906AB5321742A1E6129CE1F8366D8B33B34A73BA4A7F9B921804E6DE0FE252368198744BAB0F63D2C41C9AA7B4A0AF4FCD337CD8B923902357F028A2FD73DBDC85B8FBD113577EC391364B2F63D84D3B91327DCE946BCE14EECF66D38FDF5098EEF5B1C094F065AE902B45157A38DBE4EB62E27530F291D2965704AE968A9EF94F2798FEF783C33742A707F83387A505A69F05E838F3438F374F21B1994BE4970CEFFAF44C5A90FFC90607FAA63F52F0BD02E3259523BDADCF853ACFD8F9C5567F054BF80D7EDA7EAAEBE477A99747351726BE41F35BBF2F40C6CC53DF61DC16EDF21EFD56ED980DDB60527DC7ED69B770473C5B3E47F50472C3BEDDB1FFAE0BFC6080C45D0A97DCFFFDA002D41DA96AC8ED88A0FB985C3FF2B9BD075105AC8423E53F7CBBFD5FC4912B41105C761534E79A52212B69BD7E2F4D563F71C74279E7848AE1284F38C6BB1716E3625B302DF07F79E9B830F1DF51D330243009DDA573904D089718ABFFA23E21B7F8213EB4B6DE4FE37F63AE696224AF66FA0F9215B82651FE03905E3530D81EFD6032819679FA5F2BF31E443E73C37233004D0A98DEB1040BF669CE23BEE26FEF23771A23DA98DE0D05EAF1F01D5409F702BC6C21F82E61B1AA1A11178DD080C01746A0FC510409F649CEC96F5C41E7D979B0E18DA4E6B04145F0EFA8CAFA24FFC1818C2B6EA9FBF59B643DC168D1DAA94003D934D3492C4E289261551CBD514A96732B49DDE080C01746AE33604D0271B27A125BDE107D81D3BB17BF6E3F4EC97EDC843DB5B1B0125AB1263C10FD0AA2E3FF6C14387EBC98AB69ED095F86647D5F38713C82B427B0340EC0BC739DA1922337494EC78171E3B422866138C5964FB7514C34B9BA78C3E238FD2FFDFDE79874759657FFC3BBD646632994C7A01124A48082194109080D2150404042C14CBEAAA587077ADBBBABA826B57102B82B00A48D31510842010405A2091165A422009E965D22799F27BEE1D3229A4CC40767F3BCEB9CFC31F64EEFBBEF77ECEE4FBDE9C7BCEB9DE4AE855D2361FCBC2B8AF96D5A0C4500DAFFA0278D7E5C164AA4769553D98E8B32066AD4202B15C8962893F2A255A786A5408D0CADB15EDBCB25A949596C2B7F68AFDD9F54229AA852A54893D11E4EB05AD87C491E871FEE2C92BAD41655909BC4C8590F0D2A6B65629D2A0D623005DFD34908AED074CF2CFCE67E6C2B3361712763C582BAD9E9D1A2E54A256A28140AE81BF56CED3C83B3B7C9A04BAA36FBDED7312E8F638996A60CEDA03D3E185B0E4273B46947A351290282119F81788E35EE43FAB335B7170E90BF0339CB295D874B05D89B80FEA4193D12F4405590BC13199ADC828A8C4F9F42C18D20EA07BE15E04D4654165A96876F71AA102E9CABEC854F482266A38A68CECDFE6D37F39958FA28C53C0A523E85A9386D09AF3FCF4F096AD4AA842A6220279F2AE30870CC49851B7C0DBD3A3CDFBAE4ABA0C8F946F106DD867EF532354C220D1A350160CF49D8C4923A2F98ABFA3565A69C4D65D87E075612B826B2F4261A9B65F522809C0C9C049881E320203BA6979E53BD6D8BB65C7D2D711547A1C326BEB61A546811CE5622D0CF24094EAA2A1098F41CFB01084F9A9788A7967351268C748924077C4C96AE6F53B4C47DEB41D9FF51F8C80E86828AEF4B940E10D51C47D1047CD83C03B920F3DCF6084E4E33110189D731D6DF2BA1FE74326E391E18108F751345BCD5DB86AC06F4989D067EF4158D549A8CCED6FF2D60AE4C8D4F483E8AE45181C76EDD4962660734B6B70F8EB7FA24BED3904D56640CC0AF577D0D8AA334F1A8A8C417FC290C1B1F0F7644767356F6C85FFF9F65398716201D4E6EB2B2AB2B322777A4EC1A8079E819F57DB22DF70D7E2A2221CFEFA6D0C2EDFD5E2741C7698B70807D4637038F47E4C1E188CF8300DBFACB0A20E82256321ACED78239C15912A11FBE0AA220CF921A33164D46884FAA83B42E1F0E724D08EA12281768093B5B694AFA0CDA757C29CFEC38D257338F09CDF4B17A1361CA2B89720EA320602A5AF7D5A978A6AA0F97C9CD302BDD1EB7EFCAABD1DB3E2FC30BAB797DDD551536F41C6A144089396426FBCCA8BE13BD2D89FF04B23BFC0D8984024F4D4DAFDD317F3CA71E8781AC61C7E1A925656CC1DDD3B4D198B63114F60FAAD7D10A86DEE42C929356243E231CC38FD17C82CAD1F1E512AF2C6D6B88F317B4418BC942D4E9469F27096CC62C8BA00C3F2475A157B765CD651D52DD8E03517A3FA06E2DEC17EFCEA1BE1CF84BA48E2879CB8673068F8ADD028DA1E57477C9A7E4E02ED182D1268C738D9925A6A8AF83FD389CF613EBD0230B7EEC773F496BFB77E028907C403FFCCB30979981D3F84B5B1B5148862B10F1235139121EBD92E0A83480B9354831903FD3026D226D0C51546ECDAB50FFD2E7E05EFF2F3CD56917BD4E391EC3194FB724D1041CC4E3C178830B16C3D226A4FA15628C7AB418BE1A5D5E0EE81BE18D855836DC7B3E199BC0CFE4547A133E6DAC7735AD10FEC7E9542352FEBDA508E55663522ACF63CA694ADB6F735438412890F4E77BB0FA3A7CD8246D1180A995D5A8B4D89C7703717689B7B81CD3B47DA0509153BF9FF59E1A3D7821743E71F88BF4DECDAA6CF9DFDD2AEFD2111779E64AE232B7E55DDC67DCA31D547B82BA641A0D77BCDC56DD101981DEFDFAA40B7E42FB318799D0FEFFA224C2B5D05B5A571A57D41D51FFB42E6213CA217EE8ABDF9B20424D08EFDF693403BC6A9792F530D2C3907507FE0A5FF5A7DE91B19E67FF31A61403C24C31642E837B0CD14F596029D2F0904735F9C91F7ED70A8CC8FFADCF850F4F453C26CB62231E512EAF6AFC42D255B9A89F3173ECFE2A22C02CCB7CB1ADB57948A84A8B758A1AC37A0A7F10C2697ADC622FFB721947BE0AE583D8234429CDDBB0D83339743632AB18FA54E20E52F90ED9E77D9CF6254B033A57855552B826AD331B5601982EB9A9F1C5F2CF5C78E5BBEC41F4704DA45B635813EA388C125594F4C285B6F7FE62B811FC1ACF6C5A3C383B8CFBDB57631BF0A9BBFDF8CB957DFE61F3386CCE73EA2FC67EE5B7654A09BF2679B89CCBDCF8ECE62FB03D1352978A8E843FBE3D94A7AA9DF8BB8AAE983CF67F7EAD05E1D752081EE8890ED731268C738B5DA8B1519321D5E04135F4DDB0E0875AF2600441288639FE22B6781EC7A9F6E531E6D09F4798F180C0BF744400BB740D36BBBFB2810EEABE41B55ECC081CFD6ECC4942B1F40672EB2773309C4F86BE0125489D43C9A22CC478101A16AF86924A8309A7128C380ABA5B5A8AFAD42B54506854C8229B17AD4D75643B3E72D44571EB66F5E32713EE431025BB577A346A4844A2A420F3F056EEFE3CD43EC58D8DD85DC4A9C3B9284D1856B115A77C93E0EF67278ABC797B86B803F6E8BF0E23F6F4BA0D3E47D31D1B0DEBEAADEE639153BB49331384C87C76E0B6A35A263E5AE73084E5E82D8AA5FED02ED61A9C0AD3721D07D823C302AC20B4595F53C9C30EBEC09DC9BF697662FBF75BA0770C0E356AC7A38FAA6A33A48A01D530A1268C738B5D9CB5A990373DAB7305FDEC153C6D941B53CB5FAF7DC58BD105D044F4117068F80B8EF23FC40828E5A7B02FDCCA860C4863AB609F5536A1EAAF72EC7C8E20D4D56BB32EC578FC216ED0C683C9898DBC4B4A79FA2D9B0982F78EB89627E502C2B783F2E4A07D1A58350EE5F0C7DDD55DE97B91AD8EA7699FE2928140A84EAE4981AAB474F7F8F66F1D4CCDD71E862092EEF5A8DA1F91BEC1B94B54205FE11F43EC24303F05042203FE5A42D81FE453D01B71B3622CC6873D3303FF412FF9720D387E0A9512108D2367713B150BDE5EB133137E79F3C72833DEBDFDA7BA033156278C5CE1B5E410F09D360F6107F782A6CA7FFD4E45F42D6E78F416F2AB0F3DBAF1A8DEFBDEEC59B3322E1EFD976986247DF037EFF9A1AAC5A95823F3E7694775FBD7A14A64FEB0589A4737CDC8E8CC115FA904077A2952CC5A7613EBB9657C863F530D80AFB77D54452B05A1BAC0E8864E45208A48E096A0383CE12E867971DC0F3597F6AB69197A28CC78F5E335129F7C313B705A37F68EBEE8186B1B07866A3C9761C57F5B67721485E6B375595508D0FFDFF863C712017F0FBE3FDDB4C74A93359F06372367CF6BD8DA88A43EC5447D40964F8D26701323CA23131468FA9B13EC829BBDE07CD5E02ABF44F20BE722FC618FE0D0F8B2DBAE5B06A3836783F88F89E7AFC2121D03E2E16FBFCD1D6B318F9DB2BE85297CE7F7E5C19CF5F4A432B7F41424562A7097459411E5296BF8A986A9B80B296AA8CC35ADD83981C1F8E097DBD6FEAAB4D02ED183E1268C73839D58B9D7BC80A2F99CEFC0B5656AC88152A72F126F0898128E4560883D9BF040824ED0B606BD36D4FA01F1A16803E81CDC3CB989B4229634761358FBFFDE0D335989BFB8EFD116CC5FB8DF7A348560E45989F075E696783ADE5B8AE9619B940EBD236DA3FCA90F5C227BE7F419D508E3BFA78DBA320DA32E1EED3F928DFB302830A37436EA9814920C166ED0CECD38C45422F3DEE89F3454955FD759B844CA057FA3C8900731EA6172D47B031833FC220F2C23BFE6FA0778F103C39B2B1A6C9A5A26AACDBB20F0F5DFA2B77C5B0D573A27A029234E331CEF0038675A24057E667E1DCB23FA39BF1827DDA49EAB1F8413B0B63FB0674C8A4A3AF3B097447846C9F93403BC6C9F95EA66A58F28EF2D29E96AB0760C9DE0FABB1D4F9FBFC3F5F2150FA4018780B449173210ABDEDA66A6BB414E832910E3F7B4EC119652C220294D0B5082D1388C4080BF641BFAE5ECD328D535614000018B149444154E27E78F7650C2FDF6627C3922B56EA1FC329457FCC1FC9E27E3D1DA6969653C105BADB95CDF66B0EA846F28D37AB58863BFB7A63DA80C650C1D66E7CEC5219D2776F40FC956FA0B294DBE29055A3B0D96B167A87EA704F9C1F3F65A66514071768DFA721170B3035FF0B44571E811066B0B8EAF55EF36089BA1D4F8DE96A7FE47707B3E0F9EB12C41912F9CF7224A1D8A09B831C59379B4097778E8B83B96E8A2F9F43EDD70F43696974D7ADD13D8C43AA044C1BE08F293719C94102EDD8579404DA314E37DECB6C84B5221B564306ACA61AA09E09F76198D3BE81B5AE79B6DB8D3FA4F3AE64BE65E657E6E54CE53AB0D03996B2CD6A3D4374737EC79602CD36F58AC5BE2817B15864C1751B4F15224F9CF31D8DA8F8040CEEEEC5A331583BB8682E7AD59EB44F3A57128CF5BAB9B828EB85A5F745D8FDA88E50399651C2053A2A7FBBBDFB6A2E44C3E1AD9261D6205F0C096F5FF02F1454E3D09EBDB8E5EC07D09A8AF849E1A714B158A97F027EDE6ADC3FD81F5AA5A855815EE5FB34A2BAE8A02E3A8D11E73FE469DBEC2F824BB21ED81FFE38C60E1F80C86B7F59FCB8760D62CE7DC1639FD9EA394935063B3577422E93624CE9460C2EDD71C32E0E1631323652875A9305E72FE5A14FD60674496FF4F15F968563ADEE21E44842F0F74961E8EEDBDCB7EF08EBA67D48A01D234602ED18A7CEEBC5E2A98D06580D9760C93F064BD62E5872F6DB4F37E9BC07397727A1771F08BB8E85387236A0F4B3F997859DBB61E36CA2044FDCD04E87A8CF38CC880B828FDA369E33AF4F84BFC9B6A1C7DA39791FB0641626D45FCEE905A5B49D52AC2DB01CB958CC05BA6FE1CFF64F3EF57D1E698A6874F5566076BC1F7AF9B75FEC29D760C44F49BF21E1B7D7A0AFCBE5029B268FC6329F67E0A154F2CDB7602F699B023D2E360825A5E5884A7E13BDAA52F969E02C1264B7D714486F9983E9037CF90A3CFBCBC7A1CA39C237130BC57EDCCF9D270902D34AB6613AA0D8B9303BF617CC2ECD44B048120F99107E0A337415E98828DE037FE365EEAE6968EB74F370C86338EA0552AC7CB0F74D178A228176ECF79304DA314EFF815E565B46A2B90E96A2933067ED8535FF082C45A7612DCFFC0F3CAFC52DD90100BEFD210A1D0551F72910A8436C2BE4FF6079506705BA214E57DA7D08EE8BF747E0B588868BAF8D6D165EC7123E98406749BBE18B3911372DD05FEBE723C5231E11FE4ACC19128010DDF5A9DB4D695E2EAEC59EA443B8E5D45BD0D5E7F31574B2C72D60A22653D8043A54276B53A06FEF1F0C9D4288EC7D9B303A7BD9B5CD4F014E7A0CC2B1FE2FE39E41BEA8349AA15AF3006425369FF0554908DEF37F0D66910C7E0A2B4614AE775AA0D98B84F9CB994B8635E6E967BE6D96D8C35E020D8D25F92CD7CFC709C54048C5222C9F1771D3DF4F1268C71092403BC6E9BFDACB929D0473DE11A0240D968254582AB23AE5F942EF4808BC7A40DCE76108030677CA3D9DB9494B812E11EBF1A3E74C1CF318C2DD1B2D4BF188AC661E151115AAC37D83FDECA15D4717DD8BF0DAB3F647174802C0B2E6CECB23F1F99CDE4E097472BA6D05DDA7A07105CDA222767A4E4254A00AF386FA77185296965B8594DD3F63C8C54FE0692AE1598B873D12B0D16B36E44A0FDC1FEFD7A1402774F7C4F25FCEE3FE944721BF56F8E8A4A23FD687FE19B3E2FC915F548ABE7B16C0BBC656092F4BDA15EFF8FF036291087E4A0B12F29D17E8B66CC75E306C0ECC05C53228F7AAC6E1B07A38CC120FF8AA25786B5AB833666FB52F09B4630849A01DE344BD3A81409B511CCA18EED36C88C16DF9A861DD3D798C7443C9CBED6F3D83B8AAA4C6151E8458A17F12BF29073ABD823E9D5DCE053A3C6B8BFD7E29CAC158E3FD07E8759EB82FDE0FD141ED47AC24A515A264CF2A0CCAFF9EC7263337C05AEF87705439147E1A195F41EB55E27657D07744EB702ABB02A1DFDC09519D2DDCEEA2AC37BED1FF1152AD2F220DBF6254EE2AEE7FB66D428EC446DD3C0CECA286B7CC0C6DCAD74EAFA0596A3AF3F3570B9B47CFE48B0371411E89C3AA04B0841DC63D4023C59CA1FEFCA5D51965B049A01DFB852281768C13F5EA04029D1507FDF5E20F31A96855B311FDDBEB1EEC538DC6C773FB3AB58266892B55DBDE85FE6C63981D8B8EF8C0FF555EE3994560C475B355836BADD59BADD872F40A3CF7BD87E8CA8360AB7EA350CE57B7F9E2009EE4C256D09E8AB63709998B8309342B075AFCDE4428ABF3F8A3988FF827ED349C500EC2F4929588AD3EC4EFCFE2AC3FF17D0E59CA081E8FAC1699519FF485D302CD7CFC3F6A67F2BA254D1BAB3362821816A188676E0678CA3073A02F58B6617B35B99DF98A90403B468B04DA314ED4AB1308749640BFFDAF5D9891B1101A73E3B164D9D2AED8EC390393A6DC81E890B605B5E534AAEBCC28D9BE14D263DF72DF2B6B4C0057E8E7E38A672C26F5F7E31989AD3596EE7D2EB71267F6ED40F485E57C839035B6C1F762D0A75CE00677D370F70C7B4E6B61762C8AA341A059ADEB759F2DC6C8ABABB86B87B919CEC9A2902E8F405CD53EF8D6DBEE9FAA1CC4135C82F52A5E08E972BE01757B9D17E8A6B538FC3552BE19DAB4DE365B392BA54244F87BA0A7BF1252AA07DD09BF05CEDD8204DA395ED4FB26087496406F3C9809E9C12F704B5963681C1BD679791476F57E112F4CEEDDE64AAFCA68464A463182F54A74F5B1B92E4EEFDE02D9FE8FA1ABB7657EB2CD33B6E1B8CEFB21C4F48FC1CCC18DD97C4DA75F60A8C5FE7D071172F22B84D5A4D937D65826E28BC19FF00DB53B63BC79F5B7B652BD5B0AF4A24DA770D7E917E057DF18A5D2F4994CB417F9BF89324530CF729C31D0173B4FE4DEB440B74CF5BE09333B7429ADA01DC244892A8E61A25E9D41A0B3043AB7AC16ABD76DC1AC9C0FA1B0366669B24DADCFFC5F44BFB8384C1A1074DD908FA697E0646631B417B6C210311953E242789D8CCD072F40BF67217AD69CB48B2CF323335FB479E8C3B863D8F5C58158AAF885F3E9C8FFE96344180E354B3B672E8355FAC7D14527E7197751811E0E0BF496947C54EEFD0A634B1A63909B4E8455EAFBD4F72F50AB5578747820BFF78EDFDC53A0338FE663D93BC770BE85A5C57231A6BE3416D33B0A363118B0F5BB935899D85856F5AD1563D0CDA3A3F0520B3233B3F0F1375578F0A9484436F983EDC4D73BF0C64FED1FF220556AF1E8BB4391A0EFF8B78A56D01D33A21E9D44A02D813EA78CC1A8DE5E3CD2A1B5D6C3578960AFC6CFEACD16FC78E02C5447BEC2A0F2DDCD2E2994F8E357DD9DC80A198750AD185DFCD4FC6CC122430DB4977F41CFC2DDD0D417E3C3AEEFA247908EFB70F34BAB91BBF73BC45D5D0B0F73E3692F2C4331D96F32F2226620CC4F8D10BD12ACF6467E791D2E6415C133F7286EBDB4D45E898E0DA45CA8C552BF1790270DC6A0AE1A5E729495F2747405CDAAC9BDBF26090BB25FE0FEE6966DA5F71338E63118C13A055E9FD48DDFDBDD04BAB622137F1F73085B4B8DC8BC508696E7F3088402F41BD70B1FAD1CD7AA08D657D7E3B34736E29B320D6E9DD20BD3FAAA80736731FBA533903C380EA75E0B6BF71BBFEBF5B57866A710C1B70FC2BAE7BA41CDEB4B55E3E7D7F7E0B92F2EE2C4D5B6AB5AF67E7C0C563DE08F6ED13A783B90F74502DD49E243B7E998404B8166E15C6C43CD2C10F3129E2C9BB0B596E47337EAFB4EC1A47EBE50CB6D31BBC67A334E5FCAC7956DCB30BCF8876697311F729D5006E632158984B058ACBC3CA8D86CE42B5D9685F7B7A025B04A143C957B528C378A0C5558BB331513CFBDC12BC33534B6923689E4FC3E7C83CC6A85D90A98CC16882CF5CD4E47F9513B0BC714F13048BD111BCAC439080AA92DFBD1518166BFDABB4EE5A3F097551857B4A6D9BCD88A9E654C560A35E8E1ABC0AB93BAF1CFDD45A073362562F8B399C0E0FED8BC24026D2D40CB3727A2D76397A18E0EC193AF24E01F931BF6102AB072E646BC711C48393C03D55621942A295432216032A1C4500293C40BBE9AD657D0A3466D42E433133162D3A778F9B81E9B0FDD839E0A9B7D4F9CB022506F84556C81E16432E21EBE82E7BF9C8A075A943A97A8E4F052767CE66483E149A03BD615EAD149049C4D546978ECBFB5B3B0DF6B02660F0D44420FADDDBFCCDC0CE947F7C2B8F34304D465F38DB58E1AF32FB3C35E5F095A0CAB588A89D1DEFC54159B881AF1C996542CB8381F42ABE5BAB3FEDABA377BD1B01AD41FFB3C8FABD250BEB1F6CEF4EED02A6DA53B9D1168D6979D5FF8EEAA1D987FF535FBC625FBF932FD029C50C64220102236448567C7DA4ABCFEFE05DA8AEC1FF662FC82B3F826F501845D48C6B0B864844FEE8EEFBF9F709D592CC63AFCF4EA5ADCB94E8A67FE391A1FCCD0C354978337E276E0ADB42ACCDF361FEF8CECE89BD2F8B9C564C191CF7E42D9E4788C0E16E2ADC1FFC206930F528EDF7BFD4D2C16AC7EE4337C103E09475F6C2C74E5F8D39AF72481BE5172749DD304CA6BCC28FB6832A435C54E5DBB597B37F669C66174A4370F7B6B7ABAF4E18BC5D8FEEB694415EC44644D2ABC4D05FCF8A7968DC5FC321165A16F7BD5E378CC345B8D4FE9E783F17D74F6EE39A57558F7CDB74830FC0CBDB980C735B7753E215BA99789BD705A1E8B7DEA512812FB412814A2979F122F4FE8D26C082C9C6F7DE2714C3DF322AF1BCD5E14279503F0ADCFE3B8E35A985D43040573A3ACDD710C61BF7DCAE7C41ACBF8FBC8EF65644AC3E12113E381A10118126E737E269ECC43D5DE151850B40D4A4B252FB67444351CDF6BEF6D76E415CB78947E3E11B25ADBA9312C4D7C83D71C9C9347E17F7A93D05C84AF9F388CF484A17879A60A079EFF166397D461FAFD43F1DDF23EAD88A419A95B93307041019E7D7B34DE9EEA8577EFDA8A85BFE461E43B7761E3230E387FF95D2DA82A29C3D6A5C9F83C558EA5EF0F4278F96F18187304C27E3D91727C7C8B675B50FADD76043F7A05DFA5FD111303AE7D6CB6C02410F08585B3E7A293403B2515D4F96609ECDEF26F54A6A7C068B2F0F3FD1C692715B1C890F7C29D7DF598D6DF87BB431A1A5B451F4C372035B304A82A45B7F4F5F0AACBBBEEDE9542159255C3F87D2C4229BAFA78204C2FE7279E34F56FB3FB7E989805182BE0517C0E3E85C7E063CCBE6E98EC7C42162F7D54958052B11E569104DD7C943CD36E5A7F5F7BDD90860B0D3526FC7CFC0A7A64AC4775561AEA8552B04CC1E3EA04DCD5DF0FE3A3BDED616C2C1EFA6C8E01670F24C23F63339F0BCBBADCAE998272890E51412A3C3D2A180A89ED4FE5333906649F3A0ED5A5DD4059362A042AFE0262E7298EE9E3C7E3B0596363C8FC6131AA2F9FE46E1F1666B75B339E8F7F780F2D2F0CA5B956B0DF11BBDC4C1FA7A2380C065CAC9221D0478E334947F0D7F18791332E120BFE36140F0EBEBE6893D564C2DE553BF0F02639DEFDC740C48A4BF1D81B69A88C08C7B697D80BCE011783C984D2A222ECDD968D9F4F8A30677E6F0C0913E3C86B6B11FF4619864D4A40D2C6986B08EA9092528CFC82526C7D7937569C1360C3868695BD18BD033CA0EEA9825A2E4647DB8F2D999240DFCCB78CAEBD2102EB930B70B1A006D5751DBB241A1EE02113F1F303D999846DB8AAB9006D3856809CB23AF004943A33F76BB3F70013248D5CCC8FD50AD6CA30A99F1E7A55DBBF2E6C157BEA6A150E6794E37C7E0DAFE7CC0AE637D4A66E78B7B07BB0534FFC3D259810AD6FE6D6680D0EDB045CB8F5326AEA6D1B80BE6A29A6F6F741DF60765A4BF3F55546610D561FC9479EA1CEFE6C768C1713D286BA244D9F919C59819D674A70B9C476282D2B1AC542F1D8BF86C69EBFEA601E77E7B0D86C9140C0398C89D421AE9BBA5959D71B32AE83173925D04DEE19ABFB0CE7BC7DF1F5F6A998D146C679EDD56CBCFEC42F502E988CA7038AF1C6B349C8888BC3070B2210AC6A5F9C57AC3803639D19A8ADC585D3B9C8D20461648F86DDBC1AEC5B7C04EB2F8BF0E8EA795832C9F672284DCFC2276FFD8AF7D6E4A3B44A8D898F7641A3734389BBEFEE8191236FEC8003126807BF50D4ADF30830F1CB35D4A1B6DE71816685FB59324553F7466B232AAF35A1A0BC9E0B50598D893F83EDEDB14367BD144CA09998B28D21C72ADE95569B905E5083C2CA3AB0ACC1B26A5B0815BB1FBB878F5A8A102F19BC55920EC7D630DEA399155C1C1B049AA5B9B7362FC689CD23AFDCF66CF67208F751B4591B84ADBCAF14D772816652CF04BA9B5ECEC7D6B4B128942CF602339AF93D994077F196F339FDB7DA0D09B4211F5E5DB761ECA2F1F8F2317FB49E8E54839DAF6EC1A2CD22AC39743B2EAC3C84057F3D813F7C31110F4C0E477B8113977F4945DFC9FB515E757DF44C532E72B516EFFE3A174F44D97E5A9C568C038B93307F7536AC4313B06F5B3F3456F1BE39A224D037C78FAEFE1F26C0048B7DC18542F095A1B3FEBFD6A656516BE22B72994808D97F51D0FE8731DFD0D09C17E85A1C782F11E376E890B271287AB45A1EA51A89FFDC83173ECE44FFE7A660C9340196FC3511AFAC2CC1EAEF2762CAE4F68A3C95E1C0A622641973F1E97DA938DBB52B9E59D4B399D0161F48C5735FE643A80CC7A6EC0918DBA40AED63776DC18AD47A7CB4711C1EEDDF7E795A678091403B438BFA120122D029049C13E85A1CF8F4573CF7561A5EFBE17E8CEED7CA010AC55998F77436C63D158A6E56118223FD21CFBC84BF3FB9054B932C58F6FD44CC991CDEC2075C8375EBCE23C5A0C5FCFB03A03119316DFA16F49C702B1E1CA142AF18359A9691DAF2CC7798F9691E4483E2717CFF6074BF462273572AE6BE9F8B898F0FC01FC7FB40DD8929F124D09DF275A39B100122E00C016704BAE4502A1E7AEA30361FD7A3A86812B4DAA62E9B726CFEFB212CFC3C03FF5C3309838707E25A68322A2F6661D19FB7E3CD1FABE1A9EB820FF68EC6EC28158475F5D8F5F6F798F79901C366F5C2CBAF0E45A44A8C948F3662E4F1EEC8FE32069EADE44CAD9EB71A0FAF2E8464E4309CDA3E00216CC2E585F8ECF9BD7875BF0ACB360DC7841E4A34388AAA2F5FC5C7EBD3A18B8FC1C3C31CAF0FD3942309B433DF2AEA4B048840A7107058A0AD65F8EED9BD78FEA34C5CEE1B8D82DD09D0AAD8FE81199BB79CC6CC59FB20888FC486C5F19814D3BC6C2A5087D4F5C9F8D39F92B13BC7DA2CB2472291A2CFA8287CB86A3886EB01EBB163E83FF32866AE7F002FC4B69ED1BAE681D578E8DB424015802F5367E0BE50C0907A16CF3E9B84157B6A9A1C710088C44208BBFAE1C94523F1DE7447C3FAAE474B02DD295F37BA09112002CE107058A07372B070E111ACDCD5582FA3E1393D8786E295F76F439C57FB4F4EFFE9285E7AF70C52726CFDD46A298E25DFD3ECA2D3AB77E3A98FAE60F1CE7B10A5697D2B3177F31E4C78F90A4CFDC2B0F0E918DC3940CD725A7174E551BCB6341DE70DB65BCA3CA458B8F51E4C6A888376064C8BBE24D037018F2E250244E0C60830815EBD3A150B9E3DC66FF0D557233165720F4824CE460ADFD8F35DE52A126857B1148D9308FC8E08D4D6D6E2C08173F8FE87743EAB39B363111B1B4C024D2BE8DFD1B79CA642045C9480D168446E6E2ECACA6C872E04070743ABD5422C6EAC5FE2A253EBD461D30ABA5371D2CD880011708480D96C465555159850B3A652A92097CB21682B4DD4919BFE0EFB9040FF0E8D4A532202AE40C062B180FD634D24129138B76234126857F826D318890011704B0224D06E69769A34112002AE408004DA15AC4463240244C02D099040BBA5D969D2448008B80201126857B0128D91081001B7244002ED9666A749130122E00A0448A05DC14A3446224004DC920009B45B9A9D264D0488802B10208176052BD118890011704B0224D06E69769A34112002AE40E07F5EA05D01228D9108100122E02A04042515750DA7D2BBCA98699C4480081001B7204002ED1666A649120122E08A0448A05DD16A3466224004DC820009B45B989926490488802B1220817645ABD198890011700B0224D06E61669A24112002AE488004DA15AD4663260244C02D089040BB85996992448008B82201126857B41A8D99081001B7204002ED1666A649120122E08A0448A05DD16A3466224004DC820009B45B989926490488802B1220817645ABD198890011700B0224D06E61669A24112002AE488004DA15AD4663260244C02D089040BB85996992448008B82201126857B41A8D99081001B7204002ED1666A649120122E08A0448A05DD16A3466224004DC820009B45B989926490488802B1220817645ABD198890011700B0224D06E61669A24112002AE488004DA15AD4663260244C02D0808DC6296344922400488800B1220817641A3D190890011700F0224D0EE61679A251120022E488004DA058D4643260244C03D089040BB879D6996448008B82001126817341A0D99081001F7204002ED1E76A659120122E0820448A05DD0683464224004DC830009B47BD89966490488800B1220817641A3D190890011700F0224D0EE61679A251120022E488004DA058D4643260244C03D089040BB879D6996448008B82001126817341A0D99081001F7204002ED1E76A659120122E0820448A05DD0683464224004DC830009B47BD89966490488800B1220817641A3D190890011700F0224D0EE61679A251120022E488004DA058D4643260244C03D089040BB879D6996448008B82001126817341A0D99081001F7204002ED1E76A659120122E0820448A05DD0683464224004DC830009B47BD89966490488800B1220817641A3D190890011700F0224D0EE61679A251120022E488004DA058D4643260244C03D08FC1F8024C458BED69FBE0000000049454E44AE426082 WHERE `app_id` = '2'; -UPDATE `fn_app` SET `thumbnail` = 0x89504E470D0A1A0A0000000D49484452000001680000012C0806000000EE2C29AF0000200049444154785EECBD09985D577525BCEEF8A69A354BA5C91A6DCB039EC0536C636C631308B6434248483A2140C3FF058281907446487F49FA4F87A4D3FDFD9D4E826D861092302401023433D880C1C8181B5BB6065BF358D39BEFFC7F6B9F73DF7B552E59922D4B25F994292455BDF7EEBDFB9EBBCE3E6BAFBD8E05F3652260226022602230272360CDC9B3322765226022602260220003D06610980898089808CCD10818809EA337C69C96898089808980016833064C044C044C04E668040C40CFD11B634ECB44C044C044C000B4190326022602260273340206A0E7E88D31A76522602260226000DA8C01130113011381391A0103D073F4C698D332113011301130006DC6808980898089C01C8D8001E8397A63CC6999089808980818803663C044C044C044608E46C000F41CBD31E6B44C044C044C040C409B3160226022602230472360007A8EDE18735A26022602260206A0CD1830113011301198A31130003D476F8C392D13011301130103D0660C980898089808CCD10818809EA337C69C96898089808980016833064C044C044C04E668040C40CFD11B634ECB44C044C044C000B4190326022602260273340206A0E7E88D31A76522602260226000DA8C01130113011381391A0103D073F4C698D332113011301130006DC6808980898089C01C8D8001E8397A63CC6999089808980858E3D53033613011301130113011987B1130003DF7EE8939231301130113018980016833104C044C044C04E668040C40CFD11B634ECB44C044C044C000B4190326022602260273340206A0E7E88D31A76522602260226000DA8C01130113011381391A0103D073F4C698D332113011301130006DC6808980898089C01C8D8001E8397A63CC6999089808980818803663C044C044C044608E46C000F41CBD31E6B44C044C044C040C409B31602260226022304723F08203F46C7679C69D698E8E06735A26022602732A022F304067C8019A7F2A60B6D0FDE99C8A853919130113011381E71981939B7E9E5280E695139C0D403FCF3160DE6E22602230472370460134F3E5677E9DDC4B98A3F7C99C968980898089C0F38CC00B9C413FCFB3336F371130113011781147E03400B4C99F5FC4E3CD5CBA89C0191281B9B11BE0A90768B96E03D267C82835A76922F0E28C40F6620268CB40F28B73949BAB361138F322309772C8E79541675906DBB6C13FF32FFEDDB28E35FB1CEBF767DE4D35676C226022F0E28980C23E0B699A8A74F89890F71C43F39C019A20CC9323400B6991A60A98F9DD03D8DDF3228813980D383FC77B65DE662260223047229027A7291352A21AF15070EFE4D2B7CF19A009CC6AF650279703B482DFD94E32FF9901E93932C6CC69980898083CC708CC640ABA007D7221FA3903742FA5E108CDA1C05A65CF33698E6E0F61061B982304FC73BC37E66D260226026773048E73919F53B94C543BB42E935536E3CDCA229C78D09E3340E733084FCE751C3921C7B68497C9B2A487C8D099B32C054C17E189DF22F30E13011381531D81E3C9217B315051BE19923483653B278DCA7DCE009D531B499208403373F63C1BBEEFC02615DD7B8A5D238E531D67733C130113011381138A400ECEC76293C9F0B204C76499A5B7284C104429D2EC2865B8133A0BF5E2E705D0E4A109D0CC9C799604E742C151E07CACAB7B0E276BDE62226022707A22D05B413A3D67700A8F7A9CB260B2BA560F4087618C56104368DC932486785E006D59E49E359D91A528F80E8A454F21BF01E85338A2CCA14C049E430472AE75B667558B81B324933431D5A065F39FCFE15067EC5B9E858FCE33E73C7C4118A31D241AA04FCE153F0F80EEDE5DC52CA7F03D1BC5A2AFE60E03D027E70E994F3111782122D0C9123358B311AEF210A7C8122AB42CC4AE7AA4DD0C7072CAB217BC7215ED0B71AEA7FB336705697DC11AE738810561827610E3644E612711A013F89E8352D157E134007DBA879539BE89C0B34740837467B56BA54A61C56F0BA2EBB5997A25C0F65D357CEB5B4FC1B3AAB8FEBA8D58B162FE741C32008D3639E8203969F4C6F3E4A06766D006A00D1E98089CB91160A52B013292AAB60268E682291005C0273FB305EFBEEB6E78CE5EFCEFBF79076E7DD54B857F7D517C1D67066D00FA45311ACC459A089C8E08B0E225902C009DB31EC4A6A0017CFC1F9EC45BFFF3DD70DD27F00F1F7F0F7EE6B557C116AEE345F06500FA457093CD259A08CCE90810A0BB3C05AB4A5112C3B71DD4AB363EF6D16D78E73B3F02CFDF820FDDFD9BB8F3CE2BE1BA5A4F3BA7AFEB249C9C01E8931044F31126022602271681692A0E0DCE92455389C0D2BF238A8D46CDC2DDF73C89BBDEFD2178DE93B8F79EF7E08EDB09D08A0A39EBBF0C409FF5B7D85CA089C0DC8A80566948355F78678D42CCA22DA5E54D325B8A84CD3A70CFBD5B71D7BB49713C897BEE7E37EEBCE365F00C4077C4105471180E7A6E0D7173362602676E04048FA938A072C3EBAAAEA4CB2C45AA6D1958371480FEF056BCEBDDF7C275B7E1DE7B7E1377DEF15203D05C3EF4C8EC0C409FB98F8339731381B915810E40338376956423F767B032C11D31D2D4007DF7BDDB70D7BB3F0AD7DB8A7BEF7907EEBCE30A03D006A0E7D6983667632270D644A0C3AB66E8B409F618E864560AC2B4953A68D40101E8BB3EA601FA370C40CB146632E8B3E6793017622230E722908334B3E719FB6964C24393E870D0A839B8FB1E02F4873540BFD3501C06A0E7DC7036276422707645E059009A4D2B29E8B363A3517771CF3D5BF1AEBBEE81EB6E371CB48C0293419F5D0F83B91A1381B91481993E1ABDD60C9AEA105A3A059A0D521C4FE25D77B148F814EEBD8719B4E1A00DC5713206F4CC81C8CF9CA96B9CE91B724C97AF9E133BAA13D8719CBCF12B398E209997BC6011E81DE733FD44739F8E146808406FC55DEFFA305C77871409EFB8D300B401E8933132F38196AF4A3440B3049263B5B879E91DBB84F7A70181640F3D6603F9609EE1153B9B739FF8CD74DCA2D41B7BEA2FDDAB3AD6C43033ABE98DC7D1DE7B3262663EE3C517817C5C53069D5F3DFF9202F50E407F04BE501C0AA04DA38A29123EFF07A5374BC84158EBF215885AA0C7ADD615A949D1A63E942223EE14334B1BD16CA0DF7BA63337363F5A47EC510198D2270DEBCFF29AEEAFB89998F93211781E1110699D1AD8D3C65206D49BC0DDF7308336003D3DBB3200FD3C469C7EEB6C00ADD35995E9EAECB607082931525F2A83561FF12CFBD870BF9B4ED94067E34703D65990F49973403E63A813158B84DE25A89CB75A03B0CECE6E2F395343993CFFF1F262FD0403D047BFF3B3663FA64878521E15B66012CA98633253EEF183E95048741DE8CD94050FF3CED769389F03772F62E6103E03F56705E83C3D79E61D9F9E30339BD1340B7AB6109BF1990AA0D5346232E893325C5EBC1F6200DA00F4E918FD046865FD2284C5F4ADB87AC5FAB24DBACA983B389883F43332D3DE1FE899545EAB53F2D932D9A321287F3E2D7BCFF96B82347FA101BAF7DC6739BC41E8D331BACEA2631A8036007D5A86F36C95EAFC447A0A7F5D0AA3BBA384805E0E8633FF9CF6DE9954B5B079BDE4883A62CEA7F40442B2F74E43BF2E4AF65414E5B03DEFE3D662E06E95C2CF9023D78779B198A79F9641F42238A8016803D0A76D981F8D9BEDCDA0E5E47AA41C9D9454BFA817A07BB3E1FCD7D35E96B766CD4E3E3CF3EDFAB8548D08E06AD09617EAACBE538F8865FF47290BA60EC0F7188EE3B40DADB3E6C006A00D409FB6C19C92FBD5FBAC698585CD7F0A0E927F4E15C889F3226D1601DBD2EA8EFCA4A7D3D45DD257A7B82A135629B7F0D739A0F7EECBAEEB8C9220CFCCECE5DF7C41A277B6D04A0E8B4636163247ED72A14A83096C4DDB58B48A7C71EDB37CDA86D1597D6003D006A04FDB004F12C07604E01201CF0C96453B72FE40FF2E2FCAF6EC766C67D4476876A2979EE8D54277EA7E1A7DE5DF1652991432D836996F9D2113956542C80B8AFAC3B5939824D016B363FD9DC480ED2900B608D04270E8A980AFE1B148A7E814FA682B85D3167873E033260206A00D409FB6C19A723B1F05652A0B4D75064A84B3655B79514348164DE08B90890F81D6174B01517FCBDFF979EA2782C33D19B1A21E7AF80E7E28DF231FAE05D8B2DB66AEB156993D3F8B1BB6F3AD6A2F8B0C8EECB24CB73166F80AA87B0B98EAEF8AEF96E31A803E6D43EC8C3FB0016803D0A76D1093C22010E774040763162393ACD4159015BD4496C1C92220AB73A31F006D206901D571A05D45D69E421AD491864D200D110401DAED362CC743A1D807CF2F20B31CA4B60DBF50865BA8005E1F5019012AF300AB04A000D845C02A00962B3B5708F4E7A9BAC66462B84C2942C5CCE8B0C90329C8DC63E46B00FAB40DB133FEC006A00D409F96412CAC020159F1CA206D8010B05AB2A7BC300E710A381EAC34861555911DDA8660F26934AA7B91B42790548FC00927E1C555B8710D56D4808308691C218E520179DB2DC3760B486D17B16D21737D646E1989D38FC81B028A0B51E85B8CF2F05294E62D833DB40828F6037085BA500D29CCAA3D642801B6FAB9602EA912D21E92FECF507A18803E2DC3EAAC3BA8016803D0A76550EBC21A59026E428CA80D641340BC1BD8FB30A243DB3171700F82564B40B0E0A448DB63B0E226AC24441A07401AC1CE22B8762C7F220BE5B52C3492A5CE32F5ADB6ABB7913233E72B2C0789E522818BD422781761792540BE8BB0DC22D2CC82653928F50DA330FF1C14575F0A6B681D8061C01D4442B0D7E4862D74C77480569488AE599A0CFAB40CB1B3E2A006A00D404B047AD50B470B49AF0EAD177404A97A7F7014DE550A815CFA335B8E81B4AD8E9486405A45F6F40FB07FF3BFC39A7C02C5E820BCAC0D57680FD5C1975A91D00B76EA0AF7613B547628B2599A4744FEA18F912A0ED8B655CBB5AA07AAA29D6A35D1AA8E8E1C4FFD4581BA3E4DF2197611756F2192FE7330B0EC62F4ADBD12F6A2F3152DE27852E414DE3AF5D516451A959F15A07BDB263BAA92D3DC127E3CF7FFD910AF776C280AFED85F33DF33F31DC7F319C73ACAD1C6ECB1DE37577E6F00DA00B43C4F3D98DAC5DA1E7320E913E9A28992C2A52A73E4DFDD148945E02520BA82BF165359FDC5CFB7F8C3AC2D3446D21E03A27158D1389ABB1FC5F8E6AFC26AEC411913F0E23A7C514DF0184AC6C663733709E17F7B1A41667F86BB3FED9CC14C638D4EBD70C6C4D239E3FC9D36E2CC43621511642504CE30D0BF1CA337BC06D9BC95C8EC7ED8CE206C6701807EA14084A04E2380123CBD3373F73C1292EABADCA8741E59AA447A9DA222FF762CF03AD9007234803E1E90D43D44F94B652DD1DB7DDF594A746BBA795DF6597381E339F6B1E2A0E766398593F179C73ADEC9FEBD016803D0128199B686F2C02692512ACD84CE30F583ACC05375CE4952CC8164A748B30C2E414AB473F9DBF88200C014D0DA87B8BE133BBFF6AF482777C34BA650B46AF0D30914D0829B05025A2981596926D40D22A7CB0940B77E9F4AFCE219C85C647948DD0A6AB18BC41B42CBAAA0810A06566EC2D20B6F80DBBF0A767939E0F621B3A8EEA03A45D32C147C508942CB5499011D0DDEBCB80056368EE6F8380A7DCBE01406A4787AEABE7ACD50665BFDE4DAEFEE34D299AAF58F72675899AB7B015A8FAD69D7D2A99F763D5066C34E35C63A53BCFECB31EEBC9C4F3791983DF13875917DDE4732006D00BA9BE6F6C4C2165241F3ACB62E84692097A439A713723959DE6D4730CB6039394F9088E2226B1D4430FE1360FB37D1D8FE6DD8E118B2AC0D87BC711AC263C69C92C2B084FF4DA98F2688698DB214E3F4A6F3A736BDE475A6FA9A4A22F293B927CEE0383E52F808AD12027F3E4ACB2E817DCE75185C7B155267212C3D51259603CBB2E0662C7E5243CD78325E9C84B8C7DC38D243DFC4130F3E881557FC22FA176E00B2C2F37EB68FFF0308949C4D7334CD5B206599D4930EF35F4EE72EF0D5AECE94D52A47BD5ADEDDEBE3DD638522BFCB3F56E8A91EC0EDC9B4F3A9409D53AE32E79812E796EEA9CEC4EF6983B92B959C0EF6C71F99D3FE4A03D006A02502BD990A9FA069CD17CA5A33A74E856ED04A5FE184C9118BC698853536DD25B01C66CC75209D02EABBD1DCFA3D4C3EF60DF88DDD280587E1644D647608C7EEB1EDE4136EB380A7926FF5C0B37390C748456E278FEB29CE2E65621000721126096CD791461A97D79B9282F111DA65D49D2154DD455870C92D18597E2930B802700690BA83C8AC226C293CF21A7875D47993AE9904C2A750FFFE87B07BEB4E8CDEFCDBE85F713960558E8FC73D6908A234E4BDC8A7A29D0F0CE54B9CCB0F7328E73C2C8D961AA0F39FF7D209BDD9758EC11DAFEFDEF3EF4D8EA725CA1D4497496DE66A4E8E792CFA829F77ACD79CB4589EC40F32006D007ADA73481A81A35D6465DD6425CF8C54B4940F9DD64AA8AE10AD9AB0A8A6B00264F1218C6DF9362216FC5A3B91EEFF09503F80421AC04F294D8B6039A15022E49485ABA5D2821F6F5BC2672BCE9B1A68B202161C7D9C4474D227F12138C6470935C1B2A69E38E0BA40C2A61AC04E980D3BC81C179165A3C53FDD2194E7AD4336BC014EDF6AF4ADBA0CF6BC35B0EC41C9402D66AB19635447BCFF87686DFF1A9C5DDFC4A1BA8385B77D0095555703565F4FE5F6D45DEBB484B427C6BDD8D69B8D76EAB29A91E990203D137E9E5977890735729E1530A7A7D0CF1E8019E779C666CBB35DA5016803D0D3005AEF5A022A253440B3CD593D2F04234DC84A2AA4A466D23EAD335D2BAB02D97EA4DBBE825DDFF957F8ADFD28A635B8590B8E15089D2180E75888D214B6EDC1E6B2995617B2DC6531901A66161CD5234D70667BB7C36C95D383CDD79CAA744875205A7A52484953C8FA9DEDE236B244FF8E3F77D8E7482EBE8438251D5241EA0DC35DB41EFDEBAF4761D54DC84A4B915A2E9CE829C43BBF8EB107FE0DCED8E3E84BC631E62D47E5A63FC0E0FA1B61D903B3EF1A732AB0BA17496745D119E0DA933DAB21931797A79FEC342FEF5E7278DACBF4C10565BB14459E434B5A30DBADD7207DCC533F15F13B99C730006D00BA3702043E79C03A0E6ECA87429E957C1D9BBBD1DBB949502ADA642BAB01B52771E447FF8664E737E0D576A39434859A1052449CF96358568C38CB90D81EB2D451D9B15EF28BF04300506D6FD599185295A9AA8EEDDCB8E8643E0947FB2C9E90CAF08592B032B84E8A3089E0BA1E126DF84468D6848C00BACD4E48A1631C847605F5E26A8CFCD4DBD1B7FA2A64CE20D0D88CC94FFE1E507D0A45AB05378A70D85F87CA2BFE00031B6E84650D9EDA0C3ACF4273243C4A36376D5995BF663680E6EF7A4178B615CF4CA09DF99A1EEE3A3F2D59B53CDBDCDC33779CB239FC851C8606A00D40E799F2B44C7A46583259E653B5A1A46F2C7425B9A366CA16EBDDC0D3DFC4BE07FE05D6C43694AD06ECB801C7621309690C458928DF8D0CA9954A262C3BAA10D0C8CF8A62449E6C9D49EBBFC943A7B7B992C2BF9E445EC80763E6676BBEA7D7275A65845D973C16FEAC8CCC34AF547269C49685B6E520F686D1761663D1DA97C1BFEC95C8767C13F56FDF2DADEBB69DC28D1C8C391B51B8FA7D18B9E856580EBB194F1D8F935909B83AB059D0E4FDCD9516D379095D33A41245194CB101A8F3D503F2B2189219AAA31FEC288504B7757D5084403A59EEBD5C594BE97B2D1277491C74443829F2F8DACB453E41CE83594477049D155487016803D0B302744FF6220542795182340A61BBF4ACA05A2384954C20AB6EC391CD9F446BC7D7B1C03E82A4761805CF13884AF453AA1263D5D4A1BC3698056B5D730ED03D4F7A9E31A9A49DB482CAD6659F3F520EA7109CF326184B8A949C48B407AA0083523F1098A55125531CB38550F1F4B687C0B6116516BCCC453B2D23282C821B1EC2A03D86C48AE4FD4EE22A80BEFCBD9877C9AB607903A710A0D584C92FC6378D09D4AA26907F4D93ABE5E8C97B4BCB554BBB0BF6D20C1DDB5835DFD29C50B4CFACAFEAE49A574EAC8DD30C419C2152A1006BB0451FF02C0BBE65490D829A1E5BCE510371AA29303D5108DD26DE5B8E80F7340AFB54B1612FC49834006D007A3A40ABD19C6A7E59B241A15C1545A1141419ECB8892C3D8C78CF37D1DAFCCF681FFC090A691D4E5045C9F3C0E7872C89EC3D486F0D293C4ABE2C5405C18E822DA56BEE7601AAA3AB5C290746D90750405AA563562AFA8917E27178C6671264A5455C1A6762C9F2D9C9A8247F9C6494BB1ED28200B4A28358280D65A591662E225239B051E015A740683BF06C764486D25199F7361E71D7C17BC93BB0F0F23B60B9F34E194033E6715E90950950CB3272BF6E0D78B91BABAC1BD258AD690888BD227A4D4CD1BF9B0D38BCBF9295734CD9409C01ED38463505C6C30C631301C626AB68870912BA17A629D22842D1B1B160A084C54315CCEFF33054F250F294B1161BA0946115A938AD8D1705109B84BA1B29E423E98C546FE423D100B401E8E9115060A948841E791D8B60DA4DDF628B767A08D1E11FE2F017FF174AD54750008D8A52F172A6B73D1DE104D709CECC7DA701B4A233486BA8AAA3025FC5542B70EE921D399DC1F352C5CA53BD558998A04ABD8A60CCD310A78FEE794B46E97535BAA2846131944D2A8E34B810C8AC28814D4F113746222A105FF854123F29228C796B605FF0562CBEF21760B98B4E99E1BF02689DBDCAED577CBA46437102E44F98B35202D9CB7E4C2BCAE981A422A3575D3DB6AFCD30432388B073DF118CB73354231B610A440927727AA3D848924C56694E1AC34DDB70E326868A36562F9D8F954BE661B0E2C361566D012EA933A92E13A8F9A7034BEC5F7B6893E391E09D92A9FE391EC400B401E867464067B4BD5A36495DF8D03681E62E4C3EF52DE0F003881FFB3A2AD938ACB8A5B857DBA5020D19B31979ACA5B543EFDCAD3868796167C711A5C8C8015A9D8B02E8BC2899738F926BCB80EDF1DD788EE3FE44DED6E532D5EA81D9B3809018307155A1EA61C2A1938316CE34113B52667919A90FD2383CA81323B002B8CC4A59204D5D59C20311C6DD554837FE3216FFD4AFC0F6969F528016193B270B1642396B6489A87312DB968CBF9559A847C04423C064B38D208CD10E4284698234A16C92D799AF8854799740CA9F0FF4F5A1BFD28F7A2BC364BD8D6ABB8924F590D945191D71D6FDE6AE3919C1360D91854DD8491B6E1AA060A79837D887A5831EE6155DAC5DB54C3A1609D2769AA86C5A3C6095FA28E7B5CF781EDA00B4016819D0B9FD4387FCCD531F6D564FB049ABC0D413987AF4B398FAC9575068EF43D969C2CA9AD225472546FE70B038269CA33499A8ADA0246396F2995A16E740A700BAD39BA8B2546647B274EE948614EDA197E2DAF0F34470F639BFB6AB06D00528C9E4D5B5E4C54BA53C513C6EA74BD04A64E2B133576822CA0B332745ECA4328959F014BF2AEE4C09C6DDD588D6BE1ECB5EFE26D8FEE829036875CFF2766E6E8B004496B86EE3709861E744887DB536F64F85D87B680A93B5967452369A2DA4490024216CAE08E82942CA8193561AC3B76D0C94CA58BB622516CDA75789A2CE12C792F7334E046432219CCA733E3A8E7906AC77B0059E5C59842C8984FA70DA531846885B6FBC124BE7F7C317BF704E109C0CBBBCF9340EFA39DFF939F04603D0672340AB7428DFA2C9F76C945875E9A416B3E4CCBD00DDDDBF496D30220F6F0356B21B47BE7D2FE2273E8B5278187ECAA57980D48EE1C2861D936F54C971C44671D9AD84459E443F447C6CB85CF61599215AE7196A2CBD66CE01580172FE2FD5C9964AEEA47642C9F7E9EE74973D2B73DB951928D3A5BC7D9C795CCE29F76A7873AA255FC8EB4944D335BC16163E5587A02201329BA55172A59ED26BD3FE34B5243EA480A894605C62ED33E2F06F59022BB530E1AE467BF59D18BDE9CDB00BCF17A0BB3E17B3DEF79E829E2A31B0E9DC1260E6B6083B6B199E3ADCC09387A7B0F5400D1341866662210862C47102DF76602531CA4E083763ABBE0D8F3FD3296B1886A8F83E36AC5E8DE14A1F5C5D4864744299EC596064076A8684BCB34C52ECFFE1E4A5C64510D082369398250933F50485A889426B0A0B060BB8FAF2F370CE9211194DA214E2BD3FA55DA6A700C00D409F4D009D679BB30074417173C7FD959073565E11B6D50092034269ECF9F2DFA134F5044A6953BC8B2C8F52B24896EA36B959ADBA5045279527BB6C48D10F1099576A83D51234910C0A0EB943E5E1616B92931C6326046D2696A25C6E13EFA3AC88A6330F89554606178968A35D291009DBAD8B8E4A12A85048C805FA7BF020722E293C8BD344282DE78EF0E74DB8EC80A42F88EB08172ABA6BC9F6734A859F19C31121AE8730027CB720120525AB535C3A8FD3ED76E4125CCB083B7C28BD46B43F751AC1E3694619AADE0AD4466FC5CADB7E037661B52A78CDA640385A7DB4F35A619575BBBECAF43B9D7B323494B6869C2DB96766CA4DFDBDA7057CF7F1713C79A889B15A1B8D30469AD2342B112AA1E83AA03EA7E23898D75F44190468FA8BB8C81C6E86E0238829D9B3B164E12294FC827480B2FD5F326864886442223833E32620D3A384F73895EF24890594E398C756935A9C2448E2146E1CC36B47B0E2492C1C7271E3951760D5E261B00CCB38AAF96146DC7ACC938E7BFCCF95171A803EBB00BA5B64EB66D005CF46F15800ADD78404383E10AE54E12358DCE1A4FA040EFFF0D3686CFF3AFA92FD285B7564ED260A968B88B69A8A5C150E56D1155DB749D5A6AD321C45517099AB335136AB10D11D1B51C425B10B97D926FD38D294FBAB20B63D447601895D826517D1B6FA515C721EE68F6E0046CF010AFD5ADE464AC556D4B6EA37D492380550CA984873C862BF17C26A4E00879E427C703BEA479E4250DB0F2B9A829DB4507448D91078D5E7C97F5C09C844C2B8B8B02C1F49C49F11FE94EE595D5F978051748D9EAAF466B779029EB2A59DC5309BAB8F145567192617DF80735E7317ECE2063D39F48CCFE359B78BA42D8623BB20705E52AB0E9963F4B9A45984C4F10494A752E0915DE3F8D6A34FE14800349C7E4C063642A70CC4212A9E8D65237D5836AF8CE1A28BB85187D56E226DD711D426618581806F68B9A84529A6DA3156AF3F17FD43F3D546E8A2BA21C02B8E5AC056AB3B7A417926400B48E7809D52E191228E62B9AD5990C28AAB72AF8A59153F75C946BCFCA5170BDDC1A9685A838C0ABD1E13479BD9E60A1ACF721E06A0CF4680EE367330933C1E80561A524AA10834AA31C44DEB40633B6A9B3F81E6639F45393E82349A82E593B2C8E046365CCB17F73966C32A7B541924E14D3D9E0AA0723F0BF51A252DA32DA92C67655DCCADAD288D56196C041B4D7B0075771E9AFE62F8F33662F1BA6B503CE722B5F38945837C1E830A097EEB4D60B52A443E2CAF14754823A34A00002000494441540C76045DB57529FFE4D3CE825404246D60F7E3683DFD100EEFF83ECAC95EB8D17EB8D9146C4765D4F9C4213ECF510436A977B6C6B2B9A1AD526A2B65C6F40E0CCDA8AB8C9EBCABDE252B11D0E72AC3C6A4B30463235763FD9DBF05A74080D6EDF69D21AA41771689A192EA89E3B6520A2BD18B845634197A2F45D5956FE14806EC6CA4F8F613753CFCF42134781BFCA2B4DFAB55428A918285754B4670CEC221787184A455C7E491436855A710050DB45B0D356946C0543B443306D69C7B0106E72D948C3A0C22386A69A4B2654EC8D4C6F70034A98B2E38278ACA2020CB9F9ADAD07F32A34E32F51D350305C8ED715CBE7E295E77C3A5A870A2A4ECAFB76C9163F3F14C6E7311A70D409F4D00DD49173407CD657AA600BA786C8A83851DF12BCE698170175ADB3E8FE6773E0ABFB10D1EDAB09D0C4116C0B11C78340A4AF5AED6C277D0E08820C5DC93DB4929EF0C5520E4B9A8A61372D6F29564F044CD4063530FA9D38FD0EE47569E8F963708ABB200834B37A0B2FC2260643DE02E533B9908F2901C2740EB4D67F543D9159E742996CE1DCE5DD7743E2590A63BD059C8445C079209C01E477AE0511C78F04B40382600EE8475B8CD03F0E21A3C87A01E8B4A416D6CCBFF245DEC00346D3855469D173FBBCA6D9EAA283FA4614F193139998D296B090EF45F8AF35FFFFB708AE709859343B2BA86670768A5D456F176D8CCC3AC35C99079B6AC46486554C304E35182CD3B436C7EFA30F63412A45E057EC67B91C2B5228CF417B06CE11046478AF0E3103EB3E4760B41A38EEAC4189AF52AC23840AD514323F4106605645E01A3E7ACC5BC45CB443647EA4AC4889AC650197417A0E59E3FE39BC0AC326702740ED2FC37C159BEB30861DA869D7A089B21BCA481D10117AFB97C032E5CBB021E8DACF2ACA043C36BAA6B36BA682E8272EF3919803600ADD15267974CB90291D3B59FFA1282FBFE37ECEA76B8686AEF62554194CC883CADF836E71A61F2BB0A48C8C14AC55EA456DD6786FF909FB17828E91D0B74ECB02B2028AF80B3F61518D9F40A60E1B9CA6A543220368114D59F9221E9274DD2C219BB8F74B2A71E43E2691967AEF1EED2BB9DB768EA0369A00A98B2CF21B3EB16DABB7F84E0C9FF80BDFF21F8B53D645211725A21FF2E9ECED2EBA63364D5F2AD56156A45D26956EFA17A72450A97E40AA017637FF1029CFFC60FC0295D304B067D0C349109422942B4D845365C08E1A09602DBAA6DDCBF7D1C8F1C6AA299FA88A8C3F61CD85180E515072B160C6264A0889297210DDB2830D4DC80B7D94250AFA3363181A98931C99C5B610B8D76805AE423B68BD8B8E922CC5FBC14F4BE166E5BA4774A8D436A430099F48BCEA067036882F36C00ADC05A017442450752B49A811868A59477B626704EC5C2CFDDF6726C58BD54267DAE02A857975DE33911CA84914F71731D957BCECF00F4D906D039B1A039E82C83EF39C7C8A03567AB3A4C806C12E9C1EFE3F057FF0EE5F187E1A753C8AC1009795B52C65A4541FD2A3341A5A72050254A4A27692C018BBFD7EE15F26395B14A6EA5413B421991BF10F6C24D70462F4765D3ADB02B2B905A7D52F093CF147C533C724F2239FB8D13B4ED95A1A8E3C997B2CCD3AA909CA3CD815A0149D7F321DFCD9B801701E924D0DA0AECDD8CFACE1F626AEBF750B227514CAAA2D3251DA18A83AA4583D23AD51A9E332DF9FD501398E2E155D62DAF4F5DD4ED8538E06FC4B96FFC6338A58B157573025F39F74F7A85B234B66B532DD2B06C6CDE5DC5D7B68C61673343D5ED83EBBB8883162A568CD1A10AD62F1E41BFC78922824B6960C2E27086248AD0AA4DA13E3181E6D4041AF51AEAF5061A61846A33402D2D6074CDB958BB7E232CD783E5F88822EECE4E0E878D248ABB57C53EAD8CD759B5CAA009BEDDE2A00269FDFABC6098243A838E90B291254911052D51E1844980A455433998C26DD75C865BAFBD14FD255FC68D32FC6241560D49F1EA3A8178CE89971A803E1B013A17A6292999E73B4A6677D4259ECABA74AF1890EDC2C47F7C00D1530FA01237E05A6DA47680CC2650A5F0AD02A2C446E47AA206201FED2080C36ABE5AB08376A5F9034130A2E42C11FA84CD19E4AD59FCF3D17016C15B7515E65F72079C91F3017708197CB123555CB820AB6A191657B9E969D0331EB89C83EEBC5715C9146EE77B70E99CB9E3C2A6E470041225B753D7A03C3734B79D514247C73E1AECEFC6E1CDFF84D2D35F8535FE14DC24E07A4056068970F8F4B026E8F233D849A84861DE0B7545AA755C7546F23FF2D60E1AF6021C70CEC1B96F783F9CC19702C2B2F65CEF3196E83C4E7E07782DCC1E9B29B0752AC2971F3D80C7C752A4853E0429150F6D94AC00A38365AC9C3F8CBE4251541AECE7938E50097E82286C636AEC201A136308EA554C4D55516F05A80529269A31FA17ADC0F997BC14954A9FD2348B5C8E8A8C043629A03896C613293E8B2CD312EF0D9541F7F2CD8AD2C8E574426B90EED03F4B34C52100CD5A61D814FD753B69234B0264B5299CBB74086FFBF95761F18221E934940C9AA7D303D07302744FE4240C409FAD00AD818D70E711A0D98ADCBD56B1CEEC6CEA9AF3A401AC7412E18EFF8B235FFE13F487FB4452A5409080422693E53FF28E0E6287452C668B7CA099E912E454E62CFF135055F447CA6FC716BE32B246E02DBA00FEC6EB101796C19DB70EA5E1756AD3554AF0C85713CC25FB16C19C9C3A416F6606DD29D0E7B9EA333C26150FDEC539DDC23C13F934F0CBB17596DD2D32EA394218951A90EC44F6C4A7D1FAFE8781E67E20A3319227C4322565A2E6934A200F42AA470134818F71A775A9D20BB3034E4D06DC68B769CDC7416B146B7FEEF7E12CB84E01742F85D30BD07A37734D7C0B00B2155F3AF16C20CC80C7F7D7F0E3BD63D8DDF6B0AF69A145AF9038440131CE5D310FFD568281B20FDFE504C68953A9CCA95156F4448276B38EC3FB77A139358E767D0A13D5266A4186F11630BA6E134657AF41B16F405903C8B5D168C9124A423A0285DE5059324F59D2006935CD74A63C2363268DA10B854269F480B4E2A129CBCB10B75AB0921461DC449AB491341B986735F09F6FBF11975F7E894837D93823345ADE88752A77793811107EB6D71A803E3B015A0192CA41A55145CBEC3AC0DC0348F25A51A05581C947B0EB0B7F8D81F1FB51880E4AE3093BDEF8D45B16F93FF2AA4AA5C15C4BD91FE5D92153521A067109CFA2A15249F8D2EE0C04968FC05B8823F152ACFB85DF86337011526F3E6015245B55196B3E19680E99B481A6283A4BD45ECFDFFCF60978E539F7CC32FE33BDEF95A97C1E040DDFD391BCBB1E569540E5078D23009EC4DE8FFD1E066B0FC1B2EAB26088536E28E0A0142B37B5406F3860D19655B26416E054F79C4C626902CFA1F704419A2B0E076D7B1E26EC6558F1EAF7C05E799BC445CD74EACA3A9351079C55D553E2ADFB6BF8BAB60D4C45093EF4E52DD81B17D02EF423755C64611B834E826503059CB77C21DCB0AD54376AFA53F7B2A75DDB4A63D4AB9338B467A70074D06AE2E0440D536D602C7471EB1DBF00BF5810DA41BD8D9FC3BFA8EC98F79ED749D0168066C76096211280D67AE71EA506B3E5344E10A7CC9C35E72C0D2ABA489824889248BCB8B33045166588C226D234441206F06BFBF1AB375F8E57DE76335CDF97E628A51E5269829A0CCFB02F03D0672F40AB6EC2E900AD1A3EF4409D66CA1B00D11E1CF9CA0781BDDF84DDDA858A9DC04B15F8D030472C428537D5AE7262AFA90C8F5834132C490BEAA85CEA13D0C50F9A805D42CD1A46A3B801A32F7B130A1BAF079C61002C002A7DB4CABA89B3DA6AA7F781CA112A3FF59EDB364DE970942C69263B30ED519D09CCD3F09AD7263D768A22899F061EF85B8C3FFC39149383706C0208F95A163D3D20A1743041E6725359075194C0725D55BC4BB802B1613905A17FD2842DCD196CC7459ADA6865FDA83A4BB0E2D677C15EFB3380555419B89E6A45712236AF54DBE8758D00B3DE2A8C506441A6906F6C6DE15B4F1C40AB3482982E84610BFD768473E60F63F95005054AD2282FA4424582AE2D54B5ADAB902F5184FAC4380EEDDE8976BD86B0D5C6DEC3E3186FC608BD0A7EFAE77F491CE8724C577B2CE67A6766D02CB4767966590DA519A2589931E57C732FE7CC5892CE20C04751D4A13CD8BDC89F87A902E8B81D216A3309005A418856146324ABE15DAFBB1ED75C7E210A2E4BCF6A25C0FA809853D105EF4C036903D0671F40E7579467D0B90E7A3A28E96C538A392D203A88F4F1CFA3FED04781EAE3706CEA7C2D58F44C703C36BA69B241596CAAC256BEC37286943A6059D61354F82044B028A7731CB49232EAD62264F33661F1D56F80B7F85AC01D51CB77DDF5451A40AC142481D6C637D3B2639D42CE02D06A22EA92186A4D3BFDBE3E2B40F7BEB42748EA3DCC042781740288C651BFEF13489FF82CBCF83090D1208AA0E8206386488EDC2EA95DBF858FB7C53C8A5ED0A43CC47D4DFEED0950B9E4D92DBAB931C60569C2A93B0BB0E1A6B7C239E716A138B85251CD268A1957B9A0267D64A71A4E9E5212130F8D5696E1EB5B6AF8CAE37B600D2E423DB150705354AC10ABE6F561E9701F8A968D30A4D6D9869B50E3A1E8240165A16D554349D26EA13E3E8EC37BF7A255ABA35E6FE150B58E23F5006B2EBC04EB2E7C896A001290566DDB3204845BA6B24565CF1D5D332762D213D4E1599970CC39EF9C73D2F4E150009D220A591454BC742EB38B62A5E208DA2DD9173208695F6A63A29D60A410E1BDBFFC4A5C7FFE529411CB8A456D08E0698BD2332C7B9621AD544779A351E70A32A0DE04EEBE672BEE7AD747E0BBDB71EF3DEFC01D775E01D7CD1FA433F07A4FE494675D10F5AE8A959C9556B64190D79F4EE400CF32378C57C9223E972F9D8DE686A1A2E2A01707B7975219980230BD8B33FF4CA7D078E823081FFA07A0B603252F84E3F0018AC4D48700449652A96C991977951AB9B7736A87B2C34A9A9554130A68A204046919557F23FAAFFE4F18DC740B602D901DABB943B670B31A5AA7D317DD94B6DBA5AB97CF72F24ADAD71BA0A32D5E3B973B23941D5E5D06FF51DE2DCF45002BD98FB11F7D16ADCD9F44A1F1344A560B192D57A56B92948E0FDB294BE193AA09CBF35457A3F83FDB886D1796E74BEC13FA43A30CB8BEB42F73024B6D0FC5BE6158A5F9683BF365D795CAE8C5BA094665D0FA7F9AE650574F8584A86444AD013CBCBB8A2F3E3E8629141038BE38CD153C0BC5B885754B87B1B0BFA4A805E9EC14676ED1E3080D91D346BAC3254B42A4ED266A478E60FFEE3D68B72354EB219EDA7F04CBCFBD009B2EBD024DAEC6C4C14FEF4B49AA23CFA0A53098B76A2B9095FA21576491AA49E4ADDC3920138C05A035703F13A069984413A5047148FB810851E063F7C11AC6620783C30578D1417CEA83EFC4C6E1B2325A620584CE7934A5D2AACCE7F2549DB6F718803EBB32E88E9DA74E23BB8D2ADA0653C059EB8D844A20408F63EABE3F87F5E38FC2CBEAAA934C6B56B98335B39BDE729DC233B53D8692D531834E54771C8AAA38680588AC0A027F05DC95B761E0E2D7C159B001995396E53DBBC92C3E3179EE9B9F526FD54F3FFC0A43094A79C192D48A56041EE3C9E9426FCE91CC32EF4DB355ED514DF0CD94D805FB70E4E12F21DE751FFC644A356194FB90CA6E220EDC621F0AA5419198F10C3DCF47A15082459F0EC6A958068A25CD22B84061082811A4A919D64B0712D9761F326B0089DD0796F23845C7B95FB2EEC453264FC47F5B3270A2BE48D2017CF6811D7868B20014FB55A1350950B062C99C17F6F9F277593049BFBADA39C5938944C544F973B016C04E931069AB8EDAF8111CD8BB1FF5066D42338CB7135C7ACDCB511A1892F34B82B66ED8514D31FCA88E7C8EF23A91D8256A32D23C3EDBE3C97C8BBF86786C900E51CD29711C76336666D09D269548017A18C38A13448D3A9C38C1FEA727F1F48E4368142A98BF61350A032E7EFD960BF0F6575D8C924B550A0FEAABF547778398D386B7277C6003D0671740AB544BEF46222B24D5EA5D2AEAB661DD3C20B898D0E42602EA4FA37AFF5F207DE253F0ADB6E253E57962A349BE696CC7825D1E6555D4533B65C8A258B249B5DB09F3E7C876D128AC4069DD4D18DC7407EC914D922932B354BA664D3A6B9FD31C23158CEA057DAF9C596F162BEF620761A76AA6EFDFD152E52EF44CE7489E71DB67C9C7E5471910D581F61120AE2929225D9BFA48D1F8AA65CE21B5A1D522A2B7D57BFA0928A8AB513A5C9A2951A5A2DB91F96F899D9A33D938D2880B988A528C35DB6827199AED14CD204518293F0A16DE1861CF7385E3F64B3E0A250F61023CB4E3300E444524992D8A0CDA492D1C2861C97009252786CD061CDE3B1AF0F3BC09C6726CF2B3CAFA9359BF147DE3A803D0FBF7ED43B51560B29DA27FC128D69E77115AA12A6E7255A574CE3C355578558E74A44978CE0AA409BE02DE492AFE250468FE4EB86566D73A6B16E586FE591C11AC75076144808E8030048236EC20C1CEC77660FF9683085A365A8502BC65CBD07FEE7AACECABE2BD6FBC1637BE74BDA23A124A4C2DB5F9CB99F66500FAEC0168055EEA7A483708E865094AAE8332551C1A08C4A35952A90859631BC2C7FF1DEDC73F0DA7FA186C02760278D4EF8A617BDEE7415736C57F6636F945BE5FD9D3A8ED87B89C6499DE45EC528DB0080357BD1E036B6E00FAD72143BF02F05C0FACBDA13B528999D94D2F8791F3CEFAE2D406B427F2355B1570B6F7CFF23A390FAD48910C534F2E5257EB7A65E43C7167D73CFD511DEA40B1C5F2FF8A2822770A8C37534CB4DAA80711EA498A7AECA01924A8D69AA2178E98558A8195FA40B567201B8654E7A250277E41DA84EA5122523AB6D5FB59826543152CA89450B46378F20A55B49329D0223FAE762AE767F3F372476B72B7884269EF669170EFFE83E2B5B177AA81F35E72052A43F3C5B950E879D09150359AF0B3A416AACD8D848B26A5A2BD35E458046F66C259AC3868CAE6E87E473A4DC09BCDA58AEA88A216D294B406F9E850FCA1FDA889F54BE6E3A273D761F7D66DB01BC0C39B77E2735F7B04F5D2009CA5CBB0E2822558B6C4C2AFBE62136EB9781DE6F7F5AB0ED7CEB0510D4BBD1B11E73943FE32196A9DD55C8F6CE84486DDC978AD01E8B30BA0C5FC5DB630620795E26D4B8E8DB24F4D6DEE3247EE90D4460DD1539F47E35B7F0DA7B61DAED594FD03F990D167433268D987508D555738C7440A82C27D6645B55B88B8DF05E24F915965D4DD95682FB80EA3B7BF13F09621B32A5A8CA7B4D14ADE966BFB4EC6287EA13FA3DB60D23D522F27AECA770AA4BBEA3D29ECE41BC8682F0ADA8C52CB514D323CF2F4240ED4528CB56334094E044C87BBAA2670A5CF4439F41148D53E7C6A75C1B98CB50126ACAC7DB0F184F01BB148C7AC3809D1E700EB4617A090C6287277172A3F3A3BC1E4E2C8AED39E9058228FA4D733999D00563B446D620A7B0F1EC658B385A78E8CE3922BAF45B1320027B6B8390C6266C262D0AFC05781B0A235C4FB7A165F0DA5DA20208788F919CCA8D350289738A2993F2991086154571B13536C1204889B556C5C328C5F7CD50D58B962094A051B4E087CE4EECFE30FFEE8E3A8FB03A8FB452CBCFA62388BCA38DF3D8C77FCCC95B8E9CA8B95ED94A5AD037807C427862B31ED91A2315826D8DC5D56F8784EA5EA75A7E5CB00F4D904D0F9FE7D1C6DAA838D1D6B64372483CECD8264B95D43D6D82ACD16AD9F7C1AA56452DA63D9EDC77149DB4F617D05A0D520A601101F729A1DE5A6F41CE4E4406D69D6A096771093C5F3B1EC557F087FC145805311FF67793E7A77D2EADD20E0B48CFC1339683EA1CC94784CEF4C9CF60C73CDDFB3A22138D07BB99E59D8351963C7441D4F8DB5D0B298DB3A0266D2C96767F0D21443A59228401CD783EDBAB073933689A12ABEF1ACA8106947295A51865610A015B444EF3CBA60040B07FB80A80DBF67E76BDE4B7A72F7A4936A514035867422C6F0C96DC7944784A88E4FE1E0D838F64D4CE150AB8D8B2EBD0285F200EC28831BF3F88980B49C8F06E49C83EEFA3B4F373ECABB05993DC7B1A53B065B48289F8BB4835D96A0D99C9242A01BA670A3109B562FC39017E3966B2FC1A285F3C4A6B53995E27FFCC52771EF3D5F40E411A00B8816CFC7E22B2EC062F7206EBA703E7EF7D7EE00B545BC6C493BA4A354196D75A832ED3D20E45A673EA67494FF507D00A7E5CB00F4D903D04A55A0F8617A3BC8AED27602DFCF502EB89D5D991287C3731FC2035FC381CFFE15FADA4FA19C717B215A812AC99A98AC8BB1514E95E84D5EC9996AC92CB9569A2289153BABF3EE1026BD1518BDF537E08FDE8C2CEB974D3CE97B2C8C80168E086D92BB1DCF52B33B2D0FC2F11C7466834CCFB9CB5F357ECB6E21BAD53A4B954639722C1C69015B0E4C62C7911AAA998D96E3CB7E7C7C1B770529BB0EFA0B1ECA9EA3409500429588C08A52DEB02B93DA6B2A2F24AA424D10E01D84D4092701A27613F306FA256BA49786437F6DBD3BB9F885E48D1B72CD6A4563DB4A8A96C8E7F38D21AC304173AA8E436313D8B1EF00B272192BD7AE83EB152575F778FF09CE9241E7ADDBBD7FCE9E410BCF1C31DB66B66C29E546DA44CC7397AC5AF1D5ED7A9D2A7978ED187B1E7F042FBFF202BCEC92F310348EE086EBAF41A958C0D62D07F047BFF7213C70FF562476054D9A4E153D94369C8335E78DE092F386F1276F7A3516FAB21ED42DEC1DDEAE07A0BB9DAB6AF732D61694CE5A6C5F4D067D3C4FC8A97DCDAC8B9AE9EA81B925B3930D4C1540BB897AB069DEE31752940B6C7D55084380B4DA8F60F7BFBC0B95C61614E31A9C980231D5A22CCB682968758B7FB214948612E55227593697ED2C38D1541F7DC8862F40FFCDEF8333781EE0960047AB18F24C45A79409682EC4E66255BC3963BE34404FE329F5C9772E837E1E2CBE12F71C1F6DCBC2444860AE61EBA129342D0F895744100528780EFA7D0F7DBE8F025B93A9AC106C4A618BE1BEE2A4724648CAB6DC468B9CB880B592DAF15894428ADE388B90913760C75E4880E104C17140A95F0199E3E94941CD2EB2ED9760345F47B0D5F04DDA8A001A44D87FE808B6ECD881A56BD660C1926570D8E21FC4B099ED5A2962ADD450D4461794C55EF428BECEA26F26F71CDAC249C76913611AA09D06427544CD0885D04663DF182677ED445C3B82B0B917FFF503BF8D438776E20DBFF073A29176EC0ABE73DF63F8EF7FFA8FD8B2652F2CA784AA6361C2C9E06F588275172DC7CF5EB8106FBBFD3A2CE8E32EEA927EF42E203A456E65FC6AC1CDD92B69D9572F7D8683C0A91AB426833EFB326866CE8EA829C829A6F07D0DD04C87F9EDC5485BDFC7BE0FBF09FDC12ED9928AF6A19218CB8054995ABE43887E947526A7DABC99D3796CC98585C02EA26A2DC4F0756F4665DD1B80E212D5F0407F0EF16DEE493D4999080B4B3E904BC73309A0BB56A5D31E5A591E2860556B053664D8A85BC0D35311B6EC9DC4FE5A1B6DAF84586FF755B433CC2BFBE877394D29891A657B290B8F2E77AA2167ACC121D7B4EB1D5B04A8C55590801E2365F306DBA0E31841A45CECC23082ED789219F3339D4219499E49EBC2AE80BCAE0970F295C4512668D62752B854EAA4C0814347B06DE74E8CAE5D834A7FBFF0DC0EF57F94C1C986005DD3A3DC7CBFD7885F796A68F0CE9B4E12A5D0C8424B541D511A20CA144053BFE78636FC6A8AEACE83985FF4307E6007C626B7E38FDEFF5BD8BB77077EF6CE3BA4D186D778F8401B7FFA817FC4E73FFB2D64998FD04D11F816AAC37D187EC93ADCB061006FBBFD6A5C7BEE72F8E269A01DEE7245BD241AA24D924853622ADA6EBD7ACC37403855983CED3806A0CF2E80E6C3AB96C3EC40E358EC72D0926D092151473A793F0EFEC3DB30924D88B97BEEABA6D67CF9EB7495ABA34850FCA5926231C38A85BE68B90338E2ADC3C21BDF8E8155B721B5D9C2AD80578A6439A797D3007AE0778AE4A765E43F8783EAD27ECE6C4CCFAA74042563A50733B0BB95E0FEAD53A8C754C3B848D9FA1D72835560A4EC639054865883B22248DEC94328F74217080588D564294E783A951630156F8B54AC3D09CC54531033B9BB0925796459FAFA06E07A05F9DC8CEDE47A0305353E142F259A67B9E5DACF8319BAB603154A8A389C246885119C62516E2BE56FA22CA61C0EA94C26BDBB9FCC34E27F0640472A6366B7652A00CDA6A850BEA3B80DA79DC269A4187F722FCE5DB20A453BC18F7F7C3FAEBAEE025C75F525A8D5C7F08A1B6F52E148811FFF6817FEFC4FFF050F6DDE2619341020B2DB38581EC0E09A95D878D152BCE6AAB578D3CD17637EBF7208D48B4978F970CF27D6DCD13607E89E1D6A9EC38879FE6F31007DF600749E7109BCE6FECBD0323BDF577EC75903480FA0FAE047116DFE102AE1B898FC509A9B48C55A2B2D34179DB7EBF1B30567452AA7CC7E644B59AB84767905A255AFC4D065AF47716803D954690C2048C8C6DE3DBD31DDA2CCF31FBBA7FE13A6B7A0773C8BE4A274D1CE72508F80DD9375EC0B2D6C39D842C64E42E9647350F25C913D166CBAF3B11D996A189D7B931FA679BFC8DF72D11B3F5739054AB6CB0C34646307E903FA2167D231586BB560FB25D152731E2E17CBA8F4F549B62B3ECC1A70F29849238BEA1CD1FE272AF7CFF964C9D23B26482C67D802D422AC4B2278CC3AA348B6C8123BD91E0FE767283774D62CC04D2FE730449205A2D41015479C22A3C6396AC30A1A5850E883556D61FBC34F60A850E626849837AF84D7DCF10AA4590B2B572EC1A245A3C2617FE5CB9BF1CF9FF8261E7D7837EA0DD5D9E9D01E172D8C9587E02F5D8C9597ADC3DA251EDE7CF3265C7DE16A547CBA74A87949B2658E539D3C8867B988C3F3E6283606E54FD6A91F71A6D5FB59627EA671D0525692CD518198050EFD50975C172502B46C1D380E547F80EDFFFCC7188E9F403969C04DC85126489409B0FC4FED79D2E5DEA4D2AFB373D7510529383EEAD902F8AB6EC0E0356F81357CA1DE2B50F37C8CAD4D80514B47393339846671CF14E39A7C20081D905702733A48659CD2426D39086C1B0F3F3D89270F37D0727D8474914BE8A16DA3BF584291BA65015F351976563CB9C5A9CED8D46B547B2527D6380AA4B1288D22B41B0DC9B8C338453B05261B019A7182F94B4651191C51923C9DE6F78E6115FAFC2E760EDF5D34C954A03864D597AD9A4F04B805E479AD6A876F8BF73FE516546AD7F58EA786DE9D5BBAFEC8331394C931476C6851AF0B09D07C6F1A4BB6CFDFD95108B75DC78A81322EDDB01E56A381FA54039EE3C0F132944A36962F5F84654B17C0E3CAA3D0875A23C187FEF64BF8D847BF8036C199F64872ED216C2B46CD2B201C1AC4824B3662D1C2025EBABC84BB7EE9155835D227D729B24869B8623D455BC3C88A25A7E4993237530000200049444154F43D1215D269A2E24C067D3665D06A171079A0682E4F4222030AAE2BBB7A0B2CA60791FDF8EFB1F7BEBF47C51943210905A0A99996DD40A462A40056ED23D83522526A2DC5D4D10F3AF007D1286EC2D025BF84FEF36E039CF95DB30F1614735FE4DC92340725D94B30E73B4E435672A28754167B9A4B9F0ED0EAE7CAEB985AE4C9D4C2577FB41B55B71F1157190E8BA1BC071ECA85A2F0C61431F3E7CA545FF30D799626332137A8D59D792CFC4521C2B0AD8A69712C6E706D1A0EB9054C3502545B21E62F5E8281E111508F27B452BECD586792D52E73F90EE5BAEF991BFE324354BBBF884D9280AA5A6D298F0D6538946B9D55E720270BBAD591569909D0D38CF773ABD028EA0168AA35F29DBA23017BA7D544296AE2A6CB3761EDD285F0B21853B586BCCE2F7998373288C1BEB238067A6E09855241C6DAF77FB01B1F78FF87B163EB0E1965E4F169F12A99BDEBA15DF0E06F18C5399B9663915FC7FFFB8ED7E2BC85C37AFF4C4E484C5C6C29784B0221064B5C2572F0E693E46934F130007DF600B44AB7F46C6F47C22F4A5799A7005A9EB4DA6338F2B9F7C0197F00AED382CD4AB8B41E8BC259795E085870594EC659779E71E92DAA020AB612B4DD3E348AA3E8BBE0F5289FF77AD8A565805D5400CDD360E6E52A7B259E91EA53D39BC58A7AE34451F234BE3E4F473557DB995B74A225006559D83FD9C6637B277020705073CAF02C0B05FA617B1E5CC78643B066D6461F12D591DF91B9F5520F32C1D2C2949F1BB4918601DAAD960027FD2F22CBC5C109EA9327B17AED460C0C8EA0582CCAD29C7B10E60B933CE79349562611658A24E6FE6A2B5FB523BB1C504DBC5D8056F23BA15FC40489C387D9B502662A3604A0A573B09B41F7AA38E8EDAC0C9062B10E55DB5EA532D9D0B45FDABFC30871AD8E42AB85013BC4C6D1415C7EF179E8EF2B8AC789E79764771D4AB399681C39D4C0673EF9653CBD7B37FA0687B1EDA903D8BEFD1032162CC30C49CC64A38858767DCF10DA29EA233ECEB96C1D962EF2F0FE5F7F2DAE5939049B9B4FD0C7DBF211CB76092C94EB6484CD579D2C7A86B3E2A91E8606A0CF32801638E4F052404AB99CEB3B2852071D57113EFE398C7FFB4F3098EE404A4B5056F4296CD67A22D98A490627CD46F919BA29050E1CA145954EB6E18DA03A7C21467FFA7761F55D0680C5196558CC0796598CF279E86D99A5324179789C515F1D8AA38716D03F63D868F33919028FEC3884DDD51051A11F2DDB452175D0EF7AF03D82A6DA528CADEE92718BC659EF48AE0BB3EA35AA68479E396E37908501E25653B4C194C8B5321BDBF71FC6D3FB0EE1252FBD124B162FA1A9A9F87350BDC10EC3EEEA44F1CA1D1B39CDBC2A9A4381B36A3852002DDECD427190C6D0E02CB446F75BA4746CCBEE48EBE8BD311DA0737B500174EDAB415A436480E2F31C22A1295214A0185B705B212A698A73572FC6FE5D8FE2FAEBAFC2C0403F2CF4617CBC219AF2458BE661C9D2F9F8C1F7B6E1777EEB8398986A28B329BB8D2BAE78097EE6B6DBF0E8C34FE2739FF91A9A918B90E3374B105A31EA15078BCF1FC5EA8B96E1976FBA1C6FBC6ABDD400B80B3D25A24AB9A10BA632867DB180E52A47FE79FA080E6337FA6C4071A671D0BD0FA65AE272091DC165618A2BC2780F0E7DE97FA2BCF7F3709A3BC44A423228D0BF41EDBD47599E6A2DE386A504E8509A51D84AE1A66C8049458B7B241D4175F13558FFBAF703CE6AB5C12997BE3633F1E99D8382F73A5B147E2F0791D344EB9DF0E43093C8ED49FF39E5B42DE0B1DDE37874CF14B2CA10023670D80EBCC4C248B9025B803712458602BF148EEB2B30D5E9AE2A02129C15B7DBAAB1981B89EF7126BB8C00CD2845EC95F09D871EC1E557FD14162E5D8C3826F34AACD1DA688BBB892B4811C15CBE52D19207D1EBE85953005A126595D52BE0569239D9895B7B80288F0D4B4B0109B2F4D2C8773E514D2A1DEB50D901A5EB52C7A2207F1F6AE3237E36C1DA8ADBB0A23646DC0A2EDB70212AB0519DD88B55AB87D0D75F116EF8FBDFD982BFFF3F1F439606F88D77BC09D75EFF527CE54B3FC4FFFCAB4F22CC58B40CE1D887F1BA3B5F8EF7BDE71DD8F293FDF8DDF77D107B0F4C21CE485DB4D08A5B98CA6C0CAE5F81B5D76EC2D5E7ADC0DB7FE64ACC1FCC131935DC45B1AF37449082381F03E93CEC6DFD3EE191F3FCDF6032E8B32983561C9A549DB9AB34B5CC7620CE67253F8235F15D1CF8FC075118FB11FC780CE5A28738619187D56C1218EC12A4B65901B4EC226287A2DD4D321F5ECADD08A5CD0C07B22548D6BF162B6F791B5267991C4F71D41CE5B2FB1E9C8EAB5B47D0AB82DDD1A93DFFF17BAA3E21673754E154CD30FC23B26DECAFC77870C7114C240E22BF282E73542570AFBFB2CF2E345568A34115C3435E575EA395144A67CBB459F1CD59D446AB3A21F7A5194692E5B5E20C416A61CFFEC358B3FE5C2C5DB118F5462AE6EC0A709950B24D59D311DAD65F58541D6F55A4E544A0C158868BDAE544680F39CFEE24221BBDF267DA46947FE6EE742CF0C5047202B0B60CA57DA8F2E3605193C6FBF9765789066805FE04681604FDB08D25434BD0E754F083FB1E40D09CC0B9E72FC1CD37BF129E5BC67FFDA3FF0F5BB7EC816DB770C185AB70E9E5EB91A4057CE52B9B3136D91693A6C1F2145E7FE7CBF173AFBB1DAD9683BFFCE0C7F0DDFB370B85E2F50558B0743EFCBED5F8EEB6BD587AEDE558B27804CB06CA28F57B1818AE60F5B2A558BEB00F4BFB520C7840C1027CDBC6BC725128AADC0EEB19B9C4A94A2E0C409F3D00AD17B4FA82F8D84B93313C9F00DD44F4E0DFA2F9D04761B7F7A0C81D50586892244EB7BE8A89BF6A6FA5E05F38632B446A2B8B4C522102BADC56A9782EFAAFF94D0C9C4F13FE41CD7D2B72451E745BEDBF67E5AD58EA57672438E72344605937F248469901A165E1D15D47F0C8FE36B2BE61DAFB8BA11437DB2D95184365E529A1A549BEB62555323A95408BA715B5CC6188A8DD4212B61036AB08C8DD5A2EAAA9879D8726B06BDF215C76D9653867E50A05BAB6E69045BEA3A41632CD6AB14C2E25EB7853698056748656690885C1B72A9960BE038A6A38C98D8F14C5A16472DAA18E4E74A4393A56A1CA8D2E4A08F85466D0FC48293958B053CA8D14569421E57655E30731E858D8B4FE023CF4FD8711B6623CF0BD6FE2F6D7DE88A9A909FCE63BEFC23BDFF9E7D8FAE441B85E804B5EB20A6FFCC59BB178F122F87E1FEEF9F03F61D5EA35D8B86610AB4787D0DF57466615315507BEF98D6F637C6C0C3FFBFA576374D5423CB9AD8EFFF267FF84C71B0DACDEB851F682CCDC1811DA4A66C76BA08D294294CB16968E94F0CA9FBA021B968F60F1401183250F059BF755797173159877D9AA86ABAE6A661A9A74E8BDE34C236652693240CC8E2A478DDE994671A8EC4E379D385A819166F07C0725BF8AFAD7FE18F6D67F461A1E91FDD95C72C1521C226E2A334C470A79FC0C820B75A5AA6D5830809EC1D2EDE6617CE82A2CBFE32F81BE35DA4CA6275ACFA0048E7380CEB997E9D4534BEBD4EEDC6A09A0A467161A4986C7F6D4B17D2C42E49741CB28169C2A2EE0B834AC52C150853AD501987FE5DB5831A36531306E3510B7EB88C3400A69641628A3DB399560CBEEC358B5762D2E3E7F03D885C813A00995BA6F79FFA29E03258B56FEDCF98A45CE387712CCB3658DDCC215F7FC4C191FE5FE1AB911128B85AA3828AE736977F76DD97B3066E18F593EF7FFA3BE39076882768688CD29627C64A175B086ED3FFE21E6557CDC76F32D78FCD12D48121BBB9EDE868D1B566068B082B7BDF5E770ED8DEF44940EC0B203CC1B4AF1ABAFBF1E575E71BEEC37687B152920169C108EC5EDBB94D7387C07E54A49CE9F5D94AD26F0997FFB01FEEA6F3E8389D44269703E2CB788C469A150CCE0152BF08A7D702A7DB0FB4A887DAE744214AD08EB978E60D3AAF9B876D3326C5AB50815CF8193A424049171C721A1006D691F971DE7734096C953E7479D31738CC1DDEBF3D25B4037007D3665D0325CE4614BC5715FB5EB12A00BCE3826BFF85FE06DFF17E92424D8DAA44174F59E52A3AE5B31470B1B90992910C095FF1935B08953441303289EFFF3E8BBFE7D80B3A0EB0A36E70076FA094D1BF72772AEF91BD96527C0CCDD63B8751570A016E1919D554C242E22C797860E5A085508228CA9AE942AB9620EA53D5527D11AC7885A0D84F52AD280A641B1C8CB1AE49CDD129EDC378EC42DE3E24B2E46A55492FDD469C8AF0A8EAAD0C72EC11C8C73F5456722D0E0DB59C468F095A9262F06CE00E5FCE7AA65BBEBAF212A0E7A38E73CB3502009B258991C45CCC6B91515FF4DAA83323B6E36C06C9A7ECE69113FFCC68F31B6E7495C7ADE6AFCF4CDD7224B5AD8BA6D1F6CC746A1E0E1A76FBB1A412BC6DBDFF9D7A836D9E0C30D7BC770DB8D9BF02B6F7835FA0A162CB72220ED58DC1D9DEB0647F4D15E516D6EECB9B469F5B1775F15FFEDBFFF23BEFCB50791794544A98728A52F490C2B6D21CD5C387E1976B10267A80C542CF1BB9EB770093C2B40C16D63ED8A215C73F979B870ED4AAC5954C210179132017025A2B2E78E765A5BCE3E27897F8EF106A08FEFE93CF332680234E98854009AD90E3963DF735070C730F185DF86B7E333B0E972AE377D557B016A8F0971C3A3B2C3829D70776E3EF8BADD5878CB1889378C09ACC0E86B7E0B18BD19B007CF0C809E6674946BBBF538E8484D9E8D58E453A32821E1581D1FD538C523BB26B063AC059407C5369444BC27895C77E9AB3AF67416AD7D3444734CD0D63AE776BD8AA05113D5068F520B63B4ED3276EC1B033C0F175E74310606063B1D70D4EDB21351DD3B4E09CCA6959E3907D7DE512E3C759E316B80CE5F9767CBBD59F3F40C5AA93A4485412A464BE4C4609F3A68F2D01133EA48B2644E3874A86BB3159DB2CC3046D26AA2E25B38BCB786EF7DEB7138D1112C1D7670CBF59763C1481F2C7F1013B526EACD00FD25073B9EAC8A0EDA2F141036A7306FD8C55557ADC7A6F5AB51F65CD45B317EF4E3C7D06C37B17AF56A61E36AB52A6C2BC3F0F020AEB8FC52942A05D45B2DDCFFDD27F07FBFFC200E1F1A43FFC07C1C1AAB61F3E61F60CD9A9578C9A697E0BE6FDD8FFDFB8F60C5BA65B8FAA697A191F6E33FBEB2196E2905DC08C5E17EAC5CB70A2B4717627420C1D5E7AEC2CB2E588791324DC514AF9F6FF849F330B54C5203AE6711330D74F442ECD8406432E8B32D83E676466C6250CD06E4D88A2C7E784730F185DF85FFD4BF035643C0C161612F6F649036431609C9C5014E07A0D50B9481528AA6BD10ED91EBB1E48EF7018555805DE9D18C1E7BBC9DB6577456FBB9D6B5E74C3ADCB8D670CF729202B25CCAEB6A61E4B838D00AF08D1FEF41C32EC2EB2378B26097A050F00528A97966A62B6DD37965544F8802ACA40BA21071BB8576A386B0D910E3A3D072504D6CECAB26F8F1933B71F1A68DB8EC928B44E74C028ADA637A48B802D08ACB8E95D0EEE8009DAB346664CC7C6F4E69CC343AEABAD1758B7DCF04E84C9424343C123F0DBAD131BB8E62B45302768842BB8D5212E0D20BD6E2C0AE297CF6D3F7A159DD893B5E7D2D6E7FCDAB70E8480D9B9FD8832F7EF57E54EB6D4C1E38843ECFC7EFBCF7ADA81413D8718072C945FF6009B65340C1EDC787EEFD5BB86E86D115CB70E9A597C2F7CB8291D5892AFEE99F3E85952BCEC15BDFFE4654FAB859B28BC9B12A5AF506CAE522C62742FCA75FFB7FB07EFD3ABCE9D7DE844FFEF3A7F1D0833FC26DAFBE192FBFF91A8C4D16F06B6FF95D387D09FC7E1F838B57A19A661858B400F3168CA0BFAF80AB372DC66BAE3D0F17AD1A81CF498878CC159668E659AF513EE98A0E9B5E1DCA5732F9307B56A73C03D0671740B330C74A3B2B4FE499C96F96BC18BEB50F135FFC43F84FFF0760B594CA42E475AACC2FCA0F36B911A02DC04D289B53A6FFD4C692DEE3501BCF9662E4D277A074C5EB017748B5766BEF82D306BEC77DE0A3901CD378E1EE8775146A9A43965D68E487B6D8886E1B6FE1DB8FEE823BB40076412CE19125114AC5A24C92F4D4500F5F8FD1914C67D2F32666F4D43847AD26DACD3A4216089304F5CCC36456C4777EB44538D35BAEBB1A03655F6829B14EB2556BB24B599EC8E6C8477372E81299B9B2A397C6C80B93BD19F36C7FCF9B4D728016D739F2E4B9844E8A7F7A9357D9C28A5B55916B8E1066B40B65D12D4198B590464D0C044D5CB062092EDDB40625670087F605A8D776E3C24DABB074C9285207B8F75FBF8BBFFA9B4FA1560F51B633F8691B7FF167EFC15039442123CFAC1C491C7F1849D687F7FFD17B71E7EB6EC305175E8C62A90F43C3231277C74AF1977FF17778F8478FE3177EF15578E5ADD7A2E81230538C1D1EC3C8F002140A05BCF92DEFC0C8FCF9B8F3677F1E070E1CC6E4F804962D5D8482EF20890771D75D7F0CAB18E0A657BD1296BF089FF8B72FE17010C25FB41CA3E76E42C59FC08A91046F7AF59578C5651B848376C45D8AFDA4D4602BCA90D24AB5078E1A64BD233007EAE9D9F48CCAA201E8B30BA089A8F462E09E6F6C16A1A2A0E4B5E135B660F2AB7F066FDFD7003B906C4C6DFCAAF462E2E121197424838876A5D2AB2DCF3C7751E102DFC184BB0EA3AFFE1FB0175E06F8DAEFF98C02E8A3D018DD7A9ACE7754E6ABE055819F453132FFF42CD4B20C0F6C9BC496FD47D0B760A972A393892E96CE4D2A1C64DFC7AE51B47C962E194A0391F0CD04E6561D41AB2916A16CFA9842098F1F6A60CBB6A771FD0DD7E1A20DAB652544F185D24E6B7DAE4C9DAA0354FCBB854951F2BD1CA095F14FB7E09703F6CCAC79F6C260CE352BB7BADC0489BA6C6946917D04B5EE59360BE09E8804E708161B5362EEBC5DC3F9F38671F585E762DE601145A78091CA42D9FBB254A087B58766ECE24FFFE65FF0897FFD3252AB84248C5070800BCF5B8957DF7A0DD68F5650E0A6B73637C91DC1B7BFFB30162D1AC4828583F08A4BF0C4137BF0F0C33FC14B2E5A875B6EBC0403FD1EBEF81F0FE2231FFF3FF8833F7C2F2E38772D82A0853D7BF7498173DF9EBD989C9CC4E2C54B61BB74FC2BC1B253B49A0D38DCA51D1E0E1E3884206A60E1E265B8EFFEADF8D8C73F87894688566110C3EBCFC3F0390BE0F4C558BBC8C76FBFE5766C9CE7C18FB8F78A923E52F7ED5362A93B71F37697DE49BF9341E7ABD80E84F716DC8D8AE3A8087D2672D0F411705D471E1E95414728B975D887BE8FDA7D7F0DFFC8F790A1ADA47522834B757776EE66A6DA8155E38A78D24982CC3D0E43A782E6E06558FCDAFF05BBBC56F91F77ECEA8E3B8D9D9B2F9C76B37370560F47A8377AE56A43ED0398E1502BC1834FEC43031E8AFDC37A13DD141E63CEC614664E123F3644E49BDC6988A6543C4D10D42610376B924107418080BEC8F4F3C84AF8D4D77F809FBDF3769CB362B102E798F7C112ADB3341BE61DDA5A7B4E3E5A80587BB1F466D03940CFC639CF546B4CB70A2510F75A892A937D72D0CA894EA93A12EE88426A2649D166E8025A86B6E044352CEAF771C385E763CDB225D2E054F45CF4154BF01DFA8D58F0FD0ABC9203D2F89FF8CC7DF8EEF71FC3F2E5E7E03BDFFD219E7C622BECB48DCBCE1BC12FBFE1A7313ABA04D57A84BFFDD0C7F1E637FF8A24145FFECA63F8D467BE8E306211F230D6AC28E00B9FFF30AA93167EE7F7FF00175DBC016FF9F55F9626AA8347C630395E836D15A49E323131811FFEE027F8E1E687B062C502DC74D32BF1F4B6BDD8B3E7295C7DCDE5628F90A60EB66F1BC3BF7EFA8B989C6860E9C6CBF0BD27F761EFD80138831EE6AD5F8645F32BB870C542BCE5F6EBF0B2FF9FBDF780AFA33CB3FFBF33739BAE7AB72C59B65CE4DE6D6C535CB031361803A68412B221A411926C7A42FAEE26D964D32B210909A186DE4B68066C0CD806F76ED9729364F5ABDBEFCC9DF97F9E77E64A328124B0BFFFEEC2C7978FB02D5DDD3277E6BCCF7B9EF39C3366881B19A6CE27CFDB46AD8A83E61107F543721783C786FCEDB571B2827E6F55D0020A4A3DA05A4DAE6C2ECFE8217BE405E22FDF405EEF66B50D7337522E673920D2CA51AC2E30B9C92AEEC8B8A9FB881B15F81BCEA664F1BF43A0CE6D4FBD5517E4FF1A0CE72E0AAF57A6F4C71EF72C1A5F15D0EAD5CCB92A47E863E17CE352D59A36D1B8453C9D555F914C468D5DDB7A40ED2CD46E24E739A2C9EE4550541A77F2335771E13EAEDBF59750D6646F3776328A954A90362D62199B8C1EE0704F9AD684C385E72E52C6F832D4E24D62AB06A480BB4C775A6AA7E4BE6A5D0CFE956DA90704839A858381F9AD541B83330573D6A1725F1547A5941CDE38B78403A8946E771845403AE74B9DB1B2646C878095468BF6521E343875EA44C6D4D5AAF25F34DD81A04E594998A27C1F41DD26A0FB317459041D62098768DCC40804787EED41BEF2A5EF11F4079831A9842B2E5B4AF59012922987DFFCE6563EFCE10F10080479EAB95DDCF7C073A4D3191CAB93098D853C70EF6F397634CBAD77DCC4C245F318D350AF1A98D178924C26485B6B92679F7B92D2D20282869F07EFBB8B258BE7B2EAFC4B79E289B5DC7CEB1F386BF94256AC3C8F505E182C9D4877AFCC11515831969FDEF8006BD7AEC55F9047B6A294EA6953D04306932BE0471F5F4E437599C26615FA2E3B0A599F255432A7DA54FF7E438EC59BF11FEA74395941BF672A6877D9168016E258B82F31801180EE20BDFF0952EB6F221CDBED0EA378ABFA09D22FEFF7DD241637C32D07D0192D48C43794922997923FEFD3D8BE1A575ED4DF60FBBF86C86F783D3963234926573B0B17A973DEBFAADED1D4707C7F232E91CA124999F4A44C2212A09AB0D48831FE20595D53CD3AD9BA2A6F110FA075352A2F4D2359047D6AC047F1CDB929CB9C094F2645B2B78B4CB497ACFCDDB289593A3127C0EBBB0F306FD1D934D697E1A425295D940142570D849ECA74A700B4BAF815B5220B426E61F53CA6BD6198B7E299074BE906288E81F41317A007F4CEAEB44E541C2EC52106486E85EDA8D0808CA835AC2C412B4D2893E4D429931839A49AA67DFBD9BA6D275D31E97DA49930B19ED9D3A730BE711835E54564D3E2CB6192C9D8C4122689743EB1A4CD55577E92DA9A2ACE983792B9B3C753585C884D903BEF7A9C05F3E7525D5DCDE1A371EEBDEF0976EEDE4D69899FCBDF77161FFBF02A9E796A3B4F3E751F975CBC8221E52E608A57F4B66D87F8C39FEE67E79ED7B970D5395C76D145B41D69A6A4D0A7F8E9B6B63E5E58FB22C346D6316EC214F6EDDB4F714188FA6143C96635E2C9023EFF959F12E9EAC5F1F9898843E190A194358EA62C2FCE272E9ECB05F32751EAD391D43277711E2472CE6DA2E483934ADB2B0A0649EC4F3C714F02F47BA78276DF89EE01B41B59251AD2B0D642DFB6FBB036DD4661BA59E944DD5B4EC339B875E1CAB5FA015AC6BDC55E540BD36D0CA77AD1C7088EBD84AC31C475DC7863D7E3FF324E0FD299E61CE5BC1E298EAE1193CA389521216069425FCA1DB5CE481529B6514610DB082046AE2AB45513258C2C860336AF2A01457D99FD61AE2E4D94E385DD8BD24E2589B6B76125226AE22E6E414F46E360579C7DCD47F8C4B51F23A0D9CA6D500CFF6525541ED1DEC2A2C6EFE57B9ECCCB6B25788A91016586FA88BCEA7770259DAB8A4F546A7852BA41E6FB2E40E738689910940ADAE5A605A0A531E8F2D10E662A839E35095836636A6B317BBA70524922D114692B4D554D09DD3D51CA2B3476ED6CA6A2B48CC5F327B064C15CF47446699F6349F1B7F6F3FC9AD7E9EDEC644CC310EA6AC2E405E5BCF6A3FB0BD9B5FF189B5EDFC0CC19D32929AB26D297A0B5AD8DE1C3AB183776347B776FE2E9A75EA5ACDCC72517AD203F10C66F040887F3D8B071376B5EDA842F643171EA181A478D96E03515922B41023E9F1F19B0B56C8D7446E3E1871FC1AF67587AF61282A1222211F8CE776FC0B2C4D2D4A0B53B42C208A2575652585340E3D41A96CC18CEFCB135CC18D74858CE91DCA29C43612F624B766D3932ED2440BF03E078B771D039D0950A3AA787D5B414F94E33DDAFDF81B3ED5E8AB22DAAC273290CB78134F834C9D9502AF05695B6ABB5CD6885741A23197AFE1709D62E21AB950F9C78EFE0D8FEAFFD8AD764539E4DAAAA7230354866358E754469E98992D6FCA4D5208AF0097E0F04E57E06964A3277E91F35C727833E831237542287D7BD5761AD6A1058656ABBDE1B4A6DE1904DC4E96D3B869D8CA92A359AD5694B38ACDB75888AF20AAEBAF83CE5AB91D3A8CBE7E45232C233BBA247B757E082B68A7A5557FB8013DDE066E160401E0CD8B934EE0110F6D41A9E2C4F280E45634868808075CE885F65200AEF2CCE7432A66E8198206552D40F6DA0BDA59BD58FDDC7F891C35975C507F1899E3915C54AA739FBACA9DC7CF37DECD8B687211541AEFDE0FB18515644221E276AD974C5037CF7C737B36CF1428AF20368568CF2E220A5857E0C9F1F7FB0903BEEBA8FCEAE3E0A8B4B983F7F11C54525D87692EEEE4E9E7FF6691A473770D1C5CB08040CE251D14827F005E4130D28A0178F1A491117B9A93B01EF5E33D96C4A9987398E4FA5BDB4B6B6128BF6306CF870340162DBC7CE6DBBB0ED4222318D871F5CCDC1D66E923E8364186A678FA3B22CC888F2009F7ADF124E1D5FAB125BA498E94F6DC95A68E2C4A70A8613A740FF56E67192E2780F511CEE352A90E0B6A6E4BF0405E63EBA36DE02BB1FA1D83EEE4AB3FA1506B9A053EFFA567A3A71AD135587546FD27CD230B5223A8C51D45E743DA1AAF9D85AE94042CA3B1A9BFA5F82684FC524F4844808D30E74C52C5A7B62F424320A98B3BE806A7689078932B437452521010402B81E8DA48EB31BAEAA16728F6376E5E45E95AC067DE43AF4F4CA62542496A022518BC7881C6F259B88AA749A287EF6752458BBEB08CBCE5CC41993C7E0F36998390B6DA9A6857356C646EE02E1D234AEF4CF75EE76FDBAD527FF8669C1C1003D584637902538A0D4C839D30D501CB946A10BD0EA6B10408B31942F954290B0A6B48853E69DCDD7BEFD73CAF3D2CC9B3585C29AB13CB3FA15BADA3AF139112E5A319755179E453CDAC7638FBEC2D0B2022E5D320F279BA03B1927619472DB432FF0E273EB28C82B5234DB84D1435879F6744A450B8D8EA985D9B879177BF6EE53116CE984495FA49BAAAA122EBC601923870F514A112938FAFA823CFCE8E3BCB271355FF8EC27282F2E508D56E5E6E713D7141F8984A86E6C8201D1A6BBB6B8CAD50FE8EAEA63DB8E5DD40DAB6368553921F15371CAD9BEA39D5BFFFC38CD873BC91859FA020E0CAD64E4B4C9CA64EC9CC961BEFD890B944DAF7C29CAA3BF79983B67DC51FDFE26E11B54762739E8BF8313EFC60A5A0184679AA38A2A3B41616627DD1BFE0CFB9EA030DBE12A0CFE06A0DD080EA90E05A0FD591F8E9EC552006D90A15855D075B750A75B000020004944415402D0D50B71907467CF95E7DD02D0A2A515C37BC15543239985A35D195ABA63A41CD117FBDC705751AD880C4EB9D6B9CE80AE75A75B050B4088C6593A746E2A8A0C28B8EA17A579559C74CE074DA05350D6D52CCBA52823D19600745B0B762A8634D77A2C1FAF35777030A671F9F92B682C0D2ABF63D719C5FD5276DCAA60769406DA909173CF785F0D09AA2661CEA9CE95D6BD19C5D12F97F340DC6D0A0E8C74E778E7C14DC21CFF9CABA07326FC69510B59690A627D94FB1C4E9D3985D2BA195C7ACDD7F9EA672E65DEAC466E7D6413B7DDF3143E3D48301BC56FB6F2A5CF7D843973C672FD377EC390F2123E7BD5395496848825E2F4983A4DED511E7D740DBBF71CA5B3334A5158E3A2E5D35876E6A94A9E97D583F8F30A48C423B41F3F4E229AC11F08505553C18886A1F8A4076099D8599D74BA88BD4D0769397E8059D3475310101E3D1F4D2BA1B527C9B36BD6B365EB2E8A0BFC2C593883E9931A4927234A0D65DA1ACFBFB885DB6EBF8DF3562C62D992A5D8199D071F5EC78B2FEDA4B35D926E7C64C51A36A8110D81BF6E1863664EA631BF85EF7CE6328696172B973C15AB25BB2875EA886CD0FD64D580518E06C9518639F039C941BFC7386875250B372A9202018B3885C96DF46CBC19A7E969F205A04FB8E5C2E6DDE879693C8922C16FF914E86475011E83B4534CB76F24B5177C8950CD99A0150EF858FE6F0174EE243E61FE64506EA0D790515B5805BA6EF28980DEB11E93239D11A5C1CDFA826A4C5BAA63194D968EBF4BAF7B23CEB225963D89B2729572D5258844979BAB886CCD52BCBD3405D58656A6343D4F6ED57A546A18572A67CAE45D2C42F7D143AEB5A899E55842E3D5BDC7C81B3A924B57CCA752137090D2CBF5E996B7E8D5EADEE7EB01B4E656F9396E5AC5550DAAA007AB36DE4CEB9C73A87384BA70C44BC36D0CBAEE759286221E1B6E1A8AF2DA90C5459CEC94B42E8399B5F0A512CCA828E4B40963282B0CD2962CE5EA2FFC9CF3168FE7FCF31671FB635B7962F516C5EB868961C48F316DE230FEEB7B5FE3AF6BD773CF5D0FF0F58F5DC0A8BA72A2B198CBC7A71DA2C93C1E7E6C1D2FAFDF4A4D4501575FB280699346299FECA2F26AD25616BF9EC2A76531B4009AE1C7080609E7FBD0B48C6A3E66D21ACF3CB385C71E7F8A050B6671E6C2E9E407D2384E05878FA6F9E2377F446B67125DF3E193F9804C3B0B4E9FC897BFF011C5B1A38538DE65B375EB16B0BB3965E61CEC6C881FFCD74D6CDC7800B40282FEB0AA8E934E86B8CF265150882FA031715625531A4BF9E0AA73983D6E0441595815FDE8711EDE94A1A2139513577F6B68D0DF4F521CEF298A438D978A524140C49061930405E92D74AFFF3DD9FDCF52E0443C7317F792578A8341E3A86A4BEEE8F8C45046AA48DD5292AEA45E4CAFD140ED855F26547906F8CA55C2B41BDBFD16C31FFF7FB118DE36B03FBFB51FA09577A4A2100C5DCC9EDCB053358526FA654D23E5381CE94A73A4BD57191159BA441E4913CEA794086A7BAF820E5C7EDA7D0E19FE70E52A03EF74F07B76C924CF16D0631B733245A96A5DA6514808791C2BAB61F676D0D7D2A45245E296CEFE989F4D4D47A86F18C105CBE613F6526772D89B03E99CC78300BEF84EE42A6AB5A078AE74AA09E90D960C00B45B25BB16A2EED049FF7D241350864F1C87A424B54B97CCD63C573A990C4CABA82B5131C43226697987D924A4E3643332CA9DE0EC710DCC6A6CC0F0D944B41A2EBFEEFB7CF75B1F65F2C4A1FCE1CECDDC7AEF33383E87A016C3891EE5F31FF920A7CE98C4F5DFFF394545797CFEAA73A8A908D319E92693D549993E7A5345DCFDE06AD66FDCC899A74EE783AB16515098879E17E2AEBB1FA3A1610C93C655535116242C61BC869821F97869DDB3883A6ED1C28558593FAF6D6EE5FBDFFB21F535613EFFB98F5055954FD22CA2F958828F5CF73DD299A02A688286493A7E9C49934AF8F9CFBF8C93CE609BE25C57823F14249DEA22954AA8C5BAABD562DBE6A3AC7E711B7B7637BB610CBA4E1A83B46613372C02A3CB193F671C4B1BEBF8F00567505F1E941943C549AB0D8FD73650C64B3980F63CAF06C0FA2440BF8700DAD3F3CAF08902319178A528486DA27BE31FB0F63F47BEDDABF854B7352140E472966EE4B7465655893A862DBFEB1AB88BA42CA117D0633450B7EA2B842A1680AF6CA082FE9F0668D9B97B3AD25C91EC1A01E5161D97475741209EE7B254CDD1ACCDA1CE34ADDD7DCAECC83482646C5D5576725FC9DE535B7DA16EBC14B07EBDF83B788FAE84D1F361106F0E6586EF20FD34ABF73891634D4A6217B77DEC8DFAD97AB085C6B1A358B9F454FC59D14F7B01089E1263708925E0AAD828AF999703E537AB98079A8239D3A381041475FFACA4749B6A872169302A815B1D0B71A54B2B109695409A6669C7212E9C7326862F1DC3679B8C282F627E633D434AF209847C50349A8BAEF91605451A73E7CEA0AC6C044F3DBB06534B2927BC99931B59B1641E99581777DCF35746D557B26AE11CFC8649D44CD017873DFB8FD376BC878CA5D3D51BA7303FCCECC9E329280871A4E50877DFFD80CA61ACAECEE7DC658B386DEE294A237DEB1D0F535B57C1B4A9A3691856455E30C881C3311EB8EF118655E7B364F13CF28B7C64EC3C8EB425F9CE7FDECC91A311AC7452D12221BFC5D2A593B8FA83E7A09B593427C0C1C37D3CBB7A3545A53E16CC5F882DA3F89D322350C04B2FEFE4B6DBEFC5670495ADAA889F85EEC80675E29561EAE7CF645481CEFB168EE782534751120E2959A6E0B1E7AEE0D21E39DF7435DA3BB89A3E09D0EF21807605F06256E357DECDD29848939FDC4CEF6B7FC46A7A96FC6CB70BDEEAE6F2A7AA32F4CA51F17950196D22B4F79678F14A48E87974FA46517FE1D708952F04A3C8739AF720F27F526E37F81CEE97CEB92F402925D47B1FD09F8A4A236E6539D411A7332E2E6B22999346A04E322395A39BE23C78FACE3564F7005E2D68FF8D5D82A71557002D7234CBC1EA6BA7F7E87E65331ACFEA34C57D6C3D789C118D8D9C7FF669E42BAFEE81F7947B6FB94F4E01B4F77E73AF3B5711E7C0FAC4C6608E677E938057A98EEDB43A5F2CA17C646B6F5B988EA58CF71D53C26BC5A81F526686949321944C114A25183FAA9669E3865311CA5218D2F0F975B2C15A9E5B7F90DFDD76177A28C89CC9E358BC600A631AEB58F3521343860CE19BDFFE291D5D6DCC9F3E9C7FBDE67D14EA3E92C918D17482E6E349FE78C723FCCB454BB970C559F4260C7E76C36D3CF8E8B3EE708B93E0473FFA2E81B0CE8B6B5E5640FDBE4B2E61FD6BBBF8C14FFEC084898D545584993B71288B4F9B816987D8B37B3F9DED6DCC9A358170817B686DCD4F774F80752F6F65DB8ECDCA877AFE69B31937A606B27DD8A65C0979ACDFD0CC2DB7DFCAC2B366B164F1B9BCB67E3F3FFDC52D2492BAA279344906A7C0EB4F487A3958864677180A46D6316AFC28EAF3227CFB03673075ACA841026A91367CD2CCF70A8B7E25D04980FEA737DEEFC626A1CA04F4005A2E58BF66124E6EA17BE39FC8363D4DA1DD8978BAA80B5E350B5D10C881B60BD05E3E9BF2EA70D51C02D0EDBE46EA577D9DBCB2F9E02B72A757073CECFFE9E3FAFFFC8EB966E520BDA97811AB800107650B7AB83BCEF1484A4DB3D9BA4F558AA2D4C8588EE25D5D08CEB5D9739CAF7BB1B87EBF6FFF96ABE995EF894773A8CA54B8DC68175D87F62A1F8EA40547537E36371FA7B47624975DB8884245310D786A0C501C5E55ED5987E67865B5DC7A137FB9BF0FF6DB707FE64652B97CB248E75CB056F155880B9D848A18AA8296DCC1AC935615B4701AB62C2A599BB499568648464A23D39DA2B6BA8C8A7C8D398D654C1859AD3C928D50094EB08027D76DE1DEC75FE460D37EA64D9E4255D5505E7CEE451A868D645FD37EE5A571E992A99C75EA644A8A8BD502B1FBC0019A5B7A79F4AF2FF2F10FAC64E69471F4A5FDDCFBC8733CF5FCABA4A3BD8CA9ADE0DA4F7C944426C5732F6D61DF81A3CC9B339F75AF6EE3C5759B948706768C1923C3FCE05B9FA1B2AA8E5B6FBB877BEF7984FFFCFEF54C9A56A71254C4CDD1CEE62BA04E585155DCF80C836C26A180D3B103D8593F7D9134070F3751581EA4A262044F3CF22ABFB8E14E6C2D9F3C7F005B16FCAC7C5E5975BD291ACBD18905FD644B0BA9993189116569BE7DC56C4E9BD6882153859E4582D2B17B834C2E7DF5068EE36493F0AD2FBC772740EB6ACB2AE3B3E23816D44CF2323BE97CEDCF387B1FA328DBAE74BD392F871C8FEB02B4A39CD272491FC28B29A37EB224F502DA7D6319B6EA6BE4959D06FE925C10B80B5EFF531574FF93BD490485F7A6541F4F5E90A19171E0585F8AFDC7E364F0A97C4551C3A66D9B9497C7E8CEDD7A9619B9AAB4DF78DD8B337A07EFCFADC0DD1415F7657B8E471E40B71DD84D369D2065DA74640CB61DE9C62C18C295979E4B95CFED0178DB82FEDD41AE9276290E91DDB9809BAB9ADFBA29E84EFF0D36DFCF8D744BD3CF724C6534A2653405D0AA594A0ACB4A6167249DDB51064096A23D52A4620607761F279534C9B3135CBD6C32172F3F955010457304C301D24601DB0FB6F2F033EB7975C31EE27D69F44C9AE195A58C1D3B9219D3C631764890EA623F43EA6B55CF64E79E265ADBBB49A52DC637D653901F226507E9E88ED2D6D14932DA47797E88E2E20AE2498B7B9E58CBE3CFBC4A3858A6A472F14C1A5BE9FC939C3EA992AF7EE6838C1933868DAFEDE2873FBC914F7EFA439C72EA68D72F2463A365A53360933112AAD7629AAE4247A818CB0AB16DEB4E8EB71E64E6EC69840AF294F2E3C8E1240F3CF23CAB5FDC40BC2FEED1588E4A7A4116345BC3CC68A4FD61E2A13005931A193BA6908F9DD3C8050BA652289FADAA05723B33E905E514436F48BC3F09D0EF258096C905C9BF130324A9006430D624CF3948D7A6DBB1B7DF4B9175CC1DBC908B5B55D1EEFBCF01B42811543A87787A788D2D0196B4E8A07D63A93DEF0B846A17E218A5EE98713FF8BCFD0AF31DFDC69B01747F19EF5A36BB0A424735B38E44121C6C8F92248CA5FBB11C8DA4659112D31FF1B850F239B7F9D7DFEE54032CDE77BC71DD77F25A07784677AC5C8E970CB618421FC47A39D6B41B539CECD2197AD2364DD2BCCCE4B37CC942668C1CAA8650946AA49F8376FF2E3CF689B446EEFB03432A39F0CD796C28537D4F4A974B43C9C9ED54EA8980BC652BDE55D40B12086B3919321E072D715722B1CBA41284823EE64D9BCBEBAF6CA6A074183B36BFCE9C5121AEBE7439A5D2C4336CC2613F7E5FBE5A240F77C53878B88B743C839D49139608B6821021493FE9EB20A45BD40EABA7ACB28264C6229932559357334471234BAD9FB4254E7E594509998918564ABCA635F6B5F62A995CDBB14E1A468CA1ACA29AF55B36132A0A73DD07CE62484935056103C3D0D9B7FF20CD873A7975E326B46C2F4B17CE63FEECD3D1758B94D64342C43B7A899A2854FE33699D3B6EBB1DBF9E60D5AA55048225ACDF7880632D29CC6C8635EBD69048F672F6D96711EB8B52595E467B6B1B8EA531715C233FBDE13E9A3A12A4CB8A193D652873675572EDAA3399595BA58E9134166528462DE32AB9E86405FDB6AEB3775F052DD3656ECDAB3C21C4B8C631091BAD746DB98BECE6DB28CA34BB6A82DCFCA097FE90334D52CA05250893555E09CF14179DA1881E7D14D54B3F4970F472B27A19AA8D98F31A785B47F6BF71E7C1003DA872EF77F5746D2F046B684964D87EF438195DC0390FC717A4570C73A429E6F793364D34C350A3F1025E224B55CA54C5BDEB8A977627CDC4B5EFED6F13C4DB43805E4DFB791A10C3B1F13B2666BC8F634DFB49F6752BABD144264B5BCA60737B96F18D63B864F9FCFE2941B7BA1FA8A67300AD36C7FD46FC83951B83AC41BD2414E53A37C8F428378CE2DA853A642DB777A1A2ABCC8C3B88E2D8A42D99144C61CBC460C6C44C2409683AD75C7201A5411F3B0E7670CB6D7770EEC2C95C7EFED9E40947ECF711CA0B103634C5E3264D8B442A8D9996E93D937822463223F48989158DA2654D468C184E79551581FC30D9AC3B651749D81CEF4AD2D212A1B7B78F82223FE5250594E487C8AAA9C4940A37E88E88656B127FA090AC96C7C34FBDC8AB5B76316BE2689C74925933C770EE390B08E70558BD7A0BBFF8D55FD8B36B1D975DBA9C2F7DFA73ECDDBD9FC2CA2C43EB46B16F7F947BEEB983DADA522E5871016D2DC7308C143555C3D8B7A7835FFEEA7676ED6B65C890022EBEF46CF24B83CC983E55B299C9A43314E4E7535926BED4016EF8FD93B4C735EE7F760DD9323F23A657F3C1A5A7F0D125B394939F8ACC92068FAA877274DA1B50E76405FDDEAAA095E85D49672D358AEDCB6694595274CFC3645EBB89C2C43E3580AC00DA1B353DD193437869A1085C1DB43B05274A8742E25A2DE5A77E00FF8CABB08C6A2476A95F26F1DFC0DCB7F5AB83005A55F039ED8607AEEA9C5761AB36EBF6B6D0858F80C451593A19CD473C6592CA98AEBE58B9C1B94E73B99101979217EE3D5753CB5B1C641BF9365EACEB692280EFCE1F8A9E5C005AB79238E914479BF69110595922462299A0C70AB0B34757314F9FBCE64A9783CEBA76B0B9B82AA96495E84645669D08D0AEB1FEC014616E8C3B07CEB9AA7A7005ADAA68F1D73025BE4A4CF64D358E2DCF9D16B99B74B3EC145933A552E0DB5BBB38DC748C2975F9FCF89B9F62D3CEBDDC7ECF838C1D3F990F5D711E0DE5F94A977DBC3BCEE8BA7C65DC9F882548A633C4249B309B211AE9C0AF4994551A3393A6B4B488EA9A72FCE1207A5E18C70870A035C34F7E7E077BF61D56EE73A6E9E0F365185A5DC4D8861AAEF9E08594E443261A57FED3924C93CE06491BA57CFEEB3FE570BB896EC7F1D1CB84F1057CFDFA8F3165C218FC4690FDFB62DC7DDFBD949695515A388C5FFCE2279CBB723AD75D7B2D4F3CB28D6F7FFBAB2C5E329B4F7DFC63D40EAD226926719C3CB66C3CC48F7F7223475B3BC90BA6F8DCE73E4EE384C9BCB07A0D1B5FDE4055553923470F23954A72C1CAF3A96F28E72FF76FE0DF7E70230989CD5A3889331B2BF9CE07CEA7BC584CFD7376D1E2C3EE35E7DF48A59D04E8F716402B3582022D4B511412C713327A49343F4DEAD51BC8EFDBEA02B4023AB775956B81293DA6CBDEBA89D16A0B269D23A102C2649C320AC7AFC07FE697B07C43DD440FA5157AA378F36DA0D8DBBD6BAEC0F0140E8AAAC9A92D943E57027335B635F7B0AF3B865D54A6A44F028EB1B4AD8642644BAF5EB37283736586398076E5CCEEB04E6E864F384A2F1AE56DBD5AF5A80AA05D499C50474271C8A28999A6E55033D1AE76E50B9D4E448966FD34457DF425D37CF173D76299F2129596CEA3AD64D433EB9A1529DED99D6E5421C1F2E555C8B931EF9C87864B65B8E3D9FDB6A1DEF4A0026BE5A5E1FA6A88ED67D67413B92D4B5395B565C655E0AB480F6A4AABD8B6711B99EE66AEFBD02AC64F9A406B5794475ED88EDFF073EEA2796CDABC8DE7D7BECC9253C773FE59731956554A5F3C4D9715C04C25D1D351F20C8D800C45D9168585F9F8F2FC98BE10514DE7D935FBF8CB7D4FB363EB66828120A140B9A23CB2768A78AC17C7CE30765C1D179D7F1673C78F25288B4726419A20FBDBD35CFF6F376269D5E8768C803FCAC24563F8C4B597525F5D8E95C82A8B517C3E3A7B12DCFFC0F36C78ED55268C2BE5B28B2FA1696737FBF6EFE0E24BCE513B47D3B2954F8BF86C63FAB8F1C65B18565F475EC0A161442D3B77EDE67737FE815020CC87AEF90079F93ADFFBDEF718366C18D75D772D5902DC7ACF736CEF49503A7B12638A2DBE7AC999CC9A3882406E53A668C5DCB9F28686F449807E6F01B46B7224A025D48444576509F91264DBD6115FF73342DDEBC5C9C07BD3FD75A3E70F2DDA4E77B2D0ADFE5C347401D0876387312BE6527AF1CF7142C3D16D89C792A686F068EF44E7F0B6F0CEBDF30900EDEE02721AFF9CDA42EC6E1E78612B05B523C904F2D5B45B329D266EBA2E652E6A7A69318A3A18308C722B680168B78276771AEF0CA0DDC003E1C4DDB228E73EE7B74DE552D7D57E9C9EB6A3C47B3A48F6762A3FE8CE6C1E5D098B25CB97336EEC28CC8CEBF721120B792C51802812CB9B2E14A0CE8DA0BFD1A16EB001923B1538A0DC109ED91D5C9166988C45BB433A32BA2D89DCE2D627064822934F24536066280BF9B9EEFD2B189A57426B6F8ACD3B772843FD8AEAE1DCF2F8165EDE7A809838C2193EE5A459CA11AE5831932B579E43C6F6F3C46BCDDC7CE31F9935BA81F75DB2989A21418A744729219C4021EDA69F7FF9D22F696B39CA9CA98DD45705F8E4C7AE60DF9E6692C90CA15098DAFA917CF747BFA32B9E66D79E7DD486E19A4B5670D6693349581611025CF7D9FF24952E269B89535692C7E98B6633766C232F3CBD86F623DBF9E435E7B372E512E2A92C896C0ADDF0E31720CC485ABA414A1A887E1D2B13E4AE7B9EE597BFBB93704119634637D0DEBA9FE9531BB8F4E22B79E0BEFB292A345975D14A74239F583CC2D0A165E83E1FC7DB3B185A55AD4C98D66F69E2DB3FBF1DBB710A2387F858DA58C4C72E5B4E5E3F40BBA7766E706540067BD20FFAEF22C4BB8D8356622E4FFD2E13802A27CDCA12F2A731225BE97DE10704DBD76290F200D9032B714793B342840F52452B3ACC8B53121ED65BC5C5C92B121847F595BF472F1AE702872E668DFF0B00DD2F1F75F5CAB96EA7D4C3C7226976B444C8F80B9501BE349AFA120992968323EE74B23BF01A83DEA5E111252E90E6DCE9E44FE190D59CE0DF4DF67CF3D328B760B82FCF759C930550F968E0108F44E83C769848FB3152BDEDC4E34962B69F1ECBC05F5AC3CAF357120A045D532A014C99F8935C429564E27A6E64A582F62608DF1CA05D10FE9BC6A0F2A9C82A5A4380D9925C41CB54CDE5BE78CC0D631025432A43527CAA23BD445A9AF9F6751FE1D45175ECED4AF183DFFD9931430B59BA6439EB9B4C1E78F6359A3B7A557C6D36D14B55A88D65F346317DF4280A4B87F2D496C33CFBF40BD8D12833265573C5856730B9A19670208F24A5DCFDF46BDCFCD82B983D87F9DCD52B993DA39EA99347BB3981B259B31D3A7A2C5EDF7E80B59B8F72CB5F1E259F24CBCF98CEC7AF5AA17CCED37A80C79E5A474F440293431C3ADCC62B5B7628DA2493B2D0D287F9CAA7CEE7739FBC8AEECE084FBDF012D535358C6C1881960DF0EABAADECDCBD892BAEBA84C2FC52FEF29797F9D98D7792C91A989938F5B541BEF8B9AB0887AAF9F10F7F4659718AAF7FED7AB66C3BCA5F9F7A94B397CF5580ED0BE86C7D6D3BA9648A8AA175FCEE914D6C89852836224C2849F09DCFBE9FB0DA050E4219AFD838A1DD71B2827EEF54D00AA0D5EE5D00571236848376084A68ACD944F733FF81FFE8D3F8901AD36B4A78DA6195482C35A39D33867727EAA4EA934942F999DFD6E8D1865379EEF730462C00A90174C9257C8334E81D14C66FE757FA4F6BB5A6E4E81AD7063469C30B9B0EE02FAF511573560F90B42D7A1349326AF1F20D18D3A8EAD6F5B1E81FD576EB677578BCFAD703E8B7F30ABD625F19E9BB5590323A5295B9ADC0598E583A9120DAD946F7B166E21DC74844234AC5205440BB5DC882458B983A69BC02521945D604A45DA4EA0768A1360464D59F9E8FF3008D3110F63A58D5E102B2EBAF2155B6F86BC856DE110E3B230A051B53D684545AC9CDC41BBBB5E518913601E80F73CE8C096C3E1AE523D7FF3B2B4E1FCF79CB97B3767B1F8F3FFF1A6DDD510A833A85019B9240371FB9E25CCC4894BCC222761F4F71E7BD8F515A5A414FF366AEBDE21CCE5E700A863FCCF64316BFBAF92E7C8545CC1B3384499506975CB94CEDF5A4C1188B27C8F3870804426A57F39B5B5673B82BC58EEDBB290A5AFCEB875650535EA0169B8448021D3F66A680D7B71CE267BFBF17530FC8765201F4673FBA820F5D7A36E9BE287BF7EF2365690C1F399C9E9E20DFFED66F693EBC996B3E7C01CB972C61D3E6766EB8F9018EB5F529280DFABAB8FE2B575114AEE5A73FFA258DA3CAB8EEDAEB78E8C197B9EB9E5B5879E13CBEFE8DCFD3D39BE43FBEFD6FAC5C7936734E9FCB1DABF7F3D8CE5E8A02716AFC1DFCE2FA6BC857BE292E3DE8328E6E21E09E7F1E709F04E8F71640ABEA4F970C414B8D74FB6C8DA05FA2855AE8FAEB37F1373FAA2A68D7AE32A75A106B4D57D9A1D9E27FACE17724C9C3C2D26D2CC56BEBF81C9D3E6A30265E49F9FC0F8151E301F4FF10BD91FBA84E4068D78F53D232329AC68E633D6CDC75989A8631CA6323AB19F4A6D3F42492388670D1AEE6598E536E3AB0BF2FA32E86C1DDF41C3FEF2928DE2646BB8A901C40BB1ECE4A61A3ACFCC1CE64B0E25122C78F70FCE06EA29DAD6AE4B8CBC9E760329FCAEA6AE6CC9AC9E89123F12B125B3C323C8016A016DA44F1D16F04E8816194011AE3443BD15C9495FC5CC9EAC494DF74A9974432AD067CC4DFB9A2B080A91347E37362649311CE98750AE5A152F6B444F8F16FFFC0A253C63363FA0C1E7A692FDBF71E24E4877C43E39C33E7D1D37E94C963EB49C59314951472A0B58BBE680CEC20CD3B3772CEA2390CA92E2792D6B97BF57E9E78E6392E3A6F3E2B17CCA4BE5027934D2A00AD1F3192FCA202DA3BBA39B4BF995367CD23A9FB38DC19E789E737F1DAC657593E6F02CBCE984D50CF12CD686CDBDFC2EE7DADEC3ED8CE4B9B0E621B214535F9ED18E3469431736C31EFBF782113C68DA3AB27C1D36B36F3E4737B58F7EA1ECCF4314E9956C3973FFD69F2F30A79F695FDDCFE97676939729C505E1F975FBE80D9D34E61EDF36B31748759D36788350A478E363379CA68A64D1FAFBC4B1E7FF219A6CF9846417131BFBA672DAB9B7B69A82FA2C06CE1F7DFFC3805EA20BBDCB314489EF0D51B56C94D819D1CF57ECBCBEEDD487128805695AF709632B2AD13F44B15DD4ED7935FC37FE0217C4ECA7366F36A446930E92EA521002DD4886CC31D4905D12D35DC2106E6866390D0CAE92898CCD8CBFF0D429394DBD789B741DBB69CC462F01DDEEC7B6F13F83C0C75AB0D1596EAAA4E62683CF4D276D27A98CAAA21D89A0F4B37E84AA48848669DD0031E8521CDD49C694D2EB72B4765B84D427951B9E6A7C7A7BCCDD7E94682B9F1532E55E23582727593806C3A41A6AF8BA37BB7D379F400D9780FDD561E87D3F9D892805D51C1E285F3195653832D2E7B8A8F769B86A26291F470C5430B972C15B0D248CB48B92BAB53E0AD425EBD6414F1A296AA5938683545282929194C69022A999D4D3A2546F6599C9449757E3E172D9DCECC89C3C8CF0FB1F1B5BD341F35195253C9BEBDDB691C358AF64882A736ECC21FD0593C6F029505851CDE7F80C307F6337BE61402C19032A2DAB36F174B172F24CF2FEA8E0441BF4E7B6F1FCDDD16BF7E7003BB766EE1F31F5ACE9279D328CDD359BBE66562B13ECE5ABA08573AA0E800002000494441545F20AC5259FE72EB7DCC9C3899B90BE6D1D213E7998DFB79E0C1C7185B5DC4C72EBF90B2904677D2E007BFBA956D7B7651337C141D7138DAD243400F61C8F14927185ED9CB6F7EFA59C68D1EABCE931FFCE27E6EBEEB79B71849B5F2B3EF7D9E65F367AAE3F1EACE5E7EF8937BD8B5A38960304E4343884F7DEC1A029AC65D773F42A4B793CB2E3D9BD9B3E7B2FED5ADECD9B39DD9B327523F6A0CBACFCF137FDDC073DB9BD96F6A4C9A584BD86CE3F7DFF8288503C1468A62544BB8D2BDCB797712A0FFE1E5F66E0468A97E95304CF913BB9CB45435617F275D8F7F9950D343184E4A350065E4598656048C5D80168A43C4795EE8AC12CFABE02CC533CB63A709D3EBAB60D8B95F82FA5540614EECE01D4F39EB3C899A3A809E119387DBDEFAF10F8FFD3FBC43FF63BBCF27A2C243BD69EE7B7E33C31B27A88B3F6B48328A41772C49426C321547EF6E28DDCFD63332EA7FB2BFD138793FC93511FFE1ABFA9B3BE4F2E87291B1EE73BA5A754577D8199C648CD6037B38BA6F27C9EEE398B69FAE984D440F6105F3396DCE6CE69E32CB4DD496AA59F4DB8AF2D0DC316D098CD5DC493FF115513ED58A53F6F204C5465452B8BD3C4191CB09285B02E08EED26A364A4312863E81699741C9C34C908647A632C9D378CABDE77364EA888EBBFF13376EEEA66CAD8323EFEA10B4839856A0CFB8535EB195957C927AE5E456551315B5FDF22BE6E4C993C96A28222C56D63A508E587157D52921FA6B3ED38C7BAD21C8DFAF9CD23AF7260CF362E9C5BCF47DE7F21050178FCE917193AAC8EE953C770ACB59B516387F3C8438FE3CB9ABCEF8ACBD97B28C2CF6F7998B5EBD6B3686A03D77DE0122A0B4274C61DAEFF8F9F3067D6582E7EDF0AF61EEEE5A65B9FE6F5CD7BC8A652F8CC04679C52C37F7DF7D354561663393EB6EDEE664F530BD1588458771B1FBEEA527C5A5251622F6C38CE0F7F7E1F4D078E1334A22C5F3C990BCF3D9B90E1E795F59BB9FD8E5BB8E0C233B9ECF22BF9F4BF7E8D834D7B983F7F2ED77EE63A7C01876F7EE316D6EE3840DEB871CC3F633205561BBFFCEA0728567D901C95E15E36AA5EEE17F59F6C12FEDD2BEEDD09D0CA6FD4F57256D3821A797E8D7C5F27DD4F7E8D60D303F8EC840268F14096F69E4F7C178483D6DC8A5BAE25D3F02C3295D6D90B45557ECA3ECC4021C5D3DF0FA77C16F4AAFE6D9A7B300701B4C7ABB9BABFDC14C87F732CDCFB50DC0119F7B1646149A2B1714F2B2FEF69A371E22464A0DBD4FCC46C8DEE5882B4C8EFD4E0C83B9104BE11B8FF79A0EEA739BC5F714D7A5C8096869F6E9B689924DD2D87683BB08FEE96C3247A234A23DC91358819794C9C3A83C54B96E0377C4A37ACDEB770C6968D6688565974BAAE9A43260265F044388AAC786A781E1C02C2E2AF211C764EB1A18CF995BB9E9822995E08AC501E09CC541FA36A2790272DBFF83EAEFE9795EC3BD2CDCF7E793BC1D010962F9DC5FCD3A7703C11E495F5DB30DB3B9832A68EC69195AC7EF209E6CE98496145A98A762A292C252CE7A09E22ABD9A4C487423208A3497A1206BB5A92DCF8F0CBECDEF61A3FFDCAD54C6B1C4A81DFE2999736D2118973F9A52B292AF2D31733B9E1D7BF62FEE9B33965DE4225097C65472737FDE9018617A6B8F6AA8B28090768EF4BF3B3DFDCC4072E5DCAE233E712B761DB9E2E7E73E3BD98C904F3E74EE7D4D98D8C1E518EE5887DA82C9A85AA303184D2936C45274B262BAF37C0D32FEEE3BB3FBC8D9EBE2CF9FE34238706F139167535B5ACBAF8729A9A9B30B30986D60EE7F9351B983C713CA79D36033DA4F1D2BA26D6BCB089475EDA807F54030B4E9B44195DFCEC6B9753A442997329EC5ECAB78A311B747E9DE4A0DFFA627BB702B47220D62D55A9398E501C1AE14037C9B53FC4DA76273E2BA2B206A57A1280164AC36D040A67ED72B496D8D9E546BDBD2168496A117031F520DD053318B6EC1B1835D3A47582A389AAD3AB4B073302B94A57191AE538DD7F1EE0DEF49E2A4FD01BE0D0746593D967693CBA66133DD93C468C6E44B3D30AA07BD259BA62094C2FB2CA73D87F072FE09DF1EC6A247B90D9D260F9A25034BA9D25A8D9641311621D6DB41F3944FBE183741E3BA4AC5023199D68A09CBAC6899C79C65CAA2BCAC824530444126DA5D5FB121F67D12E2B3F684F232DDF5334869545135A43650B4AD52C15B7A7DC302D457FC8EF5AA9A45AA0E322B54BA458BC603E13EBEB70A21DCC9B3512BF6EE33334749F467BB7C3A148922F7CE7F71C688991EFF331A930C555172F533F7F7DEDB35CB1F21C3A7DE53CBC760B4FFDF505268D1ACA973EBC92C63175DC74EBCD541797B364C1220E1E6D2762867872C361563FF70CA38704F8F4872E665879087FB890DE588A17D7AEA7B5F52813C7D6B36CE962CACB0A88A4B36CDEDDCBBFFFE076FA7ADAF9F247CFE1CCB91355959EB275D28E8F3CC76448651976D0A746B3240650826085C697516ECB14B37F3936421B895A4657B40FA44867FA300262472B81088544123A8F3FBD8E87EEBF93A50B6773E6A2D3A81F3E4C8D8EB7B476505454C4A64DBB993DF7747EF2D31B28ABA862FCC4E9FCFCE7BFC1D08324F3F2088EAAE7CCF95328A68BEF7FEE52CA0CB105F6288DC1A1172701FA9FBB3EDF8D00ED6E8F845396E699F0AC3EFC01080722687BEEA273ED8D049347309C841B082B9E1B1284EA255AFA84E210372E19C9533CB6DB3C14DDB0EB4CEA5207C71841E9DC8F5339F33CE55FE020DD75AF23AD9A7003C7581A204AC3D03FFCF1CF1DFFBF7B2F6F8C505E9BA5416BCCE6DEA7D711AEA853DB62194D9614EECE689AAEB854426E94D5E0DDE3DF7BFC133FFB375221FFFCEBCF1D87DCE3B9BA6A4FBFAD541E620DEB60C84875324A775B2BED87F67160C76B6493195269875E7F19764139E3264D61EEAC59141862A69F560D2AE17615E86771134094878654D22E080BCDA14B828B00B470CFE203225FA624A228830BEC94A97CA9C5A324A91944FBD254550C25D9D6C4F0723FD77DE4FDECDEBC9509C36B19337E383B0FF7F2EBFB5F62C3A104C75A2314692657CEAD519CEDBEC347D8B4E6393E72F985B453CA6D8FBEC8BA75AF337678355FFCE8794C9E349A8EEE2E52BD3D541517D1D5DD4747C4645F7B967B1E7D9A506198913585D496E85CB472053E43C71F2C50F98CF9799E03AB1F7EFBC71768EFCEB267F74ECA0A35BE72ED2AEA6B4A4967D26EA880E510B092549715A90945A5159753DAF093148E45F7ABDD879571DD056537A254A372CD18367E23432A99F6405B869FFC585A8023879A195E5B8526C9296993F64E9B175FDCC4EB1BB7F1DAA6EDCC5F74364F3DBD1AF4003E5FD87D4C4DA3CFB0291C375CA5B514395DFCE7E72EA354F7E60EBC895E654DF6372CDBC926E15B5E6DEF36807659D5018A438CC1257A29E087BC601CAD773D1DCFFE1AA3ED65F2EC1ECF50C95DC18583969B4F19C50B60BB34894093A20664FB2702B1AC68890D7A7CF5A4872D65E4F26B71FC7522C25351B56E6BF2C46D9A3B91E80601FC3FA33ABC825CE46512D3B5FB789C079F5BCFB0518D9457562AAAC5D402B4475374C6D26475BFA242DE78050C70C3EE69700227E87DC71DAD7E67B71301DA6B164A234AA9FBDC400425BB938494AC49261E23D6798CEDAFAE26DED1492696A4D7B449F80AB18BEA9931631673A74C40D7258FD0C227409CC990D5FC98A6C8F0DC0194018096C943A91605A05D6BD18CFA9DB40270CDCA62A765BC3BA55CFEAC503E7B9A24C95A236C479830A29C53268D21DD7E88CBCE3E9D5113C6D01471F8E8B77ECFC16890AC69506027396F52014B4F9B861E0A736CFF5E268E1C86162A645FF351766CDDC3A8865A162D9C4A614198D5CFAFA1A220C094310D2423095A3B22C48D42D6EE6EE5C1B53B683DD6C4D205335971C61C1AAACB48A513F8030686DFA0A0B28A9DCD2DDC7FDFCBBCB8FA1546D5FAB8EAE2455CB56A99FA8C62968FBBEF7F10DDAF33636C2DA386555156568563BB010EB1341C6EEDA6A3B79768CAA4A3234B5F5F82685F4AD1414545614A8BFD9416E894E585292F08535111C417907206023285683924B3267D699BB5AF1EE5D7BFBE9748B7BCC6A0EB16EAA5BFDB59CDD5DCDB199221879289F52C3C7D22F9563BDFFFEC15947853A69EAAD35516F5CBEBBCF3ED24C5F1DEA13806BF1355F3A9B3C520A8003A0DD611929BEEA2EFB53F5260B6E297D46AA9A244A7ABBB2D659FED479393596511BAF97612E523548968A40D6FC823A295931C722A23567D15C73F5A351105DC5CB819E81BBAF5BC0B6FEAE41BFCC3778A7A72A5E5AA50518369B0B1B98B879F7F9DF1932753565EAA9ED5C4A700BA239A51D1566F366C32D8A4DF0568258EFE9B9322D75C7C27303D586EE7EAADDDB46F7758DBE58364ABEB0E09D9908ED2B27F07ADFB7611693D4667573B7D698784BF023DAF9CB3969FC798C6E16856125DA80D69ECD98ED22F3B8A67769DEBC436D4E599B364BC0ABA7F30451A8AE2C121432FE98C38FD6066524C983A994DDB9A884475EA2B020C29D2195651C282999399505F017921BA1C83CFFDF07E9EDF791CCBC923ACA5995F0F0BA78DA27EE810BADA3B301319AA879451377408E1503E3EBF813FAC73A0E900D515352E676E9AC4DABB48C7E238C2A587CA7978C37E5ED9B495DEBE287595E54C18DDC091437B0906FD64B23076F23456AF7D999ED656C60E1BC2E52B4FE182A5A7505E5444C6D6E84CC217BFF255EA87D7F1A96B2EA3B2B080AC3453351F494DE3D1275EE7D127D6B37D77137D7171AD73ED45FD3ED402260D71196DF7E9594AC361C68F1CCA852B66336FCE04259DD32D0DDD32C8180687DAFBF8E12F1E66DB8E367427A0DE93245D5852C438723D48B1239FAF493C68523B671C73678D243FD5C67F7DE64A0A72E7BF9708AF1AFCFDDF3B09D0FFF05A7BD755D0B92EB0C0B29D4BC1736576E180786846A0F3558E3CF4158AD307084A03487C2184AF960A5A260905A065B25099F9BB00AD92BE354379E7FA64D3A7DB44ED7CACCA69549DF579A83C4DF1D0EE4DA88481944397F47893ADDB3F3CFA7FE70EB26FF446B505E864ECE6A5FD1D3CF4FCEB4C9D3E950A694E6990B6754571B4C72C35A8A02EA037A985DD6B62A04C56CA8B4137F5F377B098B894BB50483976DE5BAA14D5E272FEAED5A9DBCD57495B4A556311EF394EF791FDB41FDC4DEBC1BD44BA7B486703C48C62864C9AC7F46953185957852E032752418B4FB348E9BC082B44B592F1680D71A513158780B10CB348FE6046A2ACC4A4DF52F486168B32ACB284154BCF209EB449A6FDD456E551566850140A93E733081A1684F248E84156EF38C42D8F6D65CFB11EA2BD5D4C2D4B73C6C45AE64C18453054CC238FBF48DDD0121A470F537B3AF197CEC8591208535B554F536B372D9D7DE8F128430A82D414FBD5CFE38122B61EE8E0D5ED87D8D9745805C34AFE61C0AF93362DE50217D01D169D329A0B97CCE68C59E3290EFB94CDAC48E452E81C3E7294A28230D545C5325C48467348E8061BF61DE73BDFBB95434D51B5FB0886FC549555D271FC2813C6D5AA0A78E3EB3B104E50F7FBC92452AAA13E6FFA103EFC81F369185643C074F05B1A294DE74877929FFEF651366E3DAC1435AEC45E9AB492D22DE79BE784A86589FA328C5C388579331BC88B1DE5FB9FBA92704E5E9FB3EC7DB353FE6405FD1EAAA0BD982601841C400BB84A4C5C5872DF9D0C5807387CCFBF92DFBB95902511972E400B204BC56D645D80167A433868E50FAD4E3CE1B3655845E0D624E504B00A47E09F742505B3AE06BD143419FB1693254F2EE4910A2EB736484EF40EC0EE44C4F4CA706F34567C9F5FDCDBCEBDCF6D60F69C53282B2EC430644B6AD0DE97A42D6A91D1430AA04F80DE77D6F7737703DE0BFA7B6F2507D0EE40D01BEE290A1BCF4FC32556BC06AB2D1A741B27932419EFA4B3E50087B7BD466BD31ECC7882A44C6F960FA77AD818264F9B455D75397646647102C602D2E229214E6E12FEEA4AE984D21080CEC8308A8C8B4B911E8F819551B983562246A16DB2EC8C39CC1CDF407E300F9F8CC8FB2C35C5EF234F59CBFA7D59F56F2760882B3FFB8F46D8D8D4CEDA751B195DAAB172E12C7C7686B6CE345D7D720E9944221D2AA1243F3F9F8C9565C498A904F387F0E4BACD3CF6EC5AC24E92E92387B0646A03E545214170B2FE42BA6259366EDFCFA1960E62BDDDCA052F100E50515AC8F891F55CB46C0E7515850A4875511C19EE14AD6ABA59A24F92F06FD73637A169BCB4FD08BFB9F379B66FDB8F133331B42465A5797CF05F3EC8FA97D63075D228CACA4AB8F39EFBA819D1C8DE832D1CD87F54A5701784B2CC9C3C92CB2F5ACE9486A104327192AA9518E4916777F2D35FDD8A4F979DA386E1F36388BDAD251ED4AE8DAD2CC6315F86F1CBE63073C2108A12C7F8EE759713CA099E3C35526E80F00457819300FD5E02E81C308A9E59DE971B4E29148798A4BB55E27132DB6EA275CDCD546A11F46C5C81B16A05AAB05897AA90EFB9369B9256EC65FD49DAB78A8D4FBB61AB817292E5A75138EB6AF2879F0646B1AAB4DD7173975F956A5A00DAF5F7C81D6BEF1FEF14A80757D01EC5B1EE4037B73EBE9629D3A753573714BF26CD32E84E981CE9CD907464F118B0ED7451F69F481AF4169B9CDD67FFD93208DCDF0AE7070722BC796C564ED5E2FDE94D370AC888CC2B2B86F9E928D1A34DB4ECD942D7E17D7477F512370DD2814A0AAA47336EFC68268E1FA9405046B5E5D064D31934DB56923C45693836C98C98EF8B7EDA5176A264C401CEB511AD2ACA67E1B4094C19398CB0583167B314E4E5910AF9C9F8FD6006D4B911CA33C80B0BE82508D83A01DD4F141FDD927212D0292D2E24914ED399C872D7435B4998699A0E35515359462CD243C330E1A5AB78E2E59D1CED8AD2934811CA46692C0F70C5C2298C1852AA8689D430ACE123AD3CBDFC4A9F6D047C684183FCA041796188CAE230C1408096B88F275F58C3BE7DDB587CEA0C16CC184749385FA5649BF8E9E8B3B8FBC957B9EFA90D1CEE4C6125FA983F732CE79DB3904C3A4243C3040E371FA5A7E3B8CA65D47D3663C64D2212CFD0D5D64330E0E7A1275E61DF9EED0C29F373F1D2392C3B6DA272DF13DAAC3D1AE0F0B11E74DDC0CAEAB4B5F771EB6D0FD2D39B563604928F298542DC309973D1994CA8CF674C7E8A4FBE6F29C1BF0168D75746EAEF01AAE36493F02D11FA5D4771F4D776B9C10A57B62032BBBC90E79761F780B98383B77F93F2F876027694AC17C5E76EB1A5B1E8E615E6A41839AA4301B8C235D1D442863CFA7CF584C6ADA062CE353879A3D07429B1A47C7123A75C758837BAA27059FE973B33DDE77ADB37D51A175EDC2DCC656BBCB925C60D773FC9887193983CA991806693312DE2598D83DD492557736D51079EF0042AA3BF9A7DB357E3F2C46FF7D69FA892F3F51844759C706E79EA16B54B515ED4367E5D232D5392423325FAE86B3B4467F3768E1FD8474BD341B2FE52924629D5A3473363DE1C8AF30238665A49EAA4692836AA99B418EDBB66496931CBF7941D3816995814D249F44C8A698D0DAC387D06F986F0B1210ACB2B698FC6696A3BCEA13671DCEB52664A62B13561DC08664C1CC1A4115590723FC780213B2B07DBA791F169FCFEA12DFCE9916DC4120952991445C52544BA3A185A14460B97B3E77852D1647636413971E68DAD62E59C911484C33477A58844BA1839BC8621794182B2EBF105F0E7E793F507282A08216E80BE4010CB08F1FB0737F097479FC34C4528F3F7F2A56BCEE6DCB39611F4E7ABB4F40D3B9BF9E67FDDCBD1F6043EF9F893C799D850C8D7BEFE254C1B6EBF6B0D9BB61CA4AF3782EE6408871C6A6BF3F9EEBF7D91F2908FD7361CE27B37DC466B670F5A36495DB1C91F7FF1350CC352693326416CDDAF06C26C0AB028E65737DCCD5F9F5DAFCCFB2DDB51B2BF84CFE4CCCBCE664C95C6E9230A5875E66C022A62C73B135455639315E9A5E2AE4F4E12FEC3EBEDDD06D039731FB78E1ED8CE0B7F9717928C3BC1C604386D245FBD89C4EB372935877825AB0C4BB1B4F44E8C5C432D171AAB7E59A930DCB41619959609AC845688563195A2799FC43F6C31E8794206BA882C5560C06D1AAAE1558571AE7CCFFDCE3B04E813E8054701F4FE1E8B1FFFF9418AEB46336FEE54826A043A8B903807BA527426855377ED43DFD1ED1DB8D9B9A3E3DE02A50278DDF058A56871CB79AFAA973F72E3BD02D2728C25785476206AAF8E26DBEAEEA37437EF61F74B6B88F4A5C81022535CCEB071139934B691B0DF8FA6E47332C221FADE8C4A3191B25ABC375232C22DC72493C49F3531CC344E2CCAE9332673D6E93355EEA02F58CEFAAD5BD9D1B497E663AD6ACB7ED5A597D2D4DCCC9D0F3EC8BC39B349F77631A2AE828F5F7D294165C865A99415A9700F7445B9E22BBF637B5FA51AC397A829CBF12BBDBD9EEA5352353350A4CEC3A096A6CA97E6DCB9E35930A946E9F2FF78EFE3ECDBB38B1143CAF9D465E72B7E3A1B2CA0CF3688581A663C467D7931E5436B48EB7E7E7FFF46EE7DFC058C6C8A52A3836F7D6A258BCE3815B400712DC48BAFEFE0F35FBF5735EDCA43262B16CF64DA84A18C9A3085E75E7A9D1FFDFA3E8C4095B231D0AC34012D856DB6307FCE68BE7CEDC7D53179F8A55DACDDB0837DBB76E3375BB9F3F7DF26E417CD4B064B0D83192A0DDDD28A698FF8B8FD9EBFF2F4731BC90B0425BA9BA4AE93F25B2CBB783163CB1D964F19CAC25326286FF0012F758F5254678214392701FA1F5EA7EF4680CEC9745C55860B06019F4138E82538483828499CE3CFD2FDC067C933DB7074A1354C25DE3FC17F4255D332FA2D278F1A045795825CFCB2A5731C43C502247C15F8275C4EF1CCAB30C223400B7A55B88323DC602EEFAF1FA0DD6DDB9BEA3EFFE1A732700755906B8EA2325A531ABFBAEB290E441C56AE5C4CD8B6C4939D94A3D3DC9BA1A5CF549E0B27D83BBEE1B9DED81C3CE199DE2640E7EAED9CF9522EF1D07D985C6370B009931227BA5A721904143AC290741CD9B3B8C936562689D97D9CA6D75EA6FD5013C958941E3B88AFA48AE1C31A18397C38F94191BEA531B3E24467AABF8B524334CF12F125BCB43C4BAAB793906D32B4B8880573E730A46E28B61EA2B52BCDD34FDECFCA734EA728AF503527A74F9F423295A0F94833132636B271C31E6EB9F34E2EBDE232664C18457571908A50480DA924D0F8D5E33BF9C6EDAF1132B28AE736B57C742388664A3BD76D90CA3965D826412B454DA19F99A3ABC824BB38D67A80B021ACB7CEF279D319515B453258C1D31B76B266CB5E92DD1DCC1859C7B59FFC30966EF2E05F5FE7AF4FAF51DCF7F861857CF9DA8B686818AA766E71238F879FDDC637BF772F61BF4E6528C6B7BEF219EA6A6B78694B33BFB9F57E3A6229B28E9F6036A824874636834F8BE1985DAC5C3C8B0F5C710109C2FCE14F4FF1D2DA8DE8E9A3FCF6C79F65584DB1440FAB54F8B4E9A337A22BDEFD967B9F60F3AE26B27A10C336D410554CB7281992CF5967CD665A6D888B4E9F407D6D850AF571D37B646B95BB5EBD85FAA49BDD3F4682772340CBD0895BB9B92A0CF1E408F97C8403C223BAE0A0720763AF72FCE6F7536CB77A60995521962EB0A8B20DCD91955CC0DB0508F97E2E67CFED040A57ED90D60B38EE9F48CDE24F51D270266845AE91BEEDA851DF7E9999375CE21AECBB8AED77C01C789E056E0A94783C48B32DE2E8DCFDFC366E7D7A0BE75FB8925115210C5DB4D03A87FA2C0E7525955638374C73C2A7DFAFDA780B1AE31F15DD6FC97EE4267672D5B1BB58B9D22BD7E7E4445D55CEA743D82137B1DB4D6291F76AABE3E57332D8B11EE2EDC7387E682F070FB772A4A5033D98CFB87113A9AF1F4EC0D03053096C9530ED8E7167D49734892D458538F128F515C52C9B7F3A5555D5EC38D2CEB69D7B9935650AD5253E6A2B82F8FD0538A2CEF11B6A043AAC675533CCEF17C99A8FA696767E2506FC93C7F2910B965059948FF008AD3ACCB9E6CFF4F675ABCC47D329C091455B93D807652642C88A531474282E2AA1A3F5183E3342D08E70CBAFAF67ECC8612AFFF0C13B9FA4ACB898C33D295AE3695AA226BB77EE27D2DECBE2B3E6E2374C7ABB7BA9ADAA64FAC4718CAC29A7A13A5F71F7B6A1D36987B9E99E6DDC7CD7C314E7692C9C52C3FB2EBC9058DCE60BFFFE4B224E1ED9804E36EB10C8FA096886DA75189A341953F833C738EFEC799CB1F02C9E796E2B9B37351339BE937FB9642EABCE5B4232D6AD0CAD8EB624B8E94F7F65D3CEA3644305A41DE9A186B0D36E6F2711CA306DE6184E9B3E923327D7B26CF668957321CBB41A8C51AA516FB19686CFE0F3ED6493F0AD81FADD08D0EE36DAE590C5D14E2AE990CFA0C02F55ADDB7C1006C2486FA7EBEE8F11E8DB89E148FA8A979BA712543C0E5BC0D991F11459DD4D0FF8C564C915FDE79ECBD442F4EA75949F713505632F84E05055596B429DB82D0F57F4EBC5805BDEEE4DF1D96F97DAF53E144F0AADF85A01E8946EF0FCAE0EFEE3CF4F3065EA54CE396D124E3685AD1B1C8DD91CEC4C90710CF56F858F4AE636F8F9FFDE0B71536A06DFBCB0ED13C896379E49390076178501F0750F88D0496F04684F2DE381B85B7DCB2AE48915D53FA57968423A46A6B793D6DD3BD8B3752BDD890C2555B5D48F1A4D5559999A4CB4D20905D0D21C14BF0D01694D74D3C938A16C8673E69FC684310D1CEFE9E3DE175E5389D9D75EB884DAAA62159996F695D21E73686EEF54CA889AA0C6A431751485754C2DC8918E5E7E77EF63643209AE5B712AA74F19AF9A62BD3EF8C11D9B58B76D1B695F909E88437B4F8A84A750F165924CA90972EE6913A81A56CFB32FAC27DADBC9B8DA22FE3FF6DE3B4AAFF33AEFFD9DFAB5E91518F4DE0136809D1409768B2A9428CB56B3E4E52CDDEBB8A438891D47B937D7292E711C3B766CD96A962C52A6444AA24491144991040990041B00A2770CCA00D3CBD74FB96BEFF79C99010836E52FC9336B8104E6FBE69B53DEB3DFBD9FFDECE7F9FCC76EA5BDAD55F1F2FDBB8F303830C2A9BEB3AC5CBF8C9E254BD5B5E5AB0FBDC6BE3DAFB06C5E3BBFFDABF770F9CA7934663238418C253A225239383E7D4186FF7DFF6BFCC3F77E444B1EEED8B8888F7DE803ECDE7D96FFFABFBE41C96B52DCDCB66DACAA98065BC4B6D87C054AE5CBD47AB9F68AA56A6575E66C91FBBFB58543BB9EE543B7ACE2B39FBA874A7184D0CDD17BBACA57FE7E0BAFEF3F4DCDF1D50756C6EA7DE1484555AC0E8B5B365FCE954BBBB8FBAA55ACEC6924768DE8ACA42F4692765A7B2691E730B9D24C93F02D23F4CF5E80369969CA1830013A5065B7829F51AEA60469690A3AC1498A2FFC19A3BB1EA239EAC70EA5F495DDDB8405A1E7290CA12E2B46DF4EDA71C6F5DB4D106E095CD20F74A95A4D38F3AEA2F1BAFF0BBB6D03B1DDAC9082E12748363082531B00002000494441549E78675966AC5CFE29CE1BE66B5AD7FA6277E3821B311558051717BF148BAAE57270B8C67FF8BB1F50A987FCF34FDD43502F29063852B375A860B01252777DD5139187431A9DF2502AB09066F7933E8D46FED19CF7F9DE8DA64E9F3A74730653A08679C53C58E968B7F94ECADA98AE8E77FE07A570900C2D983CDBECABD24BF2A4C987C1DC4543421A7CE5E30739F0CA8B9C38D3479829D0DCB388853D3D34DB116175823814B823543E71B516AA30935F1D67DD82D9DC72D515F80D2DEC39768A675FDFC3DC8E263EB07115859676AA9946F6F75578E2E57DEC3C7A9C288868B71DDE7FFD3A7EE1BA55B4153C1DA73F59AC72F0F03196B7E6D8B466896E3A65CBA66F22E6ECF030E5D8A277A4C2F79FD9CB93AF9C24AA55688C2BFCBBCFDCCE476E58A61A30670726749271765B236D7E84EDC8FDB15463B95E0B2996CBE41BF2F8850CC3B6CD17FEFA251EFDC1F7B964E522FECBEF7E96F9AD1651197CD167118357EA548918A499BFFAE6AB7CEB912771E332CD411F7FF49F7F9F53A7ABFC3FFFE32B54FD3623102699AC70C46D8B9A65E3591E4EBD4EA17E9CEB372EE1FA9B36F3E0C34FB3FFF0286EE534F7DEBA824FFDD207A8944609629FBEC190AFFDE3333CFFDA616A4E413729D145716C8FAA5DA573652B776EBE94EB167472C765CB69CFB93292A87569CA919F5479BC605DCD04E8B74EA02FDE4E4A76BBE43AEA9C442DA45A4D89096FF379EFE1256B68ACF65E73CBC958A74155A6019300ED895852C637CA590A4B08A43C4138B095D1AD5F84DE9F908BCBFA7049096AC6A725DB342142ACAE84B6645B55039DC4125A9360AED7C360A715B79BEABC5B9875E527B03B2E25B60B096D2852DA97AAE24970D4006D444C27BFDE4E24635A80D62452036B4A9993211B6944390CC5F0ED177BF9D237EEE7DFFFCBDFC073C58D5C1C476C15D7393430C6B0249F4A3F74951D201AC8E2B42D1E7A12A325784FE9364B969B8AF65ED860BC30D85E1874D534CA98EFBE871B2F6F95CB2E7F541236310116A35F2FAAE9F7AACA46114A644876BC9FC1A3FB3872F000474E0F10B4CC61E99CD92C2CF804F531A34C270E29625F25A553699486608CCFDD7317B39A724C786DBCBAFF18834367B9F6B2752C6C1439D966BEF3C23E5E3D32C091C132E36A4A6BE3070E0B0B2197CC0AF9F82D9770DDBA0594DD1CDB5EDAC1C4403F77DC7C15AD4D0DA64F91DC33A9967A4BF0B51FEDE66B0FBFAA06B9F9DA10BFF1D1EBF9ECDD1BB5CA92B7CA008AD0E9F4FC059C95BD370CB1F54627D58EEB31107BFCED0FF6F0A5BFFD2A1D2D4DAC5DD5434F7B8E79EDDD2CE96A67E3EA85F899804A5466D49AC3038FBFC1FFFCCAC364DC9855B35C3EF7C97B98356B167FF1F78FF093970EE07A397D266C31A8705C4A91A8CAD8F8D5120B9B8B7CFEB31FA07BF132BEF7D81B3CF993D761EC10BFF3D99BB8E6CAB5D4AB45758B2FD51C0E9D1EE5F448CC8BBB8EB37BF7614A6531BBB0287417B8F2F6F5AC9CDBC0DDEB16B271E11C7C394DCFD63EA0D1B7313D41BD64172E96990CFAAD9F9E9FB50C3AB5CC919BEC86AE19E1B6EAF8BE4D2EE31B6D671967B5641E5046ACCE5239F820235BFF924CAD8F4C54575B2B51AD0B1C195031AB47981C3A866A49FE26EC4ED1DD9010215C693376ADAC69B78162D4893DFF66BAEFFC1D626F0E1192B9273E875AC7990864CC7EA6497FBE3DC2705ED26A72D17456DA302524E312F9A763E598FFF4DFBFCAF537DCC6BC4573A80B0E1E1B2DE893C58823FD139422997634830532BC239EE5260C18332A5501D44335E3EE69363C35C09EAE99748598833F1F5336B9F0DB31AD2F1C339FFEA9C62232A93F1472929C5F60266177C84627E53164AAC3D487FBE83B72889776ECA398EB66617B2B2B5AB2946BA39A4BCA1878AD52272ED7B1C6FAD9B4B48B0FDD72036E546724338B2DAFEC251E3FC71DEFBB8E06CF657F39CB17FEE1C70CD52C828C50C7E4381C1DF5CF95CFD1563BC947AF58C0EFFDCA07A9DA2E83136576ECDACDA56B97B0746E8F8931168C4470E85CC00FB6ECE7074F6D674C8C5FC3228BDB3CFEC527EEE09205CDBADB0A355346B16D2FAB23DE325C23F87B6B531385AC8F1D56553B44B8D165BB407F35E48FFFFB9759B0780507CF0DB275FB0E7C7C96B4FBFCDE3FFB202B167712C555C6EC1E1E7F693FFFE1CFBE8FE73974B9E208B3825FF9C43D9C1828F3C7FFFB7B1C393980086D485355138D081A182353E9E373F7DECEBDF7BE9FEF6E3DC07D0F6E65A86F944CF1307FFD07BF4653A3DC03B9322E4120CF8A47396C64A098E5B1A777F0F08F9FC7CA5BACBA6C19D7DDBC8E567B820F6F5ACE8A599DFA3CE8D2731278232D9B2EF60CCC04E89F9F002DF083881E192F4223C62FB655223493936915C12EB571E818BEB3E8088FBEC4D8CB5FA47C6C0B0DC13099D004D310334528016A3257D4C02A99A4341C258C099D4BA58735E80A64E05A5906DD25345EFB7FD3BAE1C3C474AAB3F1D4A08AA4F7D342D19B32868BDC8FA46A49A10353F827D389A9BBB5E85B5B50041E786A2FCFECECE5831FB9CD1CBBBA8FC368E4F3C6B121866A12EA1C6CD19F8CABB88900AF08EA981A22E54B27CDD604E6982C51260F716A0B4F83924981CCF7CDC0C95BDB65BD356B241D0C4AFB09E97D08353BB544994F86376C1BA73E415C1C66A4F728DB5E7A9D61AB9185AD4DAC6AC933511FA312D7949F1357EBB8E345DAAD2A1FB87E034BE7772BBC33E076736AA842971BD0D3D182EBD93C73B2C21F3DF22A457C42E1B50B8E25138AD8348463E4C77AB96B49137FF62F3E4D20C608BEC796175E61F1DC59AC5D344F7D042B56C4379E3CC0571EDECAD9C11A19C7E683B76C62C3E22E3AFDBAFEDFAD8D18BA261E35B7C091DE331C3A76428D095CCF53FBAFEEB6162E59319FD6425669A09A1C88BB8A8CA97B1E2F9D19E57F7CF91976EF3A4C873DCAEF7DE67DDC7AFDA5F856C870D4C233BB8EF23B7FF25D350BCED607F9F54F7F980FDD7E19D5D066DBAB27F8CF7FFA654A32209975557AD513A3E5CA097EED9737F3C97B3F4CAE39CB9FDFBF8DBFFEBB1F910F035AE3337CE94F7E0B2F63A90942183938966B0C12EC26427F36DFFAC1737CE3BB8FD1BDA08DBB3FBC99395D197A0A11775CB68CD67C065F866E129FCF34839EB6E4669A84EFB6E2FC59CBA04D8036D31B6E9866BDA1EA186433F2A019BA9C6489CAA1A8C920C43906773FC8F8B6BFA3BD7E984C5CD56C398E2493942942611208232456CEA744572F906C5C5EAB118BBA9750F1C23AAE586DC95044761E679C15ACF8F41F12FB2B8934A027043EC111DC0B1B74C91D793BB6441AF792809E5486EAEFA726AA9643DDB2149F3D300E1FFE9DBFE2B39FFC45D6CE6F5178458D742D9B9D470738557128E211382E8E60B962EFA48335924BCBB5496420F5980D269F54DFD360AFE9C1D994F4531C6BF39A64E06F17A0DF6A1DA69A3929D4211B92DC5783535AB8B64BB526C31A023D05D8B512E5BEE3BCB0F50586CA214B3ADA58D490A11855294AB35004B14A25F213135CB77629376C58822FE3D1BEA39ACDA335979E7C4ECD5E23ABCCF37D75FEECD1D719AA6508EC3C9665065F6C274FBE3A4661EC241F5DDBC91FFCDA3D947C97370E1DE2E5ED2FF3A13B6E64517727353FC36814F1FB5FDACE3F3EF90A0507AE5C3997DFFEF88D2CEE68C4AD8E29B7DBB12D2A91F0257C9E7D750F6706C7B9FCCA4DE4F30D542A81AEA71387F63276E628D76F5CCFBCEE36BD1FA6E96C13393E677359FEE63B2FF29D079EA4B136C047AE5AC0AF7FF61791E55EF61AD9716C94FFFAB78FB0BF7740250AFED9273E4CE5DC0916CCE9E1CA8D6B787ACB4E9E7FE1054E9C3AA1E252856C8E4D972FE577FED567E93D5B66EF913EDED87F8E87BEFD087E6D8465B32CFEC3BFFE846A9E587E8E52BD815ACD25AC0454438F1239FEF6FEEFB0EBC851DADA6D7EF3D73F4DA13ECAFA855D6C5C398F5C467A1F815603BA46A663CEE9A29EFE1CCC64D03F4F19B4B8589B3BEE89D4610204FA9E455627092598099EA8409F091EA1E8389C6664EBFF24DE791FD95886770533480AFF840B275A1D81F8A6C9C86FDD2CAEC0916110ADD5F0052B8CEA124AA83B8D949D5964567E90A6AB3E0BF9F926482705FF340EFED4C59F5C9417ADF3CEC7E6D220ADD5821179126C364CF0E301E0737FFA23F6EE3FC8BDEFBF85ABD62FC515A8C3B229E172BC08BB4FF653B58D4EB05C13E11B1B9D66D3B094C09F203CC948F8D453631A87E921258DC0A4AC9F6A049AE6A80A35BFC72FBD6DB6919E944A253513354E2CD3704ADB56C6817080193DC7ABDB5FE2EC4891B98D05BA9D887228F0469DB85A251F45DCB46135972F9D4F3E2E917165C382897C3B2FBE7188D3078E70F76D37D1D3956724D7C90FF69CE681275E67342A1089008B5C8F20225F3AC7B50B5BF8B79FFC004B9A1D2AF90CE3B51AC5B37D2C9CD54257739EC1D0E544A5CEE7FFE0515EEF1DA360D7D8B4A49D5FBE7629972D6CA3CDAD51AC476AE47A6A709CDDC7FA685BBC9EC79E7A8E97B76F57F17BF1313C75E60CF36677F1B97B6EA5C50D98D3D148474B83B28A222BC3C044C05F7F770B8F3FFF1A9D4D79EEBDF56A3E74ED1AF26E8863854A772B5B190E0DD97CF98167D9FADA1E1CD9ACCB252EDFB0948FDCBD99037B7673C7EDD792C9BA64B24221F479FCC7DB597FE90ABEFFF86B7CF31F1F56138B063B60F3A615DC73D755E4BCA2D2EB2A718117DF18E0AFBE783F9E02653695D8A29673711BB37CECC337B27E6917572EEA66FDA22E7C6567241B6D0A7E4DAF0E67208EF7F6A4FCEC65D012A0CD13EC8552621B184004FBCDA877A2D826C14C839234EF62AC7098A117FE9C70E7D7C885FDB83ACC226F17B68629710DAF5A1A6A316E60864CA4032F19B504119162745C719F88A88B929E9DA3585846F3A5F7925B7D27716E01911ACCAA6F851ED779F8EC7B0DD006BB309D3D6D4A197B2FF9F688058FEC19E4BFFCF5B7C8B774F18BB75FCBF2D9CD5862A0EA65295A1E47874A1CED2F325E8F885D4FA7290D9163EA29491918FAAB122384A9703CFD699A9A0FD400AFD76E6AAEF32D33E5F3B97A936FD34F9E2600289E919269A5B8B914FA6A46AB1BA985285D5B137DBCFAF22B9C1E2CD19DF3E8C9C6542B1306BBADD798DFD1C60D976FA0AB204E23559A5C5B47B427B20DBC71EC145135567DE676BF4ECDCF32916DE1C937FA78E2F5639C1C1ED381A07C7D826B9777F0993B2F6371CF1C85048E0D57D8B97B2F97CE6BE08A558B34084D7879B61DAAF0DB7FFC00A76A395C27265739CBA5AD657EF3DE5B58DB2DFCE3066A769EC162959363759EDC7592C79E78960FDE7E336DADCDCABED9BE733FAFBFF61A97CF6BE0CA55F358BD641E6B572C26EBC68CC53EA7C602FEE4AFBE4971BCCC67EFB989F76D5C430E19C611F92C51C1AB2ABE3D4603FBCE54F8FBEFBFC02B3B0F532C06B4B57A34E402DC609C5FFDF44738B4FF38995C0B1BAF5EC77FF96F5FC4CF75508F1C4EF51EA7D52973DDFA857C78F3E574B76794BD117A2D14E3161E7EFE180F3CFCAC8A884953BE1A5708B23157DFB4913BAF5DCD82269B1B572FA13D6F7A42625E21F75708A81732812EDA4D9EC9A07FBE3268330422BACE52A69BC93F9938950C5ADD51C2345B34AD2F6954397199F13D0F30F6D2976898D84B361A25B08426E413076E92594A061A68D62D8C0E0D65AAAF98343A1C331823537D2AB169D914A326A2D6D5345FF529328B6E2676BB34F3310DC6845A9766108980FD74EACCD40679311A5E320492DA68A56F96869805FD41C49F3FF822DF79E635AEBFEA52EEBAE94A7C61418856B2ED53751D8EF697D8D33B405594EE9C8C561512A5D34A53E122AD0CD2DF9FF8204A1626E1517E67126453E687B9FA69A69BA2F76F5E63E7C1EAD35E9ECCCDF5D71AD9564FAFB9FCDBB8C2483523908DE1E0393A91E79607D8B37307A7CF8DD3628774FB01954A59191CE22ED2DAD2CAECEE0E9A9C8856ABC62D1B5651082AD433197A87C7D873E494D21E57CCEB60D9D225D8BE4FC92A70F0CC083B0E4AF95FA7B31073EB55AB59DAE9538EB3847E86871E7B991F3FFE08BFF5F15BB8F3862B55F1B0ECFAEC3955E48FBEFE635E3E3A42B1125388C659961BE05F7EFA83ACEE6E52F9D79A95E15C090E0F56F9BBEF3DC3E878919BAFB99C03FBF6A9E8D20DB77F88ADCF6F65F4D0CB6CBE6205EB17F770D5252BC9BA01552FCF50CDE65BDF790A11C6FFD55FBE8BA682674C09EAE26E0EB96802272CAB2441D56D605F5F9DBFFEDA77D97BE49C56164154A5ADC163C19CB90CF48D287B64CEFC1EF6EE39C8C4B8407D210D7EC455EBE672EF2F5CC7EC069BB85ED25B1E50602428F0DDE78FF1D0E3DBB5698B1B520E4659BF690577DC751DF373356E5CBD8085AD8D78CA704D8C9C4536DA68934EF59D0D39FFCD0B652640FFFC04E82471D31372924112B9EDAE6F200E615D68AE27138209BFD62C8B0AD6F801C6F63F42F0DA37C9958E28BE2CA22D76E826496AAAA1A1F8C8B48C320942968C528B51AD3020D2C0ED11D044A9EB6A5AAEF92CF93957128B2CA98E8F4F7D2554FC0B2C0B2FE03F4CC3EA8C095782454E6A87A49425C3BAA85B317B07AADCFFECEBEC3E33CED2E54B58B7680ECD1957F17219649808638EF64F70AE64A98B76DD3265AAEE3F2215A923EEC634577B7D89A894685BA844B652FECCDF27AB133DADF48DE980CA7BABDCCCBD31EE2BBAD9A619B46A6D9BD752268B64F64E1490AD0D7174DF5ECE9CEAA721AAD0625518ABD629C62E135681BA9727F27C724189D6608CDFBC7B334B33A6B750C6E6C0C028BB0F1E229BF559BF7C29B35A9AE86E6FD4E65E35741516CB66A1493270C762DFE961761F3FC9F844404326E6962B96B0B0AB0B3B96C9439BD08B79EDF8302FEC39C6DEA3E3CA2059DD51E1EA754B6816757C616EE07272C2E2E0609D2F7FF729F1C165D5A239BCFEFA6BD8AECFC73FF339B66E7D89DE1DCF71E7D56BB864413B57AE5F46C18BA84953D8CE72A4B7C8E1DE012A71557B249550A628ABD48A159674F9EAAA32AB45A60BA162E77965CF09F69D1866B81431305EE1D8F1A38C8D4E10D524D18870DD98B6960616CD9D455BCEA6250BCB9776B1A0A715576605641D84D233752947395E3D1972DF8FB6D27B7688D0AEB3E9EA356CBA7239B33B1CD6763470F5F2F96495C72E7D12D3DC1698F03CEC59D7D8C586A7660655DEF6C9F9598338CCC9A4A5F594C19374E6552C6972F0624A9FD93CEC015654845A2FD5E7FF8689BD0F938B07B0027137F6948B2AE43A09C08AD326015E54ED4CE96FB8BEA9C8BF69AD196FC328F628DADD788B6EA475D367705AD682DD649801C231368204D316A864A6491331BD3BE7A309934E2466B349329129E245027D541563EE2D07FCF9F75FE0F1ED87D87CDD555CB97E290D9E452442F7CAFCF019AAC089FE0A27068A542C97D0158D11C1EA4315FB51FA5D5A9AE8608E18D69AD521015A925913A3A70E54DD651218E262D0E2DB2F3CAD6D0CF6AD1C5D732F534EB452D3B44A31025719E13614FB193FD7C7F16327606294C6B8CA6025608C2CA55C07B56C33A19B25139669A80E73CBBC66EEBD7419793756682AC8E419A804EC3B7D8E17B6BDC4829EB97CFC176EA6D1A9ABF07FB6A181B22DA4FF1A3DB3DAF8E1A3CF72FC442FB7DD7815EB56CCA7909114DFC171C59BD2125D7F6DD80A0EBC63CF5946FBCB2CEC8855EBC289CD24AA04E8FEBACFA1C180FB9F7C8513A7CE70E7CDD7A98940B15C5178EAF9E7B6922D9EE47DEB1771C9A22E2E59B5481DC2C58BD1CB3452B65BD8B2F3305FFADE939C9BA8AB59AC27D563B5445766847B6EDEC02FDE7E03765D6CCF5C6D4A064E8E722832A9558E9FE963746C82D2D884928B0A199FD6963CF3E77492B7C017736526D42A2CB6B232A54EBD1290CFC89C80CB996A81E7769DE0E127B6D0D456E0539F783F4D7E91E53D79362D5B448BEF29A427CF990C8809C0A71568BA28B4F92BBD1D13A0A5369B71F57E9709CDCF5A8036AE1CC9515BF574B25B39A042B333D042DA614B32BD44F3D9A466E330F61AA77FF0C7340FBF88178C63CBE8AADA204B804E14E1645045C71525406BBE6EC64E1477354D31C32556615F15A3A9DA5D788BEFA4E9CA5FC2C92F0227AFC69D3AC69C967769D9974A30A6813BBD5F6FBA21A953F8B4EA508F47FE53258AA53670B8FFC543FCD1379EC2CDE6F9B5CF7D88F6C66695ACCC8A568718887A59C6438B5DC78654F7A1EAB8843AFC627489C5E859BCE554E254B62A0DCA8EA14AC9004EC2819E8E61EB7EA10FDC4FF1953692922AC864D449E6AC015B082762142BE2FB35B2718D5C6594FAC4087BF7EDA53A3A4A368C18ACDB4C788D5473EDD4334D0AED384191D6689CB9C553DCBB61219BD62E570717C775293B3986DD069EDCF202A74F9FE3DA4B57E3872582E2289BAEBB9603E70678E5B51DCCEEEA242A4D70EBF557B2A4A70DDB0AA9B83E4ED6E3E89980A79E7996AB366D605677878AFCBFF8E22175E25934A719BB5AC40FEA46AD0F8BB3C598DE8998DD67AB3CFAE4B3B4371558B27821E54A95DDFB8F52298E73FDEAD9AC9BDBC28A396D2C9A3BDB0CAFD8592A81C750DCC013AF1DE2EB8F6E653CF23468BAF5807C58A3A176941BD775F16F7EF59754B94FE445E51ED642C1F00D42548DCC8A950D5B4C0E4463CC76C5115D14FF6C63C2EB8454ED3C23B51CBB761DA4F7D809562F9FC3FC05B3A9B88D6C797937FB0EF7B269D306962D6CD1516E312168CE66123551C99E6526416B52A33B963245270D954DD5954EEF4EAE9A1988E3AD1FA09FCD006D52C9D812EEAFC930354067BD0B76665921C6F9DBC87E5AC441152B2E11165F66E86BBF428B354CA06C8E40C572D24C2ED0409594F849C0571DE3484A37471B4AF2FB45DB567E83EB78D4A30C65A78B626E396D2BEEA46DE3DD6089C0BF6FB05F8510CCA4E179B4E3E9B7473185692C06D3BD4BE00503B5887A987C984CA689CD92644DC3D580BD0315FEFEF1D779E98D835C7EE9E5DC79E37A1A0871C3B26E402532942D8FB205E7C62C4E0F15393E384ADDCD26929012148CA6B44C271ACB2DC9040D8E9FE4D309EB621A9A78D145F44E41DBE0EBA6144E5DC01309D9490D14C310C951A5109659D2D1CCD953C7D8B6FD058A62925B7318B30B04F976EA6E9ED0C928F49409C6698FC7B86D410377AFEAA6392B10491DC771955F5CB67C05C204461246830C8C44E5127E36A33A13F97C56E978D938A42D674C52AB991C7B4B19EEFFF18B3CFFFA510DBCA26FA1AC059137AD0A793122E7862CF0CBFC9B8F6CC617EA5E546722CEB0B77780932375662D58CA91E327E8EB3BABFAD5EBD6AC62C1AC0E464F1E6056A3CB8AB99D789EA7D202434E07FFF0D88B3CBBF30413E419AF06C4225FE8C4B8B5906C50638EDDC7C76FDDC01DD75FA66606A1536078AC482E97A32913105746A8D54C55580B8D3FA15867C96625EE3422DD2A8DD9E1D0E3C9ED87786CEB61EAE24758AED0D868518B4699DDD3CDE69B6EA0ABB591A66CC4D5EBE7D299CFD3EA27309E168892D868DB32811EA707E8C450597B3217E959CC04E89FB7006DA2586C9BA93379C0458B4307552E0C7648B75B02A297465BF38EE018A7BFF24BE4CB077165A4431A8022C328A57D6CE908AB52BEA409A9C2FE221D29A59B9127D514C1AAEA48B7E082A2C4E63AAE4EC095AC0ECE05F359F76BFF15322BC06E98DC2404F15079CD8B98B64ECEC1BEC958D3089DEBEF95FC3D25518863B53C68327423E6020E1C2CC36FFCBF5FE6E84095F52B16F1B1BB6EA4332792EB35222F4F39F2A9850E6E4EB0CC98570F8F7062B4C2784DCA5C9369598EA70FAD6C2AC2FC90586D8A9694129710ED2633F9770AC66F7E7D6A22D198F50A5422015BC691CDDDB5353313ECB92118675E93CFDA05B3D8B5E3359E7CF659C62A3113359F6AA69DB8A153843D4D5F8088C66882FCF829BEF0CBB7B390614281717C0FC7F5955E297A7FAE86923A76A1013B9357B7491512727CE5268BA29EFCEEE67C8E9AED319C69E08F1FDBC5035B0E52B31AA9267D014714F2C57E4A0739EAC46199F9E5E3FCD5E76E21EB0408FD53608E2A1E077BCFE9A8FA9C25AB54E0DF756C864E1F63F0F4515AB3361B562DA529E711EAD45E9603A506FEE4BE27383C6251F79BD5E547EE501807F8514CA65E636D5B95DFFAE49DCCE96AC0C91638D65FE32BDFF816ED1D1DAC9F93E7F2255D3467E48C456CCB25F6F2C44E96308898181BA3C1A952AFD718753A78FAF5D33CF8D45E4A65B9362175C6B0BD0AB7DD7805776FBE06B73CC8DCB60C97AD984F932FBADC2A3693CC3C2526C7D3F289F4AEC762CE6C0CE512B82EAD809377CC04E89FA7006D68629A6B696669C673B39E3478D2B1EA69295D2A71A812A5690351B2D97384BBBECEA917BE4173FDB8283E1BB19E304EBC0E45CB2269A8D9C6F5C391C94509D2320E9EC2218243DBAE12F3951AE6D8D4C5FDD869259E7B0B4D37FC166ED33CB3926D51DB4B33E8B772D14C46645305B0245B36C1DB78210A63C1178532C5168C68875C0FC9E48BD87CE947AFF2BF1F799DD16A9DE58B7BF8FCC76FA7D989A9D5451A526435054208B14405CE6B60A00E47072B9C1A9E60AC54D132592C8C02C96C6D69DAA5A0512A529506E864047DCA8BF65D476A83E08B60956D9AAE92494B55209C660BD549F16D1B3BA832CBAE72F9A276DA0B595E7CF1659EDEF21C4315915FCDE234F7507304EF37B254715CA7291AA7B574962F7CE61E0A637D94F34DEC3BDD4FEFC9B3AC5A3887353DAD747A214DD4A83A11A21890B16C5CDBC3F67C5C378BA755451DD71361239F41A7C07FFCC12E1E7EE1389ED7425D849A62913A3574409D6A0D4543BC4EF7D02EFEF673EF23572850956948D90C1452F2192E87EC3A7C8A52A9A2EBADA3E0A88468775B23B17AFB09B466868646DC6E1E79F918FFB865AF9EAB24040239C9E8B51B85D895712EEDF1F8D58FDC4ACFEC76761E38C1B79F78950327FA182F1559E48E73CDC2167EF3331F250C03CE0539B6ED3EC681D383548B326E12F28BB75DAA92A8459AD8B677807F78EC75758971AC2A4DED19AEBE7603375EB68A462A2CEE6860D982761AB36087D2B5704D7B440AAFB4EA3BBF336EA0C024409B0D5EAAD064EDA7EF9D09D03F4F013AED3C48804E071DAC2440273CE8E9FA17E922D02C504258A2015D1B25E62C83CF7D15BBF7C7D8138771E312AE8E6C9B86992A7629F753325889D1325A2EC9AF28DE099BC30CB0C82A15BEB562D8AABBE011D42CC6338B097AAEA763FD4D381D4BC8342D044C309974C49ABEA0130C560661E417AACA85893A93AC8934B99E74EBD2C59D4C422A7DCE611887EFBE729AEF3FBD8DA16AC8ECEE59AC5C369FC6C606DA9A1A69F12D3271055784E69D3C25274BD5B31929470C0C8D3351AC50AA1A7538E17BEBF3A4E76A1A3DDAA24D0E4985E9D38C5E31568CF3EE00002000494441544F43E19B54124A655D936F690F41AE6D327529D5806934CA54A8D02165F333EED52A881506CC6BF05935AF5BDD399E7E6E1B8F3DBB8DA11A54BD46326D732847421F4CA6D6EC987C58225BECE743D76DA22BE3706CB4C8CEA327E9EF1FA6AD9061794F2B372D9FC5BA66686CC92AE127721A1829878CD5E5D664F4DECBC4E9B2B94D34B82EA58CCBFFF7F87E1E7CFE14512C729B725D04CC15B98A08B7162BBE2BBEDE6BFD21FED3FBD761E71B29D663727189BC634015D1EB26D3A0F8B37C35F9522588196EACD9ED68DD65AC22EBCBC66AEC6157EF080F3DB39313831342753178BFD8B249C516D56808475835BF93458B17F0D2CEBD1C1BA850C7C7757C5A8A2758DF0E5FF8E79FA25E0FD976749C6FFC700BC7FB27C8B8365E54E1FDD7AEE68A358BB1724DEC3C7486275FDC8D63C52C9ED7CEA64D6B59BA78168D5685851D4D2CE86A262FC72BAD51D5741676BA599A9A2C4CA7D49D57C91A5D1AF9D2C1B2C91ED24C06FD8E19CDCF1A069DAC07B333278D2B090B9904839E7C213DF314D3D500614C62B5D49234512240ED30E5DDF731F2E2D76888FBB4FB6E181CB1AABFC908B5490E0CD3C1C8CC4996274D11491F8CB79AA1F7C90620714C865F7C7D186B6418F5679159B199D91B3F8E9D5F0656C1947A9226491A95F6346DC928253C8B6EAF519936FE7D17DCC68BE2D4661C5CBA7D226A53B16D864378EDD4287FF4E54739D8374C365F60F3F557B071C53C3AF30E39026AB1AB7C5DA5BCC509075C610D5739B3220E67361DA3BB61360CC3DED06EBC69951A7537D12A111F3EE58D4B5355D82AC948B966C5E667EDBA1171371B51FABC4E6BEC26AA7B86AE25D99A70A40D0EFEE0A34FF2C8D65D94AC1C7E730756B699AA060AE90B18884339D3823987A2012EC764A01A09BACA9E8942DA47F6F3CFDFB79C6B2F5BAB6A73474A3E0FBFF0067BCF8C3251B5182FD5E808CFF1AF3F7517D7AC580805F86F4FECE75B5B8E2BE758400083D15BD861881BE877A8C5115DE5D3FCF6AD6BC9347772E4541FCDC120972DEEA6C191C01612B91933C821C7A3B8B0D0E30A0CD47D76F48EA9F29EE537D0DA39876DAFEE64BC66AB79AB6C86DA9ED6C4C474E12448CB28BC910240A5001CB258759BC6F02C4B9A03BEF0EB9F54A5BEAF3CBE93275FDA4F449ED8AA624725B24199D99D4DCC5B3C8720AAD1DDD9A5D0D8AC962C0D6E484F5B9E799D8DB43766B44D3E2910AB104F224FF74E149E8B64D5E7ADE8990CFAE7278336673295169B9EB068714893D0372FBFC58249B9B5B292350B14E2683C44B9F729867EF2A73454DE50794B1114F224168722C96F7E5FA22D97743E8C029CE1428B238BB047CC71489036C1CB0839099450715BA9342C24BBF466F2ABEEC46DBD04EC4673983A1092344E3403958D23E5475F4C272E3DB90BB756D33834BB96D11A9E88602C8A79E9C8902A9EBDB8FB28D508E6CF9BCBF285735932B7939ECE46354315FC544182C4D44082990A44E967992D4AB2363D4FAD46049A301E90C6CEC8541AA10093718C6F65D4C5C368114B5809A92B7345A000D3CC154DE3F46625717F6AF04C8291300E5477D838D74880FEFA433FE2C7AF1E262AB4E337B412D859025B02B409184697DB1CA72AE9697A3FB55E0CF3C665D6D8213EBF690ED76FBC4C45A51E3B3AC2B79EDBC9B99A8DE5E6F477B631CCE2E6888FDD7C1DB3E674F2E5E70FF193D77B55533946FA1D72EF257336D65672B7EAB1A3BA146B9A22F01B39D73FC8DCF82C775E329F0D8BBAF43D812BEE2B963ACA78A1406B316376232F1E1DE1C1978F7376BC62AA16DB343363F13894DE85E8A8A474E2747C5FCE35BD07DAA8934D56CC75659A7294AE5C8DF75F7B89E2EF4FEDEE63F7D173D8B60F7199281CA140487B5386F56B1673C5A5ABE8E96CC58FABCC6EC9B3A0334F47639E9C97E89A9F37157A9166DF3BA6836FF18699003D13A027AF802CF024C6E9631B96884AC7187FED6B54F63F84571B226B093E6B8C4875196AE637A578A74F6F22FAAF0FAA0C2EE883641A8792A9A7832E32E91845B68112B2DD443D57D179FDE7710B0B8855A7573AE1468CE94DA5DF85B72D4DA5A78916E9394C36EB4C4D21196CDA2C9710588AA06FACCAF6C3E7B8FFB1EDEC3A760E3F9BA7A7BB83DB6EB8849EB6661A73596D6819D90FC3B0086468417728393E034198BC59A2C5541335ED0AD89664ACE314A2320D4199A2D5C2B8DB9EF8CD887E891C9BA3558A5CDB644C50CF322D81D3409D9E960459391F09D46118F2A5FB1EE485FDA7701B3BB1FD82EA5EABCD973435B541959A101898283D621D7AB12385AEE2C8A36BE224BFB8AE9B5B37DFCCD989325FDDB687178E0F1048134D2A8028226B15F1C23116343793CF3772683462AC261582F4243CE2C031FC70AD3CEA1A3CEB764E35ADFDCAA8B277C4817C41748A1B96B4F2BE4B57E17859FA4B0E478E1E5771A605ED5916CCED5236CA4FF69EE53BAF9D6242B371D3DC9673976A463716A5443AA623AC8139363206B29169E8176A644818CA7BB32643A64CB35DD36C7D30F49990E30F420AB99839DD05D62C9AC3CA05DDCCEF6EA6B5E09371A0BD29C79239AD34666D9DD6F59CD4CC627A72308DC7FF4E19F43B05EE99003D13A02733EB0427D3C7571FAE1022A1DD1DA27EEC698AAF3D80377650FDDA5C897EA29226D8B590472331A595ACD194EED24A93D25A82B41121920C464A5679784C1B4C0347249C580942792A760774AF236A5F43C725B743EB52A5E2C59A85273E409AF525637DD345FE13C53DF33C4C5901985CC664B94A254C02B63CB822F42F5998CA948670FCEC107DA345062A31BB8F0CB3EDD51D5462072FD78CEBE7686F6BA1B3B395B6D606BABA5A71C51057F7A3445B3A755357B68B997794C024479B8BC6E9AC1DA3BBB89BF6A1EDEC772FE7F4FC7BA90A773716A94A73CCAE15100412E493694FF91CC5CFCD99A9F48864F2A95092EB69062D23EC4F3DFB0C63C5228E5FD0D175C95BEB8287EA670B9DC560BD72D0FA39938E2F729055858E8832F8C573CCCF0734B4B6321EC1D1B198F164A254AFA68C2A8B225B54C3B5A5FD1B5389655C46A089645235F24D634F297C81EA72D7E38C327AB4BD2C0135A8D2581BA2C30B98D5D248BEA185A162C899BE73BAFE648AAFB3BD49ADB2849F7EB26C539173903523ACA07A224790DE5E6D8A48159364CE1AA0536AA69CB7307B32D4A49742A09A1EDD8D59DA9AF2CC5E308F593DB3556DCEB76B3465E5B50C3D2D0566356769C9BB4ADD14E38BAC2B4DD3444E762A0B48AA91E91C9CB7AE58DF292E4FBE3E13A06702F4B427DF0C63A438AE49A38D9E72ED0CF5D7BECAF8AE6F13977BC958813A434829AED9B150F524486BBE6202B496F63A5167862C14E650B7106181C82362A9B1AB27C1B52A5DFE2C229F3F91ED61A2E5121A576CA673DD2DE0B44A88335D7CF90DB22924138C939B4BD22A4FA568CEC3A627B9D2698493A82A412B71EE48B05E850A1C8B3270AE1CB0EDC008AF1E3ACDEB074E73E4543F956A45F592C5BD5A047D148797E0A99975AA39A73E2A38EA1D6802ABD82DB5944F707DD3293677F5B3CEDDCF735CCBFF3AB28A73712B55274FA01C725546569E7524FCF0C99333C76DC027D3F8F43D8F58F0678159346B84EBAFB9820D2BE669C0D6C6A058389984DE084125E5BE0449D3E04DA49FF4DED4938C5374D96A1096A93B2288251C765122144959B9A706DEB142D38CABCA4094A01972FCBA89460475813684F1617A1BA1AA1C4AB62F2C0C87BAF42E821A9E1DE3C9845EBD9A003036A56AA44A76EA3E1E0B354F9A82D27F1039D9742394BDC65C77B58DA80549A35660EC848D24554852889873371095BC5AACD7705D8B96E6020B449F24EB50F0E59A9AE9568F3A3DED8DB4E73CDAF22E59C7C2B34D50D6F440EDAC8CE38B6C945350D1547036473613A0DFF546F4D3BCF167B149F8D362D0E9139C860123C41312BB3206EE405D64490F70F87B7F4061780B0DD12876553226DF3C0769AAA22EE066CC5BE9183A1E6EC2A666B35292EBC3AC73AFD4C340E951221E13C8649CEF52893D4A512361CB4AE65DFF4BD0731DB13F4FD5F0A4D9A5FE81170ACBA4A5E4C59A866F7A5ACC9DD5ECD73C712ADB6939428D92A69379B685432D23DF83C598ED7B4FB2ED8DFD1C3AD5CFD9E1716AD550F9B2521E1B1A8B49E38C5AA90458A3E7E151A1B17282D5CE613E36F72CABF3FD3447431CCB5DC18FC756F2E3BE067AEDD9D88E8727CC0CF94CCFD7EC579A767ACD92B16E6D8D5A31BE23EED301BE64CF6140C6CF1005011FB8FD26D62CE8D2CC553620A13826C9A599229D34034EE77D0CE4A3024CDAC495CC56208050EFBD402E3231E948A33110CA5C48206A85B20139191CC723B46A3AD421B43281A284AED890CF49424EA52ED4B7983819274FFAC4849A824BE5603259E9458848BFE871ABAAA06EC2E24958C355268C0C20C9FD3012B8A92BBC49060C7346362999304C7551746BD4359C346CA358AB3E1DD956790113FCA5C9EA47759A9C2A39DF239B6FA0B990A3B3D1D504448A4303E12BD86F168D40298A3D49533CBDFFA623935EEF9900FDD344DCF7F833FFA402749A6E240328EAA0218A4BF2544940D587BE9FBED7BFCDC48187C88F1EA2A93EAE9C535D94B650C00CE55E522AE3F82D11306D7619F6422A1493668232982299A6B233D40D39D4A19658865A68A1E4CFA5B0F8065AD6DE0C4DDD386E13F86D60E515EB34C3EBC99D4AB2440367244D308557A6206C99FC93075E9E2D794E0D2E9B02EF261098C0280FB80C59484090610A8B09602C84FE71284E481033F86FCA99918C5A6858E2DD68DB55DC6018AFD2476EEC00D5FD8F326B702B0DF5733A4C31E6CE6730B79ADAF2DBF156DE46352B565105FC64363C951891259BAEC3645E053182319B5D32299F906E9A7290133F04418EA67AA2931E8E467D6F6A0E286DAAE9069BEC79A9D1B8C4A0244E9B4C50664E9201CA40C59B8C80944C8B2A2345AE45B2A10435F56430D75D7C21928C5DC39AA8298AE7A5E518B9DA046F97630B4281C1E4DE987B94744027A103F19654D7EDA4F12ACA8C3AC5999C98E0F092DD1AD64D122CD57CD794104245D454C1C6F4140868C835A8CD57AB13ABB185343965D97AB236D2A5EBC81592F59F365D121BA15447665A237B7AD27C1EFAF11E63CF0CC4F12E2ED83FA900AD4E2B929F980C46C2AE665DB226356591055A026B04EAE738F5E817C91E7F8A6CD0A7C47D1DA6B05DEA711D9920D3874C1A34899F9E795A25A026C60149B34DB34E09D09AAA48A26282AE8E503B596A5146C5D1859247B693E6851B8997DF4CA675094EBE9B98BCBEAEBC6FFD7403A324CEB49A112766E6536B3EF9DBE4FD4D980D6926ACE1795A962EE766E01A237873A104BF5A8B292B3032BA16F57304C543948E6DA5EFC5EF938D47C946E3E4A371851264AA91A8401C3732E2B612CFD948C735BF8EDFB90E3B34A5F42423616AEF99EC77A64A7AD34FC864926FAA2BF42D93DFBFA0BA489B8E06FA480095291AF724762F9BAE500A4D3229938641D26FB0547F3CE90898F562482BC94E90A20C534D33C59E553AD5FCD1775EF0A05DA43EBA389DF222CFF054AD6602F4855A28E925480411CC8A8FD16C590E43E98EC9791A5E72B2134E7168DEE22A4F5B54FFA78DC1E9E7358341BF75A4FE2715A0D3E22C998C134ADB6409A9E988E08FF2880AFE1B108FEC62E2B9BFA47EF4697C19FFD06937295B6B584E92554D3207D2713A19AB15FC3999B6D3A7539E0C2D5C93469EA1840935CC96EC5A9C9D55DB43446EB254FD4EC6FCD9B42EDC48CBDA1B705A9711FB9D44564EBDFA4CDC4F44A364245D82A750BF042698D4CC4842C864966DD680C97892D453FF9D3CAD09862BA316BA89A9DB89E9A49ACD40AE4915E251281D63E2C0B3548E6F2738B393A6701051FD334A0C468EB526823E1288438BD0F519F0E690BBF65FD1B9F6C35871A3895CE9E0E785CBF34D69590AAFA46FBCE8AA4DAE6D9ADF4DE6E4D310B134853617C204CD8495926CDA6613943B234D613384945A43EAF59B8C88DA019CBAA8CA9D4F7E679AAECBBD4930DDC90A265D0FE79D731AEE1337FA0BC3E3F460981E80FE88D996A6D547E9B6910C1419FB37990A95AACE4D761913A0E5BCE51505D1DF1C902F7689CF0BCAE93FDEEA5EBC75CC79D32B33017A26404FAE5C59579381C13CB0CA39D55AB7960C3298715AC2D3D47A9FA0EFB1BF241F9D24135694272D429D9A6B4DEB9098093B33D0A28FB73EE826733142F7268B36A232267717F687F988C4BC36814E624B5A380E15A7955CCF3A987D29D959EBC8762E874CBBD2B7E250B279C35ED0869923831A4E5209240F6FFA10278A739318799A085DF8E0CB7109561A491B53CE31E58B4B40AF42F924D5FED7A99FDAC6C89E2D14C2513241093F168EB3345E43DCD46457862544C7594B7D8B31BF8BDA8A8FD27DC52F93292C13AFEE4486F582E030994D1B96828979E6CAA6308B424C69B03C6F699F77426F5AF486079F6C383A669E86B7A422D12A626AC39A1C209A16832603B464D5C97D3459F5B49F9BB60F4B562ED7C038EC5C7807D2CDC47CDF70CB4D9594A0BEE61CDE141813BCE7CDEFBC20194E02B4C22312A04D73DC68B9C8662A3C7F336CA5D7F46D62EDF97B667A40E73D4CEF21225FF0D699003D13A0A7AFF3A97568169A6174248A5B6A262B89A3809C25C2F231268E3E47786A1BF5135BC806E7C80435E5B7CA03256C07D1549652D1A8B219D9C5C036743C6101185BAEC40F5002B46813A88A9B642F622C6AA2BB301B4CD22A58674C35F2099C16AA4E2B5E730F99B6B9047E13816850645A695FBC015AE78260D6B6082488DD966FE86B9343053AF130B9114D7FD8D3FD450771D56C57E4282B108D43A59FF8D43E26068E1354C6F5FB4E6D88DAC061E2E249BCFA185911EF114D08F13EB7A5729081868A6E3D6688C552E1A14A6451F31A2966E6E0CCBD9AC6059B292CBB1ABC4EA529A65F536339E6BE4C86EE0BE2EE241E7F5EDEF71619DDB49F9D9A304EEEFBB4C7C2E86E4F01F9E95FD310745E804A24BA13D3343D4EB1839ADA5092B89AC87DEAD54FEF87FEEAE99170EA075583636A6C69EABABC094E78D30531EF4D2F58BA9725959BF1F014468AD944A618E2E9394BA1F056DA3069D575610C99C9A07FFA1DE93DFCE44537CD64A34F6E812498959A282AAAD4D97BF8F0B77FAB3534567BD3D27B779F9E1E44CA727D779384A90ADC248638094A4E8588C9A4CD881EC8F02ED40709477633BEEB9B84277E823F314046B8AE8E4FB55E51369B04617D0E2C99248C35A3D4B16351528B245889425CEA2C6578248E8C540BADCBA8F59AEEBC63F498E5A7C5AC56C6C6CDF49BE0CC1248457B2F4BDD6EC16E594ADCB490BCE87CB4CE26D3D6038DDDAAF5A0399892760D24A2C127319C4D08E04A79535847BAFD92314F0C513B7B8C68F83895B37B61603F71E9A46A94D891C8B4CA079A6B2E8D42849192C0458164F58AEE4BABD18C1D9B6C33229060ED7ACA512ED91D149B37D073C3AFE22DBA436640CD2699342ED33B3199415E6C855CB8069386DA4517E7853FAF90AB193A9ADC9D27C544A6B255BD64CA5034D200931AE4E6878C1142F238C8B14A8F6DF233271D61CC77DE34AAFF768BFC1DA1858BFCF0F45839BDD848DEAAAEF57A1CD33C02D3E53DFD825FECB8D2CF9BFEDAC5BEF7EE1EDC8BBF6B26837EEBABF74F29402B9759C2880083FA009ACCC27C3B5191132C572163993C138A5C0D4F9EBE6884686C27E77EF2B77827B7E2D707C8FAAEE1BB26D8AF794825904A062D942DC99E93A106C5288D6CA8C9C66494D9568D62853D62F1E650F29536FD15A215FA97D0C834A59709B6BA360463D1DAA80BBCD14C20C23E5E0396278D469FD86F26D3329B4CEB1CF22DDDD0D4656810CA2448E80DF2EFA0021383D4FA7B290D9FA1561AC6AE15718271E2EA38BEC8930665CDF085B1219395AACA9694CBA2F427722632D8203B8130524C88321C5DE39861A9BA9F9C6B1018BDEDC0C9528C9B18EDB88D651FFB0BB0F39338AA5E97B74B00DE32304C6EAB6FBDD0F578CC3D1618C164B5D3E08314F64A7DBF260F246DC125D9B5463A9383CA999AC0F7E6CF124D15554B4EBB84C9B94DFF95E9BE703E7C901E679ABB9F7F4A6F97D1984B37CDE0E1BCC03DEDFB9384D0F4F0E47EBDCBCCEBA7D940DE2978CF04E899006D521993A96AE746026112A0A794B88C76840C2908CB40034F9A6F0914110E32F2CAF719DDF96DF2F563F8E1B00E1A28EA2C19B54E78893C674CE808CBD72C7CC9C192D0ABA5AEE9AEEBA8876193A8ED941167B20323BD19BB66B4D98C384BD32ED6C66420729C5252BB19C29AF0622500CA3047127C646ACF6B568FBE4A940509DEC2341159CC04079572D651CD862A99A8841716F1E30A8E6E128196BB41281B8DABC24BB65CA038D009404345B4A9D6C1CB37A9ABB60C6BE830CB34B70CB16452A14DE119CBDF444829D1BA93ACBB375ECD92CFFC0D64E7832B94C28B68645F100CB408F8296B2EC34933C72E660CBA0226A180691317FA1EB9F7C986A3B17F1A2F505F9BCE9B989695A6C7A67B925C6F69324E7BF612C2443A31395D6965EA6353EA64BA7998CD47CF7D1ACB626AEE32FDFC641C3BC5B9CF9B409DFEFCA7D7C19DD4153795DE7436C7D467BE23307DD1FB91EC5893C7F00EC17F2640CF046813A093D574A1DCE1050FD19B739624AB1638201A85A88FF88D47E97BED3B78C5E3E4E3091D44D0115C1938880235B1D5C938A5121B4F36E5142B1462F4956583108EADFC5F6183487485A5E30EA1E0D4895A9E391E616A2470887E9616D693142983239B0D42E5E825B8A6365D099D3015354A1E79C3565071249977943FD3B34513A04C83D33050265F4FC7D8354794801610D902EDC8618A6636EAD22D23D5C459A2C46CD738C984F84ECC388D8C387329ACF9241D57FE0A96D7442C9AC991814DB41C4FB48665833189A1617E988DC6F40D626D908AE1EB54734D191A89E894305C648B3065914C844AFB53BF83A35585094C6609C8F54B2609718D95645A79C8CBA28A279B659A7A2BD15CB07733EEAECA7D6916ABBA2C327492C477BDE8295F5D3675D3809596B37EB4566D893183347ED5B74F7E48920AB9A7B2B612D2B2B04B54CC4A289E9AC327D899BC6772EA443F57644C65A250C7F1A561299F2CA6838E388E5BBA3E85CF3D997D27709B3911CFC8EE2695475A21998DCE53CD12BD7C09B17CCAC52D315FD693970A716A9D9ACB7301DE3D13A06702F43B55596FF7FA6475AC014882C38406E9E8EC768EFDF08B146ABDE4E371D5D7553538A5BE0923246D0EA6943C23589E96938229EB1FA3BCAFD387D269D75F23C12461E44EB218920AC094C4498036A13BB1BB371A2017D3C07BA7F337014D7731A36F9D6C62530F6EB2C9A4E5B1BE6E8E55BE420DD09ADBAB4E8484412B9400ED6B5334928C5D54E764AA32AE2B150FBFC08077396D977F8686D5771067DA35C018112045E1938A2709C8CA5A4932C01463D78B25415ABC1F6514DF3CFCB249DA8E4CDD25965A49262C415E8C0864B28EA86C02702A26A2A5800DA28FED38268796189C6C5C72CC93088754243226AE55438CABCD55F963B432F473E5CD320DE3366AB0D31E84543BB609B4B6B2AD93A9C264A8482610D361181D5594E3B473C412B475A3946AC8D4607A9E3A58E34C72B3353B5791AF44EE55D7A2D97C6CB1888B45F0BA0E6E3315CBD6A1A1B4B9691AA54905A1FF4FE475E56774A826BD27F25A5ECD1C84A522975F5DD975F948735DAE4D0AA9987562B64059E7A69A3C2FA79E09D03301FA9D02D4DBBE9EEA3CA458B57A399789A361FA773C4AD4FF0AB9C15DD84307F1243049D00DCB3ADA2CB952CAEB4B9D8CCD645F92596B704D9F121378150631A9B766C353656682236BD34A326DA35B6D449A8CA4E7A474E97B3CE1A922C264641736C58C7ADF8560AB313190AC5982735A2988E4A5BAA147AE916E15B8467490932CD2B88288F851CC84D54DBDF5725AAFF90D0A4B6E30AE37519D33878F60D7CBD8C29851CD93507B069A454BF0096C3C91349520665B549D020DEDB3696EEB566EF964045023D324C38DA15A1C6764B01F6BEC2C3E6358B29196C5EDBD46546821F05B08326D8CB9393A3BBB686D1488C8041FA94A9282C24C2EDA31FD83831487CFD1543F8D5B1FD5E38A2A751D1B77A48DD890A79E9B4BE83653C5A5A1A585B68E46ED2DA8C646A2FB212C10F96C11B5AA0C0D52EA3F81532FAA5E74E016085C63BDA552A95D732814723A0DA3AE3FB23F256B4AADC3922F75AC0902868606288D9E25138CE0085D9288AAD3C184D348DE2F30AB6716B667A46305A61338EBCCA17D589A7048EFA16AEE7DE2746F36E4266A4E8EAAEBE0657274B7B593CDC84632B502B5759226CF2A2026F7D168694FF60034A86B7D90EE39532B378689127CF92B07F997FFE2EFF1DDC37CF52BBFC93D1FD9849B8A86BCC775FE33F7F68BA243C962491EDA9F1B16C74F7B7394FEA462F58229A717C7704C6114EABD04BDDB187BED61ACB36F9089C720AC9A0C2B89144AC37BD3012420A806D7B4C84E9C41A63C2892009D02A6F221C938B904C734331171A5A479F5539DA7664753476882F179CFCAB44ED814786BD4FD4420C86C1066C3309BCF64E19CCAB62A3E61049C64C45C12E231AB8BB1EC2AF2977E9E39977F486DC3ECDA20CFFFCD1FE216C7F0C4D854AA09857C448C48CEDE250C2C7C27AB0A7575CBE64C660EFEFC4B58B4E11AE62F984BCE77CC88B47A4B4A221A307CF238E7F6BFC6E0E1D7B1C74ED12CD05458C591AC5D4C55F1283A7926FC7686DC0E66AFB88C6B6EFB85C4255E02BD0986F2C78B630EBCB295E1A3BB99E8DD4347D0473E2AA9307EA87D074703B8542665E907B8CD2ABFEACF5DC125777E8066F1244C60079DD04C1AC362E8BBF7C70F51DFF103FC7A15378A28391E55D9ECED2C634E17CDAB6EE4C69BAF53512B6340606A2DE3986D829D161558944787D9F9D83F50ECDD45BE3E4E46583676C498DD463F9D54BA37B0FCAA9B59B9B89BBCF8D14A03A63EC8737FF19F702D494284E72E558F28B618084BFED4EC0C153B4B29D384D53C9B96F96B98BB6C355D3DB3D46BD1309ACC1F53F1199D6E1592128BB0B4073013A0DFFE719D09D0EF1CCE4C692A4D3CC1EF64E5250D2D95F39472B20C611FE5034F31FEEA0358C3FBF1296BE661534B04E453A0C2ACDA94CB9B62BB290F5732667DC012F1A564759B87637AB32A09D2062E3183EB6608E69DCFE7CDEF98066B24165A9AAD4E6E1BC99336F98309BD51190F26B08B01ABE135C8B512FC5B200703BD44822BABF0BEB0495C6CCB579D8AAAED30915B46E38ABBC8AFFC08D9B61504768CD3B783935FFD026E6542F71F191B0F957E684069D512142B2ED1C4F72C4AB1CBB1FC4A8EDB7389DA9771DB6D37B2B0ABA01B80413622068F1FE2E0B33FC43EBB974DF0DC380000200049444154964A2F46AA49365D61A6887C86D1B796EB57B5F394FD168EF94B5879C7AFB062F9020DF62A1A95A017F1E0099EF8EAFF60767886E670C094ED225624E25B09461F2AE326261B96F41A4D58EDF4E616535F7F2B576CBC96CE9646830F28722044478B91C0E28DFBFE882527BE8FA7BC50979A48BE26CE3427334BD899DDC8473EFD695A5A0BFA3B8DFC6972B7E47FA9B85114533C7D8CBDDFF802EDB5D38ABC3B5105971255B78D7E67362F35DEC470FB6AEEDA389F0D4B7BF4F338F32AE7BEFA1FA986E388D3A60849999E89AC310F2BCA68735C36E48ADBC0B0D3C699CC22ECD9CBD878D366BABABB1529490B1913A0CDCEA6425D8A85274DDA99003D13A07F9A9035FD674CB014EC2FE974DBA2416CB03A91C21446AC0C72C4A5B3D407F652DCF32413C7B75108CF900B87148F4DA70965BC7C6AA2CD388B1802461A10251B5500608A039634A50C94717E232F1D904945204D809EDEF57C37672FE7659A93EAAB98FE9EC9D233C511CFC7A68DED523A25997055B4E126A8AD313FD5CCDA16317B2565635905C27A9E31BF9B62FB32E65EFE2172B3376165E782952594FED789ED8C7CFDDFE3D4C614221AF4DB18759BA95939633D26413071E0964CBC66799CCB2FE154D4C1B8DBCAFBAEB994EBD6CED55948C962B3A57ECE6C7B84BEED8FD31C0C910F47A9B8A211D24E2D16B53A39564184433261916C5CC10F4AEC6C7E1F473A6EE0EA4B1772E9EAF9BA31B8618DD2A9C31CDFF2109CD84E637D108F90B3DE1C8A76A3D9AED4045706936450A9C2ECCA710AE13855B791B35E0F87BD85342D58C3C6CD77D1D2D232D9629090D7371673ECA13F61E5896FE34ADFD9CA30E61474913405239CC92C6047C355E4662FE7B6BBDF4F2663B4C9255BD6DE712AAC245047B548E9E41E0EDFF707344772CEAD78518942388058C68EE416F0747E33C7BC85DCB9B68DDBAFBDC42C9D234F31FECD2F50AB97A9B939465C311468506956B9A95E04B9B044212A92894BDAAC1CF53A39E9CFC35B772B9B6EB8917C2E97341F93B5A8FB47D2543CAF569B8138DE095E7DF3EB3310C705D764BA8646E2BDA7E59AC924D52F36EDB18565A2924CDFEDC37AE37146F63C4B86716CCDA82B09934016AB8073BE323752B53933866B3AFD064A99F695083DE998F8B4206D94F34CE05464F73C72EFBB09CE9AC218EC5B25550D7463208B041B4CC681277F574288D16D24DDB3341B35C310AAD6A67086690CC5764D098B75BB914AD48295994FEB863B60D52D640A8BC16E494C480D06EB1E9700FD7B38B561F5563C9C5941AFB7506DA10466900D4FF8E7919B55D6076E8651AB95B25D003FC7E66B3670EDEAD97A1C13A3831C7FE4CB34F5BD4666FCA4B6E5EAB14B5F7601C7DD854C441902276306EFA31AB97082598CD0553BCDCB4DB7F04AEE2AE6168ADC76D552562D9EC781E71FA7F8C653348E1CA4A372D2588B39CDECC95D429F338B509BC046504AADD8A212CB6BFBE909FBF47797EC02436E17673273A974ADE1031FF9185E567EBF39F7D3C321271EFAEFAC38F1104E18125819FAFC1EDD407A6AC719F63AD893BF847E6F3E4ED7723EF6D11B54945F687266344A7A74B11A2D84C5B3ECB8EF2F6938FB2A4E5CE78CDD43362E32273E49297219C9CEE3E986DB38EA2CE017563573C7F59718D5BC233F66F49BBF0FF580A2D5C8C1DC6A4EBA3D4C38E20014918DAA14C20ACDE1080B6B07680FFB09EC0CA7724BD9DD7005B5A6392C5EB9961B36AED271F27440EAFCBEC6F4B53D8341BFE5933A0371BC8B20A6BBBF31784DE9A22AA8A445A93C16AE611D4C72AA64C0631C6A4304A7F733BCFD3EA2A1EDE4A3B3F862F26915A80532C421596BA00D41B57612C562499BE2980C2E513DC215FD60FD5C697449674A82A2046909A4866E270D43310830A3E6D3B1EA77716E936F31D4BF542BC40CD598E0AD0D490DD2A68169D88A6673922941E50C084E2CE6A94E4179E4A125A5B19936940C2BF41A198EE7E3CCDE44F7B5F7E2B52F03BFC36872086D2C618A49F9EB1D7F99C1AFFF2E6EE90C91EFF36AEE0676653630E0362934220C0CCDD0ED1C81588A89ACA764CB56A0C6ACBF7CF70D2C9BD54C1C84ECDCBA8D78FBD79955DCA70DB2A2D7C269A7874399951CF05728EE2CB5B868098A96BDB04C5AEA43CCB786389059C3416B11B3BC416EBFBC87B90D31A79F7D90EED35B68090668884B9CB3DA389D5BC28B85EB39E6CC27B47D726199A67814D7F570C2324B6AFB995F3EC09CEA09DCB8462DD3C2517B1EBDB915B42D5AC12D1F78BF5E6E3987BED188630F4A06FDA0E2EF91DBC0217FA95EE745E57DD4DC3C4772CBD963AFA1BFF5523EBA79296BE637282EAF0C95243B158C3738BE83ADDFFC9FCCAD9DC07232EC7557A87ECA8ADA3E02DB61D09BCD138DEFE7A8B794BB5617B8EBFAF5BA02AC634F3170FFEFE3944A94ED165E6EBA8E3DEE4A069D763CDF254F89B05A27571DE1DAF24F585EDFA71B48BFD7C389C2060ED1C3687E0EFFF69FDD8D9770CFCD986C9A7424BB7ABAF6669A846FFDA0CE04E87711C4A6AFAB49A94A094B52949A003D2D7227CD11E9FA04502F416917633BEF67F4C03364EB2338D5808C948B5195382AABE38AA30D4579484D06AB432F42BD12FC4F13F8A48927BE7E6A4C9B04692DF94D9056EEF0A49ACFBB38AF696F494F31854826C533D31D49F7A7442C5EA98666343D16635311A0D7F3106C5898153196E80EC73E6194A7EEE519A799960DF7D0BAFE2E282C2424AF6C0BB39F24034289DCA777E22506BEFE7B642AE7A8B91E5B7377F27AF60AC6F2CD2C5BBE84F9AD8D448164E6190219A1D7BB50C78B4B2CEA6A60E1AC1CE28F12178B3CFBD53FA767F0456645A714633E935DC8DEC215EC633E67728BB1E31A73BB5A58BEB087F6D606CA9588E37B76503D73883E770E67AD7666B9A3DC71490F6D630718DEF6004BAAFBC98465DDA2F6E7D7B337B3867DFE7246BC4EF2B90C0B3A1AB8E5F2C5C6453C0A281DD941DFB6EFB0B2B883D6704885FBCF145670B2712D67DC4E36DC700B97AD9EAFC6B092419FF9FE9FB2F2C403E4B0188FB2EC2C6C642272B822D8A523F703D91E5ECE5CCD0EEF32AE5EE2F04B775C31D99E10AD67A56703077FF8252ABB1EA5239A602CCEB33BB39A96709835955D3AAB35E875F193C60F70D85BCA9D6B0ADC71FD7A0DA1CEB1A7E9BFEFDFE3942628BA1D3CDF740BBB331B1876BB98D7D3C9D56B7B18192B290CD4FAC29F317F609B326DC6AC66CEF84BD8E7AFE07876095FF8FC5D64D3A6BAC25D069ED376F97983343319F44C06FDDEE2D505F042F2CFB40F731EB1DF2C392374930C1C24BACA9A93EAA0C318D1C411860F6F61ECE4CB64C68FE38F9F21531DC38DCA582230A4F88034D27C1DEDB6DCBA0AB36B375C0658AC8C52EE94059566D1DAB43142F229FCF0D307E8A4C1A8D9724AB53363172658CB38BA0015C2F3161AA049881479D6A112636A20624DC2ED954CAE6ACD216A59C784DF41F3C2F574ADBA11BB711E1139A55BE96F49B271F98B6C7942AAF37B5FA0FF6BFF0EBF3E46C9CEB1ADE94E76F91B54C2F49E3B2F67CDBC2E755DD7B6A8B2154C8057B849BF675AA6FD5B7EC8D073F7D1119E252F1438CBE1487E1D5B0AB7722AC8D3D0DECDF22E972BD7CC67DEDC363D9F5433E8DCB971B6EC39C9C17345DADC3AEF5B3B8B96238F537AE58734D50609A4D5E635F36CC32DECF0D7D19AB799D396E1C6CB5730BFA725696482E7C4DA803CF9C64B0C3DF145DAC78FD0169438E1CFE160762947332B695C7C091FBD69258DF90CA7462C4E7CE70F597DFC7ED53A1CB33B78AEE556C6C872F5F85374468394638F575B6F618BB78925ED161FBDED4ABA5A0AAA9C98E6A9A383A3ECFAF2EFB2A0B4970A0D0C676673C49F4F6BD0CF9AEA1B6A1E31E477F26CC35D1C751772FBEA266EBBF1326DF37A479F61F8BE7F47542933E275B1B5F136F679AB28D2C0FA25B3F9F0F58BC8173CA27A88D3FB2C27BFF69FC958456A6E0367BDF9ECCDAD63AFBB94DFFAC4EDCC6D14ED73F36514168CFFBA99424A5E98C9A06732E8FF93F89C50340D4FF362FDB7698C8794843F5999E84323E1A2020C433C00830719DBBF9D5AEF5EDCD249A89CC48DC60D873AF4347855308EDA52768B8BB3422893C249060757BC3811FE495D5CCE179878F7676D2611E5FC041B379086C10C93E03CDDDA2B9D5E53E682199E885DD966847ED542CD69C5699C83D37609DD577F1C722DE04AA34B0636324A4153064502A198A3344D5209D0DE891718FCFBDFC5AB8F336E6579A1E956F6662FD56CF9C3775DC6BA85DDFAB3411CABD492193F4F40171131123D6AE0E93FF91DD6955E271B95B4041F77DAD89B59C773B99BC8647D3EBAF912562F6C541B2E8558D47C21092658546D28CBFD0BA0B1D6CFC4A37F4169C7938A2F8F66667336338F9F64AEE750660577AECEF2A16B979311094FA19289FEB282FA21A1C054B512C79EFD1EE3DBBFCFFC89C38CE667712C339F573257D29759C02F6C68E5BA8DAB383DE672F23B7FC89A13DFC48E1C46DCD93CDAFA410669E0BAB1C758189C2017D7D8D178252F17AED280BA7CE97C3E78EB95538A7A419DC7BFFD8FB41FF921F383E39AD59E72E7D0471373A233ACABEED01539E077F15CC31D1C711770FBEA166EBFF17203571D799AB1FBFE2DF56A85616F16CF37DFCE016F15D528C3654BBBF9C0B54B686C1068AA4AF5E8739CFAFA1F53604C79D167BCB9ECCC5DCA4E6F05F75CB79A1BD72F3C2F104FF5B0A7D5EEFF7F7B5F025F5575ADFF9D73CF3D77CA9C90810021090984799019A4CE828A885A6BDFEB7B9D5E47B5752C4FFDB77DB5AD5A87DAC1AAAD1650A1D679061C502C606592790A53022401322737C99DFFBFB5F63E37272108416825ECFC4ACD70EEBD677F7B9F6FAFBD866F298256047DE254758C2B2DB7999DA4E326A095C72CF25F39EDAC3391F3514F28C7B1425EB801A8D98DB683ABE0DFFD01C2F53B6086EB61844977C38920059BC8D5411A19F4D0B3AC27E5F692BD28322488A0D9F2A6EA336B1739A92C0E7A8664468695632DA529454BAFF6CC0E91E34BA980641951F35511210DE8142C4B849935025AD62824E58E85B7D730C0CC92692A22658C83A32C7F2A937F6D72A384100709CB3F41E3337723D6528B56C38375C953B1591F84B02319179F7F0E8AFB66F03D91B60769E8999A06978BE4561DEC090A6B3A6F872B1EB809A3FD6BB9F0C5EF484699A7185B8C12F6670FCEF1E1862B86DB72C1DA952E44959FD83028684B1679ACAA14A1250F21B86F1D0702CBDD03B1D3330C9F3A4A50EDCAC1AC215E5C36A15868A2E822E990F29CB9138DEC68BB65FDA7A85DFE0206552F479BC38D4366B608D27906E1C242072E9C3404879B9DA878F5210C2E5B48C5E6A87164E3ADB4EB50E5C8C058FF8718182C4566A00A7B3D05D8E11B860A2D1BD9454370CDA5E708822653A0720F56BEF414721B372129588B9D89E350EEE88396700C85913D181958C325E6D5662E96254CC71E673E5BD0D3CF1DCDAE078DB238FE3607A14010756636962793053D106D1113E7146763E6A40148F4B981B01FC1FD2B50F5F46FE08B36A1C5E1C37E5701367A47639B7B30CE1B9C8E2BA70C8B4BA8F289D296CD117FD214412B82FE5C041D0FBC49DF99B4B8E2590AF1E2552A10B0DC0232B068CB88E1A28238C107596F9A5A6B856B4AD156BD1DC1CA2D68A92C45ACAD810B149C68851E6D80CBD1CA0515A2C250A6B0C5A57364F9AF5CFCA2D2AEFB5F82A0E9CBEAA948FE66FA9DF07553F091E5963493FDC7B19817D1981B219808E86E44137AC1DDBB04E983CE85993D18706673977222F1F6325F994FCD9848EB9CFB214A226382D66094AD42C3DC3B60845BD0E2F0A0D433107B1D7DD0E648404E4E1FA42578A0932E89164690F2F29C3E64E51521BF301FA641F74AD6B586950FFE10839BD7C38885D060A661937714B61BC538E82EC4972F1C89497909C2AD441B862C8996721F888643D0C9F2956E17FF9EF5082FBA1FFAA1EDDC7E6CAB67343EF54CC041672EDA9C09B86268322E1E37902D53EEF7C8BA28C2DFCA3A4D5480B2AB0C55EF2FC4F08AC5BC89549B1958927805767A8763424E08174F2C4620968803AF3C8C92032FC21109A2D1C8C0DBA95F45B92B1F03829B31A875338AFD5B51AF7970D8DB175BCDA1700F188BEB674C1204AD033BDF7B0ECDAB5E426AB4116198F867E234EC77F44562B801C5A14D18EEFF982B126BCC5CBC9B7825F6380B71D9602FA69F4B697644D0EFA365C19D680D8651EBCAC13F932EC07667119A35174615E762D6C401F0B94C38A92BFACE3750FDC2EF60C642A875656187672893F97E231733C7E6E3823185B2B3BA585DA282D03206E45A5504AD08BAFB94657B85D5CB90F574A52E253F7D22FD4E783EC925600F544B139AE269965F84B539ACCA2AE18F634F2A25FD879B106E398840FD2EC4427570045BA0556C47E3FE8D88062A61B20B848A5E447300CB2D204A5E0449F3FFE2EE87EE8DD84ED0A2EA51E47E5360877B146A06C2BA1BC1981761A4C29B940B5F4E112219FD11F164427367C293920747420E6B4788A601ED9B45FBC6219D409D02AFC2C921CE17CEB2D5689C77077422E818A58365A2D691C4644D8141129BA26D2A160DA2C5484393B3179A13FB61C4F8F118599401A7234C9D79F1F18337A2A86D279CB1206A9DE958933001BB9C05A87164E2966F5C82DE2E19789512B3B65B127A16D4EB31164340D37064EBC7D0963C046FDD6E440C0FD6FB266185670A1A351F12929270D5B83C8C2ACE16DA18D1288C78299DC88E21E2DE7FB8110716CFC7C05D2FF232AA35D3B024691636B98661505233A64F19089F3703FB5F7D0403F7BFCA297A4D7A1296A4FD27B61B4518DBDF85ECAA15C82B5B0297164293666253D26434F41A810B278D465EDF5C3EA56D7CF65EA4EC7D8733400E3BFB6099F74BA832B29117ADC4D0E07A9434FD83D76CAD998BC589B351EA1C8099833D98317558DC82F62FB81B2D547D696662936F224A8DFEA8D35D18D43F1BD34A72A1075B71A87413B2AA9621F1E06AAEA02CF30CC0DAC489A8D07BA339EAC60D5F3E0FF91974B211325BF48FCF97AC9A48DFC9660DA792A0A52899DD3AEF1890B43F177609D6639F9CEDC927F1ABBA7275D21FEDC92AD6C5F1C402B9C8651C495CDE39A3A58B328663D95CB60349201841DB992ED8DF3DCAB213B42D3A68AF7F8E3BA42582C79A349E894E8BC1B2C22D66E247987AFEF985887E380A046A11F61F44F4D056040F6E40CBE1522E8671469AE1D4029CDB2A8AC9492B9AB22A68BA3B89B29FE0A0ADCA46CAD4A0D2613EE03B2873D78980E6419B968036473A8CD402A4F51D056FC168387C3980D3C3162C15994073713BAE0E35E2B645DA6171C7D52DAD0A482A1311696266F93A543F3D07465B1D5BDA41DD4440331174989C52470698499585D1089AF474541939D8EC1E815E8346E2F2097948F7117E4DF8F4A15B9017D88B685443B599834F93A7A254EB832647126EFFF625C8A4D6E0923C44AC526CB57CD261DF3F55BEC5D0AAE9A8DAB402C6A20790D2548E90C383D58953B0D4338DADEF9C5E699835A50405D9E463172E27A10047298862EAE9BF871A43D8BB681EFA6D5900A7A1A14E4BC07BE9B3F1A973287ABB9A307D7231B2533370F0F547505CF61ACC68000D8E342C4ABB9E53022F1EDD1729152BE0D9F4327AE9CD08B7FAB13D7902CA3D03306CF8304C9C300A08D562D7C2FB915CBE1215EE7CECF50CC61A730C1AB42494180751E25F8B92867FB2555BE3CAC192C499D8E52CC415250998317584E8FCB2E703D43DF73304836D687524A2DC55C439DE0D70C1E77220C70DB8DB6A61345620335C85A4483DA7016EF18EC0074997A0494B803BD28ABBBE3F133EF98CB019214F4A1AEB8150ACE56409FA1C18DCF65D3C77E251125A30D4F498534E39622F356E58AB5CA6FBCBEBB90519CF954DE2C02257EB39962266965126129AA462617B018074DBC8060F2CB828275CD6B95B8D42E8ED2D69E3A823C26B9D9C84718506BBE26B076BC1B2EA3A32B5BD494F20180591F46751D0095241FBDEF6AFEEA8D2DD1BFCD75FDF0E2F6F0961D26CF6B3DE472C7818B1EA52A0621B5AAB7723D45889B6862A44432D2CDF2972A9651FBF2E543F8E37165E9B96ECA6C3443846812E13315732CCE43E48CE1B0E67FF91D092F2A0E969D0CC3461295B2BBFC37F8FF769C2B816161595CB85417D18593888166DF9A7A87A760EDC813A3E0EB7908E8523097EDDC3963C05F2A2D40040D3E1D793516366638B391829FD07E1EA8979C84A8A00913A7CFAE08F50103EC0A5E7871D39589330097B8C7E68369270DBB72E462F937CE9526785FDC4F2E192EE23FA15E5A6FB351D8737AF84F1D603486D2A435837B13A692A96FAA6211A73A05FEF2C5C39A5047D332831CE326B84BFC1EA8D4B963859D0FBDF5B80FCBDAF02E110FCCE54BCE5BB049B7DA3916134E1D2C9C5E89F9589832F3D80E2B25738D5B2D19589B792BF8C525731668CE98B22AD12B5CB1722B9A11449E1266CF38EC41E5701D20A4A3065F268A4D76F47F9A2A79070780B76FA86F2DFB7600022CE0494380FA2B8710D4AEAD7F07DD5B832F15ED2E52835C8C591841954A84280ECFD00D5CFFD0CD1363F220E13F58E742EC60939BCD0A35178A2ADF084FD70475B39504B4A7BE47EDA953C061FB827231C89205B6BC06DDF9D05CA3DE2FC7C918C249A1A939A1E8945C5FB3F9E689ADD2ECC9B4762496360907AA1244041D0A2CA56B481A6F446291E2E6B0598C83BA4C85A046D13236B3F98CA652D0D33D9F957F45E90BA2756DD834D4955744CA2AA4EAB56409CB62D2E678296E1AA882108DAB4085A66D2D2271E15BFEACAC8E9646853BBABB6206D4FA7EEEB5FDEF2EAD4DDFA697EA7782EB30537B941E89FD559BB1508D60147CA11AA2E83BFF6209A6A2BD0D2548728C95376F34B1822423C21A6BBE1F0A621BD7711D20B8601990522FB42A32A32EA77480F06599EF48051CEADA549DCDD0FB52C1FB933480B8BAD8AF275A85AF013B85A6B118A39B0837DC703508174C09BC26E1EF2119B86136D310757DB45740706E5E760E684626450C7AF4823563D7803F2837BE04614754606D6F8C67399759D91869BBE7505325D244F2A02AD421A56EE1A6C6D897C627A0E299BA37AEB2AC4DE7E1829F5BB79FBDB903401CB7DE7A2414B466E5E01AE9A988F3EA924092A3C5FFC68B26F23CACD17E8DBAACA2AEC593C0FFD0FBEC31B4CA3918E77D3AEC216CF08F47136E3D289F9C84A49C7A1371E41F1BE1779C7AC77656351F2B5D86D1661C698DE38B73011EB5F7C020995ABD03B76049B9DC3B1CB3318D5097998366924322B56A079F5CBC80A1CC0EE8411D8680C42996710829A0B25AE4328A85D8581F56B78CC756606DE49BA023B9D859831381997B20F1AD0F72E43EDC29F221668E6DE9C018787CBE9A9838EC981D930429A07CD7A021A5CBD38FF9B0A76A83AB24CCB42821E443F4F1BBEFBB5CB4964954D4BA2432A42E2C0294BB11250DDF541EFC2DCF937E1AAAB47C3246959210E2E1566AD188A2D0664A925C8A99546B40CD6B3EF51C648C4DA6D2770BB1B52FA662CB555AB0B7CD429E697D455DB6D7869615BB95C528ED7EE72E79D4AC4CAD940B1BB45A5F7B4DDDD28C76267DD78128075041718B605C3ECE2B014C9BBF9347679B922E863A1C8AA6DA4C12B349FE581593C3C32EF97BDB531AA586C01A2E416A132F27655BCEE4D90CC2563EA31A565EC03406E0B2F629A8B33192CC39C8D4D2221EB193B45DB3697BAD3F8F6AFC1910573E068A961A9CD3509E762BD3912B59EDE48CDCC448A4717ADB6A41A1C1DCB5D91668C1D948B923EBD58B088326556FEE67B286EDBC225DCA4D1B135710C4A1DFD506564E286FFB916E92ED242A1EC189B39C21E0AE1DEE12C3992B400D0B47B03428B1E81E7F0564EB3DBE61B85B5BE8938A0E5C09399872F4FEE8FA2DE3E44484E5A147CCAA7DEEA6D1843E9864F7178F9DF915FBD1241231147CCDEF8D07701072E07240470D9946224FB5251F1CA431872F04544A311D41A5958927E1DF6B806E0F211BD3065580EC27B3F45F96B7F4056D34EEC4F18869DAE126C750F418657C3D0BA65E8EDDFC99A23EB132662A37B140E3B3250589087017A259C9B5E4351C35AF67D927F7949F24CEC20821E9288E9534748825E8AC6857721D21660774EB53313757A0ADA742FE3AE474268D13C68D212516B66A246A3134E32029A81D4B4245C3E6D0C06F5F6B2042A0939116948656FE179EEBC5EBAE183FEEBFC1B71D5D563E0229D6DA9D42D96A6A42616BD12D0B3B56A59A672F90A8F8B4D045BF669B4424BED4B41B601B308D48A6F73A71C6ADC41042D26DB124468DF0FA45C2F1F4BE5A6CFE6B3F4AAC4770A2A46B3B92DF83358AD475AC2D265199756906BAA43319A70D19005DD4A047D9249025DF18522E86312B4AD29B71557B075426AF7BC49AB5A8660D8C541A4DEED49B2C258D224606AA2209FD8202C91758E6758FA48D66E2F89BA7B1B423B79F17736173EBB0ECB57E1D0B37360061BD01233B12EF93C6C3687A1C548C4AC19E330342F5376F110962E95C953CE316F5ED20CA2FF7C78DFF7303CB8018E68107E3D0107DC456C41EF71F6C5F7BF733D5298A02DB56EE13BE64D4E37441E333F1831902A5DA8B294F3A063FBD6B06F789FBB18DB3D23B1C3284238BD10578FCFC188C20CF6EDB29FD1F6E0910F32166DC3B68F16A37ED56B280A94729975997B10569BA3B0DFEC8BC129315C3C6900BCDE3454BCFA304ACAFFC6BECC1A3D1D6F675C8F3DCEFEB87A5406260DCB8523588D6D4FDC85BCC6EDECDEA134B9B59EF130C37E4CF62F4376F4089FB896A75C8155AEB17018514C1D9987BCD86134FD63210A1BD7F1FCD698BDB1287916769805B86C8807974D192E5C107B96C0BFF02E048361343833B1D97B0E4ACD621C3132451FCA681B57815241929F4E56861B6E3D8ADC240D974D2C417EEF7491BFCF588AD453BB1179D411BE3B043D8F2CE871300D11738977A4B18A9EA45B99ADD338638AD42926525AD3A2B58CF859CE93D503818501AD66C15C7B600BA9B0E6B928D6A240359BC1B666042CE0A5E972FE6D556B717FB2D426E757516AAC654A5BBB87A8B6945119B9E90892665BDC3A245856B474DFD0DB070331B4928B23AED373524F6487172982FE2C0CE564705A9E24436B7717012819D1B02E205FA0D40BE1205737E6271EEBB4CA7265AA494C7605E1F5606587F01BCB0E06D20778122E6F61D9580681ED27B24F48CDEEF0823970B6D521E8F0E293C4F3B0D1390421C38BABA68FC7F0BC2CD92FC44A14A1078FFCEF74A70ECEA4083B80958FFE027DAB572029D6C48B9D3490CB5C85D8E41E86E9332F47515EB66819151F376D7851847583DB41D121DAB02455FD55A859F2185A377FC8CA74247854E1CCC33ACF441C9019AD5300002000494441544A1A84CB466760CA88FEEDE757699259FA18F5E53B50F9C133302B36203D780407CD7CECF60C6317C411770E26F5F7E1C24903D11A7461FFCB0FA0A4EC796EB9556BF4C2A2D4EBB0CB9987D9E76463E2F0FE7038C258FFFBDB5058B30A2DBA178DCE5E2833FAC18806901FDCCD1A288DCE34ACF49D8FCDAEE128EC15C3E59307A3AD6C1B1A962FC080C6D588C2856AB31F1627CF44A9D91F570C1604CD5A2B7BDE857FE19D0805435CA8F271E285D8EC1A8A1A3D0D19A98928CA3185EB82C85737782349766A18D03B15F9998930B8E7A368BA2C8891BCB25645AAD445EF706C3F511FF41ECC9D4B16F4043849528F5AADF12CC926C032558478935AC919719F855433E34547CC2C5AA75995BF6C53DB2D6CCEDA22F296C145EB59621131B16E453F4B6956CBE0A1B88C8AB7E2CD633AC6CBADCD43122CA3C2811F19A894BF675FB6C48B3F410A9975786078A39095BC6441539030103F6B77E3E93FF6A58AA08F858D65D05AA71F3E1AC948AE95CB67113413B95C48F16BECF477227325F3BBED660E5B7D640189335EBC4F86B53079750B1FE0C910B4FDE427F285C57994AC32C7FEB538F4CC1D7005EBD10A139F245F848D54EA6D7870D5F473303C2FD36AE9CA2E11FA7C22523628B84B0910D480BDEFBD89FAD52FA377A81CC9A11ACE1A38E82AC07AEF38764B5C7DDDB5B2E3872833178F97C8F76E0B86B07DC72E64676723B7572AF45023CADE9F07FFDA45C8081FE67C703F92B02AE97CCEFB9D3CB22F2E9C3C52A8B751493E9112737F0CCD75D5D8F9E1CBF06D7F03E9C16AEE85B8DF3B04DBDD23B045CB458B2F1B33466661EA39C5A8AA8FA0FCC50730A4FC157E6DBD998545C95763AFAB10D3C7E460FCC802E8868E0D4FFE0AB9FBDFE5221DEE65489D4CB8ED54845D27FBDC45D86C0C41754201A60D4EC6F48925D8B6FA130E30165316073C3862E6E1DDE4194CFE579478398B83F5B6F77C80A6857722126843BD330B2B922FC51667099AE0C1E8E2DE9839310F493EEAEE220D4C56EF13A737CAEFA63D8D4F340CA9F0410B706D26E0496971ECC1DCBFDE88D9574F80C1BDBA48C65774A6B10C76663683FCDD744FBAC86F642A138D24C40C6BEC8A62A2155C6D5BC6B6EC0EBB535A3E46B4B6E447C45B8575F062481FB31C799C7B2DC54B2BABCE7A0D6F64BC6E05989657846575A45D7494FE9994F1A56D44740A7520108A2018A0C2B61379DE4FEC1A45D09F8593FD682517587BA275877397D435B0FBB2BA3B4B9D7231AD9522F768B139B4FB21444A5EFB3FDB279FD8CCCBAB44D71661C15ACD5A439A0346D95A542DB81D66C80F3FBC589B380D9B9D43D0EA4CC24CD2E2C8CB8867D15A046DB27B43183524D644FD08FD872BF1C182C730C0BF11D9C172F68492457AC03D1007F5DEC89B7419C64D1A6965A3F35DD156B77FCB36D4ED5A8F8DD56178FA0FC7A5138723CD15C2A6656FA061F5EBC86BD90A2F69828775EC4918C62E86DEA32662C279E7C9EE2B0211E6864808812DCBB0EF9DB9486F2987271A4034A26347D244ACF68C47B59182848C4C5C33310F05B9A928AB8BA2EAF5473064CF0BAC04D8E0CCC2A2D46BB0CB55C8591CE347E6738A5EC5476FA2FAA3E791836AF882B58280B817A08652CF50ACF58EC321470E90D00BD75F320C45D93E6C59F531EA563E8FC2865520BDC43A672E96265D823DCE3C4C1F9C808B278FE623BA63DF47685C783722A4C5E1C8C027291761AB73101AB5048C1E9089D9930AE0F350AF494BBB445882E2B4A0094D109E5A8BADAC34378BFCECAE34CBCA6E27A8F822EAA2E5D55FC9C5317B3C28BECB8173DA08659B2D3E3AD10230840F57A3A86408D8BCB10A8F3EF6111A02D4F1862C7B07825A0CA637821FDC3803E34664C3E0E6C2F2F5347D64C6524C3E063404A378E3F59578FFED771074F810D4753CFADB9B9099E212CB5716717135048BE5687C6BAD0E60D7FE0ABCF0C24BF8EE37BE8CDCB44C6801A108F6D25BFBF1F7D73E801E16C60F278A506F479D7A66B600861FDE8426DC75D7F7D0BF6F865857D4503A7E6AB5DC2DE2D41808C4441E74975A14DD7A2CE3172B823E166EF2C864051FC4BEDF95556C375FBBBEA27B532388BDDD41228FFF36061622A3EDEE89788BDAEEEE09FC30502054967EB3BE36D99F5449B81A8716DC0167A8152D7A22B69BC3B0D799CF043D78702172333C421A34148646476CC36441A2ACDC5CF8D253C542275DC070149F2C7D07DAFA97D137B0172EF811881A68317B71F795C34925484CF621353D15BDB2FBA0A1BE014DB50D8856ED42464B19D6E8037020E31C1467B8316D74211A0F97E1C0CAD7915BBF1E29816A2444FC68A0CE2466162A5386C2D5B704D959D9C8C9CA463414424D7D132ACBF620BB6229926A36B0B07F2BDC68766661933912EBDDA3D9D21B589089FFB870384C43C3BEDA180EBCF2008695BF045289AED7D3F156DA35D8690EC08CD1FD3079543EDC0665111EC6E2B97F4251CB4664B651EA9F9BF1230ADCE01D8B7F265F047F484356660ABE7DCD04243962D8B66A25AA97FF1D054D6BE1D05C5CB0F361D225D8C55A1C89B8642A69713860501EF4DF7FCA7AD0355A1A56279D876D6609EAB5448C2AEC856BA61422511234BB44A4651ACFA3605E8E77A2902E311924B08EF571BBB57B043D77DE4D9875D558B84C725548C7099BC2D24097A7403AC7B4D607F03FFFFD07EC296DC4AE323F9AA254804F454ED476CB40CC15C0E40BB3F187DFDF84217D3C3068B7E788A3A8FE0C3407F1B3BB1FC786B2FD987EC9798CFDAE4A076EFFF96F31E3C27CFCF1E13B58B48BA582B97E401809968BE3577F5A8197DF7C0DE74EEB839FCFF92E7C0E171C0160DEEF97E0A127D760DB7E52AFA18E4394764827204A1B0A028E565C75ED97F0A35BC6A0A4A43F123C54044729B754A4D59ED36D4FA00EB6491F340765BBFD307649138AA08F49D0B6731253B348D33AEEE6D8D910EE063B5BF4DEDE8AEBE88A26CBFD6CDF2AE25B44B7D784A54B42B9C8949E268EC1BCC8CB3FC6910577406F6D421026DA3C59A88FFA107138E17639A0479AE1A094C0A88E58248A88E1C37EA3376ABC7D9056320EE3C70E45BAC760E1FA582888EA2D2B50BEE41964B5ED83470B70697AB3918CDAA8073E230617A53C694EA114188EC0156B83116CC4EAD44BB1D21C87443D887347E561DA980244EAAAB1F495E7D0FBC82A0C0D6E833F14439BD38B7A23151167129C4E83CFC014440B8648E40AF0B41D40A2A3852DFB327711D679A7E090DE0B7E331543F39231F3FC1148320DAE4DAA6A88A1ECD50750B4EF79D652A646044B32FF0B3B5D0371C9A81C4C199107939207A8747CFD0604DEBE0F03DA7622A43B4597183D1D9B93A76029C620D11945612F135F9F3D0EDE68045B57AD40CD8AE751E4DF80584443B5230BEFA55C8152D7005C3AD887E95346889349D907A85B70B7D8641CBD98ECB73A07A259F3605C7116AE1A9F87440F159AD0A2940E8278968F5590258B7D6CEBD6F21858F673BB4FF5447DD0BB319F9AC6CE1ECFCDD23963815C159214A9693959BDCBFEB917DFBAF5E7189A3F187F7CF007209916B2B223E4AE8B6AA04253B26257AD6CC5AC1FDF89824169B8EB860BF0DFB32F16C95131E0A6392F63E58AA7B1F4FD67D116897087189FDB442006D43437C3E5882123991A0AB777899172EDB8E68A6FE1EA59DFC0DADDAD58BCF42DBCBBF83E64A6BBF9F92DDDB40F69C929EC9AD9B0A305DFB9690EEEBDF7664C1D9F2FB289C867AF031EAF0B098954F445731D1601453A038663D075433456B0A506920FBAADCDD67CBA1BCFFE31694815AA1C031ACB776777F0DA08B083F7A3F35B9CACBFA1331FCBCFEBEAED3AB80FBB32EC4F687170662C5BD0F6283F3995F58A35A85C407AC40D701A0622113ABA894D8ACABB4D3D82B6500486D3C7DD4B5A626EEC4B1D8D9D463E0E9A7D70DE97A6627C111D0BA991400C5A2880F235CB50F9E18B488DD5410BD6C2ED8CC2454F4C6B1313212D7AD2B56E23253C33098DF0624DD2C558E71A075FB419E78ECCC545E38BD8E3595317C2DAA77F85A206CAE8F0C3A5B5C149565084EC7FBA551DA170084EC30B4D73C1AF3BD14C9B823309BB1246E1236312B7004BD2FDB8F9BF6720C31D030D91B49CABEA22287BEDB71870F0656854C9E7CEC11B89D762AFBB18978FC9C28461F9F03875F6B1B7B6B562F3EF7E8C01AD5BB85B4B839ECCEE9B4F5DE76093771CBCAD9518579080EB2E1F0B570CD8B6FA63547FB410039BD72114D1D1E0ED8777932FC736477FCC189280CBA60C8383DC24651FA272DEFF428F86D1ECEE8D8F122EC03622E898817145D9B87A5221127D2E993346046545B185CB8AE2009DC21996B35AFA4CAD926FB950BA91C5F1F45F45576FDD9496AE159EA18F0E01ABDFDB8E1FDCFA4B2C7CFB71F89B745C7AD17770F1851978FA9987D90860D78BD42B0B8480BB9F3A88A7E73E8E5FFC642ABE7BDDC5083545F0D56F3D8AB797AFC65F9EF80EAEFFF26491F921F71DD1B838C49A38E15004A66E4A5F1615FF46F1DC734B317EE8681416A5E19AAFFD1907AB77E2E37F3C285C21923F69D326A9F89FFF7A099A429BF19BFB6E8583BC35B4B7B3433ACAADF4C4466F595D84A8506D14FF2774622C538EAA08E9DF31BBD69CD033D9F12265417717B47637B07445B4BB1AE26E906E5BB2E2262CEB26FE3E965BA5F3FB75211D7052272A196C69F75252DEA9DC25EA7763E35F7F0AB3B501CE4850746661B7A0E8BC428130EAA412811354F1DB0637F69A85D86BE6A3CC918B31238660D6A47C6E8A100983ADADD26DA558FDC10AF8FCFB911B29456AE4303CC11AB81C746CD4A08503DCA9BACE9DC60248075D79D8E518880A473FF47136E2E2D17D3069E400F62D92D1D45A538757E63D8E5CFD30D2DB0E20357404495A10313283A9DD143D8511222A37AA5CD9A874F7C35E671ECA1D7D71D89D8F94681D466569B8EECA29ACC8470F1BF146452DB0E7D5DFA1E0E0ABD0221A1A1CBDF08FF459D81BCBC6ECB13998306A0074A703C1A886482488AD2F3C01E7BEE5480D57A3C948C14EDF486CD20661AFB318FD5C8DB86A4A3106176531B65BD7AE42DDCA175058B7068198816A4F1F2CF39DCF42543386A6620607396340D93F70E0B95FC3156E456DCC874FD2A66387B3888B82461566E1CA890385DC282F1C2BB225C8998EFA96AB43E83A8AA0A9B82CEE04E9C404276E41CF230B9A2A09857109C4C8192DB234826D0EDCFFCB8528C8ED83EBBE3205F7FCA10CF73DF810BEFED5BE78E24F7338A06CF5004538C21BF2732B2A71FB8D8FE29EDBA7E1EB5FB908DFFDC18B7871F15BF8D11D3331E7E6AB58CE56BC468C93525923B4A13B4CDE54399D3004341E69C1D3CFBD838F56AFC66F7EFA43B85BB23066FA4DC82E4EC2C72BEE15FD19E936A595FFCE478DF8CA377E88154B7F8B9262526724FDF428DAB4283C3A694552F8CFE4C566F503A66EEC82B5A56B87674B182E816018810061DD29F3A4BB1C63BB5E117477C18B9BB3EDAC69B9243E3741DB99F9588919C732DD4F6653E04EE9C27F470F3647B3AD6D27D4844FDF5C8823070EA0AD95F449C2D0751D016AEDA5536F6A6A1A60A02D4C168586A8D38B5A2303B55A0AFC4632268C1C844BCFC983E910957DC499F459A5DB0FA072C70678FD7BD15A7B0091D64644756A446BC0156D434477A2C148C1A158321A5C595C629E96D30FC5191AC60DCA45769A57EA6A88BCDE37DE7A0FA6BF128EA60A688D35D04341C4A254D91803C8C263E52413471CA9A836D2516DF442C44C465A463AFA26C4307DDC20A4249AAC1AC84DAF751DF52DC0DE8F17C338B01AD5357ED4867D2C6BEAA71CF03139183BBC10BACBC9D660341245E3DE9DD8BA6209FCD507D1A4F970C0CCC3612D037E3D15A3FAB870ED0523E1F5187CDF15E57B51B17125C2E5DB501BD470584FE60A456A083B7D683AA64F1A299ACE365760CB6BF3505975184D8E642E8439ACA5B3C8D184C179B874FC400E12C6D3EDE5FC7366822D5D4DA8218A9C07C16FD68572B159EBB91B163413F4ECB1305CD2D32A7DB2D15818AD7E1D358780EC341DAB57EEC3753FFA33060CEB8BBB6E3A17174F1BCABA2AC240A572730AF2024FBCB5157F7FF61DDC7FDB2C242699B8F3BED791D3D7837B7FF15524BACDB884ABB5B91021D2B4F2DE2012495077288465EFAEC3AA4DDBF19FFF730186E5F5C182C7F6E2FBBFFC19BE74F970BCFCB7DBE0A4A51A0636AC2B4355951FBF79FC03ACDEB006CFCFBD816313F4C7DEF939C8EE9F0D9F69F0F221FDF70E82639C464B4B5E6C74E236042173A9B72A54E92EA39E86EB3B93B4DDDF701A3ECEE2CC0E567267BFC7C910B4B5C28939395DCFDEEF5188E77FF4C9A7D87B28885030C8D177F2B3C662A4B31C6672A0DF450D933B7F53A523E97A2499C005E34A909FE16312B70A1038B94ACA64F8FDAD58B67A1B0E348471A0B6192DC108DC24E0138D211C73C1E7F120332D0599A906268C29417A12BD373566A520937C70886E740DADA130F61DACC4A61D15D857E147736B048168186147944BD1A9EB08694A27A724212B3D09593E07A68CC8479A5758EE7C7A666952E114A0F2053AEDD635F9B1F0957FA0396C220013E9496E5C36B61F06F4EBC5562A9F28F8080C541CAAC392959B51D918E4D6C4A6AEA16F5A322E9F3A185909E4E327670F05F3A809AD8E2D7B2AB162F36194D53673897C82338A8B866461D2F001A28A929AEDFAFD78F5C38D286FD4D014612572E424C43069587F0CE99F0597B39332A3CCD464EA15BE28AB5DBD3C8E8BC579541C4500DA21CD2CBE8CE3591CBB70CBCD4FC3347663FE5F6FE42C0E879BCE51EDCA88EC0927E0A8C82F0C140CBC1FE1E4723CF3C2FF61D2900CB8B84E80CAFA35C44231684103F547DAF0BDFBFF8CE9575C80F3F30B70F7AF9E40E2C00CCCB96936B212BCE021D230AC5253D640D2D016069E7B6629C2410DC10050BAB309D0FC18382C83E32966C08305CF6EC1AAF2F771DFEF7E88EF5F3705CE2050B5AF010FFC6E39FEF2DC6A34C70EE12B5F1E83649366979A73B462D65517E0DC69E3E22507E299134756DEC0293B891E152EE1B5ED8A4CD031B406A80D9C754AF9FC64A02CE893C5D04E90274B8E27FBD9F6D7F12EFF39DEC83ABBC9D421AB4C95BD6DE41E8E0187EAA3089165CA8D6885B5C0DE37EE8012159624556F51C942348424534356326579D093257291F936C93294ADB1285BB8A605A86E89A2B2A61E8DAD6D8885C21C81771A0E24794CE4A425232BD584576AFA58B2AE8219ADBC5EEADE224AC1EB5BA23870D8CFBDFA88B45B4324871A83DB74C06502E9495E64A726A05782133ECE38104F3EC3C72956F2C1D248EC5FF4DFD9BEB7162D012A458FA257B217FD3312E03234715497B7C0BD7AC2C081FA20AA1B9A118984E14204FDB3D291996C726770D258B17281A9634D8BA6E1602D5071A4164E3D8A04238AC2CC24A49208BF4C0FA4937855730C076B5A106C6B854B8F2233D1859CB404789D0E21A5D185FB8BDF807F6F0B627033E3CF26688B8C2C4E12BC1D4373B38627E7EEC2ADB73C03B77317E63D75235BD0BA5B64FC58416A7643C8E05F4D335030E2FFE1865BA6E28E9B2F8657A7EA472A3C914740F651014F3DFE3116BCFD045E7C791EDE7F6D3B7EFAEBDFE3EE07AEC33533CFA556C6EDA9A51C9FA37C6E4A657460F53FF763F6E5BF4673B30B0167332206C92D046525AB17E15036A0FB60646DC7DF5EFA052E1D5B0433081CD8598BC75FD88D47E7BF8B81834DBCF1C26DF07944E607B94AE23157C9CB56A36A26E8CEA75A8B03E4DF384848047DDC4C82137F5E15419F385667DD95963BDACE01D6F7C7DA9F44BECBF1EB66ACF7B66C0D7A6EC354C34C1DC59D44F6ED4D608E17738DBF97ED09A2F7A30C8E48240AA7A1F37BC68924EEDBB7E596779ADDAEC66EBDBECBA0AD7424D8F139160E748DCC468E7F6A67DCACF7B15F67FFFCE361D29DC52A0885B25DC42750A054EE594CF22D7E0D4FCDDD851FFFF869988E5D983FEF265C3DFB1CE82E51312ADC63104136DA5542C0E3CFAFC4A3CF7F8037FE763B7AA73860905B8CAEA56BA496D85FFEFA211EF9DD4BB8E11B6371EDF55FC3BDF77D8C3F3FF3189EF9FBF770E5E593DBC95CBAD9A3BC03508051C3FB6F55A2E97025E6DCF53E6219D5B8E9275722C51D8119011C6127566DF0E00F4FBC0733670396AF781403331399A049EBECBAEF3F8EA5EB7660FE633762FAD402E195677D1D2BFE272A8259B2C122EAA300958B4D4E14EBC59CD57AD0DD5971EADA2F2E029DCD10FBCFD6F75D5D73CC07C53654EBC4C98510ED14261E365B74F754B2DB1717E913BE332668AE02156EAEB8D0111FE9A368F1EB786A5E296EBD653E9C8E3D2C377AF5D5E361182278460D7588E00C22E700F0F2C26DB8E74F8FE0E1F97760E2C842B8C8AD41E67B58541536B70037DFF90B5CFB1FFF8504570043FBE5E2509586DBE77C883797BF8127177E13D7CF1C071759E332784E27A417DF5C8CAADA5A7CED9A59D0DBDCF8E637EFC6E4A93370D125791832B82FA73E52931FB2CCEF7970377EF987375134F2003E78FF374873027A40C3C72BAAF1ABDF3D85EBBEF925CC9E311609E443A1A033ED1D524287B271D8EFD54D826EA32C8EB356B0FF84979BBAF08C42A093492EDC20EDAA7DC2F7D79170BB1A1F079DF8CCDFFE57F6E572CA5D178C7CD479F58C42ED94DE2C8BFB7025E9D1044D1FD4DA02FCF9C99DB8EDD679308D7DA020E195578E8349DD7064493F19B7461BB07D5D1437DFF622FEB9EDEFD8513E1F690909F14EE7C47B8FFDF145FC69EE7378F0F1FFC5C489A3E1A63841C8818A3D21FCF4A71F62DE1B6F2031BB0D2F2FF87F9836BA2F22A108FE327719EEFFC39F70E995E7E3B63BFE0B69C93EBCF4FC36BCFCDAD358F0CC3D48753BA538121DC3E88680DBEE5A8BDFCF5B8AE193EAB1F88D7B90AA47116836F0AB7BDEC3A277DFC313736FC4B051B9BC5C9C01A0AAA60ECFBCB408C386E5E1D2F3C6710A9F25E1655F53B6D515F74DD3EF685353047D4A97A57AB32F0C02761FCA89126CE79B3F1EE11EEFEF5F1830FE0D37222D684BB4426AE30B778416426BAB134F3E598ADB6E9D0BA7B113F39FBC05B3AF9904DD1543281A86C3E1844E6E8B26E0DEFBDFC7BD8FAD42AFBC303E5C7633D23C6E762BBCFAEE5A7CFBBBBF42C9C02C3CF2F0AD983076106B7050829EE5F0FF707129EEB8FB75ACDBDB88683400B7D18C58A4029E443FC64E29C6A38FFC0C03FA6660F39E18AEBAEE163CF2C00D987E7E21FB26D83943D6B374B1DCF58B7578F04F6FC2CCD984F7173F8C71FDFB62D7E630E6FC6431DE7E7F05A2AE20029A1F305BE172D6A377A68E39B77F0DDFFEFA6C0E1147C351E8DC90E038E95436178722E87FC3DA551F791A103811B2ECECEC3E91D7F079581E8BA55B83DA90517A6087AF137DAFD330F42FD45B5A185BC9EFFCB3C8A316E259F415417393034FCFDF891FFFF82998C62E3C33FF56B6A075972C86A1E29330D074288C071E7A1D2FBCB71111D4C0348EC049625F70A264CC14DCF97F3F40DFBE0069B65000906685B5C0E81BD96D6EF9F223F8E5438B70B0F21022E106A4A4B66119159938848F9B0A5CDE7C6F23EEFDFD3CBCF0EC2FD1BB97974BF5E98B34FD38E53B042C5BDE8C1FDDFD08728B02B8ED47D7E0BC5123D8FDF2DA6B7BF1C7C7DEC1C12387107147E1F685F1F853F7605889C6F7448162A1FECEAA1E8AA0BF500B56DDCCBF0681CF22C863FCAD831FB9ABBB3C86157ED4A59D89FF5F33E22FE6A7D8B1602B5A801F179CE7986D0C7EBF8685CF96E2CE3BE7C369ECC7A38FDD802BAE3C872B48A9EB7A5C2439AA73DAA15446108D072CCD72760388FE92AC1D1321B795F823FD5E0410455E3565F8D0ED50293D678970EE3455F6C9962AD4AF53A6B9F1BD5AA72E5B5621A7C44999609667A7EC0FDA7CA43824BF4427FD0ED21AA76B75BE5741CBA24558FCABCB98C5D1414265417F3197B9BAABCF8BC0B108BBBB646ABFBEABE063E7FB5496B43C7258015459266E719E4CC16C69013E5A5E8937DF580943AFC557FFF3028C1A9D0F27A50E32E6C47AF45FF17307E845AE9E203CD672A680A114DA67F17D2ADB96455224D6C5E99B36917E8D32EB45AD9E28B4D199DC39984954EEA0D27171FF16A7F2E75B27009953CE7E76A9A7CE06374B400BB150FA9EDA8A716E3B352DA6AA563B292B82FEBC4FB87ABD424021D02D049874AC2A4322C476521479EBD204D5496F248C83871A50DFD0C89D71FAE466223D2D998B90E84BC8A24BEB5B12A5CDA8E56BA40C97D01C8F0BF6536B29EA8C427D296D25EB5C3824DEC12A6CE28E38F27DE2A5E2FCA652EB5AEE0A567358EB333BD592C886C2A29E92E289F4E5A41FA4667F07DD676B108AA0BBB5B4D4C50A0185C0E745804947F6CFB408931951BA1CACD2392AAB8E46D0D8EA4720188423A22129C107978BB4A845B97D5C6CDFF2FF33CB0937050B0FC93657A20B91D52856882FB35383BA95C884782E55B784FC656D0AD3B0F53BA9A06AB1BE90CB8FB70A67E2B5FE716EB9BD9D962DDEC7B72AEFD72A529425AAB65385646645D09F77B5A9D72B041402DD4240BA1EF835B6AE25E25BA985C76E69917A174698D31D1D51D262112E002A9F1772FD92A42DD6E37A6FD9D6CAA2CB787B92388BC73F9ADDD6524489F8942A43E9F6B84F0B8BC5C8B62B16A95AAE2C59A26F31AD7474C8B275B16D08E21762FC72FF8937986D6F166B1390625788B4F25590B05B4B4A5DAC1050089C2A04EC56A1C54F52CB83F9D0F22DD3DF48F04AFA80454360E1CFA5E09AA062D249B12C524970A2B6306EA4C7CB38ADCF65239BD23222A0D277BAD6191365F72474257EA3B5AB2BB21BC5266BC07975E25F845337A85CDBF2894BBB9E7D3541D9FB50A4CCB12F9BC385B271ADDDDC66939BEFC0D6AC59A5D99DAA25A7DE4721A010E80E029D1DC547892DB59320D7FC50008D0369C2E4156DA6884885C6B3F8927E6DD638A1809E2455AB8EBA03C99216798885B6C85E3658154FB49122B785A4FD8E5A335D047FA3D23F22BA7CDB495C0A4FF338654E336F35CCC4EDDDEBEC98B1A54D16B4B8266E761F85ABBC11396E55A8D29D85A7AE550828048E8F4017041D77E712F1C89439E62049829C81C15FC227211AAD0A7FB395EE66D73517C26E22BD4E58E6F65D4058D144E4F1F7603F35B1BA4878B3979DF32D49D70CA7EA59422596E52FAD6C7AA5B8077A6FB2C385CE92BC81B85EB6A5DA4CA14ADA0EF8DE78AC3692B77E3E1309DAEEF3A1A41797D301B7DBD971C73BFE32515728041402FF4E042CEBD79EB570943B41FA82E3F9C1328FCDB2A83B11B4351C6159537A9DE4BECE046D25E5C52D70EB834519F96712B4B5894812B5B9D2E30148227FCEFAB0B9993B5CC78976425EE09804DD99B43BA58658EFC71D5502D4E5BC5361D4E798DBCFA76647471E4A188F521239603A75B85CE7815CC6000004E94944415422F5467D290414026738027677827D28C7FAFDA9186E9CA86DBEDFAE2C5AEBBACE9B4B7C679056BE752438D6755D59CC9F398E8E37284E17A2282614A69E8444D05DA67D9C143A274DD022995CEAFB46A370E85A4782EE0A68EB16ED7F3BA9DB562F520828041402A711013BC71E65DDCBE8A42DA84A69E0C19050B3FB421034A7B05851510E1E1CC782B6476F4F23AEEAAD15020A0185C0E745C0EE8EB6F2A53BFA6E452EA0D57FC022686A79757C35F413BFBB93B6A02D8226CB391AA1A86B0C4EF241BBA81D79A71B903F9FCE93D1890F595DA910500828048E8D40E7037E9CCE6C6E122E9C24EFBAD4FBA01FA941045BD0A7D04370D2044D2E0E2B48188B524B200DA6A933411FF5D5A90BB55A1C0A01858042E08B8C40572E6B994062EF21CB43B0C29A44D0E483FE4259D0D6ED517E24B51632AD5E6936F4ED22265FE44951F7A610500828043E0B017BBC526A2B0957475404098341EA0E7FEA4CE893B6A0594E85357785949F50FD13FFEDCA9571EA6E592D208580424021703A11E83242D8E103AD9E85C27A165CD8CE895F802C0EFBDD5A55971DCB788E05E0A9BBF9D33945EABD15020A81B317817683B2A369D935758B7EF3A7E3EB7358D0EDB763CF6F3F7E95CAE919C8E90047BDA742402170F621D031C5BA9DA03BD7F158FEE753E973EE8CF62925E8139B4A45D0278693BA4A21A010F8F721204AD33B7B0A3ADFCFE976DD9E1282FEF781A83E5921A0105008F45C041441F7DCB95523530828044E33025DF9034EA5557D1A085AB49339B623C3CA1A3CCDC8A9B7570828041402278DC089B9623BFAA56526C7497FE6D12F3CE5046D453315419FC259526FA5105008FC8B11E83E418B5E34C2403D555FA79CA04FD58DA9F75108280414025F7404CE4017C7171D52757F0A01858042E0CC404059D067C63CA9BB54082804CE420414419F8593AE86AC1050089C190828823E33E649DDA5424021701622A008FA2C9C743564858042E0CC404011F499314FEA2E15020A81B3100145D067E1A4AB212B0414026706028AA0CF8C795277A91050089C850828823E0B275D0D5921A01038331050047D66CC93BA4B858042E02C444011F45938E96AC80A0185C099818022E833639ED45D2A0414026721028AA0CFC249574356082804CE0C0414419F19F3A4EE5221A010380B1150047D164EBA1AB24240217066207062AAD467C658D45D2A0414020A811E858022E81E359D6A300A0185404F424011744F9A4D3516858042A04721A008BA474DA71A8C424021D093105004DD9366538D4521A010E851082882EE51D3A906A3105008F424041441F7A4D95463510828047A14028AA07BD474AAC1280414023D090145D03D6936D55814020A811E858022E81E359D6A300A0185404F424011744F9A4D3516858042A04721A008BA474DA71A8C424021D093105004DD9366538D4521A010E851082882EE51D3A906A3105008F424041441F7A4D95463510828047A14028AA07BD474AAC1280414023D090145D03D6936D55814020A811E858022E81E359D6A300A0185404F424011744F9A4D3516858042A04721A008BA474DA71A8C424021D093105004DD9366538D4521A010E851082882EE51D3A906A3105008F424041441F7A4D95463510828047A14028AA07BD474AAC1280414023D090145D03D6936D55814020A811E858022E81E359D6A300A0185404F424011744F9A4D3516858042A04721A008BA474DA71A8C424021D09310F8FF23866F9D43DF71C80000000049454E44AE426082 where `app_id` = '3'; -UPDATE `fn_app` SET `thumbnail` = 0x89504E470D0A1A0A0000000D49484452000001680000012C0806000000EE2C29AF0000200049444154785EEC9D079C5D55B5FFBFA7DD3A3D99F44602015208044209BD77E945050151442C806097A20802A222584014B120A2285800A54887480D2D011292903E997EFBE9FFCFDA6726441F0804E6CF7DCF7D78F326CE9C7BEE9EDFDEF777D659FBB77ECB88E338461F1A018D80464023507708189AA0EB6E4EF48034021A018D80424013B45E081A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013B45E031A018D8046A04E11D0045DA713A387A511D00868043441EB35A011D0086804EA14014DD0753A317A581A018D80464013F4FBBE06A20D4660FECFD1C40118F2639358FD43FD0F75A87FC56FE30F30E43DE4F5C9B1E13BCA35E45DE3FFF1D37F7B9FB7F136FA148D8046E0BD454013F47B8BE7465CCDDF806E07E8327E9D1C893D3084A44D4245B296A2544BCE89C0D890A03778D9FA81987252A4C83DC420C654542C2F932F07B090DF878AA4E5F7C939F23EC9EFDFE0B6B1117FA77E89464023F04E11D004FD4E117BCFCF1F2468A1C1C108D950ECA948348650FD3826C6C526C014CA0C5210D844A998C04C5E997075C2D249BC9CD0B93148F87231F91AA467F9A7BC6D1242FFDB110FB0BFA6E8F77CCAF50535026F13014DD06F13A8A13B2D1C60C7C164C34018AC083326364A8A74E3389F30B5F0A69C62493C5CC0359AF0B114C70E5E61300696785945C2B1A17E67C93507C3E7E4F260F903046D4134C8D421982E18F29507D243F7E7EB2B6B0434026F8A8026E8F77D710C46B46F947F96DF952192EF199570888C84A755542D3F897DCC2850C90BE2086221FC60E07B04769AC84CA26023B655428338495FA87B80E4A785F1075326837858C2E4150C52A0BEF4A111D008FCFF464013F4FF6FC4DFE2FDC230C43024624EB6F26223C6340C8C38C68806C8D7A8425C82B08ADFF13251B99B5AB98857EAC7F0AAC45E8D38F0B05316A1E360A673D80D6D58B9E1E4868DC7CC8D80541361EC8093C63052C4511A0C87C1783E1888D4D386A449DE28B95D67C0E9E16804FE0F22A009FAFD9ED4C1DCEF00074651A4C8D954398B98CAC0D65E9600A3DC47D4F52ADE9A2788D63D49A9EB4508FAB08C88280C88A31033949C768429D700EC305039E89034AE91A718A60953C3C80F1B4BC3A8091863B7263F7C3266F348A23847480396D344484ABDB363A8985B1F1A018DC0FB808026E8F701F47F79CB7F536108410B39477140148658710D7A16515EF5288557EFC2292DC22C76908B2C9C284564F783E9134531711CAB2C87642C549E3A825400E6A038C4B2F14911192601167E240994765CBB914C5B3B4D5366929FB80D66CBE6608E05B30DCCD4C005DE6FA0F4FB6B04FEFB10D0043DD4733E40C02AD32CC49904C6AF6F0C0EFE3ED9FF4BD2C16105D308A8F6AE227EE667C48BEFA75A5E453E55250A4A18664C6CDAC4710AD337B125312DAC2EA9118C2465ADDECC10A107A130752C11B64FDA36318D10A20849A7D87E889D76F04C937ED294EC916447CDA169D29E348CDF1EA3653258D904A58154B51AE7C097FAB7DA5C1CC8670F9E2451BD21A391FFDE42A8F7065A6E197EF2E324476FC6E6FF549A6C280B4F06B2C16C2658C88B547E7E700CEBDF6B30F76F10ABBBD9EB874EE80CF587425FFFED22A009FAED22B5B1E70521B169E18B6CD9904D3DB08441D5669E45ECBAC48E8167191886956CFA155E2658F02B4AAFDC82535C8B2991B168998DC172924400AD78391095859DB0BEE4A985C836D074F8664C688A82DAC78C256911624542991646646318BEFA992444E47A5E6060A6F294AB21F98661A4A79E416AD37D30478E22B22C3C2B456040DA343055114D0AD3CD61C8DF942E13C7390CDF04A74CC5AA60D344EA3FAA40A24459226F3E28073421345198F9788212D9C8C2F0ECE4DC813F5171F6C0BD49FD42C613F9C9CDCBB408B1B1E2443D1ECBC6A810B1826E40CE2273605B4486BCC3EB47723B893620764DD91BBBFCF5EBDE1D029AA0DF1D7E6FFDEAA8426CA694144E6239474583E180CED9C2934D40F9792882E72EFC1577D333FF3784AB9FA4990AA6DA1814821E8825D7970F862A627442135322D881E8D11C609A44586728B54764083127A42E3C6E44F25B47A93984C015A70F1C9226B12C4BA54B8230A46435A8A8BA75CA7EB46C731C66EB568451161C53DD342202525E4A91999FEA23A0898C2FDB8A1E35CBC6B24C55ECF2464712C32651AF7AAA182468A55289098849FB6172EFB12D5C536E3349546CA9248D60E760ABD74518B19F44F918723B528AF1C1187E50286E1960C7A0EA77E4BD15C927CF04C9B9EB9118F8F78661FA5B4FB73E4323F05E22A009FABD44F30DAE1531A0634ECA4B92A819A90A148A31A889882DF4C9D556E1CDBF89D2333F2113AFC0C6C40B9A126DB3906F2C119D0A3531141927F4266A381521FECB7B0F3EBE273F3554914B42F2721591EBC5A2E0886D22D31BB85E720151900C2A494CD32488AA985983AE6A0E37338D615B1E42CB564761E436C30F53205C2DAA3EBB4A9FD107713B2D151B5345EE860843920DCF37386474892E6540B1B2BE983D926782E4161324791FD7B27007107088C8C9266818E2AB9B5F924491BF3308020C47FE3EA87A016B4A21BDE5805AAD86191BB4346618D19CA22D6F2BEC3286E029A3183C124579825C32701D3F0FF187445FFE4D11D0043DC48BA38A8F88D7A4025018323652B8A2671E785F3BF4716AAFD0FDC89504AFFC8936AF1B2B8808E5113D9D21886D4C15F186D8B150FA40443D10F18586857C25A492149A484428D1ADD0B114A74854AD32088AE0E40661131B52CE6D928EAAC8D6E1E0219B941241CB77216BC74C13D64A908AF1EC345D4116373F9D71DB1F4FC366BB833345E9A45DBB9B5EB9EDC42318563531C24EE228C66C1AAECAD4DF8CA0E5E7FE40917938A058B125BE97E29A50523F3276033B32A53627C964482125E08A4ADC046FA040D232C136A1BF1AB1724D3F5D5D3D148D0C5E6C2BE28E7C9FB0562663864C1AD5C68CA963189D91187C4047BEFE363758EA93DC5435410FF187445F5E13F4FBB506CAAA0E2FC68E3C1591858643F22F79D4F6B0FA1FA7F79EABA8753F4226584B4E541C4136F1CEB05C0243E82AC9F73A22A393348563E38742D5268619128631860A55D34ACD11A90D3A79860F317D1FDBB6310D4BA52C06B622550AC3B6240FFDAF65DEF27321E6A4D45C883E49A1382A4362E21B2615DBA1D78496899368D9E51CAC86B94456037D56338E67D1E02EA1E7D95F12B56E41FBB4C3C018D864FCF749184C052337A48850A2D95852400656682B828E14410B491A547CE8F43D9E5DEBF37C671F4B7A3B71BA3AB16A1E516C60DA0E2DAD6D4C9A3899D832F13D8FC84E13C406BEEF13043E665003AF825FEEA3ADC1E1C85D67322CE39092E8DBAB924E0F96B6DBEA7631589DF97EAD1FFDBEFFDD08E8087A88E7BF22358012C586C9EE96EC9F49CAD809CB98D545C4777D8EEAD2C7309C066A918F617B2AF1614716569023B064D3CBC58E23953B15EEAC4AAA3593C38B6C2CAF44CA9434888369E7F1FD8144886C2A9A81EC81110501B1283654EC1CE208C94BEE59D20BB14160BC7929B72B7B6B31A4A2885418A9A219F9538C6C867EDFA533DBC6C4D99F2233F563E08C240ED7E23D750EAF2CF8339BEDF753329B1CA16E1C6F1A42AB1B4472334912E426516CABF7905F952DE870031E78751D0F2D5ECAF26295AA6F92326C9AD30D8C965CB4EF83E560D859369BBA05B6ED100601EA2271401884F841A06E50815FC3AB14C85A21C5EEB58CCF5B1C7DC05C5A7319B26A3F2048248A0369284DD043FC01D197FF8F0868821EE205228FE1A928C6904D40C3A46A49CA4136BF5EA072DFD5444B6F24E5D788A26178418CE954C1ACA868D5089B084D5F292DAC38C08A45C9E110DA794A519AC06A50A9904CA6192BD58A69B7916F1A496C3989EAC30CE82FF711861E51B988DFB38E7454C2F27AC8DA3572764820AA87FF804110A7898D00CBA860A9AA46E15283D0CB63D24235D745251E8D39F24086EFF6417A1FFF13E6B2AB89323E8D737E4E7AC68960BF7992201AD8AC3394AA25268A4CB5B958366079C1E78E97D7F1F49A0E3ABD2A664396967C9E49D906C60606A9EE7EAA664477A58C936F61C4E8499896A433845E2395D2303C97300AF18210370C89E208BF5626F22A44418DA8D0C3D471ED1CB3FF76349A92AC499E5234410FF107435FFE6D21A009FA6DC1B4F127092F5BA22E101DB291A16A88AB4699EA73D750B9FF0A22CB25322372618546212B5F741E0E9E15E1DB2E719C563968118D492ED98F1C7CBB9954DB7872E337C398BA1F8C98464C33C42DC080EC4E4E3622BCB08869C5D8923E08CAE0F7102F9D4FD7922759BDF4794646AFD064F4AFFF0313099A1C09A9CA76A6DC2C42234520D5889E472E97C688AA385640548E882D9F6A9BC1921E8BB14C6444AE9352A544E680DFE06C7E9492B2BD590EDA55B78788B44800256A361D7A31B8F7D55EFEF6E4F314CCB1F4167CB6DE6C13A64F4C93F563CAAB17535EFB0AD54227DD7186D4B0B14CDC743A8693A3E28610C6C4810F61007E481446548318378A28552A388E855B2B53AB1494CB48B5671DC71DB43B3B6D3E5CF63CD50D31917724E3FE3799F4C62F06FD4A8DC03B444013F43B04EC1D9F2E398EB48BAB76B87238D51A66E71DACFDFBD768AD2CA6266A07CBC20E51795E4947D896ADF2AEC20C69D756F9D56A36458FD380356A3A23A71F8A3D722E38139562212140295C193041DA206095775DEF72A7A254B959C8974BECD7F04BCFD2FDC25D94163DC6B0D26B34FA3DD84A6F9DC6B7724471486CD4880C0FCBC9409855496171D933AD2A66E8E0C421554BF2E152729EC78C7D1CCBC6DBF532F25B9FFAA66E7842CDC518B246881DF4AA829897AA297E316F2DCB4A065E18323263307DD26886A54D1AE22AB5EE7574AC5C467F4F37C54A9995AEC30EBBEF8B9DCE12C6065128517844E07B891A2584208CA8F91EBE2F698E80AA5755F968CFAF91AD54E82D75AB315CFDD913C949597CCAC5352CB2A2134FEE52FAD008BC2F0868821E6AD86B31B11D50B3A508C5C02E2FA3FBAF5F22DDFD0F32411FAE292233494C67955CCEB1255FEA4AA11F969927E540C173885A67D1BCCDD1D89BEE83911E0D664EE568456026052E1B7BC4A10B511F466D25E12BF7D0F7C29DF83D0BC9DA45D27688E5054AEA66D98D2AAF1B9A3515F12B15482CF1664026F4F18D3CA9B88C6B99B8A64D5E32E9BB7F8BC6AD3EF11FED4A950E3AF6F1629305FD01373CF8321DC670A2D864CAC856B61C97A641D2426E09A3D24FC7F2A574AC598B17982C5AB6921DF63F8A86E1A3A856ABEB25824AC32D635539E798308CF03C57917210FA54DD2ABE10B45BC3ECEFA7DF2FE396FBF8C169273179440341AA42D548D1103803D6AE1B8BAE7E9D46E0DD21A009FADDE1F796AF8EE3226E90C7364C6C7A293FFB537AFFF913F2B5D534671C2A7E11C310299DA572CC86E9A9220DCC0C419467B5A825A6CCA57DD6C7309AF7062347E018848E743FE9C4A1118BDC5B8EE34D4F9024B9A4046CB923B8102E23E87898CE7FFE1277D5938C355CE5F911BBB2D127E61E153C3B4E0A41E2760CA346362AE19327139555C9B86FD8E462F076B984FCEC33FE835DA9E8FF8A046686793D26D73FB20C3FDB465C2BB3D5F836A60CCF10F852961ED2608554FBBA58B6F8253A3ABAE8EC2B91CA37337BF783084D07D775955A45D41A42CC8A9C6563D04FC8DA97083A10920E70DD1ABEEFE2BA1ED4427AAA45ECB8C429BB6CCB11BBCD2430AB44A4C878A9C4296AE3EF7F1B3F2FFA951A0155C025E1863E860C81026B71E21164AA0646F50956DC713A4D95974949E01A9818B6E8A363EC50F2CCBE08CE88D336453F03A9D118D38FA275FB23309CF110B5135AB6D2FF4AD189657A3858EABF8D3E0211FD5954A48C5BAE19C764C36E2C6F19FEE247E87BEC368CE232325681B459C3080342C32690221649D39A01E92089A0F36119DF92021C9B4C18E1EF7C31B9399F4455B3BCE12125D81516F6C4FC685E273D8DE3092A7DECBA493313F2914A9D7891A3A477A9D865DD9A15BCB66431ABD675B3BCA39B7D0F3E8C6CF36855D62D690DCF4BD21AEA2B0893CD41D757A90D3FF054DA43A477AE572390EF6E0DD7B5E8AF54C0ED65FF6D26F1E963F7C531A4443D85E53A09394BD58C3E3402EF03029AA08718F47588B67904F96A48E703E7C1CAABC9FB15EC3043208FD0D219258E71A4A8431CEC6CA8D8397A83E18C9CBE37E99D2EC0488D549D4F446E97E494C5BC3FADD4145203F26E36B1C2B89434012083D4EF49F09E51AAB70844375D5D4E75D91D2C7CE0C78CB6BB690C639C5072D03522A7A8226609BEC37880A0C5772436C90511A51DBF4ECBCE9F8178406627B1804AEA26E5DA52C8B2DC35F9F9032FB136339E322673C6659894AA62472155439E0E0CCCC8C50A5DD6AE5CC6AB4B97B1AEAF48AAA99DAD77DA45798728EDB7E49DA518258AD647D12A820E937CB490B7EFB94AD9512A16943DAB44D18532940B559CD8E3A07DB6E1848366D31887E4440FEEDB0939BF8BFBDF102F2F7DF9FFE30868821EE209EEA0C8B0D8C1EA5F46FF5FCFC1E8BF8B9454048ACD5C9C2332C5AF593C3512D7359198F53923C94DDA93D65D4E84DCDC01CB4F614D958F48084E0CF6A58A43746FEF6213ABA61AC5425AD22B322E55E29852558912210B91DA6107E1DA27E879E4E758EB1EA521EEC18A42E2D8A6E648955FA022E85C5826104B53C32255F528CFFD068D73CF5111B52A7E5187E8A8436CD3A4EAC7FC74DE7216971D4CC7617CABC316C30C1AC2329ED140C16A221549297905337459B17C294B972DE7B5B53D6CBDD3EE348F184B184544D1EB298DD7095A0838C00F035CC93FBB1EBE5BC3AB5655AEBF522AE2B92EA55209AB6AF1DC530BD86CBBA95CFCF59398D694A159CC9F020F33258D0C742DE1107F4CF4E5DF04014DD043BC34BAC388B6682DD1E23FD27DDF0FC806CBB00C571916394146953227A64786F2692E1839DCE1B318BBF799307C17B01A3054A9B4549C0C729C2A3101439C3C32AA13CAC61E7285A410458C9406FA104ACA404AA4B12805D0660698DE2AE275F752F8EBD7C8066B958F4518B6E1D91E4E5C2518CC414B8AC34E61D75CBA677F95BE9967D2EDA5A8945D82813444536303B94C8A75DD7D3CB046CAB9338CCA54983E26472A92DC8F94AFA7094562A8B4772E86EFB262E91256AC5CCBAAAE02FB1E7A0C454FAC557DC26883D44618AE4F75483E3A21E824A511BA3545D441AD4AB95854117558EAE4F13B1EC5AD343276EE0EECB8D7565CFEF1BD688F6322AB8469669421933E3402EF07029AA08718752F10F25BC4DABF9D85B9EC09B212999915ECB8423A100F0B2166E97C22CE730EFDF63086EF7A32CEF493A8991395D19068A00D894213433A75C44A49213F5749808DFE2BA47023B966E24E9774A54D5C3BD4FF8F1CACB086D1FB086BEEB88C5CDF7CB2D26E4BDCEBE4C660888AC3C31B54713892233749F901CF8C3C99A7C77D9A6E63C440377149C9C835937CB16CEA15EC56ECB0CCACD1166D398B7228CE1819B2A14FB3DF4FD5492B8587197AAC5EF61ACB57AC21951FC6265B6E4BC937949953147BEB551B927F1ECC450B41BB818FEB5609A5D4BB56C5AF56085D0FB752A1A921CFC78FD89160653F1FFAF01574B78C60D20E53B9FAACA3D877462B8155C02483AD9BE66EF4FAD22F7C770868827E77F8BDE5ABDD2826E53D48CF0D1FA1A1DC8B6B270E72E9302215F9D46C715513E3E31A51630BBD4DFB31F6039FC3CF8CC6609C4A0D0CAAE806C97920539018FCBF6B331FB11D5296F889DC6FE0500EC9A29BAE1588BB9EE2B5BB2F2157594873EC4A2B44224965381E8D7191C88DA9645AF1A59CDC949B06447623CBDAF664C1265FA0373F15DB7112F37E4374C989C2A252A9502C5598D0DECCE89694DAC00BADBC327FCA4401B92091ED05525549CCAA956B78E9A557D974F3193839A99E94C29432612C3E1BC1FA1CB4283A06893A705DBCD0A51454A8887AA3E8920B628C9E6E8ED86B670E993B8BAE5A3F071E740E1DCB9A69D9762BB6D9A5811F7DF9305A6D298D076B30C53190E99022F9243124B735D14A6FFC0DF22D17903EE1BF1A014DD0433CFD4AB0B5F80704B79D473A86422A20B242D27E06CB2852336C52A18D6D54286647D3B4EFB5589BEC8167964979ED28767EDF9EB06328AD61C93DD763F90B68307AB084DC8C2642CBC1B3C50BBA82D9329E970A79DC3843CE2F92C6A3600DC31B3193EAD83DA8DA6D894F7352D74D245DC82D33C91D7B9248917F27136198B2513978DB313085F0E5B5A6C5BACE1E9E7CEA59B6DB6127622996C1A216D692F26D65869490F486042D567725B74839AEA8681AD780B5BD2C7FF8212E39F774F6DF691BEE58F414279F7C3EED85D9AC34B36C7AEC78BEF6D97D3878D30949EC6C2637B1D7B3E8898B75520024392A4DD043FC31FAAFBDBC26E8219EFA302EB2E68EB3697FE9B7A48D1405BBAAEC40337E86D8AC20042E5239276550C86D43FB51371264C712DA651CBF09D3B4DF5715414D52DD619954AA8CE1F5822992B90C912939DA8020CEB1B0A3C693AF1509429356CB6544631A2FDD4A97D14ACA3054235BE9B128472E9DC2F5AA84515248E285265557ACF50DD219B9B6A9D41D83E2CF284A4CF8E5E7A5729567E63FC7EC393B10063141244D053CC268809C072A0507095ABE7BAE45AD5A268C2A78E5327625A467F16B742F7A818BBEF469F6DB7D0BE2E63C3FBAEE41BE75DE2F08D2CD6466B6B1CFA15B72D5A78F2563BEDE306B60272069E8B27E3FE05D3FC20CF10AD497FFDF8C8026E8219EBDD87B9595B79EC9A8D5F711D5C06D9037F4497B3942DB25B084010D6A51134D333E4666C7F3F033F2985F2225D5851241BF8F2202B14B95E856542669897EC57CD936A98A0FB315F3FCF21E5E5C5924C80D57C31C9D8B69B47C8A52F3926BC5502E7A5280237914D127BBC9E65CE4E3D66A74556332F95672D92CB69552865242CE83D23931D3576E1D618C1F84546B1ED95C23B59A545BC6F89E90AF689D139216D2176256C5299E47B12AFBA93E71B11BBB5265C1A34FD1101B4C1AD3CCD147EEC32E7B4CA16B89C78597FE91BB1F7F062B34E9B52CB63E72677EFAF50F33A525B53E461E68B49E78440FF644D086D143FC09FAEFBEBC26E8219EFFA8FC289DB77E9EB6EE67708B31518BA93A753B5E5E55E489BD686046F4C41318BBEF95A4C61D4C352D1B8635B2EAE15F246AEFDF23B41B56B10D034B3C520351929804B6C8014D5E59D3C173AB622A66BBEAABD8D66C62577DF266A848DDB3C4093BE983225D606AB5AAEA6C1204892EB9BFD04FC3E84DC8340E53F969E5452D0D051441CBBE62B2112AA991409A184411E9548652A9ACFEB7747CF1DD324198E49C85A4E5BA42D083FFAEB8013923A2B0FC15B69B3089C6D0815A8DB11386B1ED4ED3C8B5D95CF4F1ABF9D3DF5EA1D00C1937C6B3463172CF599C78DC367CFE90E9A454383FA8E14E3C5F550E5AF60706FE1BE265A42FFF5F8A8026E8219EF868D5AF597DDB5719E5AEC48F5B70D32EA9A84CCA6FA06C5BD8D4706D9FDEDC6C261DFA4BACE62DA9490F5823549D3E84A0DFBF1C87E45A25041525604A75EF96EE263513D6563D1E79612985D4487C334B3E6F93B2A5E046CA5D7C0CC9338BD9536411F921AEEF532C970922E82DF4D35F28326DC60C2AA2B9B612937C395F5A300A1FAEFF92CACA810EE4A2FE50D61DAA1825F1790E4321DE55BD080000200049444154E39A3241FA778216A2762B2582FE0E76983A815DB7D8927CE89016EFE85444BE2D85D3DAC2DFAE798C6F5EFC0BFA1A62CC8A4F1CB4616F3191D9074EE5C6730EA04D3485D2AA4534E8030D0D03A5479799492B858D3E340243818026E8A14075836B46CF7F83BEFBAFA4D9EBA3660CC34B55C945652C2F4F299D22E57954532E85117BB2C9076E2448B7ABEE2292937DBDA7C7FB57CAE60EC8ED44CC278794CA14E2987B5F5C41D56C57A4D8D2E09092CDBCD057A90CE9112EFED58E1161F91695924F7FA9422D86FE728D8EDE025B6F3B87AA747B71C46F3AD98293FF249511C762C4A45ABA246E7AB1A83EC49323528D072229E556041D10E02B0BD44172FEF7083A5DAB61D77AF1BA5772FC2187B0C98809105A34B6E6F9F39DB7F1C39FDC42D06B31AE7D1316AE598DE742C64FE135E798FAA1FDB9E673BB336D586EA0196DD21F328EDD449F6DC836A56C23BE6FBBB843BC7AF5E5DF6F0434410FF10CC40F9C4AED859B49552B54ACE178A9320D6105DBCBD39FCED1E48944AD4834FD585AE65E8DE734131B2EA938A52A0C131DDDFB47D0E267AD2AB495877D8C6B782C2AF632EFA502E437C5F60D866563A59596EEE19EE1109942E711A657866A91427F91AA1FD15BF559B064057B1D7C206EE410DB268ED2610F74391FC83DC7D2BB3116A296AAC34011B444CB12398BCF731C84049E38D305F87144D57B3DA521043DF8251174BB6BB2D9A856AAA5B5EC3C67362B5E5DC315DFFA3E975DFE4D7EF7BBDF73D743CF1278FD3CF5E0EFB8E0BC9BB8FDC127C9BB25CCB441C3078FE198C3B763BB4D1A19D390A3BD2145168346D1ADCBE6A5EA0A2E8F3BEFDFFC0CF1F2D5977F9F11D0043DC41310FD6137AA2BE661CB0696DD8C6FD5C84435CC304BD1C99097CEDA76157BE77371B6389B309527107F641CA5145012DCA12C35DEC02A2B89643738067F27DDA8445961C5D4CC80BB9E5F40D91E456F254F6B730627AE25852D86494D34CB8E18FA07F8A55EE2BE6E2AC532A19DE585A5CBD9FD80BDE92D394AEB9CCE1818D245469A19AC4F6B88478704CB89902D88C45F235051B318EF47814F24042D8A0D71AE8B436A9277F6036A92D27003DC9A47E805940B450E9BBD3DF7DD761B15AF9B5D76DD96BBEF7880452F74B2D30EDB73F229FB73CE17CF63D6F65B72D1E7CFE2E9792F71DEB7AFE46B679FC1CC19DB70F2B57F2437A91DAFDAADBCB3278F1DC65EDBCE60C7A923D87C7833B6480E6D0F4BFA460696F2F70F4D497E0438327F52262AD98FF76F0B618857B7BEFC5023A0097A88118E7F369CAAF83D88A7853426150F0B439217524E6DE39921D9D0247DF08F31A61CAFFC306A460AD330A591F6EBDE424335CE0DBD0C935EB1EA585FB128FF436E14428C8EC3B26AC47D2FAC21CC657132160DB1386D48DF154735B89511AB32F05A894A7F2F6EB11B29D659DE5DA079DC44468CDF3469E725267142FA7279152DBF3E102167F9928D3F4971885E7A50A1B1A16B9D1074E4B9CAEBB926796ECFC7972792BE0A513564C133CFF38DCF1CCF9F6EFA0B857289033F30975B6FB983054FF533766433D75C7F2AB1EF93B61B696EC850ADF531624C3B76B6911FFCF82EBE77F5ED58ADA3A8A52D72EDAD984D368DAD29724695E9E3DB39F9C8BD9939B99946D5934195E7E0A53C3C33201BA7B12B29B135D11990A15ABBFF05D7D5043DC4935CFB512BA1E7629BB1EAE9A7A2C158BC2684A0A5896C444611F4B598538E53ADB15C23A5941BFFDF09FADFB148D2C04AC120BDFD827486FB5F5CCD0AD722C8E6B09D889C9485ABBD3B91039AEAC61249245BECA1DCDF8BE74397E897172EE2C80F9F841B1BCA8744352710125679E68177D9E0FBA0339D48E8FE8785E880ADA8A43284A445572D92BAA0E6614411B5DE121DCB5E63DEFD0F72E01E5B70EEA7BFC4D225FD4CD93CC3C9277D894257C0F8B12D5CFD834FA972F3AE354516BDFC0A63C78D64CE0E5B139936D7DF702BDFBFEA665A83566CF125C9655953ABD23A7238C5BCCDC87123C935E5D869F6243E7BC26E8C4CC50CB3930EE8A24591C839305C641BD854372E7D6804DE39029AA0DF3966EFE81585AB5A245656DDA22DF5D83EF0E8AEF29626AE255E1616A983AFC19CF24188C5D722A388CE198C2A8730C5A1A871BD822CE90F9884D0C97755EC2C79E228A06238FCE9D105782D63F01D090D4332B6C8E212273E6983E898E0578A14BBBBA895FA2984799E7C6131071E7918919D52EDBBAC7843828E09C59F44DE6B20921E8C9E93CE2852889244D0834E75838528CA6B43CC90DC9A4A4184529052E8A7D93229AC5EC5734F3EC175D79DCFD2970BFCF9B657B8FFA17F72F229473263FA445A1A0C5A9A436EFFDBDFC86787B3E76E07D0B16625B7FEE1377CFF47DFC049A579F6D9153493E2FC2F7C8D934EFD149F3DE7AB5C7AF5B59C7FC57759532A936A6A62ECA6DBD0D21EF295730F65C7F16DB47806D2D230CEC414EC1ED2E4C459E41DAD197DB2466010014DD043BC160A570FC712B20BC5C14ED201C9111A426992E290C7610BFBE06BB0A61C9FB47F32322A82960D3495E4186A825E5F78A1C4C76A335015331B067E9CE83764B4EB2A2177CD5F8C317C3C9EDC60421FC7B155946DC621761CA9AAC15AB18F425727AE5B664DA5818E52C8DEFBCFA5588E483989E9937436970E3242CE83C4FC3A414B9BAAA4E824A9381C685FA53AA3245AE7A44B8A4F59957657A056C1AE9508FBBB39E9880F302C6D33BAB51133DFCBEAD53E07EFFB151A1B263179B3164E3E651F86B75AF475F7F2CC8BCFB3EBAE0770EFDFFFC9E1871C4426E3F2D4530FF1E1138EE495975FA2C7ACB064D93226B68CA53DD54AA9ABC2AAD55D94FD98C52B56F29D9F3DC4F0995B307C6623271DB907A7EEBE15CD527B640694CC126933AFF2D1FAD0086C0C029AA03706B577F09AE0FAC994CB05CCC0252D41B37430117296AA3C89A08D80BCA4340EF801C6E4E314998BAE5808DA56E5D1923A18BA52C2F539E7C1D26531E9B74DD5DB45DE5D5A5B497C2CFF5ED553E4F9D5FD54446962DAA4CD5099F39B86A1BA86DBD2F3AF56A1DCD7435F7727A665F1F7C797B0FB8187337C780B962D291EC5FF6AD3D11CCC418B3A43EC3D37F8BE3EE71C4B014A42C8F225E725C52E89E74625F0A889C7B35B26EAEB66C72D3767E7ADA733AEB5816A7F3FF9F610C76EE513A75DC1A8F6ADB9E3CE5BD8620B87AF7CF9533CFFD44BA41B1BF9E7932F72E75F1E61FC98F1FCE52F5770C9A55770E10567D2BD76152F8B4DAA6973DF1FFE42F7E2251CBEEF41D8864DD3F0761E7FEA69FEF8BBF90423A7F25CE8921F9BE6CC0FEFC1E907CC62982853220BC39466BA43377FEF6029EA53FF1722A0097A88272DFEE31CFA562C53C51B29A9A88BBC817E2289839CA822F262283AF71252DB9EAE36097D33A7521CA225561280219471254D5B8D0183A224CD508DC1B7A018C5ACEAF129F417F0BD12C520A6E234E25A0D4A98908983646350F55B0CB0A5CF5FA5CCAA55AB946ED9F502E62F5ECB11C71EA3521BB69D5404268E49E2B9A11C945409F8E0C6A0BCFF863D054562E70D74E81EEC37385829A80A51028F6AA91FDBF318DBD8C8DCAD66B2F099C7297675B2E71EBBB0DB2ED329572B546B16E5628A334EFB1A1327D99CF0E18358FAF26A52D91C2B56F7F0DB9B6E67CE9C6DF9F6773EC96DB7DDCE2E3B6E4DE4D5F8F54D0FB272450F871F7200B5723F861571EB5F6EE598134E20D7DA4A5BD5E1873FFB33373FB914B3BD992DE64EE0DC53F666FF2D273242B091FBAB4E410FF1A7ECFFEEE535410FF1DCC6F71F40CFFC674899014EEC6346BE4A1724F95DE980EDA992EE759B7F9E31FB7D4DA5380245D0D2EA49F46D434DD072133030C2C454429C2F0A112CEB2BF15A6F0FB5B85911B86DD6A8192655D2F846063B0EC906D2E15B3A8E8865AA8F11B84AB1B262E56A0C3BCDF30B17B3CD0E7319397224966DAAAABF58FA184A45626C27052952711825043D48CE83EDAB948A230A14410FA634E4BB44D02AFF2CB6A241153C0F2A35361F3B9E7FDC71277BEE3297FEEE6E5E7AE515F6DB792E471CB51D815160D99290A71E5BC5EEBB6F45ADBC825A31E437BFF91D677CEAB3445696C99B3573F58FAE67FBEDB660D309E369691CC66B0BD788768ED809C8B7E6E92DF662DA0E37FDFE0FEA61E894A38FE08B675FC0C2650195FC1882116DCCDC6132577DE33866B66769B2920A497D68043606014DD01B83DA3B784DFCE429743DF4371ACC72D273500C2A25571B47CAA8DF97926EC364C5B88F30E5F02B54FFBED01215479438A629B3A477F1011F308D1E4C65AC57650CDC24549188BA59386A7B704D6F8D97D67651304C3CC7A212E6712C87C02F82E3E0463691E1908A4352614D751F17FDB3349335028FFEEE2ECAE52A1D7D551E7DF2394E3BED23A452367D85122D2D0D542A35957B0FD713B42FDD739583DD86F2BA6453302408939CF3A0D786AFB4CE49614A4D9425A502D5DE6E0ED9772FAEBCECBB9CF5E9CFF3D0FD8F512CF671C209C770CBCF7FCBD7BE7C3C86B994575F2971E5F7FEC2F84DC6B3EDAC49ECB0F5D674AE5EC71F6FFB2B63264EA4B7D8CD9C1D66B1CB6EDB532954F8D5F53772E2878F401CF59C6C23C56A05D72B6385214D99567AD7F443D624A886F8FD39CE38F76A9607CDB46FB50973E636F3EDAF1EC1845C9AACAA0B95BCCE7B2B881EB40891F9535D1E076492A249970D5CC348BAAFDB91DC24D4CE873A49D443CA1F45B54C9317CB1A88555B08A98D9453A579B03CDD88DA48CE16D9A5DC5C4571230D24D475A42069A0964AF59834C44346AE23FE2B725E2649676D38C077B194DFC1C7EEFFCCA99AA087782AA38E5FD3FB876FD15A5B4864C714CC16522164C22A8101A9D8C24DC3E2CC66CCFCF0AFC19CA68C8762A32A52006506FF6EF87950D89CE4BC078F444DA2B2CB9272301C4AB1C1D29E2A4BBB0B54CC349E6D2AFDB2944527FECCF201947B454232C9E74C7E1F62588ECA2D4B045D5CB79AEEAE4ED6167C5E5CD9C7891F3C5A59DA27A9147515E54297E49CE51922911E6E98D6D83082F6A46D95E711490E5A0A5324A551A9A8CDC352B54CBACF65E2F01C3BEEB025975F792D3BEF79223FFCF1EF69CC44CC99318CD1E336A1DD89F8C8BE5B53299578F0A52EBEF9E31B69C9DAFCE0C2CF31BCA19954DAA416F4629A0123478F52E5E8E96C036BD6AEA3211392B64772EB1F9FE5A73FFF2D3BED3699CF9E792CA15BE5E17F3C855BE9639B6DE772D6B997522A88F470187D61992D769BC60127EDC7A70E9A46ABDCCCA4DFA33DD03CF73D5A7312C18B8795638AD4519E4EA41FA4A86EE4A6EF43E0D26F6769940638194B7590376B3115DB206D4658F2A8D49803B3A6DAA7B94606978CDAD24CF91E666C52B60CD281811D9AF85903695BDC105631BC102FDD84257BCA86EC8A4A814E96A270B7DDA9DABA398C262B9AF728501E2C9695E4E4F5F1F611D004FDF6B1DAA833E3EEBFD0F5878B18567C8AC88928182DA4C5BA33128236484526153BA2BB7D3A630EF81E4EC32E4AAB26E5DEC48326421BF5D6FFF2A20DEB5112AA566A5DA425576859BCBCA29B1505173F9DA71C0B61259B849661FDC74774B113352C5B79339B7E8DAE95CBE8EFE96675BFCFEA121C73E4C16A4350D1F9808C6E43399DCA3F8B5A63E06B707370705350BEAB085A1AC0FA89539DA43CA41B4B10F8581DCBF8D89147B3AEA39F071E7D9A89336772D9F7AFA3219561EF1DE6926E4A31A9CD64DF591388A390627A34279F7901DBCF9EC5974FFF20EB962F66930993C9E5B2E4F216CFBCF018DB6C339347E73DCDBC47E7F3C9D33F486BE36876D8E144EC741385EA127EF1CBCB18D6DC44B53FA26BDD6A868D18C7E5DFF915CF3EB38A6AD1C268C8100F7398B2EB747E7CD10799D29C262FC657E67BABE6902D8A820569A34A26EC5237749FE154312875C6F42F5988E95718D5388678935184AD262D22018C3D0AF214E440D417910F2DACB80AE24298CE40569E7044C79D6C116484D8A54182A16267AC4872F1D2BDBD819A111019EB543A2EE8CC11ACAC52EE5F43DB84E1348C9F94E4DFD58DDD2008636C5B87D0EFE4D3AC09FA9DA0B531E7961E63CDEFCF6758CF0398A98062DCA83A55A7A31ABE696187E0DA117D8D9318BED3E7C94C3916EC4662533E0A495EF8DD2CE97F2914FC5796567F4D1178656D81D5BD253C2B4B3934A945F2182CDD4C447632687C9CFCF11B56FCA91F44E2F56C2711B45FA5F3B5457476ACA5BB0ABD6196C30ED95FA52FDE8CA06331F35776A2AF47D183E90CF5B3815CB31F0454C567C34D0A572AD59AF2953E785A1BB3274CA129D3CE074FFA1C97FDE43CFE70F7A374ACECE7D8433EC4F537FC80D33F7220E31A22D6ADEDE4BA5BEE61B7438FE59E3BEF62A71913B9FDD65F336AE4142EBFF43BDC7CF3EF39E4B0AD99386524AB96AEA3BFCB66CAA64DA4528D9CFE89AFF3D83F9F66ECF83C37DEFC03DC7285790F3F4357C75AF6DEFF103A3A03CE39EBDB84B51CFD55172F6F307597AD39FA986D38FDC839640397BC74087F0F8F582259B5C79BC693DCBE1FF3F83FEEA56BF1F364FA97329A1EAC7C1F5DC50CE5DC6638338F658FBD6790B65FA537DC8CBB6FBA95CCCA05D88198F405A46217DBB1E891272A274DCB88E14C9BB60D13B6DA92C84C618719B51C02A9963422D25E86FE5AC4F3F39EA6F8FC0334F57591732AD83997FE4244DADA1263EB6DD966FF9DB02C1BCB929E94EF2100FF0597D2043DD493EC2D62D9EFCE63F8BABF92725CCA718E7414A90F836B8ADF863C2342879FA369C671B4ED750E5813558BA7A479AB52196FF42885E6E51AEA4BF1A48445EB1314BCD8EFB2704D0F66A691A21B53F5C573437ABCC8065E442C8FCF1B3443FC57825665808AA0C5ABD9F26BF4AC7C9555AF2DA314A5E80B331C74D001181B44CE09A7BF2EAB53DE1A1B94720F46D212354B9E9940BC365C65575A1583A420A6542C12F8210D992CC76F3F9ECD86359273F23CF0E87CAEBDF9779CF089537869C1329E78783E9B4E68E48B9F3E816ACF3AEEFDC7032CEF0DF8F417CEE6F00F9C88E397B9E27B1771CFBD4F73C4078EE54B5FB9844AED65BEF08593D86EE6F65C72DEB57CF582D3952F75B968B368D112468D69A6B9D5564F162B96AFA3D8DB4FB11A71DE85DF27F41AC1CB91CBB75124C0CD5BEC7CC80CAEBCF82426A42DF2EFE64EFB062BC02B7790B22CBC541BDD86C9E2BB1E24F7F8B54C0856109B06153214320D44568506B3CAC3A55D69DF692F0ED87B1AE57233F32E3F9E1D534F53A285A23146A5DE6CBF4A94CD129A1E4EB08E55CE4CFAC7EFC95EC77D1447FCC009A8A4C5AA0058DDC17DB7DCC288C22236A9BE4CDAEE635593C5BA544C5BE833A650E581CC91D4C6EDC071C71F481498A4DFDB7BD4467F2EFEB7BC5013F450CF94DF85FBCC0D541EB91C3BEE51CD5453518013B9D4A48388FCDBB4107BFEB07D366D879D4F9CDE8EC8CC100415D229A9D8DB789D5642D0492357214A21FB2836D5E36B6F31E29F6B7B293B692A5E8C1BC8D691E430939CB36C144562AFF91F884572C8A2C63064C3A856A47BE5ABAC5BB59CEE52C46B3D2E279E7C8222F14AA54A63630ECF4B8CF5D713759844C4EB9BBE4A7F412FF9999C170F9A20051E65D7558649B2795AECEAE599C79F20DDB7861F5D760E5B4D1F492693E7F1675FE3C63F3E496FDF5A76DB692A7B6DBB3993C78C52B73891D3C5E94632F961F4F616F0AB2E66D6E0873FFE0D8F3EB2889AF872640B7CF90B1FE3E843F6E5739FBA880BBEFE6952D92C5E39C27152144B3D9856CCFC679FE385175EE188838FC28D2C3EF9D92F512AC4185507C7CAB1A6BF8F389F62FA213BF1D1930EE288EDC730ECBD26E8C8559BC9FD4686754B9752BAE92B6C5B7A82523C8AC78CDD78AC6F04A9C060845D60F3D1060FF64C259E309CB33FB13D950E83BE5F7F8871C6632C6E9CCD7D9D9B60D348BEDC4B4326C5844697A9F1227A228FC5B93DE96BD999233E74004EDAA54A96B8EA73E7955F6686F90C2D6E0706395E0B46F38CB719DD8C6462762D33332FF0626E1F9E586D71E1859F259349E1BCC7180CF5C7F7FDBEBE26E8219E019F107BF59DF4DD7A168D6617653722A3AAEE3CCAB62820E45131C2B13374DB6D0C3FF6228CD6C3098D1C50C65666F642D21B77BC4ED0D180FEDAC08B6DA5695EB0A48B0E334D119BB21712881D9BE49C55501FAA6A3FE99FF856872ADF362D2CAF42EFAAC5AC5DB694AE72C0AB9D654E3AE524C240042022AB4B941A83042D242C298E0D095ACE19AC1454B9673791D3557D5775E5F62AD21BD165B76D77C02B14B9E16737F2A32BCF62F26893864C063B358C42458A1C037ABA1662F47562C729666D3F173F3229D6623C57A47A36352FA4BFAF97AE9E3E6EBBE36E76DDF300EEB8E36F1C7FCCBE8C1DDEC294496D5CF1DDAB69696EE0A31F3911229752D1E5F91716D2D1D9C3E8F1E3C91A4D5CFFABDF2A23A9CD266FC194311369CD37B3BAB39B2B7EF8030A63C771D4B107F28D5377A17DE31F84DE700ADC183C5102F970E795E7B3973F8F8C5BE01E675F7ED5B10533E7ECC22E5B1A585D259E796105F3BB5A38F4804D396A778717EF5F4AEEE95B48971F635EE3CEFCB6631AB3666ECBB04A178E14012D9BCFF63CC7A60D4FB32A9ECABCC234B63FEE48B6D876734428FFE0CF7FC2E8E2C38CF75FA1279CC67DA56D9857C8D03661025B8C9B0AE51A85FEB574BB2BA8FA7D5C70E199CA43BB29FDDEE6E1DF6A6DFE6FFFBD26E8219E41D940CFBBF3A9FCF634D2D557A9D43C55E061C63E65274B1007646A11B94C96BE3022B3D36964B6398FC068C6762A18AA4865E39F0B239153A9085A35699226D778A458B0B6C0DA8247D56EA4AFEA2BBF66496D84A6A12480A6A83CC406F42DBA564B418DDA20340DD2A14BAD6B054B5F7A918E7E97A55D658E3CE6785A5A5AD6E799A54D9510AF1C4AE71C78EB497BD06F6330BDA108DA8B948D682DA851734BD85180DBD5C5AA050BB9F4BC2F70D58DF771E807F6606A7B062A7D4C9FBE19BDFD0141B91FBFB0964AA183719B6C46C3C8B1ACEA2CF0AB5FFE99BBEEBC17C7C9D3D036828F1E7D0433678CA310F6B0A6DBE3E28B7F49D7AA125B4D6BE7A69B2E60CDEA353CF9C4732C7BF5795E7AF1058E3CFC38FEF0873BB9E0A28B31530EF3EE7F86CBBF7B159FBFF0CB2C5BBA98E71E9BC761FBED4FEBF026AC5C23277CF3A7CCDE7947AEF9EA616CDAB4F137DA375AA6BEA497AA866A6270FB8F2F619BDAA388F1EB2FDDED58316257BE79C63EC843DA30F12B31AA2C5CEB33A1A989B6BCC3FDD7FF9A293D0FD3DEFF127FF766F1407657CEFFE2518C523D326D2A3D259EBAEE3C66B8F7417A184F9B3B707FB8299FFCEAA984CB16B1F2E66F31D95B41D94EF160EF8EDC5DDE8E5987CDE6C83D724CCC882777131DBEC37D773D854389A38ED84DA94BF2E29FAD8FB78D8026E8B70DD5C69D289B708DFE624A7FFA2CAC7C10A9FA9506ACD26BAF665B2293205B4DAC484B86CFEAD6B94C3DE63784CE584C45D0AADFF51BBCF9DB7B561C30F41C284189F0B1E98F2C1E5CF01A56D3487A2A21C5AA4F64584AA69594AD0839872A8A4EDA6DBD79E8A7FA0286E2D46792C6C328F7B070FE93ACEEEC634DAFCBE469B3D879D79D09FC88C077B1E4FC40521CB2AB2F46FC5ED21965E04B22EC0D2B05FD5A42D055BF8CEF96A8F47672EEA9C7B372C16BA4A398DEA6F15C7AF97534F906516105BFFFDDA52AE2BDFE873FE1B8438FA1A13124C86458DE1773F6972E22F67C769E330727DD44476F95E7EFBD9B934ED89FDD0EDA9A15EBFA38E7ECEB30BDD17CFA8CC3193BB18FE1ADA398B3ED0C7A3A57AAF6590DD976F20DADACECE8E2D2CBAFE643C79CC0CF7FF95B76DE6F67082B6C3E7E0CC3F30DFCF4FA9F70FE2517F2916FFD89747333179CB62773278931E97B7784D29751CCB530B9F97BE7B347F13EDABC753C9CDA9505AD7BF199334EA42B65D25E09B1AD92B2B935C8D3938687AFFC2C3BAF7B86D8C8F0337727966DB2075F3F632F8645FD94CC462A58CCFFCB4DCC9AFF1372B5152C6ADC99DFF907F191738F61C1CFBEC9B6C507185DADF2687A2B6E7B6D34D3F63A81A38E9F4263241D83E46F8CF19C022123707D53750C13AB83D4DB5BB6EF1D48FFCBAFA4097A8827309260D1AA5179F12ADC7BBFCEB0A842C51841D94ED360AC22ED8B57670EDF76A9A642CAF658DA77FF2EA98987534B87A4C4C2532A04FEE590EAC2015BCBF59AE437FE4314E14612074BAE187CD3E0E9251D744459DC6C236BBA45533CF8DAC11AC76463F1F5E3CD3F5586E12AE327F1B696C6B2B15B61D5C21759B5F879FC420F0BAB8D7CE48CCFD09C32A15C566DBC64C34F142CAE48B7020FDFADADCF392B82964AC101AF0DAF641008095965AA95027DAFAD65EB899B71ECE187F0EDEF5EC631271FCF0DBF7C84D5AB237A7A9FE313A7EEC3A66337E3EBE77F97899B8DE6F2B34F20D732828F9C7BB1CA935FF9D58FB3E396A3A9FA16CFAF2C72C7BD8F71C3357771DD3517D0D4BA827FDC3D8FBE8E51FCF5F687E8E8EE65DF5D6670DD759FE69EFB7FCBAE3B1FC4DF6F7F96CEEE356CB7DD4E7CF8F8AFE2C515CEFDE269FCE1E61BF8DCA73EC5A3F7CD63D3299BB2FF413B70F7FD0F538C46F1C7975FE2B493F7E7B4ED27BCA7AB4DBA4566FC02AE95E3E69B7EC3E66B1E6246F1290A768E27AC690493F764E79D0FA075744C688BBFF6301A82802E1B9EBEEAA3EC565C4B2908F852F518C6ED77109FDA6B1223E4DE6942C5A9B178DE0B180F5F417B71111DF11CBEEFCEE60BE77E08EF679FA1A9DC45D658C96F8AC7B230DE820B2F3A94E10D364E281D7294D90AD81EB1915515B37224A65BFA78270868827E27686DC4B9A2550D8D10D37D94EAEF3E49B6EB452A760B552B4353B40E2754A69D0496476805F4BB799C714731E2D00BA96546E39829550CF02F7237A5554AB419830BFFCD861624E67409E1C652681073FBBC1709DAC6E0655AE9E82BAEFF006DC49F8761788ACA43C3C68C6C5502DEB772298B9E7E9472E72A96780DCCDDE750369F3491946912879EAA0E9492725F0A5444DF3CB029385831B861046DD464F3B24A6FB55395CAB7DB3976DC720BB69EB12D9F3DF74CCEFCE2197CE3A25FD1909FC4A1874F65A7399B3365741B7FFEF353DCFAD7DF73D159A7E21A0D9CF2854BB9F8E2AF73C0D6C358F0E03DACEEEE61EB3DF6A310C0F9E7FE9AA99B8CE0C453B7C2AD5A2C5B9AE7E22B7E42D1B31991A972C5B74E65F369A358B9D4E39C33AFE5D565CF71DD0DDFE1F179F3F9F90DB771F24947D3B96621471FB63F77DDF17766CD9A819331E8EEEFE4F1A78BBC9C35F8C021DBF1D5FD676D0CC46FFA9A622C7E2865D59D27AC05FCF97B67B38DB99031D51EC2D861B59562913D93691F388191B3B6A318A41961B8ACF60C965CF73166F72E655534816F15F6E288D38FE6C0CD52495B2450000020004944415438D50CA203ED4D873C72CB1D8C5F742363DD85BC1CEEC3CFC35D38F903FBD27AF7B1B40625AA511357F7EFCBB09DF6E693C76F45DEA8608AB56A6C612A05928BAD9EC074DE7963275E13F4C622F7365F270189E88053FE6BACBDE51C9ABBEE2132CAAA03494E74BE468A50A46C7180159B78D8F464C632F6D84B305B0E2634C51B3A79B30DA38FA49C578EFFBCF3346886AF4A7531E8F37CEE98B790CCD8C9F491A2AB2071D8BBE8A9674A8C2EE5BDB2B92816A92161B18757E63FCEF29717D02916A30DC3F9D827CFA0E69BAA3555E057802A515021F04DB569B7BE947B40F7ACFA0ABA2E41B9821F5429B9FDE4CC88ABBE763A9DAF75D2D3E9B168F96A2A7199052FAEE5B0030E62F1E26748D9DD8C6C19C1ECADA6D35F2810BB21B7DFFF14F73CBD884B2FFD22D5154B68775C868F18CE9FFEF14F8EFCE011DCF8B387F8D5F5D7F1FBDBAEE0C9A79770EDF577538A435E79AD9396B0C2772F3F8B3DF69EC5F5D73EC0F5D7FD85595B4FE6F2EF7C9217172CE7A3275CC2965337E7ECB38EE77BDFFB1A975DFA4D962D5BC6C8D179C64D9ACCF7BF7F37FFE85EC9A107CFE6D2A3777D9BABE6ED9DD623867931E4251555EE63E51A97BFFDFA77EC917E82A9C17CC2AA4547F30816FA3319B9DFC96CBAE3741A039FA79F5B8B79DF5798DAB79027E2A3B8B9773C5FBBF818C635B96AD7314EA5E8B072DCF3E3EFB35BEF1D0C0B5FE576F743DC6BECC5215B3430ADE333B4B95D2CAEECCD8FDD2D39E5F39F64DBF698146542A3119714E958785E34F2B270DFE3DDD1B707CFFF89B334410FF134D6C40D21B671BC1AC66BB7B3F6AEAFD2182FC28A629C20AB22E9C8ACAAEE22693F8BE104F46543CA63F661DCBE3F2776864BB5B53A06930E49563871817B2BB73BD1F00ED27B80C10B4BD7F05A7F48D43A82E57D152A012AFFBC718784E6835E1E49F33DC3F7C81A111DCB17F3F4A30F51EAE9A6BBBFCAAEFB1FC18C39BB52096302AF841915307D71C9133545D2DE6AD0EB59550B0E347F75AB255CDF5515686EE73A2EFBE2695CF8C58B193366138EFAF007B9FC473F62EAA4496C366632DB6E3591C6C68011C35AF12A350CAFC6CA557DFCFD91677968FECB7CE5ABE76214D6322C1D92766C1E7F6E21071D7B30D75FFF0077FFF5CF5C71F9E758BAA89B2D664CC46CCC70C659E73379C4443E7FD68934B6BAA41C8B6A25522649BEEBF3DCFC97F8DC676E60E2844DD8739FE90C1F9562D3299B71CD35D7F389D34FC10FE0631FBF84E17B6DCB41FBCFE2BB1FDA6BE3607E9357F55423D5D731A3AA38238A298B57D7C003BFB89669EE4B6C9AEE245B79896A763A7F286ECAD1E79EC5C4D646EEB8F116A62CBF91B1C525DC6A9DCD93C5980B2FF930CD8D06B6EBAB660CBD91C953979DCD1CEF3EB527F18BEA59AC6ADE9A3999679963FD9811E52E9EF28FE3267712DFFCC627185E91BD458F3863E35B92EA30A47A5CB7FC7A9733AE09FA5D02F8562FAF50C189B3AA5ACBE87F85E57FFB222D7D77908F7C023F8B6BE789CC32E950E476594CA348351FB29CD16CFA815F638D9A4B6CA654659F10ACFC9FD0A9FD76095A92E052A21B9B4AA1F1B7879FC5193599DED861455F593579DD783B53296291CC49926E91540A5148CA8C092B65163CFF0C2F3E74972A2E09D3C339E2C4D34835B4889684D8EDC531AAB85570BD5891B3786EB89EB7DEAD4E5CEB6A5E8DAAEFB3D72EBB317D4213E31BF2B43799146A31E75CF84B56F676F3A1C3F6C6E8ED60FFDD77E65B977F93CDB79ACC991F3F99BFFEFE4F6C337B575E5CB29A6F5F750DE77EE10BCC9E3E857F3E703785420F471C7928855C9A8F7DEC12666F3181CF7DE238C2A2C5A8F60CE9E6027194230A1D8A45172753C2B2FB09FD18B76491B6F3D46A657EF8833BE92DD638FD531FE195258B88A23C6D6DEDCC7F7A35DFBFEA87586686C65DFF5F7BEF01675759ADFF7F773B7D5A2633C9249364D2494FE8810408254020107A1514A509285C2B5C51B0FDB162E17AD12B551451505069222DB450426F0984F46432993EA7EFF6FFAC77CF00FEAE7A31578573EE7BFC8C199253F6FBAC7D9EBDF67AD77A9E891C76C83CAEFC0713F4D67C99918952A495527695864BD9AAA5DF8597EE7D04565EC7BCD21A0A56995F1907326C971339F1D0E9DCF495F339C05C438391E3BBBD6790AB37F9FCA5A7E359267581DC0D853C7BF7DD8C7AFC1A86DBAFB035369D6FBF711CBB1D3E9F86753730CDBD87B6528E67AD45FC26B71B975D762AF552D228E794AB7B28ED8E26986E16439C77A495443F7608014DD03B04DB7B7F513E289030E2846503D32AD2F5C40FE1E96FD21876295122DF88631AAEFA92C57C13DB2A51C62597188E3162090D4BBE04D608354012DAF177B26855571EDCD1F95B197028356269B4B395C6D86D7F7A8AFA8933E923C6C6EE3E8ABE7823EEF8D68D123D7B3B471F6CCA33450D2DA0A7733BAF3F760FAFBFFC3C3937C6E499BB73E4B127D2D3DBAD7420F232F411C62895223951C99A0B8582EAE2901F21683F2CD1DB9DA5D4EFB1D3E8E1A4FD6EBE7AD9795CF28D9F71DF531BA9696AE582D30E266C7F95B6A6D1FCE28E3F306E562B272F3B98D54FAEA679C418B26597AF5FF12D0C27C1A5977F9ABADA46D24983D0F5B9EEF70F72FD0DBFE6A6AB2F67FAB811AC7AF24D9A1A7CA6CE1449D5563AF3A6BAC0AC5BDBCDA68D5B88DB0E93DBC633A2394DCEDD403C59A75A148B9EC78DBFB8931F5FFD7B468E984DFBD67E628E49326E327CFF091CBC7836571CB3F77B3F71DEC3339F6F2F31AD394ED6F748DA01714FBA62E2F4C64D1A0C8FE5577C92D9FDEB20BE959F7A87D357BB3F9F3F6F0F565EF571660DACC5770CBED77B32D3164E64C9D18B9415594D18D2BE761DAB6EF80E0B78938D5E0F4F9BFBF0E0C0122EB8703EEBEEF92E6D5D2B98501E6095D3C8ADBD87F2E9FFEF0C1CA78BB4E1E3969B942052BF1B128B6F236DD6E0907E0FABD14FF94B086882FE279F17223A6385AE92690C2C07B3E739FA6EFC18F5E5172864E204A5003B94DB4203C32860BA3E7133856F66E8370C1A0EFF3ED6E84520BBE1926DCB769F61A82CDA08DF0B418BBC67E4BA9DC3E0DA5FDF4FDBAE7B51882558B3B59B82FFCE66E38E40111A8E924355F295D29E271D1D22A064A0C6BF7BDE7A8E271FBA8F2D9BB7619B090E597224D367CD637B4F3FA16DE1CBF049B1A8C8F96D19D162311A4E291428F76F62FAA4193CFFD88B4C1AD9C0474EDC9F29D3C772D52FEEE2E777BF82E18CE04387CF6444711D53C7CC61F8A4A9C4471BBCFCDCF3EC3C7A26EB3776D1DDDF4DFFC000D7FEE257F4147C16EC7F10239B1BE9D8BC96071E5CCE19A79FC8474EDA8F526F179FFCD897B8F207FF4E53AB855F1CC935B73EC435D7DD4BB61B6276248BEAE713EC397F1A177FF1304C7F1BF17892FE9CC151C7FF1BA1398E7231ADCC6893A9906C7707D34F5CC0818BA673E9A1737704E2BFFA9AE52FF76076BE40C9AF61E61EB349A665332EC492B69C4D1B78E4FA8B99E06EA62E3D8C6F761F44BC6D169F38752E9BAFBE90C9D9B56C89D95CD3B194E33E7A303B4D1F4D6A0036AE7C90179FFD23BBB8EBA0D0C7869ABDB866531323A72FE0B367EECCAB7F7C88F0A91B98126E2517CF73E7F6391C74EE6718BD531386E1922866E85EDBCD6D8F3CC8BC23163273E468A577AE1F3B868026E81DC3ED3DBF4ABA380CD910B33D8AA44996B6C3BD97C3AA1BE98CE5A81103553F4D4114ECEC0112B2E79D1F4EE08251D7CD86BAE319B7E40B5899914A44493269C978A56D2ED27296B2C7DFFA0214557B9D4F9C7E0CBE7FDD1DCCDAEF10BC548C551BBB29FEAF6AD091E940547491E11B29770C0A2389BB77E093087A59FFEA73AC78E041063ABBC8A4EA386CD909A41BC7900B2D827216AF9853043D24C45F2816D4EFE57C8159A36D4E3BE6381CD75166B00D992279BF8F52A6895FDEFF263FFBF9439CB0FF78164D4EB3EAB94D6C0FEAC8D794D875E729AC797C0D4F3DFB227B2DD883B6B6B16CEDCE71E7F2A758BD711BC54296712DC338E7D8C338ECA0D9384E9EC2408EB0D84898F2F0623E5FFDFAFDDC7ACF724A658B45FBEE43C3B02CCF3EFD04935BF7E1D1875752DFD8CBCFFFF3226A1236EDDDF0F14F7E879EFE7A5C2F86E5942996B7E0040E7B9F7924072EDA89F3F6687BCFE7CD7B79E2750F6CA2F9B1EFD26667595D4CC08C0389373431B2FF657A9FFC15A3EB33F8561785DEA9FC3877388B3FBC0BA3682779FB8F18EFBEC9FADA18F7761D43F33813AFEF4D66974A38DE469CBA80E1DDABD9D638953F6D5CC8B32367F3D9F3F763565D407E4BC8CB3FFD1463BC97899BEDF4245A78313B1EB7716F6A5219D8FC388DC902EDE6249ECE4EE5924B8F241DDFF13BB4F78243353F4713F43F39BAAA575526BE905AB008DF17B08B2FD1F1DBCFD0D0F358E4AA62D4E0ABDA7289A457C60A2D3C234ED10E088218995DFF0D6BFED984660DF8F148BAD194AE8F209A34FC5B042D32738107A6435F68F08DEB6F67DEE225E4039BCD5BB6D0EB5BCA20E0DD850A516697B6394983653333D2F0F82B8F77E94C0F493045521E83FFE58484F901D6AF7C8A571E594EB6733B4DE32670E0B127D1175A38857EF2A51C652FC0EA2DD137D04B4F42748B7364D66CE6D28B8EC149268967C6E3F9363535A841979A8C8CC77BD4C4928A408B5E89FB966FA0409A0D3DDD6CE91D60F98A57097B363363EC704E5EB698FA5840DCF049A513340D6F220C02D209838194C34F7FF70C9F3C6E4F9A0A050A81CDAD4FADE3135FFA05BBB68D66C6B4312C3B697F72E52E1A6B62643B4D1EBEFF756EFED51FD9696AC0B7BF7C1EA5EE1E36AEEF6563A7C5EAAD796EBEFD16B0B3F4D3C869679EC6D1FBB471F8ECE1FFD0B3ED0B573FCD813DBF64726925AEDCA9A59A28943DD27681B0DCA39C6FEE491CCE539B32D48F1CC7173EB1989577FC07B56B1F618CDD4E10F4902FEF8C6D94B0ECCDC48D3EA5CBB2C59AC8E6DC789EDEDE4C7761181FFDF449CC9E9A202D13A6A590577EF32B7A5E7B9011897EEA8B5962E28CA394EA4AF4960AF426DB7883793CD73D96CBBE7134095D82DEE1B86B82DE61E8DEDB0B65233B1E8AA07A3442EB192242B48D6DF77D8D86553761F839CA665CB95C883891882809F18AF07AC94C12370DB699C3695DF615CC96C354E3BFA8CB891B4628A2EC6AD2F06F8CCF2A6D7E5F357BE40C8B2B6EB88399FB1D4C4EF4387A7BD89475295991F345A4132DC42A433092A34B79E65DDCFD1796FCB78494E4E9B2A32F62F56937CBAB8F3DCCF32B1EA72F5F60CACEBB3363B7DD31F359FACA0525A294CEFAB8BECB56AB0FAFB793C39BC773F8DEF37063218FBDF43A2BDF5CCBB0E666280EB070D6540E9ABF3389708030339C8BBE71134FAD952DD90C1BB76C2799A9510E3066AE9B0B3E7C3CF16217AF3F711F7BEF3C8DF1E3DB48A4EBC9FBD03AA296AF5D731B773CFC34171CB127979C720879B38EC5677E93ADB91807CD6EE4B0430FE05B57DFC45B6BB78AEE3DFBEEB633E77FFC14BEF8951FF1E48A97B8EEAACB9830A2482256A4CFAD657D579AF3FFED0A42D13989599CF6D1659C73F8747619937C6F27CD7B7CD6795FBB875D272729BCFA47761BD64DA6EB791A53D01136B2D69CC2ABB961BC981B8E93A9E3C2338E60FA883477FCD735C407DA49967AC8181E39B31F6C714649902BC6E9C8D5B2AED0C07AB791D1B3F7E094C3C73069AC436005384680513254C7C8C3B7FC8CEDEB9F674C720BB5564EB9AEE45C9B2DA53AD63196D7CB6319367B5F3E77D2346A7502FD1E23FADF9FA6097A87A17B6F2F2C49A7912268F117B4281A32B89D85EC1374DCF4EFD4945EC1A68827BBDFEA347FB7EF8945214C924C6409D3B3C81CF913BC9AA96A08C0F293944C4326C59563C95F7DA8B78B2C8D8AA6CDD5BF7D90DAC93B9368A8253B90E5F56D39CA9608330DC99146EF34F48EFFF328CCBB9D5AFEFB510849958B39124609BBD4CF9AD75EE6A9C71FA354F299376F1726B48D27E7BBE473399C01A93BF7D3431E6FA087CB4F389D2096E247D75CCDF91F3D85FA38B48C6C0227E0E2AFFD80A9B376E1B3A72C521E81B73EB989B3BF7223E5C428EC641ACBCB92A44CB6B79B96BA04138739CC1C534F2666B2C7827D39FDBCCF901EDECAAFAEFD3A3FBEEED7DC74DDCFB8FDC75F66FF5D67F27287C511675D4EAE2FC76DD77E812F7DED3BACEBAEC3355B280FF451EE7A934B3F730AC386195CFED5DF71FCB20339F6D0D1A493033CB6F24DFEF38627E8E86E249B8D939918E3C4E3E7F3995376656CFA1FAB4371EE976EE64B179FC8630FBCC0630F3DCD404F11279654834081E92A3D9071139B38EE9803A94BC7B17C7073257EF89D9BE9EDECC22DBA94EA8B94A48FB33C023B1C413C55C78419ADCCDD670C6D13628C340D25EC550CB3602508C5C04BAECA9EC743F7DDC77D4F75D23B90C42804CA5ACB2B974836D84CDD6512071C3E97F1B5627CA51F3B8A8026E81D45EE3DBE4E752A4B2962D064AA2884592E9032B7905F791BA567AE221D6C51150119F6289B8EFADD0E7C3539578AC588178A4AC2B238F56852077C95C06EC5347CE5EB27943E34C8F2970E49DAA0A58783D0A36CC578F0E54DBCD09EA36DFA548A258F17D7F7910B93CA1F31AA67876FEB70486943EADDD185232A820C11F7D0EFD1EBFEFA2314CB2CC3C096C985304F501860C3EBAFB0F2A1E524029339BBCDC7CCA4F08B7982813EC27291EEFE0EE6ED348DE3F73D88FFBCFD768E397129E312B5A48B05FABB3B1935651C6EC6E2A6FB1EA1A9DCC9C9471E419F0FCBCEBD922DF9243D2583BA4C12AFD0C391FBEDCA4B2B96B360E638BEF2E95359B1E2259E5BB581867133B8E5EEE594BA3B98BFC72E9C70E85C5A4D97782CC9FD6B03CEB8F0EB5C70EA31ECB7FB144E3AF30B307C278593E1664997B731B1C9E1CA2B3EC3399FBA8A96A6145FBCF068BC621FE75CF815B2DE287AF349E28914B3F79BC281FB4CE5DC23E7D0F08FE5673A722E0D0947D95E6D2F85B4E75CBA7A5C921834C7025A6A6C52A998D2B3B66216253FC0159F411F7A0A45E28E8327E7A6C8C51A36B665A9F6B8540CE2D226477EF0DC8D34CB6588AA1C26294BC79174678621BDB912FD259FDE6E0FC748D0506F924AD8D4A694CC8CD2DE88CE1EFDD811043441EF086A7FC76B444D4ECD518591A69CE8308B2251CC18C0E85B47FBEF3F4566E079CC720FA6635090C942C32216B8247D71CD0E31BD0CA6EF914BD69198FF059C396752B01D92AED4FD061BA3FFCA3129A713F9E4D0C3B5626CC895F8CA8F7FCBE1279CA83C015FDA384077C9A2E485984E4C7D6195D4A81AB0F1552D5A4C6177F461F9B63212756D11FF2F63FA52672FB2F1F91758F9E00334B64E61E2942978F91E4A035D2428D3DFBE8D733FF23172D91CB9ED5B98B9EB2EACEE29F1B33BEF6763470733C68DE2CA4F1D4FC237B9E791873860DF3D495B8EAA636F77037EF8CBA7B9F791959C78CA899CB1FF68AC810146A69398E52C99749A4E69DF4BD6F0F0336FF16F9FFB3ABFBCF91B8CAD6D64443040A96C70DF3A38E77357D06214B8E2B2CFF3F18B7F40A97694723BCF582EF6C05646267D2EFFF7CF70C1C597327DCA08BEFAD933E9DFDECD672EFD019B7BE378AAE3A6C4E9671FC3E2853BB1706A1335A68BA8FFA19C6A06FDA48C40C9BFCA5E853C5222A615F8AA53C753E52BB198120D6C4F8959E54CA14D54569A91EE2075E1B4558B9CDA331EBA729ACA8C5C49091822A06DC899E847FF53FE81D1FC67D2AFC3140D153BC4370A04A194326218651B433646E40D24F5362C7526FBA1741B0DF6BCCB9D617970A3DA3209ECE8FC8E9410C5AED6C330A400AD47BD77F4FBA3097A47917B8FAF0BDFD6878B6ABA6A96C30BD430871196F1DEBC99F5F77E8F5176077EA143E90ABB564289CEA43D710217CFC238040E091FBA62AD0C5BFA4DCCB10763F865E50DF7B70601A411CF1265BAB0846FC6E8F64D4EFFDC959C7AF639D8B114DBF201AFBCD58E53D3486FD1C550060111415BA18CA2DB7F9641BF7BD96F9741FEC21EE2BBB36D2111D7128353A112595791A0A783877E770703258BD9D36761147BC817DA09077AD86FF24CF699BF90BB573EC5019386D3366516675D7D072BFAE28435F524BAD7F2D19D5BF8F64797F085EB6E63FEDEBB71E4CE13A5AF8F6C6873F97FFD89EB6FBB9323971DC1E5A7ED8BD1DF45C271A8AD4D2B82ECECE923595BCBABABD772EEE7BF4BCEAA67FEDC299CB1782E13DB5A5995ABE3944F7E9D45BBCEE1D8C3F6E6F26FFF88CD03B5648B319AEBD2B89D6FF0D94F9CCCD8B67A3E7FF1773878D1CE9C7AD4CE18418EA2D9C4AFEE7E955B6E7F889A9A7ACE3AF3608E5B324FDDEA4B2D5E8D1899E6A0999908B544FB084A163694F6C4245933F2FEAB51B2B4D282E34486DC76648F562647027155977D0871563708C218E550CA6496DA91907AB19A0317053BD5E71E5D64879CC0239543303DF1CA32089D10DF120A8FA460A58C21E79E64D6CA744D8859FD8BAC41DC6AE5962F1E8976C9AF96DC6DB91886A7F4370CD7899E2A29B4A4D2FAB143086882DE21D8FE9E1749CE1291B33C2C75D64A7786B89AC89776033DCB7F42E1F99F31C26CC70D3D4A661A2B30487992D124C8C765D8C4265D36F16D979E86F98CD8FFAB98CD6D6037802935E4BFFC90AF9B081899483FB44DBF11E7FA7B56D253B699357736B91056AFEB64EB4089205D475E6D3ECA71465F36E9E8F89B72A3FF839EBF6C644A99447585843671CBC4280D90A2C4338FDECF9AB7B6B3EBC4A990EFA0A7B0911ABFC8BF1D761CE9783D37AF7C82630F9A85196BE0DCEFFE812DB1C9CA79A691ADCC4A6EE4DACBCE60C34040EFF62EF69F35516DE29D7FD97F504A36F389B38F655A7303996000694A7CF98DF54ABA473A5386A5E2CC9B360ECBCDB17920CEF35D393EFB85EF72FA01D3F8DC1947B32117E3E4CF7C8FADDBB37CE38B67E23809AEFCD1AFD8BAB95F89D9EFB7E74C2EF9C2523E7DE94F58F5C25B7CFEBC539931DE22F0F364CD26B6151BB9E8922B3874E9520E5AD8C2B28593A811C1AC7209C349293C22CAF4445E90D096ADE442446AD4D0EF18B80634C85D8D30B35C24079DCF4243BA810A91C26190023117360C35C12739AB5C0C230571D98C96734D08544858DCB5856807F78207E3163A39027190376284240870D424A1A887CB5362D2D819DAEAB551154C2EF9E2386F83278EE0018168489B1E9ECAD1E55C8F2B971D7903E9B0D33EB17F0F5FFCF9733541EF3876EFF1959243475B7FF285B4C4E8536E37CD2405E594E292EA7B92DEDB2FA6A6EB090CC3276FA6947E47C22F9113271243BA9FA5DC21E3B3218E78CD0DDF9BFAC3BE8E553F77F036F22F1F8E6C52DA52830CF34A0F386BC4D9520CB8F0CBD770DA47CFC0B04D725EC8B36BB6D24F92BC1189F66378481E67292190BF9E01454A797FFDE159059539E3273083B852A18C592E6630C09A375EE2A567563377C438C2EC46FAFCCDEC356D2227EEB4076698E467AF3CCDAE13473271EACE5C72E3FD3CD3279B54719CE216CE5ED8C625272EE0D7B7FF9E1933673267C6246E7DF02DBEFCD3BB39F4B023F8D87E23195F78835E3FC913ABB6B3A6A7ACCA1E3535359C71EC1286079D4C1B912455DFC26D2F77F1EF57FE9C0F1F30850B97CE531BB3373FB999AFFDF0D78C4CC137BE7C31ADE3E36C6FEFA0396331AC7624A79FFB353A73358CCCF4F08D8BCF205E2A73DF1F9FE2AE87573390184E7BA99D8F7FEA14962E1CCF4E0D4952A2DA2C59B0158DED4704ED826B53B0434A46995A378629E251494FB96567DCB8AADFBA8E64CD83D41788DE899C08D26A1995B7A24E1BA9F10FD6382463167DEFC109D1774C71544BCFE09D9C3C57F276C9900325156B88A34E1865C4C2AFAAF5D3C86248894262A72E1272C12D1288ED5528F74362EAE063198E2AB3A86C5C0EC77445111A0B59C33FB8F8FE1EBF79D5F0344DD0FF82284675C2A836278A1AF26512B2140A14C9C85A7AB1DEBA95CE3F5C41A3D54DB198C788C5D5449E6BCB1747BE28A2BB2CF98D85E58514CC3861CB5ED42CFE06566D1B864C8F85B5CA6C56CA09F2E5B7E53B2B99CEA038A9FC291ACC05CBE08B3FBA8354EB4EEC31B70D4C938D399F475EDD8C9B6A2070E284BE87657AEA4B2B9B48437DD2D28027C7FFB65EF4DB3DD2EF2E6ABC03AA6B97D5EDB2E3891C694C8D443B691BCFCFD1DDB185D71F7A9C098D4DF40D7461A661E9A2054C8D25A9F13D7ACBFDCA5C77E4849D58E35A5C79CBEFE8CF0E30BBB5892F7DE80446793ED7DCF15BCE3A6D29E9548A2FDEFA003FFAD3CBA4BD5A6EFCF431CCAE29F2FA86F5BC9A4D71EDEDCB39FE88A574AC7B83975F7A91C316CCE5F47DA78059CBC7BFF69F4CDA634F8E387026CDF492B01274166BB8E287B7F0D8EA2E8635D4326E784C79EAEDB1FF7E7CEFBBD72BCA690807F8F2858793B03CE2C9363E71F18FD95CAC258BC729A7EDC71EF3EA386EC14CD2865C5425F6AAA2ACAA03F29BDABC0D2C655B25B5DB444044E2B68767F8D8414CBD46D40E3D951FCBC5D6896AC35288928DBA77BF979A8A8A646555D62DFDF183175095302B612BC98C878AD562DE1B7565FC3767B3E800413276F9E4C1F348069142847CA31545742FD5694B9D6FEFBC8F64FA92FDCB5D8126E81DA5194DD03B8ADC3FE875B9C11A71DC5B47E9A99F917DE6670CA303CF2B508A67D468F19FB5DEF99EAAA78A13897C397B5B9730E2804F632666133A22BC14E5EAB2C3AE4A142A07932F6A747B1B88C469CCE68DDE02CBCEFF3A9FFDDC45D435D42801FD35ED03BCB1B5879C19C3B593B8382AFB7E878C658368A8A631748FFC4E5BE05F82C495FE595F7446A4C40161DC26EBE689DB0603EDED6C7AEC1132C904DB7205D58298B161DEE8619CB27057EA4A7DFCE2BE3F70F0D1C731BCB6254AE9CC027575352AC52B153D1E7BFA112E3CEA60AC7C8E177D9F73AEBA95DC8612DF39E764C60CEBE7E9D7DEE0F617FAC88C9BC73D37FC9423172F64C573AF72C159A7B0685499443CCDC32FBE8597ACA375FC6836BEF10AB3DB5A48A8E11F9B1FFEFE39963FF512FDEDED943D9B52AC8E58C266C608B8E8B40319D760D0DB5BC08DB5F2CDEBEE62E55BDD4C983C860F1DBB27472F18CBE88C18A5EA1AEC3FE8EBF27FEE6D3441BFCF210FFD3C8111C733039CECEBE4EEFF06E12BB7529B09E8712D1CC752B5C4B769310895CE83E85C88C1AAA885F565F662C4215FC76D9AA3BA3A1C21D5C0509B5192C5444327463479888BE707F41A31EE796E0DD7DFFB1C1F39EB38FCFE3299B8C9AA751B58DB53A6835A72B1464CDF1DAC9B0FAA6DFC37B38041F78CBF82A3BA7308A20D2755028D9B845E8954A988D5DBCF86671F63203740AF91C44DA6E5C699FA5217E71DBA1733EA2CFA4293A79E7D95E19906E6ED328FE67175ACDDB68D37DF7A8BB56BD773E6C74FA4B954A43148D29F88F3D8FA2CD44F7ECE0000200049444154F98E3263E3BD24CC553CBB21E089F67A5EDAE2D232AC9E1199180F3CF420A72C3B80C5936D1CDB25AC9FC065DFBB8D97576D27C8F6B1F7CC662E3AEB086C7A544D785D87CB6B9B3AD8D6D989E3E79937750CADCD0D140A457C5274F7E4A91B3E92555B7AF8C14FAEE3828BCE61EF69C3993326493AEE4823E4FB7C96E98FAF54043441BFDF91F3FA09AD34BD86A5062B129D0F3070D7D749F4BF8C5BCE49F561D01B303A50D3B4F0C2882C0DCBC12EE7F19219B65A33693BE42B18A3F71ED48F967A7792D0940D27B92D954A6208A56CB4B1E3A4D5A8F5C7BFFF3B82581DC71DB680A4ECC2DB266F760CF0C2E62C1DBE6C1A451DDC6ABB4A751BC834A46CB6A9662A5533FF737BAC3F0754363B25E9561B856648D970C95801357D034C88A5787AF99DACEBDA4EB759879F69A226EE606D5BC3998B66B2706C0D8E5987418CCDEDEB79E8B9C798B8EB2C56BFF52687CE5FC0C269B358EFC86698CDD7BEF83DD22D33E80D93CC9AD8C69E637CC6356CA5BD3BCEFAFC08AEFBDD2374F6F4637825962E398046BB8F836635622513DC78F74BFC66F9263C7B3485AE4EA60C2FF1FDCB4E27166C259673C97B31DC749A62394BCA28E2F66EC334124A9CFEA6FBD7B27CC573CC9B37819AFA0433674FA3ADB59145B35AA93307C5ACB451EAFBFD2DABD8CFD704FD7E874EDAAC4C5BDDDE0BD1394137E1C6FBD972D7B71815AEC52BF7ABCD1E65E2AAA6112513B5F014519BD84E19513CB28D3A7A9D49341C741EF6A483088C264CD9DC911E64D1831E1CDB961E5B4217D7F309136936955CCEBAF82AC64F9EC221471CC240292096761828F8BCF1D62636F67BF4953D4C2B8E614B2B97D450A52736FA918199779760DED1F418BCA0C8E693B2C492563BA9A59649FA65C60606BB8F68E6869BAFE3ADFE7E8A99568AF14670CB4CAA35B870E97C86E5B740BA9604068DDE00231B6BD95E2C61D6D4D05C5B839D1B6063A6898BBEFD7356777914E22D947C1BA7D8C9FC8601BE7ADA7E247C9F57D76CA5D78BD3950FB1620E69B3C8C2B96329F76CA0DD1DC985DFFC397EF34E749644FCBEC4D17BCFE0ACA37765DD2B6FF0DCE34FB3FBDC698C19952257EAA55FEAFF6583C64C3D66A1C4C997DF8A97A8A1C6EEE4DC338F62F2A416769B319626C724E5BB18D6FF466FFBFD3E39F5E7BFDF0868827E9F23A04C2764502B28AA8D1D19C7B6C32CC6BADBE9FDC35771BC7602E92D0D5D6246E4B6AD085A48D78811D8596CDFC229A5D50E538F91A466CEC9A4E69F831F1B85299B89A1130D3D8432A138E84F3828B42FFBF11D399F4F7FEB1ACA756338F8D88389C76CAC72C0F054C8FAFE40B5E06DDDDA4D4F7F5699C32A825624ADB6B030DE766D91FDC37709440F66FC6A807D7023AC6C9449042EBBB6B4302595E14B575DC556DF24A86FA5686430DC80E9ADC33968562B6F3D793F9B8C124BE6EFCCC1231BA82F9721D9805F3B8C7C6180965A876DE524C77EE96AB6378DA5148892922C7080C52D369F59381B0A1DA4E33E857C91AD5988D734D0940A4939657201F823E671C1D7FFC0BA7C968229651E9F51318B2316ECC3CDD7DE4A602598501FF0B54F1E43D9CF71E1B7AF615B39C567CF3A83D9C32C4EFFDA2FA81FDDCAD9272F64C2489B39D35AA889992AA699A106455D827E9FBF6595FBF19AA0DFE7D8C926615C0A075E0EC218453BAEFA5053C156FC977E45C793D762BB1D51F9A13CA0485A287688A04D0AAA7420FDD209CF26EEE5C95926F9D10B197EC0A5987593C0C8E01B32D9160D31A87D3E51A153CD192E452FA4DD33B9EC27BFE3B5ADFD2C5DB698496D2D84A51201F16823DE3070E58E7D906C865A6AFFCCFC7B6810E25D98CA7EBFEC5B4AA78064D152B50D5C9726C722ECEAE5C2EFFE9852C368480EA318C470EC04E59E2E6A6352DD2DCBEAA877BBF9FC718B99307624BF59BE92753D2E5D6FADE7E2938F628FF92D2CFECC8DACB26AF18334B6E713789DCC1AE6F0897D16D0D9BE86DDA70C23ECDD4ADEA82388D590A2C0B69E6E9EDA52A6CFD989DB1F788A3E11A04AFA50EC251504585E02CF8B633A718619FD7CE353A7B272E5D3FCFC8F4F32409AF1C393EC33B9810E3FC9BEFBCD67625D99DDA73711B70C3C31B436C5D035B2F58D0645F44323F0F723A009FAEFC7EC1FFA8AB2AAE486D8BEB4DF496D5732636973F508CBDB293C7F25BDCFFF96B89FC529F59130A4AB5AC672258B96B17021000F533C0E7DD15208C8CAA45E7A18F9702C4D8B2E20D6BA0746BA9520CC60A84C5AA5D17852172E9688C5E3644354CBDFADF73FC34F7E7D1F6366CC63FE7E0B993532855114A70E5F3965A82E0ED5DA2599B249A88621A2662BA5D7A112E877A6570A66D4631B97A9379131754C3CCBC32DE509F379CEFFDE2DB80DE308A4275C7AB0A52462C8C6A8110D675831EA8B1D7C6AD9029A86D772C94F7F494F6A2461BEC08C8638D3C68EE2AE575FA73FDE843510A3CE8742AA4029BB85F1758D746F58C34547EFC1AC06D8D6E3E1DAB58C1DD9C01F963FC3F54FB663D5A4D5E7F9761D1282985704BFA014DE4A561CCBED87623FD3DB26B169ED5ADC528954CA64EAA4111CB0680F268E6A60464B9AC90D0E2919891664C4A24CEE2E641250C9C1EA4DC27FE897E6FFD09B69827E9F831D8D824B563BD80AA7BAD654E33342DE8EFF32D995B7907BEEF7D416D761FA7970624A8E3450BA083E31D720A6349F8B146C08620D7805485825D67A696A26EDCFE8DD4EC51CB60718C3D5C6A16785140D9FB410AC2B9B837102D3A60F93B57D1E3FFDDD721E7AE635C68C6864C694494C9E3291444AC82CEAE61592577DDD7E340AAE2E3383757451E3B1D598B2AF26DCE4989076BB42998429C332E25E5E22DBB1991FFF76397EA2498D69DBA6F4474BBDDBC153E576B1E94A5063949992F4189E4EF2F89A4DF4256AF192719166C3C8F763D70DA3EC2748F65924DC806C3A209F0C09B239D515B2DB489BDD5A33DCF7C70730E31976DD6D771E7E7E2DABDD4612563F948BB85E1ADB4AA93ABF119628067935FA1C0B4AAA9D37ED24681D51CFAE9347B3F3F43686350D23D390624E8B43BD09C9D0C310861F720F91DDDDC129C01DF77C7C9F4F4EFDF1EF3B029AA0DFF710FCF503900452C60462EE1678E9267A1EFD31F54E0FB95C3F8129B7DF0E3157C850326297D0F0D5D49EA82188C595D48B0D338BE92468EF1FC58859279199730C467D1B7E22495EC472064B1ED22B2D03E192999765F0CF3068EFC9F2AB879FE7D11737B161F3369C545A5D14E47364E046DAF62C4F067C2D4A6602576AE222F2EFBBD8AE488C7A245C9FDE648CBE9849831FD01008413B148D32138625F9E8874E26EEC41508327028D660A23F11CA549CA4D0A2952D35EC3020085D4231A495963D99620BA5D41365EBB68C45CBE44628B39972F109294BF62EBA278288F48D7B79F596EAA2419C12316CAF88E9CB7B86F8A25DA1EE0CA44DD153C33AA2F857934ED0DC9024637B4A36B5A5B18ED14DB56A8C59ED1F0CCD74BC5D0192F789DCCE23D7759D417F80BF661FE843D304FD810E0F944B3E8E288A051DF8AFFF8E6D0FFE8816731394FA2985B66AD113329571703521269A0FA168F34AFB99E846D7E30AE1D5186CF73DB2F166C6CC3C92F4A4C33113D329261B285A320726536A91EE981A1DF6C46216A5AE5794DAB11F5012229381C5C1CD2F21542B1644ED734856ACE62409428F8C08A189D156FFF3584623E5D444759CBE15952EE4734CD320ADA695A302493412138DC60D8DBF28B303A2717929C944741C196DC98F7CE6A09E9A7A9EAC41DE4F9559E4C2E599F8BE41393055FBA11C9F9ACC547571280CED69CA1D8192DE8C2456FD207ADFB438C2F81EE2BD98AA91C1E5485FC2F20AC40C191672647E3B1AE953BAAF722711AD4875CEFC4D25930FF8C9A70FEF7D474013F4FB1E82BF7100421E5E806FCB5660489A5E8C55B730F0E055C406D6108B998A607CD3C63725FB8DC6879DD0231E9471C4BCB55C47681994CC3EFC544890B4E9E84D520E7662C2B42538BB2DC3AC15BF43E5861869E108E104B6AAC306410111FF15C19D282B1F942F55F9B610734CC9A80A35D9A2181CE4B0826E286F67DB8B2BD8F0CA354C1AB133C3F6FA77C2CC04BAED90786892F02C51E2C142FA58A2894735062D3B97CABC20226A2B28A83585A6B40CCA31C8D88750B964D8F2931C6C3D144A97632A0F66C0836A6EAEBC775C19EE1684BA95C101AA246404458278245E24C6BE8472BF227723F259715C71B909F291116E98A02406BB1E241CB9B8E431C47841843F4379BE307FD41F2E23FC43E3FDEA42F4413EC7F4B17DA011D004FD410ECF601A26596BC996B2B46C046EC1DCBA9CEEE537126E7B895A3A4561034F7A94CD48B3574A0F4EE0295D615386522401570236A2A017533A206E20FDD4263D5E0375A3A653BFD36E58ADB331336DE0B480D9A04A25422E41200E1D426E919980CA73076BD09E68750C119E2793786FE2AF7E84BE67EE2451EAA49CEAC21DC8D138E778EC7D2FA5109FAC24A22C374B188BABF63F718889EADA923A4B7921EA1A512A97EAAE40B253D9649432CC604FB8126092BAAF088FC8C69C64F2D2FF22346F284B30B962291991A1D283BC8F682DCB55668835AD482C88A0AC6ACFEAB3B009CD84EA9429ABF64643B5321A229A216F618934A741D9944B96341146770543C6096AC2F39D02872278FDD008EC08029AA07704B57FD56B064BA2CAF455B248CB410A0F1605ECAEA7C9AEB889D8FA7B70BC2E8AAE48594AA923CA2FA5AD4D39A1885EB01054108350B23D5309E763E6D53DBEE9C94462827E2F49393682A06122B1A669D48F9B8BD93806DB6EC6101523CB21B424F78C8A0C91D04F99A0D44158ECA6B4EE55B6AF7D01A77F1D56DF3AEACD3E1CA3487F902193ECA1AFE853B3FFB770667E32B230F07A3113494A463C1AC4192AADC806A392C75476E894E562A208171C25E216F5880C9520926148B958C649C7C8B945758CB2C928651AE1F081681092B429629A6542257CEFA87AB928FD498D3A65464342434A9C42D20557962C251B116935900E3CB12D1372177C074C033F167D86943C54295CFACC552B8B107E4939942853DFA18DC37FD579A33FA76A10D004FD010FA51AD2F64BEAF63B3493E444F7D780DA3087595C83FBF40DF4BDF22762412FB6D7AD6EC9A3163A07CF8C0D2A9545824BD2BAA7C87550B55DB2605F32615BBA26C41123AE3EA3E01A943D534D0E0E146298B15A12993A9C741A4B74407C9F72214B21D747C6DB8C13F42B764A482924F4702C297EF86A53CF0EC711943690A9F7D8589E43EB513760374E278C95D8FED61A4C291128E257A29714DCB2FAEFD671E3545B9FD4BFD5A6617F0F3DEBDFA4BFB313DF4AD03A6D1E89E175EAB8E3F27257EE163CBA366DA4BD7D1B3DFD79E2E97A9AC78D66644B73E464227716226E1F7874746CC32D9748043E8D4D2309E2B5AA94942BA35CA8950788EB31B0693D461010CF6448363663CA6460083D9D3D1472FDC4247B17BD12C7A1AEA9194B0C0FDE4E98A36ABDAC433F34023B828026E81D41ED5FF61AA167B1278A6EA35509403A1D24A3B64CA5B111F3B6C0D6E7D9FCE8CF31DA57D0686C477A14442FA36CC43143E92916828EF47F238296FF975A2F918591CAF44202A590178948CA3D7B10183876B431174926C91046A89A121CC9BE955E748813ED8DE1FB22A31A792B7A5210B76DC2B2473A99C2CD0F60587136DA539878C2B7E92D3673FF8D3F65B421033A01252B49D64A3360A7959EC67E4B8F61EC9489389ECB0B0FDF49D78B8F901A68C7714B84E9E16C2C25689EB517BB2C3992783C81D7BE9195BFFF25FEF6F5386651757B88ECAA5F76B1EB46B3D3FEC7317CA779AADADDFEFA2BBC78D70D3494DAC91B09DCDA56F63DEA2324468D15856699DD216D14B9E717D7D0B0F649EC5882556613C3763F84DD16EE45D8D9C193377E8F96FC66CAA275E2A4289B31BC781D8D6DD3997BC0129C54ADDA17103391BFE519F92F3B95F4075524029AA03FD0618B085A9C40E4365F5ABA645250E8526AC9FD56526DD4D588C346711585153731F0F25D64BCAD588840FF60378354654307D31F525693F281F44DBB58661CD78DDCEAD44C8565E08B2BB4F8E0D9268E6CDA495B9B6CE50DFE69887555549CC633D41CA4BA084836698A09A2D292B6F0FD003396A5E8264904192CB39B42CC677DDD1246EF71212FFDE1E70CEBDB489F339A6E6B0439AB8E6D41123F5587317C24479F7418AFDF791BC5177FC7C8A449A1A748B2BE8E4DBD2512C3C6D121FEE82DB339F9C88378E07B5F64A2D54F284A7DA14191128EED91CEF7290795D5FE68C61E7B296D931AD9B4E2517A1EF809C3DD6D6C1157927413ED99691CF9D1F328C662D418215EE766EEBAF2B3CC49B804E52C5B1A26F1277B1E071F7B3C63837E3A7FF925C6F5ADE24D7B04F95823AE99A4CE1CA0E859F48FD987034E3881926953636947910FF457EC037E709AA03FE00192C31B9ACB8BEE9CDF99D293BC58BA3B842B6352AA2876521E58C5D67BAF22BEFD0986C7BAC9CAC48A19236D2530CB723B1E1988AA0D35C357A24BEF6C69BD7B0630525F7FB70CFF3B9FFC0E68AA22AB860B25C38F3A3122FFBAC8EB2E6E0D5014D926258F1A27E69528382DBCD97820D6B65708CD466EB63E44BE7177EA9D849242ADF53A18B7D358C64C1C46FB4F2E614EB88255F1793C5A9CCF969A5AC64D18CFB06D9BD996EB649B3D8C93269834AFF809713BC69FEC9D79223E9B516DE319EBB8A4B63CC9DEED3F57032FB70FFF08A79FBA8CE2AB8FD27DEFF7C9A75BE90E6DA6E65E6585B91F079E760EA97175D4E1F2CA138F91FEDD15BCD0B080D1FE1B8CF43BB8AEE15C962C3D9811B1809E9F9E46ADED714D7A19E9917355DD7C9F37AF60467E1DB7D49EC8D4457B3067DE6ED458A2C5A71F1A811D434013F48EE1F6817955A0C63242D5B5A0FCEB4A9D60B4E3AE7B82ADCFDE436DCF93C4CB5D329281694AAD39505649A23F2DFDCB0969C753031A83331A8A60A3EE5DA1FEC86D63C85EE3FFA568D9948C46BD85A5A311F2684063A80CEB9A35E4EC3A0CBF1BDFF4A8A544C9AD656BEDC18CE85EC7DA5203BFAE398EC5C79EC8B451524C8E8B123596EFF3EC430F925C712DB6E1F3FBD49114C72DE2E443272A31A25ACFE3E9F602AF6EEC61FACAEF32B1FF351E482EE6A1D82E1C75E49EEC3E26A188B1DCD7CBC6FF3C9BFAB08FBB33CB98B2F71246995DB8775E4E776234AF596D2CCA2F676B6C26EBA69DC4B147CC5663F7F75FF525DA06B6F0447277A6955632DADFCC350D1FE7F0231633C2F1E9FFE929D4583E37644E61AF638EA0796492FEABAF6052C75D3CDCB894626A24277FE424629625CD8B1F98F3451F486521A009BAB2E2F5DF8F368C6AB8D2252D6D73AE2F8EE1628FD44F50EEC47BE9410AAF3D40D7B62748C7B792B245D2543C3E0D4C3F4360960895B55534FA21AD6CD2B7A0F2F2506AA8B9C83B2F52DA78D79F839C1ED428B53CC9CA230797C8EA28FA5D265D12F8A9E1948C3E7A1D9B7C364F6BDB3E782D47D3FFC7DF50B25AB83BB18896B135C4824DE41B2670C0FE87D060D93C70FD2D4CDC7C2D7DC9366E708EE0C0630E6671ABA38CA20DFAE83732F478063DDF3A8A616E8E9FD59D4DA16D573E7BE4785281B865DB643D8FE77EF06F4C2EBCC4D3E9FDD8D4BC903D674F2075FBF974382DDC1FDF8FC30AF7526F7A5C5FF3613E7BD662DC815ED6FCC799646B66F1A439830585FB68F536726DC3791CB1F4405A9C32D99F9C44C6F1B9327E21C77DF800DAC4DDE63F2EA0D95FC91DC38E635B3089F3CE5F46C6922E0F4DD095FE357BBF8E5F13F4FB85FC3FEA7343A9494B3521A984FC076951C97E4AE669973C0C115DDAFE04DB9EBF05B6AFA4C1EDA1A69CC7F2030A660B45710537CA988AACA50B448C6D85E0243996AC36F294FBF3524BB400531AFFD4349E585A398461D4CE27A3D8466853EBB5E3990E5DBE455FF35C46ED711899B67D59BF7D049B6FFA3273F22FF35A7C3AA659C6747C5E4FCEC618BE134B0F5DCC833FFE0E93BDE56C3666736FC3617CF8C38B98E29862844DDCE8501E8C5BCA0EEBBFB58CDA00EE6A3889C97367B26CE1580AA429173CBC789CA7AFBA8C9DB30FF3AC3D8BE589851C72D02246FCE674B61ACD3C38FC04E6792F32AFEB3E7E9D3C8645A77E849E477F4DDBEB37724FDD09AC8D4F6249EF2D8CF637727DFDB91CB1F42046D945B2FF7522B58EC7D5F6879937A591968E6719BEF129B6D7B4F08BC4329A9B46F1F9A32690144715431739FE51A7FBFFB5F7D1045DF1118F4A0A91ADD53B0F95B3853E9E212D7A268E7802660B94BAD7E0AFBE8BAEB5B763FAAB70C22231DB26663A940A051C3101308DA89F37907CD82190AC5AB274D59E27024DEFFC88CFB61AFE905173CB60A054209192294483925B269F77709AE750376101B1992762D44CC53392BCD1E9B1ED868F511B6EE0F1D442422F895B34D890D9854E1C3EF9E1053CFEDB6B59D07E3BF9603A77D51ECAD91F5BCC58E93691C93FAB1DAF94A23D4CB1E55B4790F15DEE6C388D390B16B078973ADC308563DA6C770D9EB9EA52E6E51FE749732E4FD6EECFBE7BEECAE8DF9F414FA285FB524B993E7114739EB984CD35B35835F163CC5A7B13A3FB9FE3C6968BF0EAC772F0E6AB199E7B836B336772F4514B19E564C9FED7C9343825BCA044A6BF87C049D1DFD8CA23B123B8DBDC8B530E9DC8D231A5C834414D69EA8746E0EF474013F4DF8FD907EA156F67B56FB3B310B68C4047A3CFAAE42059AD742B88BE841B623945C27023F96D2FE2AFFD2DE1FAE718E8969E8800215C51A416CF6602E966162381A8B54EEED47D6F682331BA6DB7C298AA6D4B0B483994917293BC68323B49EAC78EC3987534F191FB62C647E0D1AA3A3EE4B1B5A393ECF5CBC8C652DC913E996953F7666C4D8A7E33454D2264EEE45A1EBCE55BCCDA742F595AB92DBD8C93CF3C9A29A68765B91074937346D11342E715CB1851ECE4B7CD1FC7DE6509A7EE5947527AB37D19854FB0E23BE7D3EAADE5D1DA25AC8E4F67E9C259C46F3D9B7C660CF7B22F4B4E3D92E2D527D09A36B99B8359907F1C3F99E0BACCD12CDC674F46DEF969C6065BF851F20C8E3966192D4E9EEC4F4FA6D67179303E9F2DC134B2B2FE844BDE6D61E7DD7763D91E1986491FB88C7FEB3EE80FD477A6920E4613742545EB2F1DEBDBC43C48C86A4E7AE8213E538396F7868B6F7BB84A7D2DAE6ACE4660621573185E0F617613C5CE5728B7AFC4EB7B8D7CFF5A707B890D1ABE4AF61C480F74A440AFFAA495A6925154433166AC0927338944E33CD2A37725D63403E24D789934BE1323E6E6F0AD8C52A293E9BBF6AD9D94AE3D0E23D6C0CF9D935874CC91EC322E261A4DD4980186EBB2F1F9C7E8BEFF47D4387D3C64EDCD6E277C9A29633338A18BE99579655B8EF4E826567FFB3CF6F456F364389B0DD38FE1F0A3F726E379A40C93979E7A06FFDEAF924CC4F865EA78EADB66B25F9B45F1B79750488EE00E771FCEFEE471ACBEFA7CA6145EA797F1341B259E88CD6065F39E9C7AC4EEF4FEC7C76833B6F393DA7359BA6C29239C22FDD79C4A8DE3737DED39041317D09CF09838DC644A5392498D8EF26F2C63CB188EAA99EB8746604710D004BD23A87D905EF3361FAB5964352822A3D432DCA246BE7D35D3826F0483D6AFD1649E68CB4B2B5C5E1C400C690553E3254A23C3144D0A91342D0E501A584BE8E5F0CB65E584128AAD8A6561C607E54E93233113F558C93A8C5403A19DC137934AD253EAE1490F1C29527B5D84B19822733F88B3656B91AE6BCEA736E8E5CEE4FE34EDBA3B236B3D357597F2F2CCDB6D3F06F2F0F80F2E6786F727F2A9B1ACB576A665CFDDC91909B2ABD6F26677078DF39730A5B485DA877E4083DBCD4B35B371F7388EDA8606C26DED6C7BF931F6E20536FA0DDC103B9E23162F64CCC08BE41EF821FD619A7B634BB9E0DC251456FC02EFE95F3132D747776C22B7C7F6229C3E8763F79FCE86EF7C9496601BBF6EF938FB1DB284D176899E6B3F42261670A3BF94434F3F9979231C9CD0C1B05D6C99E60C6A949892618BA0ABAE417F90BE3295742C9AA02B295A7F33838E9C4EE431A496F1EE1EE677BF34724389FE46EAB943CF1B12E27FFB5DD43F88D3CB5FEA801E7AC741A9CD48EE48E96A0CF5552BE1A2C10B48203DD5439A156E918EB56B78F4B69F31C35F4BDC2F5034630CD835743B2D7418F5CCD97B31B3E6CD65DDCB4FF3CADDFFC5B4642FF19EB5A4E216EBFD7AB6A5A7B1C11EC71A6334179D75142B6FBE9A9AF66768087B09DC1CB6692A2D8C1C356C4F8EE319731AF9D6DD3973D90CF22B1FA6E7E93BC9F576F1C7F852CEBB6019E38BABB9EFFB97D0981849677C279EC8A539E8EC53199F2AF1EC773FC730C3E0F186B9CC39F244E6BABDACBFE9328C649E3F260E679F639631BE31CDF058A40F6D48DBA2C021A518A5C3213FFAA111F8FB11D004FDF763A65FF1F72030C8ED32F9FDB66E73B98497EDE5AE5FFE82FC40BFCADCA5CE5D3293748635F8B5A33012093EF6A1C3F1C29075ABD7F3F01DB7D2147395E594976AA4C76966BB9761544392334FD81723D7CFF2DFFF9ADE8E4D4AC83F70321465E8DDAC654B318EDD34966587CC67E791265D6B5EE7E6DBEEA1583B910D7D26975CB084D6449E477F730BEB37E4E8721B08EAEB38E5A3872B9794BBAEBD8E5CD9E679AF9165271FCAEE768915BFBC9A4E3FE465770CC79C70243BB566488BBB8D8CE5479AAC83043D38BCF3F760A69FAB1118444013B43E15FEB908A8CD4A318C8DD4406450C612FF44C3A06F5B07B7AD5CA736D862E26A2EAE298E38B3D88C6EAE63BF5D26911814EFDFDAE5F2E4F36BD8DAD183EBBA241C8B19D3C6B3DBA466EA5322431A2ABDE695AFBCC99B9BFBD8DA935765969853C3A449A3D879DA30C6254352851E6519F6D49A3CF7BC51A629E8E5C483A7918C99E48A2EF73CFC1AC592C58431B5EC337734861FB2B9BFC0EF9F594B4F21C3D18BC6322963D0BE653377AF580B569A0316CE644C5302CB2F624BD78612F0575279837DE33A83FEE79E64D5FBEE9AA0AB37B61F8C95FD3F045D7403A57627CE27B259D82D2E2706CA7A4BB633956EB5E87A4825DD1BC076032C2B413E8C1338A66AE513BA93E947D1FD10F53CA9B78B30D340C9209150F6869126B698E94A352794DE695BBD2E16E4307D4F65D859ACC8F144244B3D17331653F60192F4CBF1A4C33C6631A4944830605A24F21E19E98B31B2E46D9B946C7AAA1ABFA8E4B984BEF492BF23E02F0340D110BC26E80FC6C9587947A109BAF2625661471C15A145687F50274FFDB712C01B2C7F2835105F261065543C7236174128823CA1299428C3D243E2D842A051AD5BDED912B356A437DA8E9CB4D5DFC96B65C2521CBA65373449E8D4AACC3CB2C512A17FA90F836B0915A35C689444AA725517F54013476AEF9E8167CB3B55FA749C000007AF49444154E7B14A6508121492298A86419D2BAEDDE2A420C75D882E2FA2B91D88E58A0C0F6982AEB093F50377B89AA03F7021A9AE038A3838EA2019DABC7CDBCE44BC018736D58454853E2D5B49782ABF43D1F21B1C938EC9E8B610AED85C89C8BF19A76498C4431743FD9DB4B649A923CAC2232511E17C19418FF450A50E3ED4F4A206DB4331973510DF435B44A510130349896384922B078ECAEE45933A213AD7DE00A15143BB6DAB0E9551A2031D0A41CBE74BEE2DED87493518A47E55FE6142F63A83AEAEB3FA5FB71A4DD0FF3AACFF4F7E524488831E826FCF3A8A2053E4851D65C1832E2486D84819CAE944FE557907863E86F20B5482A7831D25B20937F80CC96095B6B5D84E49AD3BDA8C145383A10AB088EFC71561470EE4DE9FB90486C494C6935C29CA8496B8A3CB9125305C87C00EC847CDDF2455A51B06067DBCEBE4E22047A904B6E5A8E57971A5E217592A2ACF96B747E5FF4F9E007AD1FF2B043441FFAFE0D32FFE9F1010B294DC7950EE7FF0E9925E469B69CAE8D6083155061DE21B31650C20D9B318CA462D6B31559E10BA9347A47927DE85457C23A9E85F6ADACA7966889695F16B64121B6D4F8A216C48682A47440CC9C8835234E517A6D4DF09A91795F989484F85982571ADDD0A463305351128997427862F658C14D839558291CF97924CD45E281A24D10526B21B5315F3FF0926FDEF1A81BF888026687D62FC531178A7833AA2B1B715F106254CD51FCA84367AE6501FF5DB156BF5D742E4EF54A123DD3D495CFDC8DF50B441947CB564D9EF9EA48C4A0DD11B4B9A3C3805A99C5F877CB785C1230D6B3F72B3520FA155757150DB8631553E512EE3E2FCAD0E5ADE5B7ABB8784A4A26E956853307A44F7074352ADFF5498F59B5729029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D0085429029AA0AB34B07A591A018D40E523A009BAF263A857A011D008542902FF3F264F063D9ED894270000000049454E44AE426082 where `app_id` = '4'; -UPDATE `fn_app` SET `thumbnail` = 0x89504E470D0A1A0A0000000D49484452000001680000012C0806000000EE2C29AF0000200049444154785EEC9D077814451BC7FF77B94BEF8D143A842EBD188A056CA8F40E52444405C52E62C5F2D995265644451114456C6001A4F7DE413A2421BDE7FADDF7BC7399CBE648729BDC5DB82433CF1325D9D9D9D9FFCCFEF6DD77DE99514024A1805040282014F04805141E592B5129A18050402820148000B4E8044201A18050C043151080F6D08611D5120A0805840202D0A20F0805840242010F554000DA431B46544B282014100A08408B3E2014100A08053C540101680F6D18512DA18050402820002DFA805040282014F0500504A03DB46144B584024201A18000B4E8034201A18050C043151080F6D08611D5120A0805840202D0A20F0805840242010F554000DA431B46544B282014100A08408B3E2014100A08053C540101680F6D18512DA18050402820002DFA805040282014F0500504A03DB46144B584024201A18000B4E8034201A18050C043151080F6D08611D5120A0805840202D0A20F0805840242010F554000DA431B46544B282014100A08408B3E2014100A08053C540101680F6D18512DA18050402820002DFA805040282014F0500504A03DB46144B584024201A18000B4E8034201A18050C043151080F6D08611D5120A0805840202D0A20F0805840242010F554000DA431B46544B282014100A08408B3E2014100A08053C540101680F6D18512DA18050402820002DFA805040282014F0500504A03DB46144B584024201A18000B4E8034201A18050C043151080F6D08611D5120A0805840202D0A20F0805840242010F554000DA431B46544B282014100A08408B3E2014100A08053C540101680F6D18512DA18050402820002DFA805040282014F0500504A03DB46144B584024201A18000B4E8034201A18050C043151080F6D08611D5120A0805840202D0A20F0805840242010F554000DA431B46544B282014100A08408B3E2014100A08053C540185C562B17868DD44B584024201A1409D56C00668C1E93ADD0FC4CD0B058402D7580185E26A8786C26C36330B3A3D3D1D7BF7EE8556ABBDC6D51497170A0805840275470102735C5C1CBA75EBC66E5A0A6A0668B3D98C356BD6E0EDB7DF46DBB66DEB8E32E24E85024201A1C03556C06030E0C2850B8CC12A95EA6A40EB743AFCF8E38FD8BC7933FEF7BFFF5DE3EA8ACB0B0584024281BAA3406E6E2E060F1E8CAD5BB7222020004AA5D2066985C964B2141515E1871F7EC0CE9D3B05A0EB4EBF10772A14100A78800204E881030762C3860D080D0D2D65453340171414E0FBEFBFC79E3D7BF0FAEBAF7B4095451584024201A140DD5080003D68D020AC5DBB1611111150ABD5A52DE8FCFC7C01E8BAD117C45D0A0584021EA68014D09191911503FAB5D75EF3B0EA8BEA080584024281DAAB00F7419305ED10D0AFBEFA6AED5542DC995040282014F03005F2F2F2D820A14340EFDEBD1B02D01ED67AA23A4201A140AD5680003D64C81001E85ADDCAE2E6840242811AA900B938860E1D2A0FD0AFBCF24A8DBC495169A18050402850131520400F1B364C00BA26369EA8B350402850BB15900DE85DBB764158D0B5BB3388BB130A08053C4B0102F4F0E1C31D5BD004E8975F7ED9B36A2F6A2314100A08056AB10234483862C408C780A6A9DEB367CFAEC552885B130A080584029EA50059D023478E940768B916F4C90B19389394E559777A8D6A131CE083B64DA31116E4E7B006B4BAEBD1B369B89496EB306F5DC81011E28F4E2D63E1ADF2AAF0760D46338E9E4B45727A7E5D9045D63DC6460431ED1CA582223D8E9D4F43464E91A3ACE2B80B15080FF6C375CDEA21C0CFBBC252C982960DE8975E7A4956159FFFE41F9C49CA9695B7B6670AF6F7C1FD83BBA25BEB7887B7AAD519F1C2676B71392DCF61DEBA902122C40FAF4DBD05D4992B4AD9F91ABCB67803923304A0B94E31118198FBD89D0EBBC9B173E958F8D34E64E60A403B14CB8519C8607B6A5C2F348B0F7708E851A34639B6A077ECD801B9801EF3D20A84852831F016C756A30BEFD9E38A3A7DDE88AD7B7578704837DCD8A9B1C3FA156AF598F2C62F68D64885DE5D7D1CE6AFCD19761DD4E3F86903E63F7127A242032ABCD5F49C42CCF860B5D0AD58A53F376A909A61C6B2574738EC227B8E27E1FD65DBD0AB8B0F9A375639CC2F3238AFC081637A1C3C6EC08BF7DE88364DA21D027AF4E8D1AE07745CB4171EBF2FD8F9BBA9C125EC3EA4C30F7F14C907B4468F296FFE82AED77963D4DD1543A906CB22ABEABFFC53842D7B7498FFF89D880A7300E8EC42CC98B35AE856ACECC74BF371F6A25116A0771F4FC207CBB661E45DFEE8D6BE6E1B05B23AA60B32FDBD59837FB6685D0FE8175F7C5156F5C6BEFC2304A0010EE80706779567416BF4B8FFAD5F0568007040CF7BACBF2C403F3A778DD0CD0ED0DFBD32DCE1F34A16F407CBB70B403B54CA751938A05F9844167494430B7ACC98318E2DE8EDDBB7E385175E9055CB7B5E5929000D09A00775419F8E8D1C6A57A43560EADBBF551A34B42D596A4A167C7DBD111651FAABA5A2631555283FAF083326BD872F57963DEEF0DFF18B58BCF037BCF9E1F40AEF6BFE9BCBD1A75F2774EADED2E1FD4B337040CF7DF40E4486FA57782E0D703D36EFCF4AEB4685EA7406688AB4080D0B2A758DB42BD9888E094351A11626931941C1D63AF4EF3103F562C3F1D5AAB2239AE8F89A9DF32B75AFAECECC2DE86F5F1EEAB0E8BD279231E7FB1D02D00E95725D060EE8E727DE80D68D232B2C98967B1E3B76AC3C403FFFFCF3B26A39FED59F05A025809E4A80EED0D0A17604E807DEF9BDD2A02198DE79FDA3E8DDB7E355C0ACE898BB014D909BFFD6720C1BDBB7CA809E33E37659807E7CFE5F95D68DEE7FFFAE9358B36A1B9E7BE3DE52728CB8E559AC58FB1656FFBC155792333179FA401BA02B02B02701FA9B978638EC737B4FA660AE00B4439D5C998103FAB9897DD0BA9163408F1B37CE31A0B76DDB26DB821680B636277771DC3FB0336E906141D320E183EFFC5169D0108447DD3E0B770DE98DDB06F44042EB9297C16F3F6EC6D67F0FB25D18B8B5BB73F31164665843F982430218D8291DDAFB1F2E5F4C63FF26AB975BD0E74F27E3D8E173B63E7AE7905EB0B7A0A565D2714A3F2C598BB57FECC4F36F4E46A3A68E43BEA40F01B7A03F98719BAC41C227E6FF5D69DD2A0BE82DEB0F302D67BE369155F5F285341CDAF71FFB77EF9B3B62E7962338B4EF349E7C691CFB1B69F4DF894BA574B37FD0A5BAD1B1FA0DA3D1BE4B82533CE016B42C409F48C6DC1F760A0BDA29C52B77B20DD0137AA37563C72E8E7BEEB9471EA0E55AD0135E5B252C683B40CBB5A01F7CB76A8026984E9E3E8001815B7BD46DC8A29BFFD5533677C43FBFEFC4C7EFFF883B87F6868F8F1ADF7FFD0F1E7C6218EA378CC27BAF2E45971EAD10DF301A17CF5DC1D18367F1C25B9331E7F56588AA178AD6D735613DF14A5206FA0FEE692B73D3DA7DB8782E15DE3E6A767CE4845B6C8096FE5E996E6C03F423B7C9B2A09F58E07E40FFFDDB0EDC747B17787BAB199CC9F20E090B64B775DBDD3D30A6FFF336F7C6B143E730EF8D65886B1065D32D3B330F0F3C5EE276A0B620D714E9A6D3EAB1F2BB7F31EB7F93D0BD57DBCA4875555E0EE8252F0E76580E59D0F304A01DEAE4CA0C1CD0B308D00E2C688A831E3F7EBC3C403FF7DC73B2EA39F1F55F04A025809E32A0936C17C743EF553E1A81FB8BDFFD74067EFD61133A7469812ED7B7C23B2F2F61D6715474A80DA66F3CF725E21B4661D4C45BA15279E1A7EFFEC581DDA7980B22F9523A264DBB9BF9630946CBBEFC9B41FFF79FB6E08917C6A25E5C046BFF3E6DEEC7E29F5EB49559969FF9D8A1B3D8BCEE00EE1ED69B01BFB28903FAFD876F9505E8273FFCC7ED16B4F41ECA728D48DD1BE41AD9B5E5281E7A72984D377BF707B505BDE8487B473EFFCAE8C701FDF50B831C9E46809EBF6297B0A01D2AE5BA0C1CD0CF8EEF250BD013264C700C68DAF65BAE052D006D6D4CEEE2900BE842AD01D39C00340DE82D5EF82B62E222406E06EE4795BA23A450A03AF2630489C0203F761E250E0C02F4DB2F2D4154BD305B0F3D7DE2522940A7A76663E13B2B70E1DC15DBA0E2E675FB997F77C6ACD155EAD91CD0EF3D7C2BA21C0C12A6E714E1A96A06340D1E92054D2FAFFB1E1EC85E84F680FE74CE4A844786D8EE9FBE3CA4FE6B01E82A758D1A7F92DB002DD7829EF4BF5F85052D05F4DD1DD15BE620E1B4F72B1F2E26B5BE08D0DF7DF117D46A2F141668B1E9E867A5FCC55501F4CE2D474B7D9AD31342B0914671F0688791B73ECB20E432404FBF459605FDD4C2B5D56A41930606BD115AAD1E1FBDBB02C3C7F7C3C3E3DFB101982C6872138D9BD2DF06148502080C2A8948A1B6D8F0F75E787929E11FE8876F7E7D05FE01BE4E03885BD05F3D6F1DD8AC28ED230BFAC7DDC2827624940B8FDB007D4F4FB492E1E2983871A23C0B7AD6AC59B2AA79EF1BBF09404B007D1F01BA7D0387DA15E98C98EE24A0E922F4E09375F7C33F6F22363EB214A0C9D25DF9DD7ACCF9E2090685FB47BECE3EB3DB76688A796F2CC733AF4E60FF7E78C2BB6C00913ED1673FF519C64FBD1337DDD6C5760F0579453640E7E514A2B050C38ECD98F81EE67FFD14E6BFF9BDC310BC8A04E116F4BB04E8908A67A466E46AF07415014D7EF6990F2D6083AB238A7DE79306BF82662DEBE3A36F675E15C5C1EB4CE17959C503AD4B3F5F83E1F7F4C343E3DEB2017AC35F7BF1F64B5F63C28377D974532A14C8CB2DC48A6FD6B1A8116A8BF65D9AA3792B6BDF50AB55888C0E65FFB67F913AEC3C920C1CD05F3E37C0E169FB4E5DC1020F07340F79B4BF9994A40CD6BFAB2365A4E5203C32184AA5D2E9CB7140CF244037B4BA0DCB4B1466270BD05BB66C815C404F7EF377B7039A0669E8D3BA4D87A66CB08B125992F4F9CD53CBB68D9845420FD3C5B329A5A21B9C56594601DCC571DFDD1DD0EB3A398036E0E10F2A1F2E46D6EB82B7BEB745177CFBF91A165130FBBDA988880AB10D68DDFFA875D0887CC63CBA80A2067854023F8FF2BCFDD123B63209363F7DB7BED41DCF7C75227B0950993F2D5DCF2C414A0BBE7E1A6B57EFC2BAD5BB5D02E877A6F59305E8673E5A57250B9AEA4C9114DF2E5A53EAFEE83EF8318A78E1AE1F9E895C43F3DFFA9EFD7ACF94FEE8D1A71D9E796801EE9972872D0A83AC68D288273F7F5FCC787614D3EA9EFBFBE3C2D9142C5DF42708349422224370EFF4012CE285DAA247EFB655EAB31CD08B67DDEDB097EE2740FFB4C7E516344135A938228857A2B2B1F0FC3CEEAAB3BF191A0BD97CEC7387F7E88A0CF70E7D950DB6F3787867CAB4017A5C225ACA00F4A449931C5BD004E8679F7D5656BDEE7BEB0FB7039A20439608B712A962E4F37CFFB5A568531C6D40801E36AE2F7B00C822E10F9DAC9B7041260EE8C97711A0EB3B2CB14867C02373AA168DE0B0F06ACC705BD78731F5B121CCAAAC6AE216F4DB0FF59505E8991FAFAF32A0AB5AC7B2CEAB4C1C7459EE266E5D3B53270EE82F9EBDCB613104E80F57EE7539A0798865E36671B63AF4BCB13D8B82A96CAAAD807E66ECF5B2007DEFBDF7D62C40D36729019A4299468CEF671B88224093EF930F4CD15B8F06CECA02F4AAEF37B24F54F209F2B0B0CA761C47F94B00DD5E9E05AD35E091B9351FD0F4703AAB6909A06F466488839984B94598F9F1BF350ED0D457A571D2D49F125A356031E8CEA4CA009A5C1C0BDD0468BA07693F900E60D331FAD2223F3D256968287DD11C3D74D6F6770234B9CDE86BA447EF76CC0547892CE8D53BE661C5376BD9EFD263F405A2D71BD8DFA59A96F5DC1337C87DB17FF729C604AA0B31837FFDF4E9DB116F3CFF95CB2DE8A7C75EEFD0C541617693274F760CE8CD9B37CBB6A0A7BCBDDAAD163401E0ECA9CBE8757307BCF3F237F86DCB07AC21E402FA9BCF56B306211FAB8FAFB7D371A7E53D4C1CD0F7DE49809661416B0D9831AF6AE162CE3CD09E782E07F45B0F12A01DFBA09FFDC43300BD6DE32190A52837D1E4A0DC9C02963D20D00F9D7BB4927B6AB9F938A017CD74BCDCE8FEFF52AB0DD0524389A25FB41A1D9B364F69FBA6C378E695096C22D0D9FF92D0B899756213BDAC6EE93C1D770CBC9EB991C828EBD3AF23DAB46FCA004DF1E76495EFDD71823DFF335F9BC0DC6B143EFADA9C075859BFAED8CCC652522E67D89EFBA2221D2E9EBDC25C74F4E2D8B1E908068DBA8131A16B621B3C39752E1B68A7AFC0437B4F83267CD1CC5257BA389E1ED34396052D1BD03367CE94D579EE7F678DDB01CDDFCED2CF1F29A0C9274B6FCB75FB3FBACA829EF5F04216DF2B9D7127EBC62A9989037A52FFEB6403FAD1F9558B46A864D53C3E3B07F49B0FDC240BD0B33EDDE01116B42708CB01FDF933251124E5D58B00FDD1CFFBDCE2E2E0CF28BFB614D0347EE4E7EF638B6AE1CF31195FF6E70DBEF1297CB8E419D46F14CDBE9CC9974DE0264053E44BE3E671A081EAB96F2CC3CDB7776183D78F3D3F061DBA24B0B5547EF8FA1F982D16DC31A827222283995126AD0B019A5E8E8347DDC88ED158D6E3F77D80FFCD7B88C5B0A72667E2F12973F0E9F2E75C0AE8A74677770868B2A0A74C99E2D882DEB46913E4027AEABB7FBA0DD06471905834238B3E9FA8610BF28BD8E83901FAC9FBE7C2C7570D8D468F795F3EC91AC9DEC5A129D2E189297370FE4CB25B17B69102BA673BC70BF6D35A1C8F2DA8FA609727C0C15575E0807E63EA8DB200FDDC671B05A08BC5E780FEECE93B1C360701FAE355FBAB1DD054B1579F5984ED1B0FB13A92AB912C54724B7C3AE767AC5EB9051F7EF30C9AB5A86F8BE7A77CF680960E12F2630468E9809E743D95E9F7BCCDAC6ADABDA8459B866C5C8A002D758310A09F7B6461A9312B770C123E398A00ED78C1FEFBEFBF5F1EA09F79E619870D4E191E78EF2FB7015A0A615E99827C0D1BCDB5777194F5E6B6BF81F2062064DDA8834C25806E87C4B68E01ADD1193D0AD0B48A9B5E6760964E75A71240DF8008073BAA64E669F0DC679BAA0DD0641048E3995DA90DC55693B5C72393AA523607F4A74FDDEEF0F403A7D3AA0DD004C64F3E5889773E7EA41468A992653D877C0C497ACC1ED07FEE9ACFAC5FD26DDE9BCB59E40B8FCFA7095B46A309BFADD884ECAC7CFC779C9641B07E39DB5BD0F6809E396D013EF8FC31F8FAF93057CC03A3DF642F0C57BA389E1CD50D2D1A540C680AB3930DE8A79FB6861E394A0FBEFFB75B004DE172BF7CBF914D9290CE50A34F9D4F96CD6230910E12960768EA28B9D956BF1F9537FBFDA98E6EA94AC739A027DE41802E19CD2EAF3002F4E31F961F8D409F6B278F5EB8EA749AE8E0EC023B65D549CE92A2144E458996E67465E280FEDFFD7D6401FAF9CF373B05687A60AF2465DA6E81D6C7E08351F6F745911A3FFCF3161B50A290380A97A39996AE986462BF7A5E5534E580FEE4C9DB1C9E7E9000FDCB01B758D01466278D9D973E6B149AE9A5F242A32631AC8E14D14216B4343C8FE7AF08D0348393BEA429AC94C2179FFBDFBD6C708F7E28D69F0661972E5AC3BEB8932EA6A349421C0B67A4D0492ABF2C0B9A9EB3E9E3DF61FE6A0AA124A690CFFCA7F5EFB814D04F8C244057FCDC10A0A74E9DEAD882DEB87123E402FAA10FFE710BA073B2F3F1D1BB3FA25BCF36B8F5EE1EB6CE478D1B121A88BB87F7C6A963174B1DA34C74DEEF3F6E61B1A7947EFC761DCB47C97E9949873DBA121938A027DCDE5636A09F5858FE6017F9C2BEF8F05756035A458DD6B8A0CE467E33BE825A25AAE730AB1C4097E5337458B08C0C1CD0AF4FE92D0BD02F2CDAE214A0E933F7E09E53A8176B9D3840FD69FA33656F19458026838056AE1B30BC0F830B4513B9624CC39580FEF8895B1D2A4D80FEE4D7832E07F4AEAD47B1F68F5DA5AE6FFFAC499F43AEB7F43C9A424F3E609AD0C3DB8216986AD834062DDB3462BA4F7B7A386302A55BEEEA6E1BF07FFFD5A56C012A4AD7756ECEDA89D2A205BF202DC5BAA175C326318C0904E0E8D87056264F3C469D7EA7F564766D3BC662DCC9A27636F138E8C747749505E8071E78401EA09F7AEA2959759B3667AD5B002DEBE21E94C906E8DBDAE07A9916F4931FC91BECB28FA1CD4CCFC52F3F6CB4DD3DCD0EA45956146E44FFA6639DBAB564032CF610A0CE48D623F9FF78D817851AD9039A9F4717A1E3741E9FAC41D6E688F1B7300B837C783CF489F2F2BAD0BF098494DAB66FCA46E5CB4B1CD0AFDDD74B16A05FFC62ABD3802E2FC48D5C67FB779F6455A5A9DB836F78128B57BEC4264591AB833468DBBE09C2A3426CE162A4DDE6F5076CB7C7A77C93654779E918856F11D4794818ADDB617FAC2ADD995BD01F3D6E5D55B0A274F04C3A3E7503A01D5DB72E1FE7807E6C4417B4A8EFD8827EF0C10705A0DDD16138A0C7DFD64696054D83844F7D2C6FB04B0A68F291CD7EEA73A45FC9C6B07BFAB25B2178D034E321373D8D81236E004DDAA185E709C434B59816463A7EF83CB3BCC982F874EECFB8636022FBAC238BE4E63BBA62E0883E367F1E8519D1E02A9D4729F97206060CEB8D4FE6AC64BFD3570D7DCED267FE0B8F7D8C944B1957D585CAEDD8AD05CB4F1318DAB4B72E5F5A56B2017A722FD0EEDE15A5CC5C0D5E5CEC1E40D3A0F49CFF2D6383CD34A87478DF69F629FDC682E9EC339A2C673ADEBD671B6685D18C437A71D1025364155248187DF5B4EFDC1C4FBC388EADDB4DED41D65BFBCE09AC2C5AB294DC547C6D6EFB78E1CAF6CD4A01FA741A3EFDED90CB2DE8CAD6B92EE5B7017A78175916B42C406FD8B001722DE8E973D7090B5AB216C7F8DB5AE3FA368E7DD03493F0E98FE50D76D9AF84F6C0E837F0DE678F21AEBE756D824726BECBDC371307CDC6A2152F3020D0834FEB418C9C782B03299FF54680FEF7AFBD78ECB931080E0D002DD04FEB4A48D79126F74A504880CDCFCA0770CA0B8BFA68E9B357D565E4ADB3644FCDE5807E75724F5916F44B8BB7396D41FFB96A1B028A1733E25B7DD157C3B18367F1E093C398B57CE6D465B628120734696CEFE2208B9BD6D97E7AF67836D59E26634C19F13AF361523BCD59F4B86D09526A272A4B3AF8E42A402F7CCCF14C4EB2A03F1380AED6F70307F4A3C33BCBB2A01F7AE821C7163401FAC9279F9475230FCF5B2F002D01F43DB712A01DEF2842807EE61379835DF680BEBBE763A506A9C8DA5DF6E7FF3079E8ABB65042FB075F0A68FBA541ED17FAA786A7B5260E17EF2012131FC966699605E81BDA4E454060C9AA6CBC2E6CD6E6ADCF22F1C6F678E99D2915F6250EE857EE4D9405E897BFDCEE34A0695D12AA1B250ECCB27CC2A48D2340DB6FA3C50716EDF779A401A9F1035F8682C646D6BDCDAEED2A407FF8A8F56BAAA24480FEFCF7C3C2827624940B8FDB003DAC131264B838A64D9BE618D0FFFEFB2F9E78E20959D59CB1608300B404D0E36E69851EADADA3D515258DDE88999FCA1BECB2073459753470651F12275D1BA22240D392A28FCE1A0DB5B70A85051A0CEF37B394056DEFF3AEC8821ED66F26BEFDEDD572C3F3E42C45CA013D7BD2F5080FAA7809CEAC7C2D667FB5C3694097E583E6CB864E796410546A158BB9A7A8024780FE75C5263CFBFA24162E47101E7AF3332C4AA1BC8D78ED978CE56B7A3BEA33651DE72E8EF98FDCE4F0F4C36733F0F91F4704A01D2AE5BA0C1CD033867644F378EBEA85E5A58282024C9F3E5D1EA01F7FFC7159B57CF4C38D02D0A500DD12DD5BC903F4B39FC9F3A54A814900A04F685AAAF29199236D6D447EDE817D9E90654193CFF4DE690398AFF4E907E723BE41149B8DC5634A69F49BA6DFDAC2A29EFFCA664167A466B3C819BA1E01FE9E012F213C22F8AABAD0C4204AA78E5F446E4E21C64E2E3F4E9703FAE5893D6401FA95AF773A0D6836D5BA78F7715AFA9366A8D13E84EFCEFE0663EFBB831DFBE0B5EFD804277B40D38067C3C6F5D8A0DF8923E7F1FCA31F23B14F3B0C1A75235E7EF233B69428C5D1DA039A5665A45DC5695DE91FBF5987573E78C06516F4BC876F74F8BC12A017AD3E2A00ED5029D765E0807E64480759807EF8E1871D037AFDFAF5900BE8C7166E128096007A6C3F02743D872D4C71D0B316C9F3A5528812ADDBD034C13A018606ED687ABB343DF3CA782C78FB079B3B8116A7090B0F66DB6151A2995CE46AE0162DED9F476B1A50A20D66A9CC75AB77B1B5A0297D3E6F159B8545897CDD8F3C3B8AAD9D4031A294E87A6111C1A0BDF7688D14FBBAF0BFD1E0202FB33C5138A05F9AD05D16A05F5DB2CB2940F32552797DC22282D8DA1094A4C7482F02368567EDDB7982ADD5406D21D58DCEA1DFE9EF3C7197CEA2F9AB986E3C714DE9CB87F290AFFF8F9FB7DAB62D73D869CAC8C02DE8B9D36F7078FAE17399F84200DAA14EAECCC001FDF0600274C98E3B655D832CE8471E79441EA01F7BEC3159F57CFCA3CD02D012408FE9DB4236A09FFBC2395FAAAC06B2CB24C7E55095729D398703FAC5F1DD6401FAB56F763B056867EAEACA735D19073D679A35F6B7A244805EBCE698B0A01D09E5C2E31CD0D307B59705E81933663806F4BA75EB2017D04F7CBC45005A02E8D13727C806F4F38B9DF3A556A51F7932A05FB8A7AB2C40BFFEED1E01E8E2C6E716F4070FF576D81D08D05FFE795C00DAA152AECBC0013D6DD075681E57B1054D330989BB6BD7AE45646424D46A3514B4771A0085C964B25086EFBFFF1E04E8471F7D54562D9FFC64AB00B41DA0BBB574BCB335B9385EF8D2395FAAAC06B2CB44332D0BF2346CB5304F49DC827E7E5C175980FEDFD2BDB502D034E188260C39B3951307F4FB0F5A3700AE281D2140FF754200DA91502E3CCE01FDD0C076B2004DAE658780A60C7201FDD4A7DBE0A50482839CDFBFCB85BA547B513ABD05451A0B46DDD41C7201FDE257BBE0AD0602FCEBB676451A33747AE0B9B19D6501FA8DEFF609DD8A7B787E81194613F0DE033D1DF67902F4577F9F84BF9F023EDE56CB4C24F72AA0D15AA0D559F0D080B66826C382A6E83959802667B59CF4F9EAE3B8946E5D8CA8AE275FB51706F76A82368D1C2F26A4379AB168F5715CC92EAAEBB2B1FB0FF055B34E1CEC6FDD73B2BC54A03130C8A4E55837AE150908F6F7C653233A3894E2426A017EDA721639053A87794506D729E0EFA3C23DFD5AA07E5440C57DBBA080CD3F7108E87FFEF907E4AC1649282014100A0805AA47017231D30C6E5980966B41574FD5C55584024201A140ED5680C2EC64039A02A645120A080584024281EA5180004DCB3C3BB4A0FFFEFB6F0840574FA388AB0805840242015280004D3B59C90234CD09AF6DC962014C6633BB2D15859E882414100A08053C44010234ED05EB10D07FFDF5175BB4A3B6A5BC223DD6ECBE8CD8707FF46A13CDD6E51549282014A85E05B47A13FE3D988C2317722ABC70937A81B8B9631C22829CDFD9A47AEFB06A5723403FFBECB3E5039A32FCF8E38FA03549F57AEB1632B52529BD5468D5EF3E04D76B06A3AE0817F7AD46FA4C14CCF10000200049444154993DB058AC16B5484201A140F528E0A5F645E36E0311D5AC6B8517CC493E89F3BB7F85362FBD7A2AE60157E9D2A50B7EFBED374444445C3D93B0A8A80857AE5CC1E5CB97919B9B0BA3D1E8015576AE0A168B0539857AACDE978E941C03D4DEFE0CCADE0A3D125B84A06D832078ABBD9CBB48359D7DF6EC59346DDAB49AAE563B2F939797C7FA757878C53B2C7BFADD67656541A552213838D8D3AB7A55FDB40613FE3D928993A96604453580B76F60A93C26830E7919971017A0C7CDED221011E45DE3EEB1B215A629DD7E7E7EA857AF1E1A346880D0D050D6BEB6A9DE66B3D9A2D3E9909393036A7C82B5C964AAEC753C2A3FC139293D0FBFEFB880139772E01B148EC0F03818F51A146426C3D7CB885B3BC723B16D7CB5429A560B94BEFC9A356B06FA71946EB9E516F6F9E3EA643018B067CF1E242626BABA688F2BEF8F3FFE404A4A0ABA76EDCA340F0A0AF2B83ACAA9D0A2458B101B1B8BBBEEBA4B4E768FCA43CB1CFCBCE50CF69DCBAF10D04D239418D2BB19EA85F97B54FDDD55191F1F1F84848430EB392020004AA5B234A009C8E4DA2050D3434B80ABA989EA7EE67206BE5F7B08074E5D81CA2F148111F150AAD4CC82D615E4A030FB0AFCD5660CEFDB1677F66A536D03872D5AB4C0F8F1E36DD2D29BF3EEBBEF46AB56D6A541CB4B74DEA953A7D8E173E7CE21232303DDBA7573BA89C8AA1C3264085B83A536A7A4A424B6D60C7D467EF9E5972CA4A96DDBB615DE323D0B6BD6ACC1E0C1833D4A9AF7DE7B8F595AA3468DC292254B30618275B9D48A12F519D2A0776FC70B2B392ACB99E3851A3D16FDBA1B9B0FA75408E8B6F50370DFC06EA81F5DF12243CED4C553CE254B9980ECEDED0D5F5F5F663DD3EF3C29C882A65F086C66B3B9C6C3F97C722616ADDA8EDD472E42E11BC22C6782334F0CD285B9CC920EF00126DDDD03836E6A0F7535B83BA2A2A2909E5EE2577BEDB5D7D0A85123870F99F43C727710A0BB77EFEE741FA3AF26B2CEC98AAECD69E3C68D0C665F7CF105860F1F8E175F7C111D3A543C459AB4A1BCEEF87271466B699F910BE85F7EF9059B366DC2FBEFBFEFCCA59D3E37BF488705CB3760ED9E0B1502BA6393503C32FA46348AADD9EEA8CA08C6AD660236776FD0F90A4BB1B95C93AD662EC4C5942C2CFC6113761E3E0F957F38FCC3EAC14B75B51F8B20ADD714203FED2282FDBD30F2B6CE18DBBF1BD42AF7FAA4C3C2C2909D9D6D6BB7575E79058D1B37C6C48913D9DF6EBEF966DBB1499326D9FE2E3D6FCB962D3873E68CED98F43CB290E801A644AB6351E84E4C4C0C4E9F3E8DAFBFFEDA768C5F842044D7DCBF7F7F997D495A1F8A8F1F366C98AD9ECB962DC3983163D8EFD263F6F7C10BE6F9695B359E162E5CC840C92DBBF2AE575E999F7FFE399A376F5E4A37FBBAD0D8CAAC59B3D82879CB962DD917C3CB2FBF8C8E1D3BB27197B7DF7E1B77DC7107DE7AEB2D562D5E669F3E7D70E4C811964FDA1603060C6071AB94E83CD298D2FDF7DF8F3973E6808E539D08EE543EFDFCF9E79F6C0088121D979EC7B528AFEDEDDB972C2CDE67487FD295A79F7EFA091F7EF8A1ED77D29ADA9EEE99DA9AEA4575A47BB2D7D45EB7323B84937F2C28D261EED2F5F87BF7B90A01DDA969181E1BD7B74E019AA49582994B6D03B493DA5FF3D3D3B3F3F1C6177F61EFB18B5007109C63A0F42A5957D5BE82F442A2A88E9C943308095063CC1D5D31EAF62EF056ABDC762F3400400F0A4FB367CF660F1B01A07DFBF6F8F5D75F6DC7BEFAEA2BB46BD78E3DE8D2F356AD5A8503070E80CEA54470FBF6DB6FD9BF09DE645DD3DAB237DD7413A80C2A9FE7A773A589EA42F9E8B87DA2F36813619EE8C1A7BA5C7FFDF5AC23F5E8D103CB972F6787A5C7ECCF7BF5D557D93993274F66A3D3524380D793DC08655DEFB6DB6E03FD945726E946EE1FFB7AF2F3A86EE7CF9F67FAF23C742DD28E2045C7C8BD44C709E094A64C9982952B57B26353A74E65F748FAD3CF9D77DE8977DE79078181D6C12D02AF56AB657A5379348643962A7DAED2A42FFA3B819F804CAE2C4ABFFFFE7BA9F3E86F15B5BD7DFB1248E7CE9DCBEA4CBA503D29D1F5EC279A51DB926B8CFAC18E1D3BF0D24B2FB117367D4A57D4BEEE7A00F20BB5950274E3B8087755A5C6945B2B00AD3718F1D8BB2BB0FFC4E552C2FB06472224BAD1558DA1C9CF4241C625984D25D12AC101BE983CB82786F5EB08959B2C697AC8294A8627B2E438682B82774580963EA4654196E05B1E842B02B47D59041B821B954580B6076D45C7E81C3A5ED679FC5859D793739EA332EDF5B107B414DE540702AD14E652F8F363D41E94087C04480E7CCA5BD631CA2B6D43E979F6C7E877E98BDBBEFE151DB3D7906B432F66AA1B819DA78ADAD05DF41280AEBCB2351ED006A3096F2EFE0BFB4F5CB2DDBD4E6F445EA19659D21501DACF5B89A08092DDA4C382FC316DD40DE8DCAA4129477DE5652DFB0C7B084B73791AA0093C04489EC83A240BDF11A02BB2842B826959D7231FAB23EB9ACA243FBE347DF6D967CCF2A6E46A40930ED2411C7A71710BDA194073B0F3FBA0C140FA62910B688ABEFAE8A38F4AB9382E5CB8C05EA4E501DA5E37FA5AA0AF1D772501E8CA2B5BE3015DD62D6F3F74167397FE8BB4426585801E7B47674C1FE57857E4CACB7A6D004D616464A1F3A810FA44A741C0EDDBB733DFA37DAAC88296C2947CDE04215AB3D611A009066421F274DF7DF731BF2BA5B2CAA4E3F6D635BF1E3F26B74CFBFBA3D03A1A202360F3E44A0B5A7ABD8AAC6BCA57190B5A5AAE14D0D4BE34B6402E137B17873D84C9DD71FBEDB75708E8EA1E771280AE3C4904A03D04D0349045C1EA3C113CC9E749D11A15B938C8C7CB272D9015D5B97367F600F35491D54ED7A070330A3B9326F21793BF92E04089C2F17EFEF967067947802690F3F3789904688A3D961EE365929B87A029F7584565DA1F2BEBDEE5029A62536910977CB66455D2CFBBEFBE0B2F2FAF5216343FE60CA0EDDB9EEE83BE00DAB46903FBF6A5AF98071F7CF02A401F3E7C182B56ACB04DC4A1496714B54110961E23ABBC7EFDFAA5F4E6BAF16395C788BC3304A0E5E924CD25005D8D80FEF8E38FD974FAF292D447C81F7CCA2B3D8FAC4B0AD5937E8AF2F30882DC5A9503688AF5A5B2ED13019AA0CFCBEDD4A913CB42E5D3C34D7F976E2E4C616CFC5859804E4B4B63EBDDD22C3EFB32A93C3E59A7BC63E59549EBC6C4C7C797F2AD523D49031AE82398D25642D244D114A41D852ED24B822C4D02134F4B972E65BF13A00972B404827D5B906E3CF163D2F3E8D8B163C758F9BC9DA46D687F8CF24BDB5E0A68E931D289EA4D6D43F05EBC78311B7CE589A271A82D28D1DFE9386F277E4C0A61FB6B0A40571EA0EE3E4300BA1A01EDEEC6B42F9F5C1C83060DAAD65967F67E66AA1359AD04037BCB5AAE1EE595C907E7CA2AC7DEA2957B2D91CF7D0A080BBAF2DA0A40D762405714E151F9AE22EF0CFBC13E3AEBF5D75FC7E8D1A3D92CA9AAA4F2CA1C3972240B692B2B25272733F7847440AF2AD716E7B84E0101E8CA6B29005D8B015DF9EE20CE100AB84F0101E8CA6B2B002D005DF95E23CE100A3850805690A09983455A1DF8D23E851A1DBEF8653BB61CBA5CE14CC236F583D89C84FAD1D678734A34812C34C8AFCEADE52E002D002D60231470B9021A9D01BF6D3C84EFD6EC416A665EA9F2553EFE15025A5F5832998B4EF4F351E3F6C4D6B87F586F848704B8BCAE9E5CA000B400B427F74F51B71AAC8046ABC7AF1B0F63C96F3B909557C4965EF0F60B8297B70F5B0258A52E992446B769361940B37C690906A34EC39607A62DEA06DE781DEE1BD2ABCEC1993411801680AEC1081055F77405B43A03D66C3D8A4F566C46A1DE8280B05806E7B2160662F762B140AF2D4061560A60D4606CFFAE187D47578404FA79FAADBAA57E02D002D0A53AD60B2FBCC05671E3891645A28914220905AAAA804E6FC0BFBB4FB1D9BD053A335B02D82730EC6A485B2C30E88A509099C4E03CE68E2EB8E7AE1E08F4AF1B7B1396A5AF00B40074A97E413305690BF8B8B838F6F77DFBF6213333F3AAD986557D58AFC579B4DE35CDC0A3597972122D35BA79F3665BD64F3EF984E93170E04039A78B3C6528406BE66CD8730AEF2F59C72C6982B477406809A46975498316F9E9976C701E795B973AE9D690CA27002D007D15A0F932A574A0AC85766A1A81681123BA27E91A2115DD83FD14715A5294EF7A51D3EEDD93EA4BAB4E12A4DFFB7A1D8A0C1604473580DA2F9841DA6CD423E7CA39580C1A8CBAAD33C6DDD59D456D94EB0AF1A41B73635D04A005A02B05689AFE2CDD3A89A607D3BA1D34FD98AF64C757C12BEF184D7FA6058CC8A2A5A9D43CD17AD634F59BA648DB1FA3C92A044A822C5F5C9FCE23F8F2EBD2BAD4F46F5E26ADBD4CB0A57D086991FDC8C848765D5AE7E2E2C58BB8E1861B6CD7A6C587E8CB81EA4CEB3C376CD8904DD3A615DEA44B7CD209E402E2EB3BD3EFB496344DADA64933A4034D33A775A5F9312A9BD66016092048FFB1F90816AFDA8EEC023D82A21BB2C1C29C2B67A18601FD7BB5C1D4E17DEAACCFD9BE8FD46A405FC9352120AC6401227EF3FAA23C14E5A6635CFF2ED5BA9A5D4D784009AEB4180FCDC2A374E2C409B6D12D2D144FC97E76225FCF81AF97215D6E54EE31AE0B2F5B7A9E54B3B22C613E0D9C8ED16C45BE79009DC72DE1B2CE23C012C079E2D3C6695A7A454BBF4ACBE5E71280F992A3345B927EA7CD5D29D1BFE947BA746B4DE807EEACA334042F334F0B28550CCE753594AE22AD6B35A0690BAC8AD23D77751780B6138840429626ED1AC2D73E96EEC44210E59B0CD0A9B4D810ADB8C701CD77F8A063F680B63FB66BD72EDBBACD949FCAA53C54261D236B9A438EFE4FA0A5414C6E9DD2DFEEBDF75EB6625B5910AE08D074AED4E541F748207516D0F67017802EFB09E42178DFADD98DACDCC23A1D4A57E7007D29351B3B0E9D436E81A64240B74F8847F776D6253545B22A20DD2A8BF6D3A30132FAD4E74B98F22DBAA47AD131CAE3C8BAB60734B912A4ABF211DCF8EA6B748CB669E289E04D10E63BBB48AFCF8FD9FB992B0234B949C865C293B46C672C680168F94F9246A7C71F9B8FE2F2956C4C1C783DC282FDE59F5C4772D64A0BBA8EB49D5B6E530A68BA80FD20A1A32DB66815396E713BB2A0A97CE9B2A5E5DD90D48D51DE605F652D682948D7AF5F8F69D3A631DFB6B0A0DDD2ADCA2D94763FA2088FBA1C4A57E72CE8EAED62B5EB6AF680A61D5A3EFDF453B6EEF2B871E3D83AC763C78E2D75D3B4E03F1D237873570165A0C1383A466B18DB839DD6B4A605F0C99DC11385B2AD5EBD1AB4B6321DE389A04CE0A7813EFA37F7EFF2E3B4EF624580969E479B0ED00EDAB488FDF8F1E3591134E8497E76FA122040F36334B848D7B21F24DCB66D1B033A4FE472A1DD5FFCFCFCAEF25F0B1747ED7A3EAAFB6E84055DDD8A7BF8F50866FEFEFEA596E9E40BD4D322F694A43B93D3EF04263AC621CC8FD3DFE818258ACCE03BBF7009341A0DA48BDF53281BE5A1BFD1319EA4FBF5E9F57AD0CE31D244C709B0748CEACE13BD5C424242D8AFFCBC808000B6BBB8F43E28FA82AE4D0BFC4B8FD1801FF9E2EDC3ECC8E72DDDFC97AEC9973D955E93AE4175A563555D6AD5C3BB8BA89E9B15B001BABAF72773F37D89E2AF81024D9A34C1B973E7AEC195C5258502355F81B262BE15665A171080B1A00085972EC16234D4FC3B1577704D141833660C962D5B764DAE2D2E2A14A8B90A28A00E09464043EBEEF4525033409BCD6664EEDD834BDF2D857F5454CDBD4F5173A18050402850C314B098CDD0E9F468F7F26CE60ABB0AD0E49FBBB26533F4070F2261E4A81A767BA2BA4201A18050A0E62A60282AC2DEB91FA0EDDBEFDAC67F38A4152693C9420319C99B364271E23812460840D7DCA61635170A08056A9A0204E8DD73DE478BD7DF6083DA522B9A019A46EE2F6FF817EAFF4E2161F8C89A767FA2BE4201A18050A0C62A60D01461D7DC0FD06CF66B080F0F679144A52CE8FCFC7C0668EFFFFE43C2F01135F64645C585024201A1404D53802CE85DF3E6A0C9CBAFB065162A00F429240C1D5ED3EE4FD457282014100AD458050C1A0D76CD9F2B03D0A708D0C36AEC8D8A8A0B05840242819AA60003F4827972007D12094304A06B5A038BFA0A05840235570106E80FE7CB00F4C91302D035B79D45CD850242811AA8001B245CF8A14C400F1E52036F515459282014100AD44C059805FDD14219803E71020902D035B39545AD850242811AA90003F4C7B2007D1C0983E459D05F6C3E89E5BBCED648416A4BA5BB3589C2CCFEED11E2E75DE55BCA2CD062E1FAE3D8FCDF952A97214E745E01959712A3BB37C5C49E09552EEC485236E6AF3D8A7319F9552E439CE8BC0271A101987A634BF46A7EF5767B6595CE00FDC947322CE8E3C791307090AC1A26BEF507140AC0C75B212BBFC8E45A050C060B4C6660E5437D111B625DD2B32AE9545A1E262EDE0C2F2F40AD126D59150D5D718E566741427430964CEE53E5E296EF3987796B8FC15B0D2895A22DAB2CA41327D2AAA03A3D705FEF044CE9DD42564906AD16BB3EFD580EA08F2161804C40BFBD1A71D15E78FCBE60599510995CABC0F7BF1762CF613D563E78B3F380FE720B7A77F5C1A05BC59643AE6D25F9A53DFD663612A283B0E45E2701BDEE381E1C1B88668DAC6B5E8B54BD0A24A51A3177713EEEEB458096F73564D06AB0EBB34F6500FAD85124DC3D50D61D25BEFBA700B42CA5DC93C906E8A9373A09E87C4CFC7AAB00B47B9A4976A936404FEC25FB1CFB8CCBF79EC7BCF52704A0ABACA0F327DA00DDB339A6F46A2EAB4066412FFA4C06A08F12A007C82A34F1BDBF04A06529E59E4C3640DF7F83F3805EB24D00DA3DCD24BB5406E8A8202C99D853F6395703FA02E6FD2B005D65015D706209A09B614A4FB980D660D7178BE400FA0812EE9209E8F7FF168076418356B5081BA0A7F4711ED0DF6C1780AE6A43B8E83C1BA0272456B9C4E57B2F60DE8693C282AEB282CE9F6803742201BA99AC02998B63F11772017DB7AC4213DFFF47005A9652EEC95402E8DE2E00F40E0168F73493EC52AD800EC412A7017D4A005AB6EAAECF5802E8A6F2014D511C5F2E9601E823879170974C407FB05600DAF5ED2BBB441BA0EFEBE53CA0BFDD29002D5B79F764B4017AFCF555BEC0F27D17316F830074950574C189A5009DD85456892CCCEEAB2F6500FAF02124DC7997AC4213E7AE178096A5947B32D9003D3911B1C14E84D9A5E763E2D2DD02D0EE6926D9A5DA003DAEBBEC73EC332EDF7F09F336FE272CE82A2BE8FC8936405FDF0453AE6F22AB4006E8255FCB04F41DFD65159A387F8300B42CA5DC93C906E849D72336D8B7CA173995518089DFED1180AEB282AE3991013A32104BC676AD7281CB0F5CC6BC4DA705A0ABACA0F327DA00DDA331A6F4682CAB4016C5F1CD1219803E7410097201BD60A300B42CF9DD93C906E8893D9C07F4B2BD02D0EE6926D9A55A011D8025639C04F4E63302D0B255777D461BA0BB37AA1CA0BFFD4626A06FBF4356AD133FDC24002D4B29F764B2017A4277E701BD7C5F8D0674618106BBB71EC34DB777718FD8D550AA0DD0A3AB7E0FCB0F26615E0D0674DA956C9C3F938CEEBDDA5683E2EEB9442940776F24EB22CC825EFAAD0C401F3C8004B9805EB8B9D280FEEAA3DF90975B68AB74C76E2D70C32D9D65DD84A765D269F5F8FDA72D1836AE2F766E3E82A09000B4696FF539498FB9ABDE2580EE86D820275D1CDFEF7739A0CF9CBA8C3F7EDA72D5ED07870460D23479A19C72B54B49CAC01BCF7D89055F3F5DEE29C70E9D437E6E217AF46967CB43FDD1D575915B67FB7C36408FAAFAF3C000BDE5ACCB2DE84D6BF7E1C0EE53B62ADBB7213D0737F4EB84E0D080AB6EBFA2633CF3FC379763C6ACD1D8BFEB24D6ACDA86E7DEB857B68CF66D48D7EBD1BB2DA2EA85C92EC395196D80EED610532A03E8EF96CA01F47E24DC7ABBACFA267EBCB5D2801E71CBB3A5C43F7AF02CEA378CAE91968FD168C2B9FF9290D0BA21162FFC15317111B87388751698F4982C31AB90C906E87BBA2236C8A70A25584F39955188892B0EB81CD039D9F938F75F32BBC6E7F35761E8D89B111119026F1F35DA769037BA2DF7A6E4007AF5CF5B7125391393A797CC94A5FEE7EABAC8AD7399808E08C092911DAB5A04961F4AC6BCADE75C0E6802684C7C24125A3560752BC82FC289231770FFA383D9EF67FF4B427CC368F8F85C3DBD7CD6C30B3163D628C4C647967B5F04E64EDD5B5609D0C494156BDFB2954D75A167D13FA0EA464B951B00800DD05D1B604AB786B28A6216F4F26532007D80007D9BAC42133FD95625404BC5A44FD3AF3EFA1DDD7AB5B17DD690E03C4D9A7637EE1ADA9BFDCAFF4E0FD4ECF7A7B2BFBDF3F212F6694B292A260C1F7D3B131BFEDA8BC2420DE8E1A363743DFA749A7ECFDBB8E9B62E98FE8C7553DCA71F98C7CA9934F815F6BBFDB1F36752D8DFCBBBDE57AB5EC6BB2F7FC3CE7BFBA5AFE1E5E5053F7F1FD0DF29D1315ECF85EFACC086BFF7B2BF0704FAE2AB55B3593DD352B3917E259B1DA3F30202E54763D8003DAEB39316742126FE78D0E580967622E9434A6DF1D1BB2B589B53DB3FFDCA78D6F6E5B5EFC8F1B7E0E907E7DBDA97972B6DFBF95F3F55CA82961EA3F6A7BE30F3A10530994C080CF2C7BB9FCC40E3E6719876CFDBACCF50FA61C95AAC58B2D6566D7E1EB513F52D3AC6CF93F580543213B3A023FCB164849380DE76DE2D80EED3AF138328253240D6ADD98D944BE9EC0B84F49EF4D00044C784D99E357EFBD959F9080EF167CF07D774F7D6A3ECF01F2BB7324DA97DE918B7A0E3EA47B26394F8F34B7D46FADC53BF98FDD467A0E794AC65FEFC525DE818B52F7FEE795D785F9B347836167E3B933DFBD2E7BE924D5666F65280EE6A7DA1394A0CD0DF2F9701E8FDFBE403FAD3ED4E039A2A4E6F676A78EA007DDADCCFDE7E1CE2FCD8FC37BF67D6CFE6639FB346DCBC6EBFB5F1BE5987C53FBDC8AC583A975C26FD07F7C49BCF7F8537164CBBAA4CB2A20AF2351839E116DC3BF4559C3E71C956E68C49EFE1DEE903F0DFF14BD8B2FE0056EF98C72C8591B7CE6265C6C447300B82EA49293FAF08CF3DB2907D56DB5BD0F6C7BE5CF85BA97A366FD50023C6F763F59CF5BF49CCF2EEDF6306D6EC9CEFA82D6DC76D801EDBC97940FF74A8DA004DD62E694AF74F9FB594A456106F5F3A4660A7B6A076975AC9D23E43E757748C975D96052D3D26ED33D41694DE58301DBC5F90E54D7D66FE574F2128D8F58B4AD9003DBC83EC3E609F71F9A114CCDBEE7E40D375E919A4B6E2EDC4AD647B8BD6DE8266E74C7A0F8F3C3B8A3D8794E8D9E5CFB6F4187F467FF8E7CD522F602A73F2F401ECB92FEB7AFC1867027F46F97348D7A044CF5B59FDA2CA0D20B5A0BBD4C794CA00FA87EF6502BA9F55344729F1F39D6E013435064F6461F5EEDB010468A9E56D0F76E9434A30E51096363EFDDB1ED0D2878D3714019A37309DC3DFEA04D590B040B4EFDC1CF562C35158A0950D68A9FB83E04D1D840025FDE4AE32A0C774446CA0132E8ECC224C5C79B85A015D96BF98204B89ACDD6307CFDA1E7CDE16520893DF31B641146B0BFA74B677716467E641ABD5B3F2664C7C8FF51D4780B6777F507B10A0A53ED16A01F4D0EB1C3D7AE51E5F7EE40AE66DBFE0760BBA22403F30FA0D66E90604F8319F74598026B8F397B33DA0ED7DD004D9AA02BA3C78D3F3C78D21B701BA733CA674A92FAB2D0D3A1D76ADF84106A0F7ED45825C402FDAE51640F7EE5BFA136FFCD4FE78F989CFAE39A069E0E29BCF5683069B6EBDBB3BBAF56CEB19801EDDC17940FF7CE49A027AD7D6A3F879D906D69973730AD0AA6DA30A014DF9785BDC39A427E8E5C9A14F8393BFADD88CD4942C561E7D25D5184087FB63C9D092414C594FB7241303F48E8BD714D0F4727CE7E56FD0B8592CEE1ED61B1FBEB3A2940F5AFA85C4AB2EB5A06B15A03BC7CB6A4206E81F57C80474DF7EB20A4DFC62B7D3803E75FC2236ADDD8F9B6FEF82662DEAB34F9D675F9F68F33BF38AD09B70C4845BD82711F995922FA5B1F38A0AB578F08961080D0FC2A205BFE0E09E53CC1D21D782EE7B47578C9F7A272BF3E3F77F4483C6F5988BA341A3684C7974300C7A233E9BFB333445BA52839B645DFDF0CF5BB2017DE97C2A1E9D359AD593C0B2FECF3DAEB3A047B6776E90902CE85547AF29A02B72719465414B3BA8BD8565EFFE90EBE2209FEA132F8C65835DAB966FC0A7735656BF054D801E52F510B3E54752316FA7FB014D63472BBFFB178D9AC6B028ACB20602C9A7CFBF40A583848E004DCFE153B3C7A345EB86F8FBB71D786DE617A52CE803BB4F62CEEBCBF0C25B931DBA38EE4C7C14CFCC9EC08210E8CBEC9D9796B0F3AAC582EE1487297201ADD561D7CA1F65007AEF1E24DC2C13D05FEEA912A0FBF42BB190FD03FD70C32D9D586350A246FD62C12FB86B68C99AB8770DEB8D1347CEE3AD17BE6650A32880EB8B43A5A8A19AB5AC8FD0B040FCF9EB76D6184545DA4A019ADEF8345897969285479F1B839CAC7CBCF7CAB7E875730706E8837B4FE18917C7C162B660E79623AC9EE4E2B87368EF52803EB2FF0CB31A1E787C28F47AA3ED18758C796F2C43FD46F5583D7FF9611366BE3A810DB4B8C4C531E23AE72CE8AC224CFCE5D83505F41F2BB7E0CCC9CB4C5B6A8BE87A61155AD0D2B02F8A2EA03EC52D687A80776E39CA421DAD9FE2076C16F42FDF6F6483BE6326DFCE069638BCCF9F4EC682777E804AE585F8065158B57C23B3FA1A358DAD5E1747B81F960C7202D04753316FD725B758D0BC5D48531AF0A3F11E7A462849014D2F484AFCD926BF2F85E5D1E0380FA5ABC8C54180EEDEBB1D8A0A34F8FBF79D98F0C05D8C07F485959591CBCAFAF7AFBD3640DFDEED1176BCF5754D70EBDD3D585DF84B9D8CB6D52BB7B081407A0E9B348F6306DD98FECFBBDFC5D1310E533AC5C932769905FDF34F32017D535F5985267EB5B7D280A64F59FEE0D045E21A4431CB599AF80020FF5BEBF64D1019156A1B180C090D44FB2ED69D0A8E1D3A8BCCF45CF66F1F5F6F160D909A9CC9E0479690F501DD6F1BD8931EE3FE447AA02945C786A3651B6B60F9BE9D27405602257EBD0B675370F19C75DFBEC41BAC7E427277505D2A3A46F94E1EBBC05E00AC73ABBCD0F3C6F6AC9EE427250850DAB6F110FBBBDC641B241CDECE7940FF7ADCAD80A6766A9A100F5F3F1F68353A9C3A76D1D686FC7EA5EDCEFB059DD7B0490C8BBC909E476E8CE44BE9EC541AB4B52FB3BC7E415F6C9468509ACAA4FEC8274548DB90974BA182E42A91F60BF27BABD42AB9CD243B1F1B2424400F6C23FB1CFB8CCB8F11A02FBB1CD052BDA5CF1ABFBEB47D793B4ADB903FA3D456A429FD2E7DEEF933CAF5A617A5B47DE93A74ECF0BED3AC1F911B8CF70B7E3DFEFCDAF799DDDBAC515E94384BA4CF9AFD735865F18B4F319C0DBB0000200049444154B44571748CC5948E7201ADC5AE553FCB00F49EDD48B8E96659754CFC7A7FA5012DABE06ACAE4CE019FEAB8051BA087B5456C60D5378D3D95A5C1C4DF4EB815D0D5A1474DBF0603741801BA55956F65F9B134CCDB9DE4724057B94275F0441BA03BC4604A47ABF1E528310BFA97557200BD0B0937CA04F4920302D08E9477E3711BA087B6711ED0BF9F148076635BC929DA06E801D658E3AAA4E5C7D2316F8F007455B473D539A500DD214656B1069D16BB7EFD5506A077EF44429F1B65159AB8F4708D06B4AC9BF4E04C36400F6E85D880AA6F107A2A5B8B89ABFF1380BEC66D6D05B42F96DC296FA3D1B2AABBFC4406E6ED4D1116F4356C4B1BA0AF8BC694F6F564D5C4A0D761D7EFBFCB00F42E02F40DB20A4DFCEE8800B42CA5DC93C906E8412D101BE0848B8300BDE6B400B47B9A4976A90CD0A1046879FBD8950DE84CCCDB27002D5B7437642C05E8EBACE3608E127371ACFE4306A077EE40426F79DBBE272E3F2600ED4879371EB7017A4082F316F45F6705A0DDD856728AB602DA074BEE90B78F5D99803E998979FB5385052D477037E5B101BA5D14A6B48B92751506E83FD7C800F48EED48E8655DFBC2514AFCE18400B42391DC78DC06E8BB9B21D6DF0917478E0E13FF3E2700EDC6B69253B40DD0B7C9DB85A34C409FCAC2BC036902D0720477531E1BA0DB46624ADBF21788925EDEA0D763D75F7FCA0474CF9218E48AEE2171C54901683735B29C626D80BEB3A97316748E1613FFB920002D477437E661800EF1C192DBE4EDC25136A0B331EFA000B41B9BC961D13640B789900F68B2A0FFF95B06A0B76F43825C40FF784A00DA6173B92F830DD0FD9B3809681D26AE1580765F4BC92BD906E85BE52DF25E26A0FF2340A70B0B5A9EE46EC9550AD06D22645D83B938D6FE2303D0DBB62221B1A7AC4213579E168096A5947B32D9007D7B23E701BDFE92B0A0DDD34CB24BB502DA1B4BFAC95B43B84C409FCEC1BC431902D0B255777D461BA05B87634AEB70591760805EBF4E26A07BC8DBF63D71D559016859F2BB27930DD0B73544AC7FD567B69DCAD563E2BF9705A0DDD34CB24BB501FA66792BA09509E833B998773853005AB6EAAECF680374AB304C69256F5717E683FE77BD0C406FDD8284EE3D64D53AF1D7F388085362447FD7AF8D2BAB02753CD3BF3BB43879D68895B7D4771ED01B93715D4B357A75A9FAB2A575BC399CBEFD4FBE2B4042B03796DC246F7A7099803E9B877947B230F0163F663C8954FD0A64649BF1E39A22DCD73214535A86CAAA0003F4C60D3200BD65B36C40F7FFEB1272F46659151099DCA3808F5281E57DE310E357750BFA4C9E1E0F6CBD8242A3C53D9514A5CA56A05D980F3EEF2D6FF6595985AEBA908F3947B2201E4BD992BB25A39702B8BF6528262684C82A9F017AD3461980DEBC0909DDBACB2A746D721132742659794526F728E0E7A5C0AD7101F05729AA7C817C83199B5335C83388976D954574C189D482B17E2ADC10237FDB33FBCB5E2C34625F86165AB378D9BAA049AA5C845A01D0CBB66588BC09640CD05B36CB01F4462474E956E58A891385024201A18050A0720A30406FDB2A03D09B08D05D2B57BAC82D14100A08058402555680017AFB361980DEB801099DBB54F942E244A140752960B158401FF2791919C84A4F8351AF8752A140786C2C82C2C2A152A90085025577FE54D79D88EBD4750518A077EE281FD0050505B8BC750B52BF5C0CB3D100D6F345120A5C73058A3BA2055058CCB098CD5058E81705A05440A150C26CB1300813AE554A6BE402FD9B76C0A1FC2090B3FC4AEB79F4634B02DFD7BC894505A05028E0DBA4099A3CF50C222222A056ABD9DF28294C2693A5A8A808A9A9A9B87CF93272737361341A856C42816BA7004158AF8745A301B45A78E5E6409D9509EFCC4CA87373A0309B411634C1997A2AC19828AD54ABA1B258A0A4F38B13C1D91814047D44240C1191308584C2E2E707859F2FE05BF501B96B278EB8726D528040ECE7E7877AF5EAA17EFDFA080D0D655F7F36409BCD668B4EA76360CECECE06C1DA6412D119B5A913D4847BB1984D306667C3989303537616909509A4A743919101456161097009C83E3E30F8FA41EBED0DEFCC0C98743A1428BDA08B8F4390AF1F7C755AA8345AA8B41A28B5DA52B74F70B6444402111140743D788585C12B2404AA901028BD451C784DE82BB5AD8E3E3E3E08090941585818020202A0542A4B03DA6C3643AFD783404DD6335927220905DCA500EF5FC68202685392A14949863E351586D45418333260CCCC80456FDDF49525A512E6E060988343D88F29240486C040688C4644FCBB0E3ABD1E3941C1D0F4EA8DC0C828F8984D50E7E7C3AB201FCAEC1C78E5E7C12B2F0F8AFC3C40FA75A8544215150D556424D4D1D1F08989856F5C1C7C6362A00EB6C6B0724BC65D5A8872850204646F6F6F10A8A5EE0DD6FFC882A67FB04F46F2D915FF5BC826147087024529C9283C7F1E0567CF409392027D7A3AF4599930E65A37FFB525B274C3C3618E8884392A1A0808802228088AA06078F9FA322BC370603F14EBFE8141A984AE556BF8F7BD0521A1A10CAA068381191D0672931414C0929F0FE4E742999909655626149999405151C9F5140AA80283A08E88807778387CEBD54360B3E60868D4187EB1B1F0F29617D3EA0ECD4499B55B01EAAFF4437DDADE2850588ACD196135D7EE4E70ADEECE505888FCD3FF21F7E851E41C390C436E0E4C4545301615C1623094AE5678382C71F130C5C533382B7DFDA0F4F385CA3F805918F4E3EBEBCBFE6F361991B6E833E84F9D623E65EF21C350AF5367F6A9C8014D5F845AAD967D19D20F8D961B8A8A60D66860D669A1C8CA84322505CAA42480DC2AC5060A7B48BCBCE0E51F0095BF1FBCC32310D8AC1942AF6B8F90D6ADA10E0CBA56728AEBD66205CAFA5AB301BA16DFB7B8B56A5280BFE43569A9C8DAB717D9FBF7A1E0CC19180B0B61319960B11F7CF6F1016262616EDC18A6F8FA4040A075A08F60ECE3C33EF9E887A04CFFE790A68E9C7BFA342E7DB21006F253C7C42062DA2388898B431059D90A05FB1AA4B114B2A4B9354DB02E056C72E9E9F5301A0CCCCFADBC7C09CACB17A138778E457F481301DBFAA34250CB1608EBD819611D3B22A041C3127F61A908916A125D5CA6562B20005DAB9BD73D37C7414CD0351B8D6C902EEFD449E41C3C809CC3875074F162E90B2B14B0D0E71BFD040642D1A4294CF51BC01C5D0F0A5F5F366A4DBE377B20739F1C81D98B2C5A0264B1FBE2C2CA1F91FEC7EFCC1A56F5ED87F80183101919097F7F7FF6A9C8E2A48B7F08D6F443E32B1CD6E4FE90029B8FC110D429AF3239095E17CE4371F9122C3939CCBAA6E8117B70FB444723B463478477EC8CD0B6EDD80B4649A3F05E5EB6903EE1C7764F3FAC0BA50A40D7855676F21E39902946DEA4D1C2585800437E01728F1F43CE9143C83F791246F2F14A93B7372CE4B7F5F165111396F87858E2EBC3121AC6804C3F7C60845BC8DC4A2658D3710232C1563AAA4D7529C8CEC2E90FE723FFC001C0CB0B010F3C8406ED3BB010252A530A44DBCBC40ED8046229B0B91B845BD8DCF236190C0CD0CAD4142BACC962D7E9A0A0414C72D1482C6DA58F0F825AB44448BB760869D90A3E915150F9FB434523F36AEBB66402D64E76C63A76BA00741D6B70B9B7CBAD4F02AF36231DFACC4C14255D46C1850B283C77169AA424E6B6B02502504020CC0101B0909B8106F6222381A8682809522A95CD4DC12DE5B280CCAD643E7022851AD589A09ABA67172E7DB304FA9414A07113D47BE021C4C4C4203030D0666597779FE5019BCAE5C026384BFDD7645DB30147830126AD06484B8322231DA081C6BC5C280A0AA0A01794C48543163459D734C818D8B429FCE3EBC327228241DB9BFCE464610B60CBED8E75369F00749D6DFAD237CEC165D2EBA04B4B83E6CA15145DBA88A2E414689293A0B9920203455A4806D228B2822C624B6808FBBF223C1CA0FF878543EDEDCDDC16DC4AE6BE64FA5D6A2173204BADE4F2C04575D469B5B8F0E30AA4FEF13B2C14EF3C78281ADCDC97CDC0A2807F3E122EA759A503E33C8A89FF5F0A6CEEFEE056361B70341860D4E960C9CB85252B0B168ADBCECD8532271B0AD2C9EE8B42151808DF9858F8C7C7C32F3E1EFE71F12C3AC42F2E1E5EE48B17B096D364752E8F00749D6BF2921B6680B25860282C40C1B97328387B1645172F409B9E067D5616741919304BE391C9EA8B8880393C0216FA090B83323818CAE01078050430284B812CB59009CA04633E4B4A0E90A54DC32DFABC94149CFBF20BE4EDDDC3FCD9C1D36720BE6953E6DEB08F21AD6CD396056CEEBF960E3812A0B90F9BC39BFE4FD129E6DC1C6B485F4EB635A42F3303C8CA2A6D5DD38B2B2C0C3EE164514722A0491304346CC4AC6D5FFAEA10B0AE6CD3D5DAFC02D0B5B669AFBE31E9E73D4D0EC9397A1479278E337785213F1FC6FC3C16FE56CA4AA678E47AF560AE17C306F594814150F8FBC3CBDF1F6A0A6F2B0E7DE36E0B1E69C1FDCCDC8F2C8DF3E435AB8C3F96EA4E904CDBBF0FE7177D06435A1AD0A60D6226DC6B736FD843DF99A6B587B574C091EAC181CDDD1F521F36738768B5301516C24CE184458550A6A6C22B3D0DB89202486646521DD9CB2D3010AAA060665507B76A8DE0962D11D0A00194EAD23E7567EE499C5BF3141080AE796D56A91ADB66ED151522F7C40964EFDF8FEC03FB98854C11182CF4CD7EE66854141BD033366A0C0BF99069504FAD869A42DD24A16F3C26D9DE6D611F785F1520DBDF249BEDAAD1E0D29A3F90BC74295B12C967F418D4EFD587B937E8055119F7466544B49F23207DD1F170BEF2FCD734E8C880ADD382061CD917495626BC2E5D82F2D24520230390FAF269D20245AB50644B501042DA5D87B04E9D11D6A103BC838285755D9986AB057905A06B41239602088594198D309B4CD0A6A723FBE00164EFDB8BFCFF4EB14FF0526E031EFAE6E303456C1CCC8D1AC3D4B021E01FC0DC11F63E64F2F1961769C1A12C1DDC73A5B464B1E6255DC6D9AFBF42C1BEBD40541442C64D408376ED58ECB3B3EE8DAAD6D51ED6F6C0E62E101E1D6203360D389A4C50141640917419CACB97818B17009DAE24A44F522902764093A608EFD205611D3BC13F2E8E59D74AB50A8AE255FC846BA4AAADE8B9E709407B6EDB5458331B94E9D35FA301CDD8A309218517CE23F7D851F64353A94BB92BBC54B0F878036A6F202418888D87393E9EC18E66ED1194A533F6ECDD16DC8F2C0D7DB3ADBAE5C6491A2C7AC36040FA91C338BB601E4C14F6D6AD3BEA0D1884D8C68D59EC33D5DD13922D24B138F6BAAC093357CD70A401478A27D7EBA1484F63E17C484981222F97019B85F4D94DF2A10891E096AD10DCA60D0BE9A3D996E476A2B03E451953863D411B5187CA2B20A67A575EB36B7E06455AE8737260C8C9812E3313F967CF300BB9E8C2056BA445894F814D83869F3F2C01FE405838101BCBDC168A9050781547599435B027755BD803B932BE63578845D0D31616E2D29AD5B8B26C29E0E303BFC14311DBB317A2A2A3AF8A7D76C5355D558674C20CF7A34BDD217CB091FBB0B94F9BAC6B364126ED0A14A9A9B0646640595404057D05D10A7D92681AA5B737029B37476093A6086A9E00DFA8683608A9A6A52BA9FD45AA110A9439D59B2F9674A5508BAD4959D018C552A31ED59AC5338EFDB50508CFCD42784116FC32D3A04DA655E052A0A54127C9C3AAF55221D3DB0FE9F4E31B087368280B81A3F037F8F9C14BA5663F349D9AA22E54DED615B4C8C76C3D669D1CE2A5F482822D8A4F0B87172F1E5E5DEBDB5B006F830E26A5174C5E2A982D66B65646E35FBE05CE9E4672783492FADC0ABFE6AD1010140C259B61E851AD765565AC6E7E9ADDC856232B5ECFDA0CB389A6A45B63B0E92B81A69E1BF4D675438C06EB34749A2064214B3A3B0BCAEC6CB63E76A8B610D1BA2244E98BE06B92ACDF4EF1D7E1E12C7C8F061C8D91F590191C8EECE070E4FB07C1AC28FED2F070BD3CBB355D5B3B6A8A06417EE8533F823D6F5250B3D5ECE86DBD33390BBF5FC842C7D870D75E5D94566905582C2EC5DAA6A6407FFE2C74E7CFC13B3B0321857908D2E4C35FA729B5959339300886C828E8C322A0090D439E8F1FF2BCFD51E0EBCFAC6495DA9B0DF0B1D8646F1F2B8CD5DEF02A9E92AC2C863114927568D9035CFD4F31DDBB3EE932749BD681D656F4EF3F90458EE84E1D47836F3E829A1649EAD403598937C32F3A063EF449AFB0AE0256B39275CB2EF61FDB2C4702B6894D003291CB83AD23A287516F5D3384AC6B82362DC5EAA7D3205857C47EFCF36843832CA833D3A1CCCFB3EE3A539C742A6FE4F907B11F6D781454F10DE0DDB829BC1B3606CD7C64ADECE96FB79AD5B095AEADDE64C6FEA434BCD5BB150B43950E76B31D55A8E1379E4FC5A1423346B76B52E90B88139C53C03649A4B000DA93C7A0FBEF14F417CEB2B591CD05F930D9AD636C51AB610C8B80AE5E0CF451F5D82E2134B00716FE56128F6C8DB8F02D8E4F2640ABA1F252318B53E9A58492C0267963973CA7D50F66AB82144A6746C1F62DC85EFA250B4F0B9BF6187CAEEB84CCEFBF81FEAF3F60F20F80B9FF4084F4EC83B0F00878FBFAD602C0145BD67CA9DFE2DD6208D6F4C35C224603B3AAF5E4DED2E9A1B7ADD0A7835943A17C45405121BC7273E19D7E05DEE9A950A7A5D29649259D931E7EF2550705B1979E4FB304F8346F019FE62DA18E8A622F646B1FB856EDEFDC735453CF2E3218F1FEE68378B76773361BB6D482FD04E8C2C2426C387705C70D2A01E86A6865DBC83FADB6967C19DA13475174601F0C17CEB14F598B5E675D8A536209997D7CA06BD018BAD838E8A26360F60F601690978F2F543EBEF0A14922B4146771289CD587EC0D959AD6B4A091FE92352D6C037BFC5E3DC482620B1A190CC8DDBE05053F7CCBC2D17C060C855FFF01C879F16920330386FA0DA11C320A11AD5A233028987D0DD42A0BB0B8CDB90D2C8DBFA63D16AD6B8810ACADD6359B3443A17CF47FB6A4AA0E26AD967D81C1A0876FF225F8255F86F79564280B0A4AF76E5AD889D62E2137575C3C7CAEEB08BF36EDE09BD04A58D6D5C0017E0902F47B1BF7E38D6E8DD8AE2AA5B6BC2240D3A6B1EBCF26E3A4C9072385055DD234C533ED6C0ECECA828C03963E614D14736C6271B0BA9347A1D9BF17DA83FB61CECAB05D8F3D94C52BBF59542A18C323A18B6F004DC3C6D0474431CB97ADFC563C63CF9BC05CBC14A7756A3501D93A638FBD858BA15CFCB4556397ABDAA5084034953BE7E07E687F5AC696FEB45CD7115EBD6E84F993796C453C43C72EF01E3402016929306EDD04FF9E3720B0F78D564857B67DAA56CD6B731607377787144789306017478130EB9AD6BF2E5E039B7E67BE6C8A773719A1CECC60B0F649BA0475F1D88575853E73699BD9CF0FBEED3AC0AF4B37F8B668C3B605A3303F5A6AB5CACF02FB40A299AB66902BADA6F4C9EA686C0D59D01BF7E3F5CEF5CBDE34363F3F1FFF12A0CDBE18D156B838986390A640275D8621F9125471F150C735280E5F72F4F967B57DC84F489F9E3493CC989106DDF163CC8FAA3F79AC54C81441875C1666B537CC3EBE30C4C4401B5B1FBA9838906FD91A8F6C1DD0F3F6F6818F6FB1DBC2A704C8CC6F45502E8654C94083A3BA5647F7937F0D8BC50AE8ACD3A7A0FB693954278FC1141E01D07A15470EC144BEE8DE37C18FEE75F3BF6C1D0C655434EABDFF91D59F5E237DD1F2F5299DB3B89F4997542D7687988CB49B0C59D9D68D0AB8754DFF27EBDB4481009A42F8A624C1273909EA8C3478513CB6410F2585FA49D75BA1094AF51BC2A74D3BF8B4B90EEA7A3150F8F9B3D98F647997BC142BEA6BD6BA1AD252A13F730AEA060DA18E8967D017EE148000FDC1C67D78AD737DB664EE55BB7A73409F30F962445DB7A0A9C39B4DD09E3C8EDCC51FC3989C04DFEE890899FC109B8A6B75D1493A23B76CC8A2217F714E16CC140277E922F4E7CF407FEE344CA9A940F1483B1B13527BC3E4EF0F939F3F4CC121304446431F6DF527B305EB556A2B907D3894ADAE0BA9852CB5924B8DFCD6602B922C68B2F8B25253A0FD6939BC766F8785E29B556A28755A1849AB464DE17BE6141445855637CF4DFD103E78147C8BD781AED55674792C97B8454843BEE093D57F6D80D140EB6097F65B5BDD21D615FAC898506567C23BED0AD4A92950D11E8E5A0DBC0A0BA1D0EB4A59D74A5A08AB49337893DFBA7E43A8C223A0A490CDB0705BFCB57D1B509DC87D95BDF8136837FC0375424B040D1D0DDFD66DD9649B3AD96692B62440CF910BE8E17519D034384333F00EEF47FEF225305EBCC0769056F5E98BE0C123E01B1A566A8495DC15C6B42B30A5A7C2987A0546B2B82F5F80293909661AD82B4E168582597FC6A06018E9FFA1E130444432178685F6D82B5EE18D222C4A7CC8C551172CFC4DC57E4AAD8D4C837B1EE643AEAA2D582294850123373B0B85BFAD8472D33A2825DB6259945EEC6B83606D080E81B66357F8F6BD0DE131B108A0DD588A17F477BA1E35BD003B7748C9824F46161D422E11F261EBF556DFB56D3BB06277084582786565B2A810554E1603B63A2F976DC22B8D1051F8FA41151307557C7DA81B3686574C2CBC22A3D946BC5E926DC1D8347D9D0E39BFAC8071F5AF5090BBA5452B040E1A09DFB6D7313F785D4E04E8B972007DDCE48BE175D6C5618573D1AE6D285CB502A6CB1761F6F282F6BACEF0EE773B429B25C0DF3F0096DC6C182F5D80E1FC59182F5F84293303A6AC0C9873B26DAE0B66257B7B431F1E69FD098B609116E6A0600664859F1F0B7763B3F6D8564E3ED6752E282E9962948B07F628D2823EDB4B5C173622D7D2FE6C5DEFB9202F0FB91BD741F9D76FF0A2D9749244DA6AEBC5A2B04317285BB743786C3C42C3C3E1439FDD5EE4DBAC596E1DF7376419112236FF7549FCB57D848841AF6510A7F5AF09D84A722715E4C12733033ED95950676740491BF24A1259D7F4E3151109755C7DA81A35818AC2F922A3A1D5E99075EE2CF46BD7C0F7C06E284D2678356A82C0E163E1DFA96B1D734F956E7502F4BC4D325C1C04E8617511D0DC723EB817052BBE8589A6DA9ACDC86DD711BA6E8908F5F5454056069417CEC194960A4B411ECCF9F9B0684AAF6D419FE0BAA87AD090BB22321A165F3F16FEA6A0D0265B7445692B9906F5D80F597F3CD28206F88A5D15B5CE4AAE8848346DDD6C4651413EB2F7EF8162D5F750A5A596FA12D1D48B456EF7DEEC333B242A0AA1E111F0A3CD5DC9075D3CC5D9FDD0ABA157B08F10217708A8AB9BADB1D7B65D6668B20CB9447874089F3CA38399DC1E9A22280B0BA0CEC9826FDA15F8A45D812A37A794750D6F1F288BC3F994E11150346A8A82D070E499CD50EFDD89C09347A1341AA18CAB8FA029D3E1DBA2B5DB16BBF2F4D62240CF9703E863265F0CAD6B80263853F4C0D1832858F635CC17CF5B07088382A08D89876F7616545A0D144603406B224806502C5E2AE8A3A2A1896B80C2D878188343016F6F2829F4CDB738FEB838D282BB2EAC16329FB157126D61756DD742B745659E8EE2B6D06A34C83CFB1F14CBBE82FAC2395602B9890AE2EA233BF146F8356C8CD0C828048784C22FA018CEB53D8AA3323ACACD2B05368DBD14C761B3BD268BF770249788BED87F6D28768710B8597488566B0B0B5515E4C32FE512FCAF24C33B2589C1D796A86D680B342F154CDEDE30F8F94395970B75A135EC4F41BBA64F7F12BE2DDBD4494813A03F940BE821750CD066B309FAD3A790FFF90258922E3BECDAA6804006E482468DA189AD0FB38F759121DBBA16148BCCA22D7C6D6E0B1ADCB3F9908BFDA4D5B1C890C39BF1C00CD65D5334C8A6493A5F7F0AD5B1C3CC6991DBA00932FBDE8EA0E87A088F8C42504828DBED9B74AF5571D01ED226D23544C8F5C736D3B5C560170F38DAE2AFAD96365BF0C968648B3BF9A52621E0E279F85F3A072FDA12CCC17D31483FFC147CEAA0254D805E2807D0478DBE182C13D045855A68B43A0FE94E55AB067542BFF42468BFFA1896CB763B5153589005285478411B1C0A4D7C431451F85B58048B2AA019792A6F8AB690FA90A5037BC5F1C8CC8F4C33B468D69E6BA7D5AAD52A0405FAFDBFBDF3008FA2DAE2F83F7D534880449A020A22F60E4840408AA4808A58F0292A3E8C140141A58874E9080822D828FA0011450445514A22A0204BB161C702811084501292EC6E92F79DBBDC65B26C92BBB39BD9C97BE77E5F3ED89DB97377FE77E63767CE3DE75E9F5EEDC952CACBA3398BEDFA44F4732DEA13B2CE4E934F7FDD2A847F63C591FA8D70AA5922626A26208E6EE4D8589121E94CC0A9E8D6F7F30F0460890847748CF92621A2688DDCBC7C918DE9CFA28535BD5DCA19FACE0D389E7587882CC773F388D01C2334D748C4F1A388CA3A8CC8CCBF6039FE0FA2838A11EEA1DB82292AE4FE47E1A8DF182567EF177F9E8751C70A090E465434196ACE85822B2A04E8F95B147CD0DF7B01E8F90B5663F7DE5F2B6ADBBCDB4B4A105662478FFC9FD0B8F8142CCE99114A95ACA2106CB35BB0BF3802A783C2702A380245C10485B0B3E9D261622E5EE79F73404F264C0867C5390772A5E8D0A07E2D0C7AF21EC4C645EB3EFEB17F4EE2B537D762FF1F87751FC3AF15455C6F311CB6025C6ACB46883D1FDF144522343C122111D10809A389F94344B243A0D292AFBBB6319EEC77B75F4FDB1F07FBF6DBDFB1EC9D0D3876FC5C04913F8E5BFA189423E09C42C439F993336780FA4C84F8151789BFE2624A8EB10BAB3BB8D88ED8E242C4C2817A4185681B968F8B424A4FCA46C7B321083F86D4C0A7E117232784E658A1368C7F00FBAA595C6C34BA776B83962DAF563A14017A812AA0EFBC522D5125ADEF74444706E186ABAA66880C5D5821B602D4CF3B826A79271173261FE1793658F21D08B39DCBAC729400C7118AC325E13858AD06F29BD4454854C4D9013D9A45CD99C156FA35BBF22FAA5FFEB023FB583126BF9086F8F838A50BC1D34E070E6663C2C425A8573B048DEA53E240E08B00344D689F9F87429B4DACE8425993A194DA7E16CE81FA955FED29142EAC97660E0CD44F28B3DD0D9BAC7877E5665CD3340C71D58C9A40EA9C61730ED6CE5C0211DE576043C48F99B830EF24EAA21009410E846A6E0F7B6810F2A3C2608B0E437E4C148E45554776543C0A23AAE6245879F925D8F3830D5D5313D1B54B2BA56B8400FDEA56450BFA0E45403FD1773AEAD50AC1E07F3B97E1A94AC519C85F8282FC429C3A91879339A75178E20C824F1620F474212CB93644E6D91193E780E58C1D4167AFC1E2F82814F5B809A1B5AA39012DE07CEECC8DF485AEF8280FD6EF6C98E42BA00F64E385494BD0FAE608DCD9292AE0DDE87C9DA68845070A0B9C596F1476181E118AD050E703D1489DDD051935F3048282C331DB8480DEB8D18A77DFDB8C86E9E67E00001894494441543EFF8A41E3866AAFD7FEECF052EB38163B23721C874F2274F92E716F099B3B0828B484222F260C6762C2504070AE168E92B84884D78C415C8D18C4C5452322325C844D06B2AFF5689379C481D90B4FA38B97807E4D05D0DF392CE8AA08E8BEFF0380B6DB1CC8CF2F407E5E210AF269E219FAA3D84F3B82CFD81156E84044810331A76C88CE73A0A44E2C42DA5C0A4B02A56007F6E291807EC147401F3C908D892602B4B889CF3E4045F85709101C1C24FE020D67FA6D12D0334D08E84D1BAD581940406B812616277014A3202717451B7F4648E649E4C685233736028591A1B05B425014158E104B1822C2C3106E0983253202515116444653D62C256605F661EC0BA0535313D145D1822EB03BF0BA0AA0BFF502D0FDAA38A0497CB2A2C50ACD8E22D8ED34E94C110A690E8342BBB0DE68E0ACC85E04388A10161484A8B868C4D58A4374B5489735A7A713FD5147027A828F803E70201B934D0868A911DDE8668A7891807ED1A4807ECF4480A6FB8906A04F669D405E4E2EECF4B619162CDE88222268D2AF3084478489C1B4F070E71B122D18E15C34422E1251F9EE427FDC8FF218D2822640A72A029A5C1C6F2A01DA6E4117450BBA7FBFAAEBE2D07608419ACCB44F567F89C399FFE0A1B414016CBAB808D0B6429AC7C019D369B1842326360A9648CAF80BEC1A7812D0E327F8E683260B7AF264F3B838CABA59A86F263DB70873973CEBCFFBC9EB634940CF78D17C3EE84D9BAC78DF4480A6689282021B724F9E41C1D9882FB110B18073A8B09245886AA8762A5C67975435D7863BA05308D0A9EA3EE885DB147CD0DFD82D485504F4804A06F4BB6F6DC0E2F96B111DED0C679AB3E419D4BD30017BBEFE19C3FBBF5C2A72416EA3FDD67DB00D2F4F7BF7BC7A15DD89542F2BF3181EEDD75500BB5864173AE7DFA50B8D404E6E0DBAB008CEDA550F2A3A76656C97801E37210D357D1824CC3C908D293A004DC0ECD9750C6AD4AC264E6FE088FBD1B2EDB5429B76D73C810B6AD7709D76EF4177A1437233B14D3C045347A16682736053BBAD3C9DCC06E869260474BAC9002DDD1CE44A74D00AE6414102C602CAAEF0D3B3095A5578922FED752B2DE8E4D444A428029A5C1C8B54019D72855A14C7C0FE956B4113A0A9DCF77047F1EFAD573E8E2DFB5E1780DEB2710F068EE8E1D265C023D3D16748775C755D2301E8DCD3F9E7D52BEFE63F7DEA8CB0A063AA4522A59BF3A9F7CDAE5FE0B0533C69096AC4C7A2C125755C3E50BA9608DADFEDFEADD4619B5ED550C43F1A5124A0C712A06BEA8FE2C83C988DA93A013D67F20A4C7EB9BF385DEA83E726F5120FD17B3B0EC7CA0D535C32BCFED26A5C7E7543DCDAE1060168AD253CE2C97902EE54AFBC427D4E7D2FFB7DFFAF993899E3CC44A3D764EA7BF7F2EDAE5F4BC504D7B930BEC2762AEA3B69414F9D613E0B3A7DB315AB4C6241938E72C057C651D377EEF3CA54554BB9ACEBC405E8944424AB02DAE1C0621540EFB55BA00AE8412602348925A1A007D074E313A00930543E5BBB1D5347BF853BEF6B233E47464508EB9020202FA8158B3FC391C3C7C5F61FBED92F1217464C7CB494E558D1CDEECB7609E831E37DB4A00F66635A25035ADB3F7A01AD85FEDE9D3F63D60BCBD1B8E945A85E23465864D437ED3ADFE49294FAF0E77D7F8BD8DCEC2339F8F3F7C31830F43EB4B8552D36B5ACBE91809E6246406FB2E283F70317C5519666DAE88EFF3520BB9FB30474923780B63BB0E44B0517C71EBB05C98A16F4600301BDF895B578F3E535655AD065017AD9C2F5983FE33D51AFBCE20EE85E778F47FBA49BD1332D455413EE8F43C7F058FF3B5C87496E31109FEC98233E2F9CB70675EAC5BBAC6F5FC0AB5A57027A941F003DC347407FB16137664F5C8E79FF19E6D1822E0BD0546FDEF4F7307BE1900A2D5B2DA0E74C7E0794C94A6F4DD56B563BCF2AA7F6A80FE72C7E06D562A384E5AD7D00AB6AEC693F023482C331D98480CED864C56A1302DA17BDAB5A5D09E8CE29894852B5A0ED0EBCAD0AE82445400F3100D01FBFBF15F5EA5F809D5FEEC398E9BDC52BB22717873BA0572CFE5CD4A37D474EEE25EA51D9B5FD2711FBDCEAB6EB4AF5BB27405F50ABBA184DA6927DF8385AB5BFCE94807EDE0F807E5127A0FB3E3005575C7B09C8DD90D22D11F73FD249844AB9BB38DC01FDF8BD1371CD8D978A7AF4207CA44FAAA847EE0E59BA746F5DAA9FDC01FDFDDEFD88BFC0E9DA292CA089E71DA506102B1BD0934C08E82F18D001E7B916D09DBD00F47F5400BDDB6E41D2E56A3EE8A79FAC7C1FF43F4772D0A94B0B217A932B1A887F5500FDE76F87CEABF7D3F77F62E4A0F90222D2AF2D7BD313A09F1AF900A2A29CCBD253A1412D0904FADCF6EA3434BAEC22B1EDD60ED7E39E073B20B6BAFE946B6FAF2C69418F1CE7BB8B63E614EFA338C8553179E4620C18769FF8E91736A8E5F2BF5704E8514F2DC0B0F10F8B7A752F4A404C356782CCAF3F3AE743F9FCA31D48A85DA3543FB903BA76BD78DCD8BCA94BB6C8280B2E6A58CBF599004D83BC34A776C34BEAA0EFD3DD41757C2DD2829E38DD7C3EE82F365BF1215BD0BE76B14FF525A06F4F4944E714B5280E1A245CFA95828B8300DD5911D0CF18006852CA134CDD0709E50022EDEFEE83D6AA5DD6364F80FEEDA703E7B946C8C27BAC7F57F1B0D0BA38DC7BB4BC6D3EF5BEA6B204F4737E00F42C9D80D60E126ACFCB1DD0DA814095680CF701623AB63BA057BEBD110BDF1FE57A70BBF7BDD68276D7BCBC6D15F58F04F40B2605F41A0674455D58A9DBB580BEDD0B402F5301F42EBB05B73755B3A0870EA85C0BFAE3555B8590A977B72E25280DC88D7DFAB552DF692306D2D7EF425E5EFE79F5CA83371DF3930FB6E18921DD85CF92CAA3778D455EAE333D5500E2E18EF8F3F743B8AF67475C7C693DF17A3EACEF5CD7F6071F4F466AB756220C8FEA2E5E3DB6522F0409E811E3D250C387288E4399D998AD03D0D95939220C72E838A725EC0E68EDE767C7F544F3565789AFA8DE2BD35762EC8B69E7D573388AF055C6B7F8FDE783CE70474D79A2C7244C9ADBDFF516336DCC5BD8B96D9F6B0F314878FB4DAEBEFF27FB0486F49E85FC33CE19175BB4BECAD5BFCF3EF192685FCF8C7412D0E3A799CF82DE9A6E4520009D73EC94087D3DFECF29D44C882DD54F957A1398F0E012D09D9213D14911D0850E07962B01DA664127450B7A582503DADFDA5328DDD2373E11376CAFFE5D51BD86337E57164F0381E5FD06772B9942C7EEEDD9A19445E7EF73D01E4F027AF8D834D4F0210EFAD0C16CBC34D57B1747659CDB86755F63E91B9F62E0F0FB85CBA4569D73B1D42A96B7F637B95BC9DEF66F59E727013DCE8C80DE6CC5DA55C646711CFC2B1BEF2C5A8F5EFDEF100FCF63474F8AFB8CC22169DBD123392E296F68DE14741FCAF048DA264353698A857DDFEC2F25BBDC46061485B9D25BADBC2EC865291FBE141E2B5DA0DAF04BD91ED5A37249937AE7DDF7FEBE8E25A03B7A0368BB03EF6C57707158BD00F4F02A06E8BFF61F16373F95EE0FB547D32B1BFA04E8A9A39688812E59FEFE230BDD7AB4F38B9F53E5A291801EE623A00F9B08D0F49093A5636A7397D54DDF790BE837E67E88DA756B9E5DA710C2BA6BD8A88E6BC05845634FFB48408F3529A03F3218D0145143209403F152331A079A33658548F4AA5D375E44D14C98D5474C86F4F66BEB70C5359708781384BB3FD81EAB5764B800BDEFBB3F109F108BE726F612F75397C4C178B84FAA00345D1714563969E4225C7BE3A5221B91004D6F4F140EFBD9DA1D3879C2191F4FE3481FBDBF55D42BEBBED77B1D94554F0BE88E8A1634F9A0DF55057447450B7A44150374451D411714CD1BE029E1C1535D4A035FFD4E866B53F3C42B85EBC3A822013DD40F809E63120BBA3CEDF272F3854B431BEB5C91D6ABDF4987CDE64CD3BFB871DD52C0AFA86E59DB25A0C79810D0DB365B611640D338C2DE9DBFA0FFB3F708AB973EAF7C6B83C835A090594A4EBAEC8A06221C72D1AAD1E78D3168A19FD27210868E7DD8D5F734A651BF612D91854AF378C831244A446A72797DD7C3C2DB87BADE6B425B4F02BA437222BC01F44A1540EFB459D051D107FDDCC0CAF541FB43ACFFE56348403F4B80F6C1074D16F4DC69E670715485FE92801E3DD57C3EE86DE9567C6C120BBAAC815E02B476905F05D09E069DE9812DC710C862BEA8412D3CD83B091F2C4F170964A3A7F51613FE7FBA663B766CF91E1D529AA1634AF34ABFC4B480EE90AC1EC5F1DE0E05170701BA8322A04732A02BBDB3CB6B4002FA9931BEF9A009D02F33A095FB52027A944901BDAE8A02FAB6EBFAE0E2C6CE37D04EA9CD71C77D6D5CE1979E004DAE8E0617D776F51BAD2A44EE904307FF41DEE93398396119E62F1B2E129A32FFCEC6964D7B71FDCD97E1C616972BF7B59E1D25A0DB2727C21B40BFAF02E8AFBD00F4F30C683DFDE7B73A12D04FFB01D0F318D0CAFD2201FDBC0901FD65BA1546039A9284268E58245C1904C823878EE1C509CB7073CB2BF0EAAC559830BB0F12DB5E2BC25229DEBD2C0BBA7B876158FCC118D10F1116E714A4B27802F4AEED3F62D5E6692E88BB77A0FB203E65FB6ADD1FCA1DEEE58E5A40B7F7C2825EA502E81D8516DCA668418F1914581707AD8442E174B2D0C08176D4DF4B5D3DEEEE29E142EE6844ACB38A053D78741AAAFB10C59175301BF3A7FBD7C541A174B22F643FD1EC76349B1D85D2D1E010CD52E89ED823B7D179934544AFB0142E4759829E2653D26EA32880FC3305E78DD297D7877AAE1109E81153CCE7E2D89E6EC5271F181BC52135ECF7D0541CCDCAC105756AE095FF0C135FD3140D1FAFDAE69299C261292263E7B61F5C619414F238FDD541E27B6DF82CF997DB77BE5984ADD2B1E531E5C1A81ECDAF220B0D1252DBE4E7166DAF1E23C264FB3F34557CA63059F79C0A3DFD5F511D09E8764989B84D11D0857607567FADE0E22040B75304F4D800039A468FAD5FFD284685A9D0D35926915424A2EAF6AA00E8A7FC00E8057E06F49D6D9EC6AC3787A051930B21FB893E5318160DDCDCD769840849D4CE48487D42BE49E9BB6CD1FA6A74B9A73506FF7B961885F7349F0AF92FE5B6B2E6DBA82C400F3729A03F0D10A055EFA9B2F6F36425FBFB7EF6F537AAD4D702BA9D1780FE5005D0DB0B2D68AB08E8F12600B476A4F744CE69BCB5E063116E73ED4D4DC4BC1BF44AB375F35EB18C0E8DFE535CE6B7BBCFAD44DE29B585784253ECE68EADDFBBF46F7DDBF5C2BAD35E349486FCEBD9701DAA3773C252D196AFB3A3A974BAA77DA48B63A01F00FD9A9F01FDFC53F3C572474F3CD54D845A757BA09D6B647DF9A2F57865FA7B689678A5887796912F14A7FCC7AF87D07FE8BDE27429DDBB41A33A98F2FC12D18FF49AAC8DE0A0FEA5C996562DDBEC9A44CBD3844833C6BE2DDAF6573F91055D121C8E612604F48E742BD6575140533F5DA9993296AE857B1E6A6F58D8AADEFBD0BD9E0474DBA444B4F502D06B5500FD9517809E60324093505A2B8A42712896B2E60571C2BAA6F932283599C2E32894EEC3151948BE2B110FF64EC6DC292B047C699F8DEB76E286669761C0881E6262797A2D2338D320832C54C75668C77303E6056C850F09E8017E00F4EB7E063459C9CFA4BD040A7BA242206ED8A8AEF83FB986E875935E69C94A769FEFDBFD82F734CA4FFBC8B4FBC7BA4F2817D0FE0EB592801E6A52407F5645014D092C2BDF76BA27A8D0020FF29AF1173C8D388E04741B2F01FD910AA0BF2CB4A08DA2053DB10A00FAFA669789C99124BC656A32C565EEDEF11386F59B8BB7D68C1329DB23A73C269257F67DEBF485BDF9FE683C76F77801684F596874419901D0FD7D04F49183D978C3CF80A61903972CF858A4C3CBAC407973C8B792B21664280BD0EBD76EC7DFFBB3F0F8A0BB44F201B59174674B24B7181410403F6342407F9D6EC5E75514D046C0D3883624A06F4D4A441B2F2CE875AA80BE5511D093AA00A0B53E2C4F3E4AB2E616AE1A7DDE5A77324D58029A06BADE5BBA115B36EEC5B817D344DAA95900DDCF0F807ED3CF80A6C13B5A458532F7126A55C7ED5D6F11F706E99A4B96D28629C2D7BC7CE17A8C9AFA6F11FAA49DF04A7B23490B5A6B096BB3D7B42BED787271549605FDB44901BD81016D0487CB6C430BE85BBD00F4272A80DE566841EBCBD4264B9AF25460A3383CA598BABB38FC0568EA0D8A1220B7C6D03E7330FDD581B46CA1292CE8BEA3D310E743A2CA91CC6C2CF233A0098AE44EA231026DA815C19456D4888EB1880C3FD273D2DC7EC247AC02E80792468A745E5A717DDCCCB452F5CA1A24AC2C400F9E6CBE288E9D19566C64409B02D0AD9312D13A492D5185A238D6EF5488E2D85A68412B45404F3301A02FBFFA62B11415150ADD5A307315A6CD1F203E6BA706A5CFB43EDD90C7678BC9E1EFEAD10E4FF69C26328E96AC1E839E778C1193C30F19F520260C7D037BADBF8818CB5EDD9C2E0E5AF4925627A6623640F7199D86581F009D9D998DC57E0434BD59C8370FD28B1EA4B29F526E71BA236491DB28E98016E17DF88E316255162A8BE77F849B6EB95C58E2940A2CDD54031F9D8101C3EFF7B856E59A955F883E9485E668A09570FCB91AB8F4410F3221A0AD19566C62409B02D0AD9212D14A11D036BB039FA9007A4BA105898A809E116040D3725634D22F4BC20571229E52161AF8BBF3FEB6C21D21CBD64D7BC53C00B2CC7B7BA898649E66C6A2350865916E0C19A3A9AD27B77DB7E737AC5BB50DC3263C12900B420E12A6F901D06FF911D0E492D0F6857B3F49D8926872DBF40503852B845C23CFF6712E23F640AFDB856B64CC9057316EE613E23BD94F721B7D275D20EE7D48DBA87F694C81067EFDD54F12D0034C08E85D19566C664007E47E948D4A174762522212BD00F4065540DFD244CDC5317370605D1C01ED85B3D108724DC240FC1609E8DEA37CB3A08F6666E3ED19FE4D5409841E65B5591971D02541E1E86F4240EFCEB0227D75601255CCD4E781FC2D12D02D3B27A2A52AA01D0E6C5201F4170516DCA26841CF6240BB168D0DC4052101FDD828DF7CD0E4E258CA8056EE4261410785A39F49019DC18056EECBCAD85102FA162F004D3EE874AB820F3AA3C082168A807E69F074445A827055937339F39571C2663DE6E71FEF0025AC04AAFC71D0816339C5E8E5070B7AD98C25A8151F8C06F54203753A95D66EFA67BB444291BFCA9E1F6C08098F405F13027A4F86155FACDE8CA68D42512D3AD85FA7CCC7F1428133F925D8F79B1D2D3A27E216550BDAEE40860AA0D30B2C68AEE8E2583A6D218E671DF3E2A7F3AEFE562022D2827F3DFB0862AAC7EA3E744EF631AC5EB012B9274EEB3EC6FF5BC5EA0935D0F3B9DEA63BED9FAC3F20E3838DB0E53B97F9E2121805424243D132B9356EB8AD99D20FB0391CD8A20AE8668A80B615DA50525CACF40378A7CA522008E1967011BAA6B7501FDA6D769450DC2017250582828285EE662B458E2238ECB44001F76560FB2608A161212050AB148AE2D8BA4BC1C5B1B9C0829B1401ADD230EFC30AB002AC002B50BE02345BE3972A80DE4480BE542D8A834567055801568015F05D0172716CAF08D0E9FB0F634D4E092EA95BCBF716F908AC002BC00AB0024A0A388A8A91F9D79F187FE345888F8F47585898CB6D1954545454929B9B8B1F0E1CC6C63FB270A6A000C5EC5B561296776205580156C0570508C80D6AC6A16BD3FAA859B3E6F980CECFCFC7D1A3479195958553A74E89A5D279D0C857D9B93E2BC00AB002E52B4003FC91919148484840DDBA75111B1B8BD0D0D073167471717189DD6E475E5E9E8073015BD07C4DB102AC002B6098026441C7C4C408385B2C1601671999154480266BD9E170883F726FB0F56C58DF7043AC002BF07FAC80043159CDF4476BAB6AC366F507D0FE1F8BCAA7CE0AB002AC80110A30A08D5099DB60055801564087020C681DA2711556801560058C5080016D84CADC062BC00AB0023A146040EB108DABB002AC002B6084020C682354E6365801568015D0A100035A87685C851560055801231460401BA132B7C10AB002AC800E0518D03A44E32AAC002BC00A18A10003DA0895B90D56801560057428C080D6211A576105580156C0080518D046A8CC6DB002AC002BA0430106B40ED1B80A2BC00AB0024628C0803642656E8315600558011D0A30A07588C655580156801530420106B4112A731BAC002BC00AE8508001AD4334AEC20AB002AC80110A30A08D5099DB60055801564087020C681DA2711556801560058C5080016D84CADC062BC00AB0023A146040EB108DABB002AC002B6084020C682354E6365801568015D0A100035A87685C851560055801231460401BA132B7C10AB002AC800E0518D03A44E32AAC002BC00A18A10003DA0895B90D56801560057428C080D6211A576105580156C0080518D046A8CC6DB002AC002BA0430106B40ED1B80A2BC00AB0024628C0803642656E8315600558011D0A30A07588C655580156801530420106B4112A731BAC002BC00AE8508001AD4334AEC20AB002AC80110A30A08D5099DB60055801564087020C681DA2711556801560058C5080016D84CADC062BC00AB0023A146040EB108DABB002AC002B6084020C682354E6365801568015D0A100035A87685C851560055801231460401BA132B7C10AB002AC800E0518D03A44E32AAC002BC00A18A10003DA0895B90D56801560057428C080D6211A576105580156C0080518D046A8CC6DB002AC002BA0430106B40ED1B80A2BC00AB0024628C0803642656E8315600558011D0AFC1776FEC638DDA41D8D0000000049454E44AE426082 where `app_id` = '5'; -UPDATE `fn_app` SET `thumbnail` = 0x89504E470D0A1A0A0000000D49484452000001680000012C0806000000EE2C29AF0000200049444154785EED9D079855C5F987BFA54957AA882E282088051535D244EC0876A3222A2AC1462C11A3F2370A0AA8281883062504BB066C815829828A801A4540015B0451A42ABDB848F93FBF91B3DE7B97652B7BCFCCBEF33CFBECEEBDE7CC7CF37E737E3367CECC77328C040108400002B12490114BAB300A02108000040C81A61140000210882901043AA68EC12C0840000208346D00021080404C0920D031750C664100021040A0690310800004624A00818EA963300B02108000024D1B8000042010530208744C1D8359108000041068DA0004200081981240A063EA18CC820004208040D30620000108C49400021D53C7601604200001049A360001084020A60410E8983A06B32000010820D0B4010840000231258040C7D43198050108400081A60D40000210882901043AA68EC12C0840000208346D00021080404C0920D031750C664100021040A0690310800004624A00818EA963300B02108000024D1B8000042010530208744C1D8359108000041068DA0004200081981240A063EA18CC820004208040D30620000108C49400021D53C7601604200001049A360001084020A60410E8983A06B32000010820D0B4010840000231258040C7D43198050108400081A60D40000210882901043AA68EC12C0840000208346D00021080404C0920D031750C664100021040A0690310800004624A00818EA963300B02108000024D1B8000042010530208744C1D8359108000041068DA0004200081981240A063EA18CC820004208040D30620000108C49400021D53C7601604200001049A360001084020A60410E8983A06B32000010820D0B4010840000231258040C7D43198050108400081A60D40000210882901043AA68EC12C0840000208346D00021080404C0920D031750C664100021040A0690310800004624A00818EA963300B02108000024D1B8000042010530208744C1D8359108000041068DA0004200081981240A063EA18CC820004208040D30620000108C49400021D53C7601604200001049A360001084020A60410E8983A06B32000010820D0B4010840000231258040C7D43198050108400081A60D40000210882901043AA68EC12C0840000208346D00021080404C0920D031750C6641000210C8D8B871E33630400002108040FC08646CDBB6ADD408F4EAD5ABAD4C9932F1F3021641000210D801815225D04B962CB12A55AAD010200001087841A05409F40F3FFC60D5AB57F7C23118090108400081A60D40000210882901043AA68EC12C084000024902FDD4B41FECE5E94B774AA5FF59FBDBA199D5BC24C71487976EC36808945A024902FDE0846FEDB559CB770AA3EF194DAC7DD31A5E0243A0BD741B4643A0D412608AA3D4BA9E8A43000271279024D0CFBCBFC89EFF68719E531C8737F073250423E8B83747EC83000412092409F490B716D82B3397ED94D05D6736B176FB33C5413382000420B0AB0930C5B1AB09933F0420008142124812E827A7FE602F7EBC64A759DD7966133B6ADFDD0B595C7A4F638A23BDFC291D021028188124817E78E2773666C6CE97D9F53BAB89B56DC21447C1307334042000818213608AA3E0CC3803021080408910C816E8A5ABB7D9C4CFCD14DA2EA420D1671E9E615576FB9525531C25D2A628040210282602D9023DFA13B38F977F61AD1BD6B41E2FCDB46F7B9F6815CBF91F9AF38BC56607EC854017537B211B0840A004092409F46D6FBF6DB37B75B0F7E6AF70E2DCAAC16F73CD0FCD5A6D0BD6FE6255CB97B116B52AD8B94DAA5AB709CBECE993EADAFC35BF58BDCAE5EC9C3796D898CEF56CF20F1BEDB87D2AD947CBB2AC56C5B2A688D3B52A95B1B92B3659FBFA954AB07A66087489E2A6300840A018092409F4F1076EB6BAFDC759A5F2656DD59D1D938A397FEC12CBAC5A2E49A02F1CBBD44676DC3349A05BD4AE60F7B5A965D316FF6C99D5CAD9F8051B6CE2C28DF6E3CF5BAC41B57236E2F8BAC5687EDE5921D07933E2080840209E049204FAEC96664F4DFFDE2E3D223387B50BD76DB6BA95CBDAC08F57DA21B52A58AF293FD9ECAE0DAC4AF90C27D07B552967E7BFB9C4469C50D75ABFB0D06675CDB455595B6DC2771BECED1F7EB6EE0756B36BDF596EB32F6A50A22410E812C54D611080403112C821D0C598772CB242A063E1068C8000040A41205BA0376C321BF34978AF273CEFA80C2B5FF65732ACE228440BE1140840206D0458079D36F4140C01084060E70410685A48A924F0B7BFFDCD264F9E6C071E78A0DD7CF3CDB6FBEEC51FBE60CB962D76DE79E7D9BFFFFDEF9D32D6CB8C7BF6EC99744C6EE75C73CD3576EFBDF7DA1E7BECB1C33C478F1E6D679F7DB6FBEEA1871EB2F6EDDBDB61871D56641F47BC0E3AE820EBDDBB77915FBE7CE9A597DA3FFFF94FAB50A142A16D7BE38D371C87366DDA14288F49932659870E1DAC4C99F82F2346A00BE45A0E0E81409F3E7DAC65CB9676D65967D9BA75EB6CFAF4E976ECB1C7167BD50A22D02FBFFCB2FDF18F7FCCD38665CB96599D3A752C2363C7DBC9CE39E79CEC0E61EDDAB556B162452B5FBE7C9EF9EEEC80FBEFBFDF0E3FFC703BE9A4934C79CE9831C3097F51D2A2458BAC7EFDFA45C9C20A2BD037DD74930D1C38B0C85C8A647C3E4F46A0F3098AC3C22170C71D77B851D7A9A79E9A542909EAC5175FEC8443CF2B9E7BEE392B5BB6AC1BDDEA77B972E56CF3E6CDF6F0C30FDBFAF5EBEDAEBBEE7202DFAA552BEBD6AD9BFDE52F7F7102B66DDB36AB51A386F5EDDBD78DA03552DBBA75AB13CB7FFDEB5F39406A04BD2381D6B923478E74E75F79E5953662C40827E283070F769FA9CC7DF6D9C724DACF3CF38C4978E6CF9F6FFBEDB79FDD77DF7DF6EAABAF5AD3A64D4DA3DECB2EBBCCD925FBAA54A9E28E57521DDF7BEF3D67DB01071C601D3B76B47DF7DD37C946E5D5BA75EB1CA22C5E5DBA74B1CCCC4CFBEEBBEFEC85175E70769D7BEEB956A95225AB5BB7AEF5E8D1C3A64D9BE67E2BA903515D2FB9E4127BEAA9A71CD7E1C387DBCC9933DD685A9DC9A04183ECDB6FBFB5FEFDFB5BF5EAD5DDDDCD9D77DE99835BA2402B5FD5F5ABAFBE72C7457720BD7AF572EC656BDBB66DEDC71F7FB42953A6381FAB8356C7F3873FFCC1715CBD7AB5FDE94F7FB2430E39C4EEB9E71EEBDCB9B3F3B1923AA9264D9AB8BF2FBAE8225737B50171555B12C70F3EF8C0B50F7D76F4D147DBFFFEF73FBBFBEEBB5D5B58BC78B1F3654113025D50621C1F0481010306D8279F7CE244FA8A2BAE7075BAFAEAAB9DF84A2474B10E1B36CC6EBDF5D6A4FA5E78E185EE62DCB871A31364DDFA2B49602444895315A9236809EA934F3E99E3D65A02AD119DC44249827AE491473AE1FDEB5FFF6AFA5E2226018B047ADCB8714E647EF7BBDF25D9973882D6744724D0BFFFFDEFEDC5175F74236FD557222FE1934D4F3FFDB4CBE3EF7FFFBB9D76DA6939045ADF492C35724EE475DD75D7D99021435C7D366DDA6462DAAF5F3F27D012612589A3044DE2A4CE4CE22BD1534728811647899FCE4B4C3A479CA34EA45DBB76D6B061C3A46352055A9D9F3A9A7FFCE31F6E0AA359B366AE43489D2EDAD9085A763DFBECB34EA035FD251157DD24DC8F3CF288ABA33A4EE51D2509F5D0A143ED965B6EC916707580127E7D5EB972E5425F330874A1D171620804341FA90B5BA3535DCCA973BB8F3FFEB89BA3D6A8F3DA6BAF35895224D0121A898B92845DA3494D3F442955A06FB8E1062750A9F3AEB98DA0958FA663F6DA6B2FD3DCB35224D01AA15E70C1056E54DCBD7B7737F255CA4DA0BB76ED9A3D7A57672091AE55AB961B753FF0C003EEDC51A346B9BB81D41174A29F5F7FFD75577F3153F9E2122509B538260AB4BE133795A10E43234B8DF023811E3F7EBCEB104F3CF1C4A4E6A40E45A367A568547AFCF1C7EF54A0D529A8037AE79D77DCB99AC67AEDB5D74C3EDC73CF3D9DC0EAFB4481163FD5435C0F3DF450676B24D09A27DF7BEFBD5D99E2A539F3D4BAE93BDD81A8038DA6927497F2C4134FB8CEE2FCF3CF7777130F3EF8A01B7517342509F48A152B0A7A7EEC8FAF59B366B68D2CB38BBDBB4AC4405D94D11CAEFED645A751D68E2E3E19A4D153345296D0E902D6C82F51A0256E8D1B37B6A38E3AAAD8047AE5CA95EE81E082050B5C99128044818E0A927D9AB691E01654A0AFBAEA2A37E25492A81C77DC7139043A91978E8B38258EBE131D97CA517717CB972F777724D1C83A12E82FBFFCD23EFCF043BBFCF2CB937CAF291189FDCE52EA087A47021D9DAFBB113DDC9458270AB446BAA79C724AB678268EA07724D0EA841F7BECB1A48E4953195F7FFD758E29B344DB773492CF4F6367049D1F4A1C1314014D4348A0759BFAE9A79F5A8B162DECFAEBAF3789C5983163DCADAAA62B340570F0C107BB51902EE4F7DF7FDF4D03E86FDDBA270AB4FED7ADAF4445F3AABAF5BFEDB6DB925671147404AD919D845923F11B6FBCD11E7DF4D16C81D6A84DA3448D4835BAD3E850237309811E786A24F8CA2BAF644F71E43682D67CA9EE10347DA0FAA803481D41EB7B7548E2356BD62C97A718CD9933C79521E19B3A75AABBFB10AF548196C06B6AA8418306D9771C91408B95F86A84A9C194F8AA3CB1D31CB0E67755374D3FE9D8C49497406BCA481DAB58687A46D342EAC8F46C60B7DD76B34E9D3AB9ECD4396B8E5BD31AB367CF767712FA7B4702BD66CD1AD3BCB63A1BCD93FFF4D34FCE07AA836C974F7497A472C4453C357216FFA8732AC8C58440178416C7064340A2118D0C135744E4F6B90458B7F089A3C9E8B34428FA4C295AC29578CC8E8E8FCE8DCE8BFE8F1E2CA6E69398C78E6C8D3E8B6C557EAA5FEA798975D677FAFFF9E79FCF758AA320BC72E3A232A272538F49E526BB732B3362A4EF73AB5FF4799447A24FF4775467D993CA2CFA2C9551E2B2BCC4F3537D987A5C6AD905B9887208B4EA9CCB0A9E82E41BCB6399E288A55B302A8D04BEFFFE7BB70A4349A358CD67EF8A35E169ACA2D74527BFD57BCA3CFB79F3561BF4EE37B6E8F693AC42D9F82FE42E087D04BA20B438B63410D0148FE6A0B50C4C73CA5AB5408A0F812481DEEFBEB76CDEAD27DADC656B6DF9BA4DD6A151AD6C4B35EFA6B58BBA1DF8F9E79FDD7C979EAEEAC185FED71A51CD95699E48437CFDAF792B3DDD3EF3CC33DDFCD5860D1BDC13CDE8964BE72B1F2D458916E9EB182D4BC9CACA72652B1FDD4E285F7DA627A32A4FF9143421D00525C6F11080403A092409F4B275599679EF5B6EE4BCB65FF222FEFFFEF7BF6ECDA5567AE81648B743BA356AD4A8917B70102D44D7F21BED12FAF39FFFEC045A02ABA7B4126309ADD66E6A82FEDD77DF75EB0CA3759C9AFF6ADEBCB95B485EAF5E3DB714470F1E162E5CE8167A6B725E1D8496BAA84CED642AE80E29043A9D4D8DB22100818212C831073D78F2377663BB4656B64CF256D28F3EFAC8B4665473547ADAAADD387AEABDFFFEFBDBAA55ABDCAD919E324BBCAB55AB66679C7186136889A8D6251E73CC316ED1BD9ED06A6792D639EA69B046D37A1A3B77EE5CF7A45A4F40F53B9A84D712966FBEF9C68DC0C78E1DEB9E866A81BBF2296842A00B4A8CE321008174126015473AE95336042000819D1040A0691E10800004624A00818EA963300B021080409240EB619E7611E9815ED5AA55DDAA0B45A8D2CE2B45ABD2C339C50DD04A0AFDE8819EE20468894EB49632CE4813E7A065BB7E14C12BAE49DB47B5C32BBF3173B5253835A04C71D74DCF066457F4FC20357FADB4D143E01DA52FBEF8C27D9C177305A7513E7A9641824069269043A015C54B1787045A1788566868CBA9B6BE2ACA96B636EA619DF6FD2B5A93A27D69F585B66E6AC5469C53A2402B8297D67D6A758A02A2E83BD5574B04B536F484134EB037DF7CD33DEC548018EDC157D272430544D777A79F7EBAE3A3285D8A68250E7A98AACF274C98E0E232A8E3D203506D1356795A8AA82DA75A7AA80032DA22AA73B42A45DCF5E0554161B49450F10B74BEECD183586DADD5F2426DCFD59662F1D7AA16D9A6F2E4336D6955D017C517506C051DA380318A52A687B68A68A6E3B5ED542124D5E1469D5594AF1E048B83DA42547785AE94CDEAC4552F7D2F16DAD6AB108FB25D11D8548602E8285E81F251EC03D910EDCA52E7AFB6A4B815F3E6CD73211915874151DEB41D58E2AE87C962A8F08DF2C3C71F7FEC98C8663DA056601D715084340D22947F648B56FE6820A1BCB5C5560F97359810BFDC82DCC7B9CD625BE926B04381D6084617A72E420984566A684FBB02AB68B99B0446610725D4DAAFAE2577DABB1EF7942AD08A9DA00B5D9F6B59A04687AAAF56986894A7D082123D8D18A3D0870A5EA33B0A45175327A52581BA8B9050EB78E5276E123EDD7D28908D045AE22D6E1268C54A50BE1220899AA25F291E80BED77A6F2D558CB69B6A1DB946C5B251DFC907EA10140B41211915E376E9D2A556BB766D17E74002267193684ABC155652F629C9A75A65235BF5B7444CC2AAF8B75AF2A8E03CB7DF7EBBF3E9C9279FECCE579C07896A62E72B51543D141FE188238E308582D49D978454E2AD7C159F409D85CA57A84A89A692F252A728A6EA84541FD9AFF8063A473131D41189AB96574AB83540500728C1958D8A4FA1A872126889BA56F928EA9B96668AAD6C136FD55BAB8DD4F12AB2596A2C87B8B757EC8340A99D837EFBEDB75DE42E2509A20276FFF2CB2FEE7F858CD4F240ADD5960068599F8443499D9136D548B0156C45AF4D9238456BC1B5D450EBB5D5C9693427B1D4765A8D5C25D61A792B088C924675FA91B84AACD5112A088EEE46D459A82C95AB7325E8DAC0A3602E2A5F1D66B4645122A7202D0AE7A8BC14B94B235B8DD015B92B8A0D106D02529017E529115647A20E401D93469A2A53C165F4B7C4508163947F9487EEA0C44382AA0D462A471D8C6C175309B6045165EB188D86B56C32124789A7363B296F754AB249DFAB23126BD92F5E1AEDAACE9A5A93C8EA0E409D8B3A27F9450CC54A62AF3A8ABBEE7634D2572C604DA768E9A78ED19D8882EE48F44910F08940A915E8743849C2A48D373ECCD7EF4A3E1A592BD29846DAD1C87A579647DE10F0950002EDABE7B01B0210089E00021DBC8BA9200420E02B812481D6DB8D434B9A138D125BBD43F32EF58140D804184187ED5F6A070108784C0081F6D879980E0108844D2087406FD9BA2D4724BB501030C5118A27A907044A07812481EE39E633BBEC884CEB39FA539B78651BDBBDE26F3B03B53C4C6B59A34D0F05C1A3B5BE5A179CDB6BC7B55141AF454F4DDAD4A06DE4DA2451987253F343A00BE2358E850004D24D2049A05B0E996C1F5E7B8C8D9EB3D89AD6AE6A87D5AF9E6D9F3621684BB43674BCF5D65B6E1DAB767069E75C93264DDCAE3AED0C536C676D858E5E63AF0CB4A9429B34B449415B87B5414431A2B57B4DDB8CB541449B0824A0DAC1A7EDCEDAFAACA4E3B56B51C768A79A369068D384DE1E2C9BF45D7E13029D5F521C070108C481409240676DDE6AD5FBBE69D52A94B31FFB9E92649FC4308AB52031D63666C544D0AE31EDECD2E60BC53DE8D7AF9F7B8DBD624F68C79BB6DF2A69E7DAFCF9F3DD2E37ED4CD3CE33E5A11D631264C5F950BC05ED3E53D20EB448A0B56B4C82AF2DC5DA55A6D1B4768C699BF2C08103F3FD6615043A0E4D0E1B200081FC12C831073DEEABE5764AD33A39CED7565C05B2D1765C05C351901B05F151DC0AFDFEECB3CFDCD65AC54E50AC0A1DAF2DC31AED8E1933C68DB425E8C3860D7379286684A63624D08AE9A1EDD2DA82AC91B93A03C583508A5EB5A511B7B6F00E1F3EDC89BB5E95A500398A0791DF8440E79714C74100027120E0C52A0E6D9196786B34AED80C0D1A3428143B04BA50D8380902104813012F04BAB8D820D0C545927C20008192208040970465CA80000420500802087421A0710A0420008192209024D05A8D115A5200F72831C5119A77A90F04C226C0083A6CFF523B0840C0630208B4C7CEC3740840206C023904FAF365EBDC16EFFAD52B065773A638827369A12BA477362686A22D74469C586402DA613C69D2246BD5AA5591F30A2D8324813EFFB9E976EFA9CD6DC0C4AFECDE8ECDAD5EB5DD5C7DB50E596F6B563C0DBD2F4E2F19CD2D45AF338A2328043A8E5E29799BF47670BDC19C142F027AB72529994092401FF3E8549B70456B7BE4FDF9767AF37AB67FED2AD9476B37A0E26668B38876F4DD7DF7DDEEA5A3EAF524E07ABF5CE3C68DDD4E42357E8D50264E9CE8DE7EADB73A77EBD6CDBD9C349D09814E27FDF894ADB795472105E263159620D039DB4092402BD468D53E6F58A39A556C4EAF0E49474B7815284923E9050B16B8DF3D7AF4703137B4055CAB2514752E12E8112346B8A0491A711F76D8616E6BB8822AA53321D0E9A41F9FB211E8F4FA42033D4D6B282546B144A0F310687DFDE5F275D6AC4ED51C476A7A4391E4A2ADD653A74E75C18BF47AFBAD5BB7BAC8744AD3A64D73236AFD2F2197384BC4EBD4A9136B815610A7281CAA22E7A90E152A54C8C1418D28B7F94B71C8C8C870771AAA2F299E0410E8F4FA4561841F78E00177579D18461881CE8740EF0AD729EA9C46D9E94E3B1B417FF2C9272E509342A67EF4D1473674E8501B356A9475E9D2C545E8D38FEE10F4604902AC8EEACA2BAF74C7D4AE5DDBFAF4E9636BD6ACB19B6FBED956AF5EED824029ACEA8409135C1C6DDD3D2C5AB4C83A75EAE442A516477CEB74F3F4B57C043AFD9E9348EB7A4A4C08749A043AFDCDE1570B7626D01A358F1B37CECDAF2BEEB446FE125AFDADBB028535BDE79E7B5C4C6C8DB6155255E2AC39F6D1A347DBE0C1839D40EB2EE3F2CB2FB7962D5BDADCB973DD485A3FB366CD722155DBB66DEBEE3C24DAA4F41040A0D3C33DAF52116804DAAA57FFED25048938D6AD5B6755AB5635FDD6685F3DBC42A4469FAF5FBFDE854ED58FA63F3495A1E334E2D6D446E5CA95DDE74AFA4CC72969AE4DC7EA1889B7460D3A0E81CEEB72DD75DF23D0BB8E6D517246A011E85C05BA280D8B73FD228040C7D35F08741E02FDF9E79FC7D37345B0AA79F3E6D967B38AA30820033A15818EA733116846D08CA0E3796D96A8557A5D5AD7AE5D4BB44C0ACB9B00028D4023D0795F27A5E288993367DAA1871E5A2AEA1AF74AEA398D5651E93576A464023962716CDDB6CDCA646404C989298E20DD4AA520102C812481DEB465AB55EBF3A6952B9361EBFB774AAAF4800103AC7EFDFAD6BD7BF7A4CFB5A350EB86F5C66FAD6448779AB772832D5F97654767D6B08E8F7F6063BBFF168005814EB777281F021028088124815E9BB5D9F61F34C9BAB5CCB4FB3BFDF6704D19EA4DDB999999F6D34F3F3941AE56AD9A7BBBB7DEE67DDE79E7B92D9B5AEF3B64C8103BEDB4D35C5C8E74A5E3864FB30FBF5F651B523A19043A5D1EA15C0840A030049204FADC673EB6D7BE58EAF259D0FBC4EC687691406B67DC871F7E68471F7DB4CD9933C7962C59628D1A35729B37B4A9A366CD9A367EFC78B79EF898638E298C3DBBF41C047A97E225730840A098092409F4D2B559D6E6D129B677F54AF6CE556DAC4CC254B476DA69A345F43BDA8CA10D17FAD1E60B4DF62B66876258A46EE32C66BB0B951D025D286C9C040108A489006F544913788A85000420901701043A2F427C0F010840204D0410E83481A75808400002791140A0F322C4F710800004D2442049A0B5842EB454AB56ADEC2AF1903034EF521F08844D801174D8FEA576108080C70410688F9D87E9108040D80410E8B0FD4BED2000018F092409F4DC656BADDDA3536DFDA62D967577E7A46AE98D20F3E6CDCB7EF16BF4A691E820C5924E8CBD9C2E265FFDB8DE662E5A6D671D54CF0E1BF2AECDED751C73D0E972468CCBCDEDC5BF313679A7A6E9FA9C346992DBE54B0A87409240EFF697D76DD59D1DEDFFC67E6EB316AFB1B7AF6C935DD3912347BAD7405D70C1056E3BB7760F2E5CB8D06DF1AE57AF9E6B18DA45F8EDB7DFDAF1C71FEF5E1795AE74F5E84F6DE4CC1F6CF55DA72699C043C27479245EE5BEFCF2CB76D96597C5CBA862B266D5AA55BC4EAD9858C6219B24819EB374AD1DF9F07BA690A3A923E80F3EF8C045B3D3BBF6147B63ECD8B1AE2128AEEED9679FEDEA2281D68B5157AC58E1E272C42D21D071F3487AEC09F98D2A08747ADAD4AE2A9539E85D45967C634B200481D69258DDD12A068EEE60A38440C7B6D915CA30047A3BB665CB9659DDBA757340D4DC5EF486EEC42F57AE5CE90247EDE89CC48B456F11E72DDE856A9BBBECA44481966F468D1A65CD9A35B3962D5BBA32A74D9B666DDAFC36BD976A885ECD3479F2646BDDBAF50EEF14259CB9050BD3F4E082050BAC478F1EEE6DEF854D0A4C3678F060EBD2A58B356CD810812E2CC8989F87406F77905EB973F8E187DB4D37DD6477DC71875D77DD75F6ECB3CF9A2EE68B2FBED8CD59F6EEDDDB1E7CF0417BFAE9A79DE8CE9A35CB5E7AE92517BD4FF3F11D3B76B42953A658BB76EDEC9C73CEB15EBD7A59DFBE7DDD05F9C4134FD825975C62F7DD779F2B51F9DE7AEBAD2EEFB66DDBC6BC9984655EEA085A7E79ECB1C7AC7FFFFEB6DF7EFBB90EB943870E56A3460D173AF79B6FBE7142AC51AB845CBE97303EFFFCF3EE554DEFBCF38EA983EFD3A78F55AC58D1962E5DEA62A32F5FBEDCBD624D0FD4D5564E3EF9640772F6ECD9A629C3134E38C11DDBA2450B77AC3A7DC55DBFF1C61BF3055C22AD69C6C4C4083A5FE8BC390881DEEE2A8D86C78D1BE72ECADAB56BBBF9F69E3D7BDAD0A143DDC525D11D346890B56FDFDE5AB5FAF52D2DFA5C6F94C9CACA7217982E565D987AD79D1E940E1C38D0162D5AE4E6E875BE8ED7C5AFEFDF7BEF3DF7D203AD7C89C39B68BC69B1C56068EA085A235EBD68425305F2D58B2FBEE844531DB646B9EBD7AF77A176F500BC69D3A6B661C306F7105C3E9460EB6F75C037DC70838D1831C2BA75EB961D9637BA03D36F897724D0071F7CB0EBA40F39E410F7807DC68C19EED98EF292A8173621D0852517CFF310E8ED7E89960DEA628C045331AFA38B4A17A5DE2023418E56A8E8C2D6C3D2CE9D3BDB6BAFBD66A79F7E7A763C6C65AB63A3F3D5014471B3A3DB5F95A9D1B77E482547202E73D01A317FF9E597D91D7E711040A08B83627CF240A0E3E30B2C2921027111E85D515D047A57504D5F9E0874FAD853729A0820D069024FB10526804017181927F84EE0D5575FB5AE5DBBFA5E8D1DDACF083A2CB72609F49AACCDF6F58FEB6DF3D66D7674E61E61D5D4CCD8A8129C4B0B5D216DB0D283C050921E424E9F3E9DADDEA138747B3D92047ACCDC2576EC7EB5ACDE80F1493B09B5AC68F1E2C5A6DE590F35F424FBEBAFBF764FB9B506533B07F5E4398E2F8A4DF417021D58EBA53A10089C40BE045A0C860F1FEE56253468D0C01A376EEC461FC3860DB3ABAFBE3A5BA0759C845B4BCEB4A44CAB21B49E54C22D01D78A06C54190A05F7FFDF5258E16812E71E4140801081481409240BFFAF952B7CCDFC7480000071A4944415408FFBCE7A6E788C53171E24427CE5A642F81D6FACD175E78C1054F8A46D0D10E2A6DF0D0C27EDD76299D71C6192E129ED608FFE73FFF71427FD5555715C1ECC29D8A40178E1B67410002E92190E321E1A62DBF8A6A85B2658A649176D669E386C4392E09818E8B27B0030210C80F015671E48712C740000210480301043A0DD02912021080407E0820D0F9A1C43110800004D24000814E03748A84000420901F0208747E28710C04200081341040A0D3009D2221000108E48700029D1F4A1C03010840200D0410E83440A74808400002F92180406FA7B4CFBD136DE32F5BF2C3AC588E295726C396DE7E52B1E44526108040980410E8ED7EADD56F7C897BF8F5CB8EB2560D6A9478B914080108F8410081CEA740972F9B61B7B46F6CF74F9E67BF6CDF0E5F5417BFD2ED486BBB6FCDA266C3F9108040A00410E87C0A7493DA556C5DD6665BB236CB9DD1B375436BD3A0862D58B5D1AAED56CE9AD4AA62F5AAEE66173D3FC3BA1F9969FBD6A8EC824EED2C21D0815E55540B02C5440081CEA74047BC1BD6A8640B566EB4DE1D1ADB8C456BAC53B3BA56AB72799BB36CAD8D9AB9D8F6D9A3A2CD5AB4C6F4F283BC12029D1721BE8740E9268040E753A035C571418BFA3672D622EBD2A2BE7DBA648DD5AE52C1366CDA6295CA97B5951B7FB1792B3658950A656DF9BA4DD6B1591D7BFD8B658CA04BF7F545ED2150240208743E05BA489473399911F4AEA04A9E10088700029D4681FEA0675BDBBF7695705A13358100048A950002BD1DE7D8AF96DBA52FCC742FCC2D8934E0E466764DAB86255114654000029E1240A03D751C66430002E11340A0C3F731358400043C2580407BEA38CC860004C227804087EF636A080108784A0081F6D471980D0108844F00810EDFC7D4100210F0940002EDA9E3301B0210089F00021DBE8FA9210420E0290104DA53C761360420103E01043A7C1F53430840C0530208B4A78EC36C0840207C020874F83EA686108080A70410684F1D87D9108040F80410E8F07D4C0D2100014F0920D09E3A0EB3210081F00920D0E1FB981A4200029E1240A03D751C66430002E11340A0C3F731358400043C2580407BEA38CC860004C227804087EF636A080108784A0081F6D471980D0108844F00810EDFC7D4100210F0940002EDA9E3301B0210089F00021DBE8FA9210420E0290104DA53C761360420103E01043A7C1F53430840C0530208B4A78EC36C0840207C020874F83EA686108080A70410684F1D87D9108040F80410E8F07D4C0D2100014F0920D09E3A0EB3210081F00920D0E1FB981A4200029E1240A03D751C66430002E11340A0C3F731358400043C2580407BEA38CC860004C227804087EF636A080108784A0081F6D471980D0108844F00810EDFC7D4100210F0940002EDA9E3301B0210089F00021DBE8FA9210420E0290104DA53C761360420103E01043A7C1F53430840C05302199EDA8DD9108000048227804007EF622A080108F84A0081F6D573D80D0108044F00810EDEC554100210F0950002EDABE7B01B0210089E00021DBC8BA9200420E02B0104DA57CF61370420103C01043A781753410840C0570208B4AF9EC36E08402078020874F02EA682108080AF0410685F3D87DD108040F00410E8E05D4C052100015F0920D0BE7A0EBB210081E00920D0C1BB980A420002BE1240A07DF51C76430002C11340A0837731158400047C258040FBEA39EC8600048227804007EF622A080108F84A0081F6D573D80D0108044F00810EDEC554100210F0950002EDABE7B01B0210089E00021DBC8BA9200420E02B0104DA57CF61370420103C01043A781753410840C0570208B4AF9EC36E08402078020874F02EA682108080AF0410685F3D87DD108040F00410E8E05D4C052100015F0920D0BE7A0EBB210081E00920D0C1BB980A420002BE1240A07DF51C76430002C11340A0837731158400047C258040FBEA39EC8600048227804007EF622A080108F84A0081F6D573D80D0108044F00810EDEC554100210F0950002EDABE7B01B0210089E00021DBC8BA9200420E02B0104DA57CF61370420103C01043A781753410840C0570208B4AF9EC36E08402078020874F02EA682108080AF0410685F3D87DD108040F00410E8E05D4C052100015F0920D0BE7A0EBB210081E00920D0C1BB980A420002BE1240A07DF51C76430002C11340A0837731158400047C258040FBEA39EC8600048227804007EF622A080108F84A0081F6D573D80D0108044F00810EDEC554100210F0950002EDABE7B01B0210089E00021DBC8BA9200420E02B0104DA57CF61370420103C01043A781753410840C0570208B4AF9EC36E08402078020874F02EA682108080AF0410685F3D87DD108040F00410E8E05D4C052100015F0920D0BE7A0EBB210081E00920D0C1BB980A420002BE1240A07DF51C76430002C11340A0837731158400047C258040FBEA39EC8600048227804007EF622A080108F84A0081F6D573D80D0108044F00810EDEC554100210F0950002EDABE7B01B0210089EC0FF036DA3CE30CB0602C40000000049454E44AE426082 WHERE `app_id` = '6'; -UPDATE `fn_app` SET `thumbnail` = 0x89504E470D0A1A0A0000000D49484452000001680000012C0806000000EE2C29AF0000200049444154785EECBD07985C57952DBC6EA8D039A8BBA556CE39675996836C30C1806D8CC3100C0C434E33FC93FE6F12330FFE37BC37A4218C8D033080C1D8B2B171002CE728DBB2AC9C73ABA33AA7AA9BFE6FED734FD555BB2575CB92BB35AA82B6BAAB6EDD7BEEB9E7ACB3CFDA6BEF6D60885EB13BB6073E4C78A601D83E0CCF80E9039E11C0924F4C38A605C08411F80810C0E04F60008105183E8C20800F1B811CE7C30ABAE103088C5878570E10F8308C52048103580E3F95FFCB8FC1D358300C1B3E7A6106162C1FF00D0F401C7E1043607A809196F3C5DD243C38F0631E0CDF542D32B21D18F7D2181D0FD0DCE3A0335688C0F0D91898B0E049CB72AF5C0FE47AE0BCEC814F4E8BCCF4B7EF0E86E4A2BC3DEB8E1D816F98080C8B180CD333041C5D9320EC0B180B780BC01134F93E60868818185E088E1602D84040E07541ACF67D82B70D83C7C04760E409221B410AA6C177D4790358847F04BE8FC0F678115881058FE00F0B084C48A39046E073E1C8938522301CB05582F37D007AC594B17863CF0174984918310B81C7EB5AF009D6B957AE07723D707EF6C00507D077ED0994B54B20B4607A81401E41CF277ED29C860F33A02D6DC0353CB19E2DDF80011FAEE9211073D704021BB012804760766897C33613083C176EE0C2B763E0B74CCF4310A441FBDA342C3866026EE0C13003048101C3A4B51E082E7391E0F9D4EF2E2C0B705C1B26AD737E66A8B6F605E825134661EBBE43E88C17CA31B2BCF8862C30B957AE07723D709EF6C08506D0B8636F209C062D509F904900239DC0F76833F3C785E959423D109079A8007400B8B68BC052562F7C521C363F15F0B682344A3C179E6DA1DB00D201298B18EC208698E7A0DC74916701C71C07BDB6095AF2088A60F2DA6E1B4ACC143C33819E20015FAC765740BF302F0F1DDD2E3C338EA02F400740C24B63F954654177DAF9F0030F961583EF04C2CAE45EB91EC8F5C079DA03171A401B77EE0DC44A3600D315A2412C66E16D058A099C81B2A005A05DB1A04DDF16ABD5176ED8156A83C7D0A8B52C1BBEE7213FDD897F7CD72CECAC69C1833B8EA1CD8EC3430249C7C3F25185583C65040A8A93D8B87B1F5ED8D78AF678114CBF105ED08B3CEF383E75D12404AE8D751B0EA0D1CC9376CC1D5F85E5E392B8FF89ED684B94C3336815472CE810A0974D1983CD7B0EA03B5E048F0B0E2DF31CC5719ECECA5CB3733D10F6C08506D0E65D7B03D9F6FB2E92A91412AE0BC37709D1300D039E69A33399079871F537795F3AF482187C43CC6E18A055EDC3F0153D625806E0A430A3D0C66D37CEC6EE3A17DF796403F69AC5E8461CC54E37FECF876662FD935B51D3DA814F5FB702FFF2DB6D386C16C30C12308C1E94FA4DF8F92DABD1D191C6771FD880D7508E1E04B87CD6447C6806F0EFBF7C0DC70A47C1A3639100CDE7C7E644007ACB9E83CA82A62F53AD26390E3A37D3733D703EF7C08506D0C69DFB02C3F061B91DB87EE1447C607A12493FA43C60A0C907BEF8EB6D48E5952A879E410B9A0EC198B01F34B44DF2C5A44108944100C3F451D8D3822F5D371F9D0D298CF4DAB1E18D8378AAA7046DF142E4F5B6E03F6E988D679FDF85E30EF0CE55D3F09FBFDF8966BB04DDBE8DB8D786F72D9D808B475968D95F83DADE387EBEAF13A9781CABA78CC34D734DFCEB2FDF406D4925FC8056FF89009D24C531798CA2386205F0CC502A22FC46CE49783ECFCF5CDB2FF01EB820011A2E926E07D6541978D7F42A24D38E58A49669615F0B70EBF63AB4E79522F0E96A235D403504019AD486098B5237D3814FE7A049D43630D36CC7D7AF998D6FDEF53CD6CCAAC6D4C9A3F1CF8FED423A9EC09462139F5A568D31234660774D1DEEDB741C134795A0B327C0B3C73A5062B4E11BD72FC06F1FDA85D18934DEB17629BE74CFAB688F2570F1ACA9F8B39906BEFEAB4DA82926C511CFF21B94EB690E3A07D017F84CCEDDFEFFC81EB8D0009A4E42133E4A8C1EACAE32B176E22824BB7B94751C98A8F312F8DE6B7BD156504ED20326A570E49A058809D0593DB472345222E7E183D3F270CBF2B1787C73272A8A63583831894FDFF512F2E301FEF2BD73F1E853DB5196CCC33B574DC2FF7E602B6EBC74165E7861135E748BB1A03A1F7FF38E69F8E3B66E94DA1E2E9E5E847FFAFD4E6C6F6AC392393370F3AC18FEBF5FBD82C3A5A3E0D2B1498947487110A069412FCB01F4FFC8F999BBA90BBC072E348026C54180B67BDBB1B02885198900452E19683A0A2DB4D97978E4B88FD6781160DB80A7647614AE09BF21AF501A2194878702A7079FBB680CBCC656EC74E2703D0FEF5E361ABBF7772375EC20AEBC7401BEF6D327E0C48A307F7415FEDFF74EC08EDA1EDCF6E8661C0EE2F8C8CA3128F55CBCDE6AA327D58B8B168C4071CCC0F7EF790533172CC64DB34DFCEB2F5E464DE928F8A0059D03E80B7CDAE66EFF42E9810B0EA07FB22730292EF6525834A104B3CA02C425C084BA3603DD00EEDBD482B49D0CB5C62AFC4F685D58E24C14AC0EE2C243C7D18D2956376E79E732DCF3E04B38E459481BC09C71D5F8E2CA52DCF7C0ABF8C88756E1972F1EC09EC3CD9834B202372C9F80E3AD1D787CCB51EC69E9C547AE5E82471F79053BD27948DB0646C55D7CF3BA79F8D6BDAFA37CEA1C5C37DBC437EE7E1D35855514F385DEC1302231624153C5D191E3A02F94A99BBBCF0BA1072E34808EDDBE27F04C133E290BAF17063D7D0C27F13D188CF6A36ECE64F0099D7F2A1E4549EA18319854E1D8B4A4FDB83807E35E2B568DB23179CC48FC7E43233A8D387A6D2096EEC0D7AF5F80C79FD88DCE542FAEBF72018A933D38DA968747D6BF84CAA23CBCFBB269F8D5639BB17CD542FCEEF1FDA8B31370AD00899E66FCD5958BB0E9600D9A8D625C3E2B0FB73DB015C7F347844A122E126AE1202D93F05CAC985CAD22094F00E8210BD8BC10A64EEE1E733D70CA1EC838F3DF4A3F5D68006DDFB93BA096382030D3720E3B2FC848E818C742EE42E91FC8430B102A37621873187E28A1D92E980B8324B66B508A6781E7A2742FCFEB45400588C148C4B45CCF372D04760CA6EF21F01C04B6054334D631A419BC627A30036AAA1DC633226D9960C60ECAEBA8A90E2CB6818B890B33F0256F47CC0BB0724A15B6ECDE8F365AFE565CC2C8E9C00CE30E33923CCD5D2B9D5E56AAF7B6FC2E1709E999B7326873DFCDF5C030E881306A22D3121D49A1A61583D0B29B5D9D868754EAA0E6DAC7A70F899535241765C7C4EED81DB80468432549A29E99FF95FC1BFC8D099328A313ADB10693FEC2A5255387EA6C5AD71AEF088AF2A7B26E331992784265ACCB7F1470F2453D3503C2B968D007A93E31E53D15B0A871548E91187057A21DD9F62088C3F2022C9F320ADBF6EC41A74D999D5296A85BCB2C412138EAA112695BB808A9B69EC3F7A3F1E9C36082E59A90EB81B7DC0382137A471BCE1D0689454E1C450FF5FEC0E760F0C90B0CA0AD9FEC09486FD026D6C9914817303B9DB29409D04C76C46394F0596F5574E72A1863C225E6D208D986307824F30004A54F0468D229D44DCB47C46B02A92070F8C0981F247CD14A968304D4A87D563942C43A97DFD946BE6CD85E80A533C663C7AE3DE8B26C3812B26E48DE0F394D36895EEEF7AC5113357072BF67C65D6843E4C64C76777D8A3123D3F364E6667497AA0DB830E422625C9F72EC059F9A3A24C6EC905C947D14BF9DE9466D655932C844108C16B30268041E83BD43EB59BFA71D837AB50C019ADF531F85917D2A039E4A51AAED5EF594C4FA0DFF27A02B80CE4522C858C9729CB678FB18ED593E2B4C7F4ADAC38C096D62071EE22EF9730F6ECC80CB044EC2ABD3F9990D6A1916BF2B376B9FDE191E0C4C9433CCFD9E7B46031A0394E09E04CD749EB2BED6B48E021EC87C743E357348B072482ECA21F79947360741600B0093C755004DDB9499E708148C1CE47B613AD113D6515ACBA1C9ACE90BD2256F829B28ED116E77C23BEEBBA82A4E4A511C4C0DAAC19DD18BEAA532D86552D88905CDBF0DB826179010A07D0B0101DAF4E1584C830AD8F2B5E1144918AE6619888EEC0373BFE67AE07CEC012D79157A347B030AB4B5A1161AD9326D355E0CEC666F7DEFDC21C1CA21B928BBE468437DC034A1CCC96C48427CE50A0C100F1D810467460F12FC420B3AD397CA7A95ED89847B872C44F421F101841CB402DE88234EACE390E2D0DF059D824C37CABC195E98EE34900C784C454AA7A1247292AD912116B6D26573E556ADE1596D9FE70D44A2CD2C7A261354BB014C72EBC326E5A81EC1391B3AB76738FFC7809A7959287B33EFAC8C394E3FF9119FD2E09CE463AB2A87042B87E4A2C4C48686BAC0800DCFF560C74DF801415A25161238A5152BD55068851204C9F512E8C284FC3C4A142012DA0293923D2AEF0498D5DF1E734CD3E127CB6810FAE9A29FFBB06D0B8EE3C0B419ADC816510512A8A4FD868118131D312FB4654ACA53A63B65EA3CD30AD4F98D9858C75C4E4CCB86492589D0DEB4FC5D499D1A786A30B04D02DE62D8AB36EABF4FB68E6BAA458A1084F7D6F75C9A92899E5BBFA7AFA5CF23394B42FA46F52F171BB6435BF87A4868764E1DEF33EFAADC83B0392133C5CFB80352560AFB599D5FAF8619062B7C966AD154F711EE58C2C55203A5FA2CF4ADF242B218EABF436B48BEA317591FA66987FDA8DA1C6D83FE9D0BA5EF7B52CC41164DF514C2E3553F64CFA9EE2B7A8CFE5DB74DF56BC4F71B5E57F529FB246B04E8FB55FD1CED9FF31F1C55BF0C8884D004E439385E194C7CB6966872A99CA28748D178BA9795474815E890CA1EE177D41C50E3E664AFAAAAAA21C1CA21B9A802E84631482DCB82EB39A1EA4B292ED828710F1274D9971CD85234CA874DA0745D58026EA1A0261C1FC2251B047B72BE66F87D5FAEC187177DE907C2F76DDB0EF33EAB24FDCC96E79B74EE5196C7B25510758964D163651583B23A5AC774519AF0180169B3AC156BBB28BED90F3D906AA2EA89A9BA3B7A6D9EA3BF575F00EF0FDC4F046D0D646AA04601592D568A42E2FBBA5FE5186EF7C2C542FA2DDC1D084FAFC13C8223AC2C230BA506B030519538D043054E94DCE6F1A6C574B0A1FF20036491F7C3052BFA7DDDA610FAD5E409C1BDEF738CDE6FE6B3C8C8566D668E9750EE18AE3DD1C54A0177E439F5E1C0F4E4CD4CE4485BE4ECE1DF99059563532F466187B0CFA2D739291AE43E18540F48C2487892C387F357CF778E2731EBC4C7CFB91C3EA78867508F01CE8F53194C55179A055D57DB18D8E2C9736158317802684AB32103DB8E21CD20955072C7D54E56455AB3BE0268095C09C1978068D931B1F494354D8DB29A70323168E7FA1E62B1385CC79187C889AB141DB4D643558658C7363CC9FD41300E0364EC185CCE3926E1A7A8841699CB14A8016C2B297486944A0C5C59A12DEAB025FB5EE8AC147F647691E0ED3A4E5ADA9351E0458625277A2AE5A0BBBB53FED51699B678792FDA2A947543163B02B19BB11015C829CB512896701B28D63017C2D06AD0D6875A2CF46EC310508F8296E7F988C763B240F2A5813F0BFA6AC1E4B5FA82A6BE86B23C9555DE7711918537B298CA330AD5363CA70649DD2E35548213BE93DD3D850BA858CB6AB1E9BBC3E0F9F9D2A0291658E4FA5100EFBB28E8FBD08B9EFE9B6D8BC5380E15E0F3EFA88576B2730E0A9172079FD003B296DA406B4B3352DDDD2AC56F38E7619B70B9401BD9621F314B8D4FDF77C5382B2D2DC5B871E332464C7FDD7BC159D08D4DC703234823F0D212364DF506C19225AB3888E92CF4600B18FA6E0ABEAF26683C1693BA827C59EC685ABC0104E8BA7B52B0E3545410344DA452291414E4A3BBA757A80C9E3F9D72E4779ECB66B51306AA10944DD21A161C97F23E17F9090544298545D28E98D0C906528E02A2980124F84110834340E7B8487AF0520EE0D0824FC0E5CA1E33614921DAC82B00BA7B7A909797CC58B6D18F1558D8282E2E423CC66394E5AA64276A9B2C4669C60912EE1CD4D9B29CBB06655AFCB26884AED43E4E92701D525BC590EEE00E820B1FFF55DF535C3BFF16608B7CA61743B5D81134E937085B1D5E53CE935926420A20D3DA2CF5230C5164F1E079B860D242CA5AF9EA3EB58E5D6FB2A34CA48C2379B66A57A65E590A47EE295411292A253C5F8606D2540C0F0B7541E177C2BD5064039DDD4AABBE0C9F56781FB268CB82F0E696E6F0F6ADF70077D8FBF7EC456F57376C93735DE56B7768B0C46292972766C54451253B2A06A2596A47D3D4D484B973E62863EA2434C7C8CA5143C2360CC945F9381A1A8E072652ACDD8D96B66EBCFCCA265C71E51580DF83279F7C0A8B96AEC2BA071FC33BAEBC0C7F7CF4618C193D56B8E2B56B2FC7EF1F7C08EF79CF5528292941437D1DC68E9F80DFFEF65E2C5AB404E3274C806D5978E8A1DFC98ABA68D142CC9E3D179E949FB270C7ED77E283D75F879FDCFA137CF92B5F41617E3EEEBAEB4E5C73CDFBB06DEF11ECDE77185E570B16CD9B8E9EDE5E6CDA711485C545282B8CE38A4B57E057F7DC8F92CAB1E29C9C376B0AE6CE98863BEEFA3592B1189A5A1AB0F8921588053E1A0FD7E1D9173661E9CA155879D11294971487A0A90096A0D1D5D585BC3C16B415EEE14419A7800B50565E86782CAE060E9F56264C2A941646385C050A04500231690E8E38E59C543B095AF43AA827B4ECC39D48067043D0D3F487DAC22819627F0C9D962D4639BC13E899108F32D63AF7116C5BE4BAEABE14588A851969C389ECE6891249C5D084C79F009C272E1EAAFD2136862B9B8E57D256B87A04E174088FD17A790DEC72ADCC795431062E52C46EE5300EF97A2F14D9469F69664555EDE8F3B4DF3A425DE0672095B167D76EA47A7A90306D668808A94A139E01D8B1189C545A7C4C2AE59A32CCB8DBA9AFABC7FC05F305C44F068855552387042B87E4A21C4BF504E8202D72BACECE1EDC7AFB4FF1852F7C113DDDEDF8E5CF7F8A4FFCC567F1D9AFFE3DBEF4854F61FBA64DB8E5968FA1B7B717C5C5C5B8EDBF6EC5ACD933644BF29DEF7C170F3EF4206EBCF146DC76DBED48C61372CC876EB80E9FFFFCE7F0D24B1BF0F77FFFF7686B6F432291C4473FFA51FCAF7FFB377CE31BFF4BD21DFDEC673FC7273FF971FCDDDFFD2DEE7FF419BCEFDA0FA0C00AE0F7B6E181DFFD0ED5539660CD252BF1A95B3E8A1FFEC7D7B1EEE1F5F8D047FF0231C34251D2C30FBFF71D54544DC2B5D7BC176DEDC7F1D2E6ADB86AED25B05C1F1FB8EEE3B8F7FE5F4BAE10521EC2AF1B4CCCA7ACA9CEAE4EE4E7E56B7C3EC1132DD66710A0ACAC14764CC9F5387A3A3A3A919F9F8FCECE4E141515A2A7A71789784214267B76EFC6C44993D0DB93427979195A5A5A51565A2ADF7B62FD13B8F4B24BD1D3D38DFCFC027475F7A0AEEE18E2311B63C68C81EBD2C36A21DD9B4651713EDADA5A515A568AEEEE5E241209A19476EFDC81AA5155300C0BAFBFFE0656AC5C81BC645C38F6C3478EE0A9279FC6B8F1E370E9259728478CF84A2D74B4B763FFFEFD98BF6001DA5A5B656165FB3B3A3A6417316DDA34384EAFEC82FEF8C73F62ECB809983163067ABB7B108B5978FA99A731A27C04E6CC9D2FF7C26D69575727F2924901BAC71F7F1C6BAFB842EE2D954A63DBB66D72AFB4947A7B7A905F5080CE8E0E24F3F26457C5EFF5A65378E38D37B062D972A41D07896402DD9D5D28282C14ABF8D9679FC6D2C54B104F26A4C27BDA75B071E346CC9C395316D5981D83E7BAF258928904DA3B3B505458848E8E769494940AE7F4FC0B2F60F9CA1572EFCDCDCD58B972A5A2D5F8284FE27BB8C071F6F4B79F49FDA0EC15EDC1E1FE74F7EE3D6241C7E8A0374D89F1756C1A4E2DD87FF010C64F988251E52588B929E52B0AE7584B730BE6CD9B2B7320B348F76949E5C88A21C1CA21B9A800747D6D4085867472E0E0073FFE216EBCE923D8BA631F5AEA0FE103EFBD0A1FFDCB7FC4973FF3E7D8F0F493B8E683D7CB13193F763C366F7C03DB77EDC04BAFBC8C19D36760F1B225F8F6F7BE83471E78101DCD2DE84DA7F1C52F7F113DA914FEF33F7F805FFCE297F8CBBFFA2BE1993FF1F18FE39FFFE91F71FFBA7B5151568291D5A3F0FB071FC4BFFEF3D7F18B750FA12B0D5C71D1522C5D380D77DC711BCAC7CDC38A95CBF0E5CFFD396EFFCFEFE2CE9FFF0657BEEF7A246D0B13C68FC0873F7C23EEBDE731781E69985E58B142785E370A0BF2F1AEAB6EC4430FAD43DAE9128F7F945E601F747777CB64EF6F5088E45A00BA4C0089AFFBEFBF5F76115CA82A2A2AB075EB56F93E0166EEFCD9387AF4286AEBEAB16AC56AECD9B317A346560B20BDFFFDEFC1ED3FB91D9ED3231CF29871E371ACA10D89A4896993C760E32BAF61ECF8A978F0A13FE1C337FF19366FD980850B66A2A6AE160112686BEFC5A73EF111BCF0DC134249D5D4352330E258B56A15B80BDAB97337BA531EF61EAC4141320E27D581B815C7F4E9D3316FFE7CB1989F7DF6591C3B760CF3E7CFC7E6CD9B6551A81E3D5ADA77F1EA55D8B7730736BCF232521E29A17CF89E09279D42220EE425E2282C2CC5A1A37502DEFB0EEDC3DCD933F1EA8697F1FEABDF87DFAD5B878B2FBE1875F5F5282C2D41322F894B2FBD14F7DD732F46565662D7CE9D9831672E9E7EE619AC5DBB5680998B426343038E373763F1E2C502BEF3E7CD934569D1C205F8E177FF032525C5385A5B8BD56B2E456373336AEBEBB174C972ECDBBB17B66162D3C6D7B07CC9521CAB3D8645CB5760D78E9D183F6E1C1A1B1B71D38D37E06777FD0CD5532660DFDE7D98396D3ADEF5AEAB32522F4196219B7DA7C7C1E17384DEF1291F4A8FEF637F5D235CD29D4680A963AA4584CB8DE19E3D7BD0DDD589189DFE1C99664CEA91BEBA710BAA274CC52B7B0E62ED82C9981C4FC3A0892D34A925CF8BE3523BD2FBBBF70B8E836E68AA0B028F8E3A03899887471F7B04A61DC7FAA737E06B9FFB042ACB0AF0675FFD477CF50B9FC11FEF5F874BAF5C8B82C212CC9D33171D4D0DF8E92FEE466D731BFEEA4B9FC2F77EF45F9830753ABEF2E7B74836BC4F7EF22FF0C5AF7E055BB76FC7FE03075131A20A9FFBFCE7C57170CB473F8A7FFAA77FC02FFEFBE7F8BBBFFE1ABEF7DD6F63E78E1DF8CEFFFD36F2478CC23616927DF24F282BB691EAEDC6FEFA1E4C9D360533268DC1CCA953F01FDFF901565D76050AE2092C5F3E0FB7DCF211FCE4D6BB5158948069B9686AE84249693E0A8BF270D53B3E88871F7E10DD3D6D198765742B7D2A8026A213D4694193CF25886FD9B205CF3FFF3C5CD7C1F8F1E3D1D6D686499326A1BDA3031B37BE8A2BDF71255E78F165AC5AB95AAC095A7274722E5EBC100F3DF8200A0A929836653265D9D8B4750F8A8B92183FB6022F3CFB1C4ACAAAD1D4D48DCF7CF616DC79C7ED58BD7A311CD7C581C30D48E69560CD45CBB073DB6BF0BD340223819E548059B3660B2575E4E8511856125B77EEC7BC3933B1E5F557B060DE7CB11A972F5F2E2CCBA64D9BB07DFB762C5DBA542C674EA677BEEB2A34343460D2C40928CE4B62DDBA7B317AFC38CC9EB314CF3DFF02E6CC9E8DEECE66343735A0B878041A9ADA5058568EBAC65A4C9F32095B36BD8E0FDF7433EEFFEDBD282D2F434D6D2D0A8A0A3172743566CF9E838663B5D8B97DBBB463DEC2453870F020AEBDF65AB1B8B90BE1E240FE916D7CE699673067CE1CB1EE274F9A80DFDEFDDF58BA7409B6EDDC85254B97E3A5575E41D98811282FAFC0CEED3BD0DED28A919515983861826CAD17AF5C29F754565C22BE8BE5CB96E1B1471EC588F1A365B7505D5185CBD65EAE92D41273CCFE29A3E1038C43DD124D6EA9B40F622B0726BA8200871B9BD1D1DB8BAAD222549716232EEC9F8FDDBBF6A28B16347D4CCC926327D0E0D9786DDF514C5AB612EB37EFC59A91492C8977C92E89AC1A8D1F8EC11C40F779DE750D750135C4B661C1F37AE0B8295C7BDD0D98BB6019BEFFEFFF86EECE16DCFCF9BFC657BEF859EC7CFD357CECE31F4347AF87BC781E62E9767CEE2FFF166BAFBE0ED7BC7305AEBFF123F8C6B77F80A533C6C2320CBCFF9A1BF00FFFF40F22ADF9E297BE8CABDFFB7EFCEDDFFE1D6C3B869B6EBA01FFFAF57FC1CF7EF653FC9F6FFD6F3CFBCCD3F8ECA73F8B471F791877FDE237F8C0F51F42FD9183D8B96DA33810A7CE5B81CB2FBB0C66D08BD6C646FCEC97BFC1473FF917B002A0B0C0C22BAFBE846FFFDF5BF1EDEF7C0BAFBCFA1C5E7E6933FEFDDFBF8182C23CACB9E82A3CBEFE8FE8E9ED384167A92DE6530134396A5ACB23468C9041C4EFB4B7B76754016234F85455C4433EBB03050585B26BA01E9C8A0E7E87D6444141015A8E1F17E967221E87E3F848516520F4743A942DE6C17503949695A0BBAB1D011CD9C2DB89022A9750565282544F1B9DE268EDE886652785FAA00A87DBF69E942399FE0AF2E2707A7B51985F20967E6161A100344159288F50D9C07B2B2A2E462A9D42716101D8E88E8E3698311BB178A1502BC9441C81EC4C3CECD8B10B400233E7CE426FAA572894643C26D7E1B9A9DA217F44C78F158F212F3F1F5D6DED2A9B2059C7507E49A72B81D971A8F2005C4A24439F00DB979FAFEEABA5A116C9FC7CA49D344C2B8694E3209E501489A4E7F294239AFDCBEFA743D59015EAF34B8A8BD1DAD20A2B3F2974515141210A8B0A613068893C57CE821EE00AA072DF5022C5F99CF2811E8FC5A54915062849C4608B23D81380EEE97104A0391E0233861E3B1FAFD534E2D59A26380523B0ACC8C09523131248465A84738B3BBB050B16BC4979146DE0056741D7D613A04D91A97102E6E527B0EEFEFB306BEE52CC9C3201DD1DCDF8C30B1BB16CC912DCFFEB5F22EDA690760C7CE0EA0F60DEF4B178E4F1E73077E92A54151B78E4F1A770D12557A224E6224699146CDC7EC74F505C528A1B6EB8110F3FF298586ED5D5D578F0C107B1E6E2D5D8BCF90D5C7ED92572ED071F7800EF79F7D5A86D388E7B1F78002585F9F8E8876FC0B66D5B51505225562A8182C073F73DF7A2A5BD0BBEE360D5454B71C9256B70E8E011DC73CF3D9830613C6EBCF166A452E44E13B8EFDEDFE1BAEBAE851F38F2F007437168995A79797946FAA565679A9F8E4AD5A2722EE56C53C34B17D4CD48DB94870AA49C2D2B749688DC904013AA2CC489C7F692665165C624AD95687B55C51B5A1FA28E08AF132AF7F8B14A6F1591C569899D76146AEDB796BE8904D067508F9247392EB96BA5BC30696E8A32841F33D5ABF227125C0528459A670BE72B4DA1F6551C770C1072C5A32F1AEC50A3CD7ED2F2BAA8CC4FEF6CB2F240B5B5566D578E521D64A39CAFA11A260C7C60665C19CF5A19C2558D3C68E8A02525E205D42B850ECBD07F3B4094BAE00E535239E6C7099F43266A97F923C38C0B546FD127211302D8B977073ABB3BC549089F11CA31B81C87DCB6C492E87192E8AC3F84716509799FCF954E425AD00B172E1443E5642A8E0B0EA0EB1A1A5C7546510000200049444154A4DFC4692225ADD288C52DA9F547599D0483089FEB2261873EEF80BA525FC0D2B69348CBB3EB8561D15165C1777A2437B365DAB062319166893EDA8A094FCBB923123B9F9394166A4A30810E1F5A95D43F8B1C8F2B752FAD44EAA855208D254807B1A294D6DA80EBA6A57D0408FED02BCC874CD0A723CD32132A7A2D5045080603D03A228E1A4DF2C61A70952A4CA90594B39152210D88BABA7956879CD53A0BCE654047A9F542DD7998AD208C055196B568AB55549CE4E8962016AD0A51EA09514744C08B8E4A3EA98C0C2F1230A31126AAF638F177AE06047F95BD906D5116BE8A209511C0A2C1E17555702875EA0602EAE523CE2339948109A2A157578E120A99C54A4BE0C2FE8C6A944505A3B5E33A4252161D755DE93B06E09CF860144067648E2A5042B740DEE7B5D8759467E65E27EF8150ADA4D2FE86CF5F829CD402CDE72F8F87633F949CEEDEB70BDD3D1DC897DC38E4A1998C8D81676925DB74F360D1F0400ABE38EC95ECF4F8F1E3426F9D0C9CD9C80B0EA0EB1949C8AD89610A27CA008F9809A47C0B3689D3809183DCDA73DE7AEA69486875D692E17B12812C1255EA1BA99650323665C7A98929A1C02125A0408120CE7FB536991A583BB4729585A5020DC42453E945C374A3E1DAAD2216C30010ED00D461D0EA7B0449E50552C11E94F56435C87CFF541487BA1E904C72CB1D17303E31B0236B256B052E4FCFB673E1B1B8CDD3C09389E653E7142062ED30C1441549990D4AE1E7EA5ADADA544D611E12DA7FEC578217393C02A40AD737F9CC189E2F61E00A7CB426BABFA0141DD999B1AAA58A0E0D682EAC5EC602E67352A0479DB71CA00296B8B0CB24A5A5AC646DD2BB2138F3583B8C94944C85741B4964AA52D0E8A098EC62E7A988520960F061323294D6B658E059099E3E5E162F2B1B85496380C02BD18AE1B392C5A4CF4E820609ADE9E1943A6B38AE1399BC641C67A2B808FF47B34E3867A571E738945C3886856DDBB6A0A9E1182C5124D9F0641CFAF02C5F9C8A89A04076B3A6EDC1F019DDAAE626E71839688E8993A9382E40806E0A322946A94E24584BC5923047744475AB763B5A00ACB688922E29CCC92CE93168432B447E93737C20F9E925AB9ED64786E0AEE04C4F2565D9C93161218113077678F137552AD19652348A30AB283ED980D0007DAA55FDC4EB4713FCABC45399D00909C0602765894FE9FBF07D65656A678C8AE79429206C88B26CD52BCC3E284443981E3693DC8AA0CE6AEB74D0BCF99E070602CA532F3668864608339169FD71F894327FF639715FAD76562831704854012B2AFA5427D751BB87F062A155A78A49A89F4CCFF6C94B2E5FD3F2EA131A97B3A04F352694DE9CE0AB94FB993E660A87481F33B199C7374C0BB66123C1BCEC0890A67F811A24563B224D85184C2F2E94896F3952D554EF8424A0299485E6288EF0A9D4372880565B4FCAC76981B03395E52B53555754914003992EF209815881B2215557F83B7F344087F455F6F90F40CEA4CEAD4B6A6990E2C4631B95E2528D99F0481941CAB3AC2AAB88AD1C8924E177F83E37DAFAFD81C1943A6A008D3EE9E922E01C1EA3EF417F45AAC084FD295793FB5220A668067DFD907B1650E2D6918B940668F6532C6C2D45FE9C12FC2EE5930307C4E883CA66F0D6DF0FBDF9D2F97A915625CFFAEBA1930374DF4FC25E8E24CC917BCFE425C9463D66AE132E649A37D100ADFA2FFBD4C48088148ED0967D966EC905AA0C6C26A84E95DDAFF6AB069CF3228211F0E6ECF4D51FB2BB33F9AF0E5221F58C5EF8266D700BB6A7AC6AF2CF965076E1F923D183390B3A7C323535B5B2F1D4B38C734FA66264604BADBF30CB98CA4DA5C85196C852095058922AFB7B66029C4166CF30E15DD81C02810ECB25C8B265FC3B4C8023EDE4EF0AB06038DAB43AF15FBE2F56ABCA171D7DF5A53BFA0ED8930D94810DECFE8FCA5AB66A4792DD59848B5308327DDF57E35F5255090073D1CAE6EF561A6DA9809301685221FD03E229DBAF2D7C098BD7246498794EC05903B4DE2DBC95DE50DF8D522D1AA0152828158CFCE8454E28A3EC7D457766274BFA7EB6C6E75BBFD3F3EB0C99F918199302D22138EB11A07C1280E19960D24865A8D1D863621C3EC31E0434A0E84CF40C511AB9060DC2887F6200003D7AF4E8B762319D71E70FC945D9DA9A2347250B27FB9F966FC6EA08B7B6B2C9A48240B25165EB0AAA49A1F32F2BEB3BBAD154CEAB3024F744488CEE5123166A68A185F6B3B26D08CA7C84FCC9FEAE2C4465C567365D3A07B58034918C5554486EE9BF35D00FEE190D9CDAD0E78D2E0061C7462FD9F74987A39D695589D46AC086DCB1F69E07CAD1A6905CEF6E140BAD00984BAC025045A2A8BE622D9CE806FEA4832C82E16A4286A966254DAB0668A673E533E5F21CAEC6991266FD6C34A2EBC20046B706E1687227062E300028AA9AC93A5BFB3FA98C5F5D9F3462415B67C98018DCE839BF8FE6580895CF6280C9EE555200AB872B249A446432777BC83CC9000AEB8DC20D77E2266CDF81E9AB5D2C0D08CFF4C2CA496AE7A75FA73398A64D9B3680D174F6FB7D482E2A968BE7078C91A7851CA3B34E78896CF56BC5F5867F0B8884535EB6DAAAD9EABF2AAB9D721265362D91CDBBB287B204A2FEE69B102BDC9EF3B167DB13263E5519B20480543BB34F560F8AD0EA0BF8E0D91EC5D166817E700F6F50B91A64E046288148E18213AE2AB71C1248217068199340636812AA09A2CE275B46BDAF08FB5E81B95A086937ABA710D22302A30AF0F56B20009D59A1335FD2B520B3A58C94D5AEB9F4F0C0BE273F39C7D1EF03E86F2164A878C5880A71B4669A73AA7CC13A4D8AC6880C05C7020EAAC90492CC9A73063BBCC18D9EF3FB688E3FC9AF2ED588D4B8F48D00AE04F784554AC5925600ADE80F851196E8A55D3874720BB6F8B0FC380C563AB21CD1F7730E683FCB407BEA82731206046849AA8D10A0C3CA24B47E09B59932DA5A66A3805539079557F7C422647C3F14E4840E860C1EBD890FD5567066F3DAC7426475952C0FADE451BC3E1F2EDBA9E127C2C788834C5321B2048520CD0584D2BD810E85F0B8C1300499EDBF5EB04EE2808A027458BD8B002D478779B865132083BECFFB62488B7E43BB10430B5A6D361543AF16C9BEFCF9C0003A5C84F5E6441638FEA1CFCCBFB2EF651D767DFAB5BF7E3B4DDF9FA0CC300C09A1AF0C015A9F4EAB7F4261885AA735B91C2E6072EFA195A74C02E52F1140103A4E5982041BE9A5CC42AA7C18629064EE5FE7B9CA9A1DEA43E5BC8DBE04FCD9538A810B8D15A5C936C2F26DDA07C10557B547AD1C6AB9D6171DE4183D47876B0B9AC06CFB6ABCD17A26D7CC71C92E568E4202B4026FD360EA5F0B96AFA4750468D7225FED2A800E2C78A6A3C408E1181F4CF32F3C80160D58C69E1B4C5F9DD36343FB326B699E3815B4FBB29F3664BF99FD30AB3C39A78D969367D52683B9D69B5A1DBE31E0F70773B1411DDB5F7F2AB07B6B0ED4D33782003DA25C25A9123DB6D4C92467AF803460DA5ACF459239C23D1601B2C53AA6049450E791EE126061CA4B214825902661262562368805303C2EFAAAFEA66FF60854D2FAF37C4B0517191E1C8325D768456A9A4F296484680B33E2F1775FA2197DE43954D204024E2C1DC71212A6DF1B169BE077E388F3BAA0F2C191B6F17C043505D867E2D83D7D7F9EC9117AA12298EAA79EB1C9FA28B5942840CD35BD0B14FB2E637FA95DA0F21B9DD9E8B9F0007AF024EB993CE7DC77723D30E81E10802E2B432CAE2AED5053CB4DB7728492C2F2E47F3673968B3F995BEB009E945FE3DFCCA346B0A0984B297824A882013596C0A330A2DC25CADBA6C06CB837B14427C39C32122024E9593DB11E2DC60804363C46808685217CCB861B3A3413928D8DCA06A50B367C0658057019394A791A532B505D498ED6244FCB95801257D202C30BA007FDD0CEF11772007D8E3B3877FA5C0F0CB4071440974BFA5372F12C7F462B98F440E0C69010DC2485159360169BD49AE72288113C59F32EA5822024F4DB02989FD86718B12311841262CC0458BE0F8F5579EC84142596326FB0608679525C568263C08CE1C363CA5AD742CCB7E45883741B2D738B414C74E64AD48CDC2203A5A4F005CFCFA01809EE8949D42E1712F1ABB00832819DF41BEF2B0CA91E681F5D68C7E500FA427BE2B9FB1DB63D408066D6BA984D8066D425A90D715B01669EE4FA26D0F5C243CC60A161153599320C38868F98E18A554A0A83E5D93CA601302DC445FEA52C5C265BA2A5CCC843CF2419A1E809FAA1854FB57C3848C064A10982AD41E0B6D422C1A34D0781E521CD7C14B4E5030B0E65A901291213A6D7058311B1661C1E2D75522EC217F08E68462B073679DBCCF67FD83E91A16F580EA087FE19E45A90EB01E90101E8B211B0E3AA928D68894C575401293F0F9B0F1DC3D809A351650135F58DC82FAB40257D538C5E630E10AF5734B70C83776D03BB1B8FA3644405CA8D5E98BE0DDFCA037C077104E84CB958BFEB200A8A8B60F6A6B070E64C141ACC57DC0327518098CB2A201E6AD3060AEC380A186D6B2B30A7F829E57A68696A911C312D6E0A13478F45CC49B3C4808442D35A4FD0CA6638BE70DBE4D229355332560DD002DC8375645F40E32507D017D0C3CEDDEAF0EE016541974BC22DBE62BE299C6DDA32D0E9E5E3AE675E835F58882FAD5D88F52F6D42C58C299859508896DA3AA13C465755206EC5D0D6D28ADAE606EC69EDC0C4793331362F86969A26C46345A8AC2840DCE9417D5B177EB56D1F2E5FBD18BDF55D786DC3067CE283EF83954A61D7A1439830B20289FC7CDCF1E48B985655894B664E468BD78BFA86364C193316AE67A0B7B31BF52DCD38D0711CAB972E44C3DE8328CC8F614C4539EC745AC57A32302914F7280B5CE988A92C516A921C409F6A54E6007A78CFD95CEB2EA01E20409795D382563C7122D48CF75A369A61E3F9BD0DD8535B878B668D46434727AAA64C40FDD114DC861A54240C1CA86FC4ACA52BB069E3765C3A732C1E7E69032E7AFF5AECDCD786B2740F7A8ED561FCCC09583E792C5AEB1BB06ED7015CBB76352A61E0B6479EC682C54BB1F1D9E7B16AC10CEC3978108B2E5D8A4737ECC692EA4ACC2E2BC5DDEBD7A372EA421CAD3D8E6B2E9F823D9B0F624469110EB776209DB450525E81EEDAA358503D12D3CA99D03E0597E6B6A5B2228A7055386856BAB66148442C017AF8A83886DB70CB01F4707B22B9F65CB03D20003DA20C71164A60C63EF2C6868DB41947BB6FE3C51D073165E174FCE14F4F21595C8485CB66E3E13F6CC6A7DF7D1146270CDCFAA7E7E0E45763E9DC6A2CCA4F62FD1B5B50346B227EB1EE65DCBC7609E2ED9D385C7310D7AFB9081D0D4D58B76D073E78D525280C4CFCF8F10D88578E859D7630BFCAC4A123473165F17CBCB1AB0E2BC68EC484823C3C79E81052455578EAE9D7F085EB97E0F0B643A828CAC7E1960E948EAE46636B37F26C0FCBC68D41351CC4DC4E04311329910CC6956430B4A24D3F9653710C60A4E7007A009D943B24D7036F470F288AA35492B9D3B94606809234D788A1BB278E5776ECC6EC15B3D0D0D689BB1FF8136EBEF92ABCF8E201AC9D351693AA4AF1DD077E87F1B317A3C4CAC315D32A70DFFA673075F5123CF4E81BB8EEAA5528365C341F398A259326E2787D231EDCB113D75C7D05F6EFDC276599E62C5F8CC3358DF8C09289A8AB6F42C9C89178F9D55D583E612C9CF6663C5B578F194B57E0DE754FE02BD7AFC081AD7B505E988763ADBD983079060A8A0CEC3DD48232B70BAB275723E675C3B17CA49983422C66EAA8C39067F2D0B4A07332BB530EAD1C40BF1D332F778D5C0F0CA00708D015AC05198F878A6552002CEEE0C2718AB1F7680D468EAB4641C2C6ABDB77A37AF26494C62D3CF3E246B4A5BAB07AE51254968FC0734FBF2015D6118B61E9B2C5303D032FBDF2AA1480B864E13C8C2E2E40472A8D9F3EF52C627905185354842B972D15A7E46BDBB7A2A641D5585CB97C198E377563E38BCF63ED6597E2D1D7B7C08B17A3BBA3131FBC7C1E9A0E1F415E2286960E075E5E01F61EAE912217572E9A87729F4EC694241272A804A1CA431C9F94E0A9906715AB97A337721C74A407825CA0CA00A02277C850F480D24157C08A33FA8E0127B4309D30DF754C74D192DB8FCE433B8EB4CF90EE00012B9A1B012CA707B604A5C4E1B01C172D56AA28021BBECD1C113E620E93F850E86C209D2850DFF303E4F7F60AEFEDB322107F3C5F2479CC771CB70CB8E93482780C8E94D83260A628C663CAAA001EA576B625CE4CB627964E23CEEA4160C27A06A730288541350C9566F2AB306D6F2E37C8698759CE823E6D17E50EC8F5C0DBD3035BB76E43597905E2319644A2A44D0135E5692A631F256BACB8C2506DFE8FD6A7AD6A0E3236DB7354A635D3822B55839881CD86EBC5C439C702A7F4D049FC0BABF2F02B4C1064FA92A58D117F5211C473E53A22F4E341AC7EC3D42E6E0AFC85D91224B045624F54D93387FC3283651825E805520351441C4AFD0CCB6068B7CAA92CD546CC407EA8E6C8BD4EDE033980CE8D8E5C0F0C931E501CF408C4241787AAFFA89214A9E2057C4FA5220DDF973C10444E09F98011A424308521D8C44786A1488E083FAE127A09404BB85F08D290325FB0C2F25E52D98BE5B774642097002E0EA654ABB62C55EACD60997616DBE575188CC2F34A522B43405782533CD688D4499A780E43F280B0982E53AC7251A0E48E7548242AD2B64F59FA69983CA2B7BD1939807EDBBB3C77C15C0FF4DF035A074D2761B490AC805F08D8BA66A3543697A443524613362303FD9444F149AD4D29344E25088192259798B343E71557D767CD4D55E95CCAA8ABC83EFE97F51833694E7DA13B6C9BB407230D6320A60B28FB2C861C87C3A2C98C966178B700B44A764BEB5D650FA1354F27A12AF7C4058596B94A36145ADA7DEA66E6C688EA811C40E74642AE0786490F9C0AA03560D2824E330844786226295296AAAAD012A6C8B5543E69DFF5108FC7F1C4FA273065CA148C1B3F4EA2FC68814BBE0E46F78596B9048DA85475F07D172FBFFC0A66CD9A8392922295E6D530E18456B3695AAAF8AF1FA0A9B109955595C24BBB8EC48BAB94A6643A4875300708091AD793A2CC3CB76DC64470175D84A295D687C9E31816CDC801F4B0780CB946E47A200CF52E67B2A4FE2DE8D6D656747676A2A8A808A5A5A5686A6A8293EE4549692962F1189A1A5B85022170575757CBBF6DEDED282C480885C06AEE1D1D1D30CD382A465489C57DFC783D6CCB4245E558016BDB36E07A297475A6505A3602B53547C5F27579CE716391EE4DA1B9E9387CD394CC7B3FFAFEF771C39FDD8CF2F2327476B4C349A75152528EBC8202D4D6D6C9398B8A0A2542B2ABAB0BC75B5A609B36CACB4A60DB266AEB1A6411E1E77C298B3EF7D23D9003E8DC58C8F5C030E9815359D03D3D3D78ECB1C7306FDE3C01DA442281BABA3A8C193D0A478E1EC182C58BF0DDEFFC101FF9F047F0D20BCFE3CA2BDF21E0DCDED581DE5427468EA8C0D62D5BB160D142D4D51EC7FC790BF1E28B4F63CCD82A343634A2B878242E5ABD1AAEDB032B16E00F8FADC7CA956B70EB0F7F884BD7ACC6A1C307317DCE7C34D5D761545525BA7D605CF528DCF3AB5FE0FDD77D10B66DE1E8C10352B2ABB1A9050B97ACC4F7BEFF3D5C7FFD3578FEB9A7F0B15B3E86679F7B0963C64E42477B3B2ACB8BB06DF3464C9E3A13F58D8D18376E1C66CC98213B819C359D1D9039801E269333D78C5C0F9C0AA05DD7C58B2FBE88CD9B37E3E28B2F467D7DBD58A4C9988DE6F666AC7DE73BF0D8234FE2339FFA349A8F37E29E7BEEC1D469D3B164F912BCFADA4B081C47B2E45D71C55AA41D0379C902FCE557BF8835972C472A954247872F00B965EB462C5EB600AD2D1D58B17C357E76E79DF8EC5FFC390E1D3E842D3BF762C9C20578ECE107912CABC4B5EFBF1AFF7DE7EDF8F4E7BF2096FDA30FFD4E9231054602575CF501FCF6BEFBF0D5AF7E06B7FFE407B8ECB2CBB073D741AC5EF30E14E4E7A3B9FE307E7AD77F61F6DC85686E6943414101AEBDF65AA16F72AF1C40E7C640AE07865D0F9C0AA01DC7114A63E4C891B8EDB6DBC492A6D5396EEC68B4B4B5C08CDB78E0FEC7F0A98F7F0231CBC20F7EF8038CACAEC67BDEF75E3CFDCC7A549597E1B55736E2E69B6FC2DEBD87515D3D16F7DF7F0F6EBAE93A710A767604183D7A34EC18B5CB293CF6E8E358B5720D7E7E1701FA933870E020B6ECDA8B8B562C474949215EDBB203F989185E7DF179DCF8E18FE08D37DE40655909AA4655E2C9F5CF61CD6557E1B7EBD60940DF71FB0FB176ED5ABCB17917162F5D0D27954663DD416CDFBA111FBAF1C348A55DA16348DB685E5DF3D37D9DA5A7B3AE6981EBA2BB7DBF3BEC1EF8001A94B3A007D049B943723DF076F4C0A9009AC0B565CB1671AC15171763C28409929E948EB7445E0263C74FC09EDD07B060FE02AAE6B07FFF7EA41C173366CEC0DE7D3B50555181B696361CABAD45CCCEC3ECD9F3D0D3D386030777239D4A63CA94B9A8A8AC90E4FECC087DE4F0318C1E3D11DB36BF8145F3E7A0BDBD0D75CD6D48D8163ADA5AD1131858306736EA8E1E46634B2B2AAB2AD0D2D8A07288C4F23071CA4CECD9B3074B96CCC7E6CD1BC549D9D2DA8963B58D22A79B3D630ADC5427F61D3822CA137E5E525222F446B4D279F4EFFE2A606B550B9F8F9225AA57F4F7B7E3D99DAB6BE400FA5CF56CEEBCB91E18640F9C4E6647071AC14B6B8669298AC68E0A0A8FE5AE62E2642390493E694AEF442297554C284063E27E06095205E2ABE4FD9EAD3420810B532ACED251497DB4AF825A6C1B69DF43CCB4E0A41D98F1047812566181AD026B24B528AF6BD82A809BD23BB64F17F60D98D82E8680118A3CD6776032D31D152711CB37CA4347EF876DD780CDD3EBCFA2601C2DC4FB3F01A873003DC849943B3CD703E7AA074E07D0046672B4FC57C9EA426B31D42E53FFC008424AE2A4D0298F11C064515825C3531AE7B09A49A06A090A208ACC4EE9E32885E33122A7A37E5A6A0E32F2C554E5AB2CD64464815A9E5B05BEA8C2ED61E56FD16CF37B0C3B67860F5E538135B5D7AA7D59B08D82B006DEBE20ADA90FFD39FFE5317A21E2DF3C46EBC3FB5AE2E7EA999DEBF3E600FA5CF770EEFCB91E18600F9C0AA0F52968351384C8490BB0B1ECAB1B88748D793B98E7C263F0475891450246CC245CDF95A84082A5C54840021C43BA4D43E991791C0BC1327787D42F540B00C19AEF13540316919524FBA658E5AE43B025887BCA2AA625CEFC1C6C97EB23C6A016C9C7A18E13C33CD461335085750F696A1358A3C02B581F06E6E8DD4054071EE5A9D91F1AA8294FD4FDC2F734F00FB0FB87E56139801E968FE56C364A9585CFD415CAD074D12C62E789F6542A5DAB0D73A6B27DE477DE110390F9220449804518BEA162EEFAEB87B3D9D76FED5CA7036802D34B2FBD24804425876CF9A91BF659391B787DE3CB98B76801D2AE8FFCBC7CB84E2FD2BD691CD87308B3E6CD830707B615C7B1DA1A74767562FA94A9028EFC71D2296C7E6333962E5D269C30ADF454AA17797909A41D0FBB76EFC2F8B163909757887822893FFDF1115C71C53BA4B415230993F124528E033B2F0627E52066C410B3633870703F468F1B0DD771908C25E132C9522209DFF2B179EB66CC9C3E4BEE835AE8DEDE5EB4B4B4C8DF1515E4C3036907258694EF516D42108E822F8F2710E7E7E763EFDEBD98366D9A7C475BD6E77B6EB41C40BFB53935CCBFCD782DC671313C4C594DCA54092B2C67DEE067E41B2368F736DF597F1E7765D9E994678C5C53DB70666593FC10612A0A02310DB82ED743636FAF843D57E62591E4B65C724778924A53B6F1BAFE92AE902D303E3C5EA702E8B6B6363CFFFCF3A281A693ADB2B25274D017AFB954246EF3E6CEC67FFFFCE798366DAA2C4994E111BCA74F9F81D7376EC2751FBC1E8D4D4DD8BE6D8B009DB63A7564229D8EC78E1D93CF088E04C5B2B2323436360A2852D23773E64C1C3A74480265D89EABAFBE1AAFBEFA6A065493C9243ABA3A85A3EEECE8C0AA55AB44DDC1F612388FD5D488239094C9254C5FFAE8A302C6EDEDED983469925C9FE7183162842856D8B683070F62C18205387CF8B01CD3D6D621C99CDADA5A71E38D3762CF9EDD3874E86028CF3370D965970BD8339F885029E7793AD31C400F8FB9798E5AA1427FC3D4376126317529499E231B5E41EC8C457A8E1A32A8D39E00D6D278D91BABB9161AC1746089734900DBC0E1A6E3A869EE86A40A62D1D4EE4E2C9B3B0B098B5F51FCABDC6540A80EE956FDDB30295A7A2A803E7EFC3876EEDC29C045CDF0A851A304DC36BDB105EF7ED7554824E278E28927306244392CD3106B3495763061C2445153AC5CB90A058545F8E31F1E159024D81D3D7A54AC4D5A9FEC73022581995188353535983871A25C73EEDCB902D4858585D8B76F9F5C97DF2300D382E5F9C98D73D1E075290524B86EDAB40953A74E95EB2C5CB810070E1C10F0E467047B2E386C8B80B6E7C982C3F372813872E488003B178C6BAEB9060F3EF8A09C23954AA3B6B6569EE7CA952B71F8F0211C3B5623CA163A44B903E0391438F3C19EDFF9A673003D28E838BF0E56C09C1DA2D92D7F08D2DA98E69F19C01E1A8BF2A49A557D13D26466630B2D696EED990C1EC0F1DE5E6C3E5C83B163C7E0E97BD661F498F198BD680E366FDB8977AD59853C8349E309D06A29E229B989C8DCE97900D0EC1F02167F08403A24BAA797A1D5C57257B472F92F79651E4790221D41AB3BBFA050002B9DEAC97C9F604AB024E0F25F8230C18F80CCEB1134F5E7DA01177D4E045B02A8E6816518313748A8242168F318CD236B6A82C769BE587F47F3CA5195862CCD4190A137146D41FA422DB8CA52F6E487DFE7D088C5E2619E1272D05497287EFB7C7DE500FA7C7D720368B7C6360D4802D6069D452AD398501AA181CAC29DBEE1B3DE7258E96200173847874479434E465FD256EA5C6B9280131E5C58B0E004168EB477A1A6A60E0FFEE66ED41CDA2715A73FFAE9CFA36CF27854E52730A9AC445A4A4056654AC36C6F4348E9F4D775A7E3A065890A4153EEC734E1FA5446D031A79C65920429FC8CA9444973089DC1674E399CA79D7FBE005CD4A9A6F95DADA088EA9109C27D1D7051A544147CF93BCFC54522FA8ACAE1A4EDB2882840D70B80FE5D7F4F5F5724857AB88699EFB4EC50B7837F6BCA462F1AE77B6E8F1C409F2390191EA7151220EB2094DCC204682654271F4B1DADE26903E6E7359849D81E3280EE2FC526A9182E1B02AA4120CA0397E1C4411AAE1320B00AB0ABCD41BAB515BFF9AFEFA3BBBB0D2927C0F2CBAEC41537BC0F6E4B1BE68F1AA913B5A96C6D1AA087C743CAB4E27400AD9D661AD8646D5509E854AAD0508D41299C8021E99F30B78576AE46C9ACFE762D513DB2B660A3D17B51ED71EE0DDB5D0000200049444154D4AAD660A9178E6850495F479D0E2ED1117FBA03F4FB5150D5CE3EDDAEE8A2A1AFCFEF472D6FBD109C2EEA70983DFE7E9B9303E8F3E1299D711B0945610E5E99C6946211B469D9F0FD98E2646586ABF78D8CFEE18C2FFA96BFC849C9ED312DB6DE544A1C806C63D2B011B32D183103A6C52D6C028E61E3707B278ED5D461DB2BAFE2F13F3C8AFCA2127CEDEFFF1A87DADA70F1ECD918499998CC6225EFE0A657AC4CBD83380F280E0D40517582BC474A833B8C30D08389F575FA516A9E65932079A3952F82001DD50B47F5D4EC229D0D4F07854441BA6F22237D6CDF6092BE0A0ABD1068C0D4FF46A574FD59CA995D824BA99FDA2168F0E577A36D8D82BC5E104E4A9BBDE511FAF69D2007D06F5F5F9FD32B45077B661087502C600420ED078899AA54A7CB01AEDD2852022974152A736CC0AF7EADDE308A8D27D10070226DA122DBA4B2869679398EFCAD23E5B8FDD63FD29850432BBF8B764E59D57412F6063E5EDD7B18F9A5C528B0F3E0F829347675C0EAE9C1AA99D39114CB324479FE26E433551D0AB20673BF03EE983338F07416B406CBA8BEF76420D4375063B88255B45DFDB5B12FB847170C6D39F7B5D0CFA0EB87ED5772003D6C1FCDE01A161DA47D013A05A0A69DD22A17D5A5052860C86D08CA625B3171BB447AA964EB3A34F7542D88F289FADA0457EDC8EADB9EBE5B5ECD3DEAC00BCD31462D2485C551991DDF50DA3AA997A702DF582C0FCDAE896D876B903412F090465E7E1CB3465649515356C5A6E59891D9F156E5DB2CC544567A78BC0692B05FB7B4AF951A7D3FDA87FDFD3E3CEE7660AD88521C510B5CD32151A7E4C0CE787E1D9503E8F3EB799DB2B57DAD68425947CAC193AFEF4241F5582462166AF6EFC4A58BE660647E3E4C3F04385AAE16950ECCE610B21D7DAEA427870661521012E0E05047A11C565417D0EA5532A76C29233D89A2DBE628A0F4059B28F8F3386EE355CD3D559E89E59B849AE12E40AEE3C2830D2E4474DAD39FC4DD414C8C661EAF9C5516397702BBD0EE1AE28746B5D2DF833C1D4047B5CB7D77249AB7ED4B03682BF37C19E6512B3A4A85F4A5534EC6639F2FF739D076E6007AA03D751E1CA707B7F6A8F7027862672D8AE3015A8E1C444F470FE65EB41C1B77EEC77B562E40B1E9C122A279615922E16569712AB580B68635F5A08196004C2F3DFF8D7AD7A35D14F5EA8B4D1E26F0893A70A2C7472DEC13AD41DAB98A8AB0323A6806AA78E8A07AE35803108BC34BA7D178AC0EA3C64F10AD6C7B7B27F28AF3918C9BE86A3B8EE5CB960924F39BAA167620F77ABE501C7A11D32A8E6C7FAA808C6CA15772B5BAE02CA924CDDB865AF2611498A3C7851E139AF252F239D5EE68D4A0EA03B5AFA2844E49F3B47854CE16D9FD0DCFFB1D2C8CE4007AB03D368C8FEF0BD06D8E87DFBFBA155D8DC7F0D4FDF7C1F603CC5DB10297BCF76AC99D30B5BA1CF9BE038B9A5715E2A13297994A17AB7FB475D6977E885A677D01F664807B3A8BEEC4EF29158A025553723928679FCABA565F730C5DDD291C6A6842AAAB03E585F908622652BD3E3CDF44A2A4141D4D8D284AC6B06ACD4561584AA883D63B8541F0EDE7FAD10F84837EB33281098354CD40F5990230F5CA02960455EA2AE0E7FA460671FEA8C5AC7767AC16137548469523A4E908CE5C84383E993B84B94214D82B7DF489F73E7C764883E896CCA139803E935E3BCD77B2F2DA48E85B386754F45E3696ED6C5E3E4A71F0BC8D1D9DD878A4166FBCFA1AB63EFB0C6CC347D5E86A7CFE2FBF8AADFB0EE3E28573502040A5D23E42B29C655FFDF1DA0369EF401C52FD01FA9B796D5A518A8C20406BE851444700782ED229071E130581A930F92E83596C18561C0E7967CF438CFF26949243941BC30894A3FD793A80960A2AC9642621BD72A8320F8789969656E1AB189E4DF012D0169E5E297914E3A4A4780266C2DDAB4C25D9F1A85BA3922D650E19C8433F0BC7B06DA4CC6841EB17C19951944CE6CF484746193A4E1A9D9D5D72AF8EA3005BEF284E8C1C0C73019C85B60DD52972007D967B3E541E87369FAFF247844A012A0E0820B2D10EF9D033018BFEBCD6191DAC5851AEE85F53A6855F3CF11C2A9379F8D36F1F428FD38D2BDEFF2E548C1D8DD9E327A1BA305F38676616532A87508825E750DBE4FE2CE1B3DC65A73C9D8A04A3A3D094643807F61F94CA1F4C9E934C24D0DDD58DAEEE5E24F312E8EC68C3CCD9B370E4C85114E417E0785B9B64552BC84F0A7875F774232F9184E3BA282E2E92C843665E1B2E2F05D0157D8AC62A2B9860BC61C3CBA8AE1E255B7B866413B866CF9A8BCEF63678BE8BDAC6268C1A558192C2221860063B033B76EEC0A20533D0DCD282FC82128CA9AE04635528A89494A2FC4DD28B6AC7AB1AAF56C0237C78F27E644DD3BB186DAB660C8FF0316903F60C3A5559D004682EA98A16A395BC6DDB360947EFECEC861D8BCBEF4D4D8D282B2B41616191245FAAA9A945555595848D937A63BE0E91827358EB95FD246DCA046CC971CAE371AE56F181B447ADA0AA059523AB86C49C18928BCA7DF7876E6730984EF695D03E11CB45863651595C562A4F0F013AEBF01ABCC4EBA45402A793EF23EDD079E78A2ED64F24B1B7A51D758DCDC81760726025E3B09C5EAC62D62F4AEB18B841B3321C107DB5AA511EF02C76D3804FA5B7BA6C07CB2E710DE1046C6E6EC6983163D0DADA0E6A7F351F5E545C80AEAE6EF4F4F6CA82A31D96EC375A66FC5E322F0F6565A5A8ACA8082DCB0137E79C1EF866800E672A20392E76EFDE8DCECE0E4C9D3A4540BAA1A10163C78E87934AE1E8E123309371545694A2A9A101458595088C18EA1AEAB074D10CECDBCFBEB3B070C11CF8812171987C11A04D82B10C551B9E61CB2E4301B42B7FBF1D00AD9D7EF47B6880D677DFDDD5850D1B3660D6AC39A8ADAB17F46291DA8E8E368C1A552DD5C3C78D9B2006C5B871E305E42D4BEDB334F89E0AA4A3004DA7B27A9D23881ACC0E2E00AA72007D36E75C6885CA2AAC86BF3C6F9D0C5D246DEA13A54818DC38E86BD546D71A0219B780B42CB5A2827286CE204073770F761DAB45CA4963F2983118575488227296E24C0ADBC0506AC169ED6052CD1B6A0B5AB7412F14D265929B38EA08535B7AE971096D5609E3D577B3E58FD4EFD9E7AD542567F3F9BFB573BD19A0B3E62833D6F119B7B6B6A2B8B850F26B7477F7A2A0B01805C924DADB5AC16255AC52523D72240E1DAC454151191C378D823C80393BF2F28A503DAA2203D04A1FEFC120184B84A52D202D794A585965C8005A511C519F0A1329959797E3C081432828C81780E63326D53172E42834361E17EB9999F094E5CD31C29D6AF69908A3D3CF6B20C7BCB5277BE6DFCE511C67DE77FD7C5303B4629A694367784F728199ED6008DC8300E82850EADF396125DA8ED6224CD9B66B6FBF067F12043E2D22BE41AF3713D998617E3756C490B06F1F8EA72A75506827A58EA4AD0A04FB2A324EE4F9CE2D4510BD767F9C7856D5103234C2B7AA68399D1758817A76769E29B77E56874A3F273B1D07AD658A3AB190E4AD9000A34095AD621A565637115F590CA6CD7C1864E27B85CEF0034BC0984E5779F24201E8407A3ED5908E9335DB8329795022696ACF61079C6841C74F906946952BB1181D884C8CC4E2B01C9BCA24E5FD657968064851E171A264F464007D0E6FEB2D9F3A07D06FB90BFB9E20BB45D2D5D8D4B00F3DEADA9A1EE44E2AE3DC09B39A9183E48B7C2B338A7141709D3452E9344A4BCB24593A7F9F3E7D0AB66FDD81CA111538B4EF000ACA8A112FCA47CA75E598D6C626941617A1BDA70BC9823C2460A1A7AB1B0B172E00BDE9DAEA540017F590EBFB3EB7001D9D747D6BD0658136DA36D5AEBE6A87BE8ECB289573D687C0199E70203AE8BE0B8D410769C0884C17763C26748FD41134E2E287901250CCF927FE045DED4048B6B095CA94D0651054CE3F95A25505889FDBE7ABC71477454ADAE9A90C78DA828E3C4BB5C652AD425B83CE41BD28EBF7958A458059FC9C598A43CC8D01EC96B2FDA292720DF52B07D067FB09F4D95269A193A835A3CF7B008325DA340D46740C7100D39BCFD7860DAFA0BEBE0179F9F902A87CB92E5345AA4C618B16CEC7ABAFBC06CF0FD0D1D585A2B212049681C07331BA6A24766DDF8144320FC99262D88938CC942396D345175D84A2A2828CDC290BD07D07EDB99DC0510E5A26591FE765B48FA232C0682083FE5EDF47DD3720E66C0F85C19EEF741674DF124EB2BB892A31987B83F44E8635269805AA36A186E02CA795016821B6B433F64D12BD73FB7C75EAAA2840C7E2340C948350C67D267B1D2D63B52B0DE8DC14B9A5A6BA4869E84995CDD921DB477DA7039873D105492D5C43FBCA01F459EC7F256D0A6782EF86BC0233C829317D36BD27493E355AA2965D74EB1D05223A4EC83912ACC8C3F5F7521687B21C18E5C7014FF995E7A56058069C709CB32A735C6449AAE0663A9D423296276D9482A2A79C8F7AB989B6E05C4FE0413EA0C11A3D0398B4836CC1191F7E2A802695C59D5234C56686979714A3DCE62BC052811C063CE68EB66C780272AAB28E1A8B2A67B4244D0ACD4DF53DE59350E755832953E43503DCCA69F1E6053B6A8A0CA60B941495E395A9535DD7473CA60255B4C2868B07DBC9C50786E88E008379A06945ABF1A7683955C59CD4075FD1C5BDBF85BD3F5D3FA5A6A4476C2B4C819A99D03CA32A761B3DAF4A57A52C77452F4A7281B04DF40978617E6A46B3EAE4552A2BB93A5EF5B1EE53D9CF48908E2AB63B79D2842119A14372D11010073B854F39DADEE444F3A9DF08073739416E33657B458DB1760CAA4C103295FAB44673C87C480465BD15A7C5CCC178B2FCB6E17C82EF05D8B56BB77CB7A4B818C7EBEA112B48A0786405DA8F37A3209184159830ED38D28E23C7CD99390BF1BCB82C1AE1BA71927B7EFB298E814FF5B06D03D9C7464F3A6423F1CD77763A0B9ADF88523799B1422B526A137262AB1458945A1A521A8C5676A86FE7A21C52557CCE921B5A00459F57298C644C33317E48CD69D0572D5640A801FDAD07869C08D01E019A1674184948702650133499AB9C8E4C716852BB2FE0AC0C0DE1D87DAA3BC8BBA7A5A5043F05A86A6CA8F328EB3A6A1845FD1C328FC2EF4AE08B04BFE88C80EA5CAA8FD50C36994A200C14123A4E7D3BFC4C596BD1BE328C98CA2CC842BA6AC9CCD03119795F48E5F0318CACAA1892113A24173D9B00DD97D3CC58BF46801E184885AB683E022464FB9875C044B596921E923C61386868D5688F3D6BBFF1A513A96B2751BF16B4F64F1A90A00596462A2D2E41E7F1767831136563AAD0DDDE0EDBF5D1DEDA81B2912351535787DE9E5E2C993F1F166B4399CAE83FFDC3198E0567CFD4821BF81270AE8F3C1540EB2D7F5FCB50D11C814828130C79770218D401FBACCD487A83CAA13CB1D298A3440A7F49156E876A6749BD2AD9C199EC5E1E3C2B77B32F2DB8E25C0ECB8599EA98749A1236EA8CB58725BA682B481FDCEBCD00CDAA28E2F4F41C09C4E11C49C4188C44808EAB44FFCC5F2ED55428CBA3EA43A977141B42EE9D65B94C29A04B0026FD97EAE9956355F51525C1E43D7177C239C69DA77E9FFFFA727D75AFEAFD985085199E9E8B1C35E482E0AA008129518DAA0801C15D392B1510B35A3A6B188873D6601E19FEED885124D67CB8D3763CA657652A60A0AA72C4E9A7E3E03A7C40470FC945CF04A0DF6421F7B93D5935431ECC370CD07577B03B85970EB7A3B228814595F91813B761691357EEDC9749405D2AE59AD104441C2404660E98BE8BC0A97A364A8F642C020E56D7811BB324E0807614B5CF6C02ABA77822ADF211E3273A93DD903D99018D9BFFD1079D4A66C771C17A809491C56296EC7C4879C8B384813163C7A2EEE831E4E717A3B9AD15C93C0B85F909B4B7B563D4E829282A2AC4EE5DDBB9838793EAC5C47163D0D0D08458220FB1781E6A8ED5A2E6C861CC9B3353E498070ED7E08A775C85E3F5C770F0C07E548D1C85BBEFBE1BFFFCCFFF82AEEE9E30078BE6BB95A578664E455D3EC180173050C5433C460B5A011FCFD9D3D5893F3CF628C84D1F6FEDC1656B2F47797931DA3BDA2470E7D08183D8B2651B56AE58898EF6768930ECECEAC073CF3F874B2FBF02D563C6E29BDFFC26BEF6D5AFE2F6DB6FC79CD9B3B068C142DC76DBADB063163EF6B18FE1473FFE31D6AC5983E2E2526CDBBA45EA1C7EF9CB5F96E2BB0C8C61EDC59A9A6398BF70219A9BDBD1DCD626CED835AB5749D1DA8E8E4EA5CB6F6B473299270652221E135F106B3CF27C9595ACB5588B8A2A150DE9A61D8C1F3F0EC9441C5BB66C5121EB868931E3C6E2D8B15A54565461DAD4C943322387E4A2670AD0279368F505EFB461E058DAC17FFCF10D3CB5AF054536F0C955D370D3A289A02D2C369EA1EC0015B867A0A7B72753FAE784FCC77DA0A87FB95BF620D9BA85DCA00AEFE5021EF28E2C2FA4F669928F4306BE845047DB144AFF86ECC9FC8FC6DE01DDDCA902551860B37EFD7AD4D7D7C99698C55819BCF1898FDF82E75F7C490AC23ADDBD282DABC0FA279FC6473E76039E7FF649E1730B4AAA71E9256B70EB8F7F806BAEFB005E7B75034A0AF2D1D4D8847113A760D3E6EDB8F683D7E1B777FF0A17AD5886FD870F61F4B889983E73369CEE0E3CFCF0EF71CD35D7E2FEFBEFC7DFFCEDDF8915AD39E8ACD2E16C02745C516D818F82641C3FFED18F505E5686445E1EEA8F77A0A0A808A954373A3BDBA5606E5B6B1B366E7C1D25C52512594A3D347D2BFBF6EDC7873FFE09B89E872D5B3623D5CDB9E648D18799D367E00F7F780C13268E97809F8E8E0EBCFBDDEFC288119578FEF9E7049459517CCAE4C9D8BD6B17962C5B26E05B545282CD9B77A027D58BA54B1663FC9851D8B8712366CF9E23FD3376EC3858764C8AEE5EBCFA22A93ACE4595DAEDDDBB77A2ABDBC1ECB9B3B17BD74E94141563FAB4A9983D7B16BEF5AD6F61D9B2E5122979ACAE1613274E92E8C8BFFAEA978764460EC945CF04A0A3338B80C6E49AFC69ED48A1B9A911ED6D6D121C52513512C9927C1C6EEFC6371FDF83CEAA69483ADD981B1CC7D72E9F893256970E030BCDC043AABB17DD3D29E433DC3A163BA1D8A6C2D2373B114F39CB4327858C6B061FC8162BAB43128555C897D192A6C51C928C92BE93C9EBB58C69406832EC0FD25BEFC10C354DDD64B7E959FBEEDCDFF0A942BDA9DEF9F18F7F84E5CB9789EE9D0B32ADBA9B6FBA11F7FCF63E4C9A3205FB76EDC2D8B19370A4E618AEFBE0FBF09B5FFF02B61543E5C809B8E6DA6B70EB7FFD0037DC780336BEB641B2F931E8A36AD418F4A41CA41D17BD5D9D282D299490F8F193A661D1D265686DACC313EB1F477149A954E5FEDAD7FE1F3956BDCE9E05AD551CDCDED35051015EA4266C3CB57E3D36BCBC01F3E6CF47A2A01485C52578F9E5E7B178F1622C5EB44040F9CE3BEFC4D429D3D0D2DC2221DF2C804BA08EE5E5E392CB2E43DCB6F1377FFDD7F8E217BF80E6E34D98336B367EFD9BBB0594376FDE2C69046849F3F5FAEBAFE3F2CB2FC7BA75EB24A43E66DBB878CD1A6CDEB255E8C386C66604A689D5AB5662EEEC195877DF7D225B1D37662C9A9A8E4BE839BF3767CE6C3CF9F49358B16C39B66DDB8AE953A7A1A1B919E3C68EC38B2FBD2014C7DAB59763F6AC9962D92F5CB808C9BC7CECDEBB07ED6D1D9838650AAE7BFFFB063380CFDA201D928B9E09408BCB4F1C0794EE0738DCE5E0A5BDF57865F336C40DA0282F89EE740A3D5E80E9336660F18C51F8F5AB47F1E8CE46142285AFAC998C0FCD9F089B593D597DD8F5D1DBDE8A7CE610C84FBEED916CCAC71F91340FD993386B63E9C413092E937755D59CC9AF4AD27F710304707D2A1B42F916F7FBA1FCC534F9A4B9F41A30590A8CCFDB60CE0A75866C8980C172AC03BFCF5371D09CF0DC6ECF983143DD572843237FAACB4129599A2CEFE22863B49DE2585DF8811F2A13C2283B2A15424E95C680CA10A7FA4C49149936807D452E57658BE3FB2A28EAECBD44CA26A42C836EB40E5AC9459533D0178024AD435D379DE05AA5A27377906F6600CB9B5F8A9F4F3B29518124E209E19BF56E5417B6E5DFBC47D248FA3E5522AA6CF5747E2FF3779835D0237D9876B077FF3E4C9E3E0D49EAB7BD303C8D1C366F8B857AA948A163D5A39356519ABC365FBC26FFD6DCB87A166A8CB13FCACBCA8764860EC945CF08A0C532F5903280A31D2EFEF4FC6B706063C2F4C9889595210D0B493380D7D6869AFD0751D7D286792B16CA56A62A2F86E9A5169CE6E3A82E2F97C913B71388C76DED0F18B202AD676F8A0DB333A9EAB2522546B9664D989C29C22A499289D077AE222C61AA3C14866F432A18841E792D8992D349FDD530E8E11CC6869F4EC5C1894B4754B43E5F345FB2D2492B8056BA6615FAAE25952A784349E4A2B2B393E9C1A33E90811C7F262341951D536DCE70D0043AEDD709E57F2247EBA37A52F7D157AB9C851611A3F07BE1353430F75571E876F777DCC976B219354DA8A07119D92855899463960B82A8B99493491909E1B127A846C26022BEA75FD16B8E1C397248B072482E7A26002D468519A02D08F0ABA737C1F40C2C9A3503F5410A0FBFB113875A7A501533F09E39D331A9A404BB1BDAD05C77001F5ABB1CB1AE56FCE0473F428FEB61C2E891F8C2673E27455915FBEB0A9084354CCE646CE7BED35F0F4432BC72C7C3A4FCC45D79F61C75921D4A852010B74D838139045F7ACD5525EC4C3E92FF9FBDF700B2F3BACE04BF9763E71CD00139E740309BA42952924965C9164507057B67EC2A8FD763EF6CD554D9B3B35B5B3B6B595ECD682C590E4A54A4324951CC0104488044CE6834321A9D5FBF7E396D7DE7DEFBDEDF0F0D7440B7BA01BC57D564A3DF1F6FF8EEB9E77CE73BE379496671E44EC4E230D6DD78C55ACD770A9C758CC1024C8AEEA568781381AD01AAE2C49889CE9BCE8014FD170DC60AA0958BC3FCCD802A9F5D59963A7468A5BFC9F9666F38B6838A1799423B8DCD4130F43BF3FD54DF55DA4A688BE49A6B7D853CF2ABC7B6BE93955CA07149B13DF4E2698EADABAB9BC51177ED1E9B939B4E07A039C663D91CCE0E0CE36B3F7D098F7DF04338373482BF7DF56D0CB82B8463EAB1DB51171BC517EE5983BBEA7D787BCF2E2C58D881E8B1BD3875F408B6DE7D1F7EF0BDA7F09FFFEAAFD1D9BE50E43DB3E441DAB9D22A5A4EE933432D60751ACB9C5574302641D8EC2E647276A9121E4D2511CF01D51EB7B8AA9472B2AAC9A8FCF13C8F2E10E5AB679F299FEBDCB838B815167A99CD96A78599EADCE3818B1568F4F2A41351C602B4B5D5AF150C9F2E684DA547955B25233F790693E6081700CCAE32278D58D6984C3F8B05AA85C80C255E2A9F93CA9A4F26313C6EFD849AFC2C9C719DDE4D80B44A0B5C93562B0BBEDE5DD105438076F05E426894EF58968DEE3203DC562EBBD5AAB75ACEA6CD3B3A3AE6041CE6E4A6D302E82C10B2013F78E13578DCE5A85DB206FFE3855D783D1544D415105D67769E379DC092CC10BEF4D85A5079AB279CC0067F06C7F6BD8335EBD7E1D7BFFE15BEF0879F454B638B68CE929297CE51645E09C9973E33D402669E6A473B7DD16AD2D991CCD990B0D971E0E809B8BC7ED89D1EC412692C6AAA46BDDF2581536E4D39E7ECDA1FCDE25802D0A25048FFE2EC15999DC8C5C1096C2C4CC3CD556E0BD6613425A0CC68528257856DBBF97DAC8BC30AEEA6078AB7F5C55B7FE36299A11E93CB1403B45A2A15075BB941E8B6E232AA1268D439C6255570E9A842035AC697D6A826FF89CF9E49391657825C44927A0B017903EAC5006D160903DAA64D142B8B710BD5BEE24DD35D20E941DADD2165DB34985BDBD94A8F1DAF3D4BA9DE138C322EAE9772C0979FFA213EB8651B8E2503F8E2CE93E876542265F3CAA42604D81C7654477AF07F6CAD414B6D3D5EDBB917FFE92377E2BD37DEC089EEE378DFC30F6251DB42D845A83F85ACA4E0DAE154BBEAD267A65AC0E29620A02A4FB40DF6AC1D11BB1D3F7F6B37B6AC5E819E0B3D180A8D60C1B2C5E8EB0F61F3C22654389C797A974C7ED9978A5F44A77C4E271163F22F3619B124038E85EDB24ACE28248F98ADB44AE75769DD2A118A606C804752A91D0C0C16742BF2A063718D58B7E5AAC49472419880DAE4DFEEDA47E6FDCDBA2ABC249ED02A95CD0ADD54EA59730C64C229414F95D751F0F7AA2083E97C93F861433A9383C3E9C8EF3A84E5A4330BB34C0BD7D9B9C6E540374BF14E82C141B37B313538D96E63762EE6BAA214A99250CCA22349376C67AD95623282AFBA8675A1D0167CC9C531C108A3F3FF52C6862F7FEBFBF8D8FDF7606FC88B2FBE7D065D2E376073C39D25412083ACDD8DCAE830FE6643251635D7E3C5D777E03F7FFC115478B5AF536A58181F9A7847650B5D02E79998E2966B685724FFC77E11F6052B8067EC38198EE0EC4818B9F3FDF8B7AFFC03324862CDB6CDD8FEDB0FA3BDB5190BC8AC111F876C8A55C05063729EFD32C38F6BBD1C01BA4A2AAA28853A2BD79893399E484A12049914645D24D349D93E7BBD1EA1862D59B24C808CB200890459070EF87C5E5CBA7449B4C2172C5820DF9391409EEF8E1D3BB075EBD67CE0917F0F0683C2093665A768A99346CAA418F27DEFB8E30E4958F9EC673F2BC932575BEED36F2093B065EEADC282AAB4D9C10307108F2791B1BBB176DD3A11F54FA6E2F0FB7C181E1AC6E5CB17851B9E4A26F32E12D2E756AF5907AFDF07960BE33BBFBD6B17162D5CA4B8D289047C5E1FF6ECDE0D97DB8D152B5688956BDAC8303B582861FDFAF5B2285DB87041DA9FFF663BB18FA40DC892B13B845EC744B3706844F8CC0BDADBC4374DB70DDB92CF104F247060FF7EAC5EBD5A59EF12CCB4E3FC85F39270C4C5C0E9724976E8C28ECE39818839B9A9DEA61496D9498C25A6760E03F8E62F9F4773731B72758BF00FBF7E07076C7E245D7E649359385C0ED833393446FAF08F1F5C8DD1D1611C397F097FF6BE3B5121FA2A5C4D0B928E6ACB4DB856018FD267665B80AD6B4ACD2A9F322D451BF65CBA0C7F4D159EFBDAF77174EF2ED85C19047C417CF44FFE3D9ADA9BB020E88757028639A46959E92AE77447C9967A967BEB7A001D0A85F09DEF7C172B57ADC2E9D3A7E1F678A5CC55435D3D1289980083DBED456363A38011931C98C1B66CD952C95AFBE94F7F2AE04AF71BAFF5BEF7BD4FB8B70F3DF41076EEDC89CECE4E016E728809BCFCFFB163C7845AC6F30281009E7DF6592937F6E69B6FE2EFFFFEEFE53E133123A6D2B3B43299794780A6D017697FCCB2FBFE534FC9BDEA1B1A70F2F4393434360A08F6F65EC67DF7DD8FC18101BCFBEE6ED4D6D4E0724F0F5A9B5BA5B2D0E9EE6E7CECE31F87DBE3C1ABAFBE8AD5AB56E3995FFE12F7DF7F3F8E1C3982B26050DE399D4ACBA2C636D8F3DEBB02F44C5E617A38DB818BDFFBDFFF7E3CFDF4D3D8BC79B3BCF3DAB56BF18B5FFCB772122B000020004944415442E414EC4E077AFA7AA55E228B6034D537E0E8D1A3089497A1B2A61AE565E5B872F9322E5FBC84473FF07EC951D8B777AFB4EF86F51B70A5A747EEE572BBB07ACD1ABCF0C20BF0070270BA9CF88B3FFF0F7302107372D32903B49AE988DB81B74E9EC273EF9DC0030FBD0FEF1CEDC2BFEC3F87414F0532368F583181C8103EB6B61D7FB0AC127B8F1C82AFA109BFB37A21828C3EE7A814C7BB2BE52B138C9ACF054CA732B1E6D3B185D557D502573B15069780D3E108BA7AFBE10DC5F03FBFF4DF44B272CB96BBB1F5C1DF42F3824634960711607F092B4F09DEF01A8AD9AA0388B3F8B21303F453A8AEA9D57C5C07826541AC5DB3063FFAD10F245BCDE954EC074EF664322D40B36AD52A9C3DDB2DE0F2B9CF7D0EDFFEF6B70574962E5D8A9FFDEC6762C5F1BE1D1D1D025004FACB972F0BD0335DB9BDBD5DAC45023501BDADAD0DAFBCF20AFEF99FFF5980DCEA9F2E0EA44DB5A9C6B038324A8F3A180CE09BFFF2AFB8C2F25E6D6D707B7D08965508E0324985C0C9249E6F7CE35FE57DF99CA4B292331E0A8F60FBF6ED58BD768D2C4A7FFD1FFF0A9FF8C42770D75D77C902F3E0830F62DFBE7D9260C205A0B5B555007AC99225387BF6ACB4C1A64D9BA49D04BCF7EC917F5351928BD6CB2FBF8CAE93A750595D85404539D2A99424A57CFDAB5FC3F66DDB303812029C0E4992C9A4D2A29572CFFDF709C0FFE2E73F977BAE5AB952323AB9436199B686C606A9C148706662CEEF7DEA77E7042BE7E4A65306689E905135FBFAD3697CE99937B0A6A3134B1B6AF1EBD317F1DCF18B08D9CAE04BC7F0405B351E59D581D17814870FECC1871FBC171DE565125252B42DE5D630D5A909CED20873D612539D3E37DBF12A5AA860DA46FA33C2C8E1991D6F61DDFA7518ED1BC0D05004D51D2D18EE1FC1B685CDF0B342B6A983934F78E12FC61535FB3EE86BB938087EB1585C32FA98F64D41218FCF2B02474C5F5682403E7165508B62707058C08A5B6A5A89B446E916301578E8CAE056DDF85E6941F2779E23D9737A4BCE6D3DAD67E36F354C0B9ECFADB815A06F748458015A980E5A9680AE835068485C2D3607D5EC28A4941E2322C6FA8454C1631A3ADFC568DA10BCD91E742110044D8208DBC1F8E6F9DCBB77EF96C587A06C449368C9D37D41F1322E7A6C17B605DF9BFF665BF37AFC3D3C3A8A80DF9FDF5150E695F39E520E4E1201EC2AC927501614B7464A44A754D09216BCB89DD8CEB9AC6A7F6653DA6D686D6E99138498939B4E0BA07574368E1CF6F50CE0F51D7BD1B97009EADADA104EDB30301A4759C0856A770EA19E1E1C387C0C77AC5A847B5676C2AF39A934C9146D4B65B6896FD3F8D7F202EA373ABC4BE7ABF6356B9E2A846B92910930E15814F0B870E4CC59D85C41D81D5EC4D3312C6FA84583D72305D89979C6A995A7D5E61D1BB3BFA25ECF82563E16A5D8A6827B225AA977098AA1402D65A3BE6667A5158B26B21AFBF46B9BE415CB5E43070A8DBB82C75A038BE6DFA6D49675A459AD662B7D6CF2A3F1EA441582936263A85D8B8A15AAF6A7B67571A289E1482BFE7781C5A29E4D3D89298166A88926586A7DA7628686F51D8C0EF7557FD33ADBE24766760303B39A66A7FE2661499179CDD3FE747052125644E94EB348549694BA855662A8AF2DF1A0AF3F9674D9766E96D9F8FB2E8FE0D9B70F211D0E6345472B1AAACA301409E1F0F94B4866ED7874DB16AC5A50854A5A63DCA6D1B7A1DD1B05F8503AB62AFF98AC8ED9E3D64E7EA2DCFC476A8F9465521752DA074743F0799CF0BABC48D91C08D1F798032ADD2E78753030A333BF1D020EE358CBB36C564C08D0CCB63300CD67165F8CD2C5E038535AC58632A6E7B9D6432E48DA2AE94C6B5284D58F6CC0D864B61583B63573511B3C5701E654469211BCB766123ADD2CBCA65827A2E1CCEA409A8A6778CA85F7548B8E750EA9F753017911FB976CCADC55B535ADEC112BE759B5A72E68A0CF357F2B5E8484724DA688A472676073399114ED6A05CE5CE809C2C40E03D0F4AFCB02648A10E8B4FD34CB786919024D2C4463FD6D964998CD982241577B178CF595B7C2446B97B0AA8A71B2A113B0239400BACE9EC7C9AED3E8B97259AA2CAF5CBE1C8B3BDA51ED77C9769A5B4F99E496555D69C35A54E33445C00C9499DC2E4E6592DC8CC7D2F2A1C00D2538E90FE4B69F91EF9EBE01343537C90438D77D4602475C0CBD013F3C6E376AAA6BB17BDF5ED435B6C0E7F3E0E4A12358BA78919ABC4E17FA07FAE1F77A313C3C88C6C66655C1847AC45EAF6C6FDF7EFB6D2C5CB808FDFD7DD8B279D335B454A6A7977D3D9A1D9FCF6CCB8D5B428185627B90DE4BAA9D4AEB36F757143BEA6A18CB5A29136B70175A9AA2DE495C841C707E9FA18EBFCE7815EB5A59D4A974A25086EAAAD25926843AF5325185F16F438AB532A95331260B52092771FED10DA2DE4901AF759130BF5B2D6123AE2F82FFDA0E52D633DB4A99AA229E2F9C7153F0609A33C2C2201AB396DF0005A8B5B57596CD82F1DF754E6E2A1D98CDE564001B3D023D30294C62E43AF3ABA46C33F41645066A0E895416703A45CD8A65A4FA07C2F0795CA82CF320160EA3A22CA8565303CE45EF2F2BBF68411BAEA6E2AD5AF9A9C6BA99E630B92D4E2358515D8D00BD72E54A09EA305B3091525B7F6A30545554E04C7737828100EAEAEB100A8D60DDFAF5F8F14F7E82A6E6660135AFD381458B16E1FCF9F302F2F473D2A748BF23A9580CE41030C81AE071AC01C9EFE96678F081FBB5F55AD4E4D2B966EB3EF9DDD144006DE5311B3052C8A2C02B473AA11EAF640D29E0E1A856415291FC92A41B6EB9191151A2F2622DEA19C9BFD96894D3DD2355B10D80A9925AE28BB6589563CD1C3557A6F3518B4C4EF4A08D8B4359ADFA6AAAA694EC3B8DBBC1A1CB5259136B8CF688FA9B7290109C792CC5FD0BEE9182B09411F857BB863983A6719BADB9B9794E1E684E6ECA16C8643239ABC68075CB62B673E6FB9E2B57F0E22BAFA0A2AC0CF1484454B132361BDA162DC5C58B3D58BD6205CE749D473C368A4C2E29B5FFDA5B9A8562D3D0D020560B79991DED1D58B3664DBE030C185B7BC49A245002E889A738DB8B20CD1F822AFFCFD99C92640C06CFED0887C21230221F58C0C9A6180E831455F7780468488BE2F70CFC281781B2A494356AB6C56AA27B3C4CD048C871FC290BFAE5FF525A694C670A7C1648D413BF8E1C3111405B2D46055EDCE129D68940A3B085B4529F521BD1DB7AE546936D3FC56574719F6C5AFB7905A095252D5559E22939864A7E2CF3407093CA1F3AE185D6AB49D898E4AB5DF330EB6E40F1A009D01EBDE0286A2A8FA18F9D3B1917E985192AF131614505FD4C45146355B3128B9CE320F758F5AF2AA2ACDC0AEA7CD63D54FD58289B3567B074CDF6B9ED1255B2D96CCEBAE25AC1B2D8D5101A19C1EEF7F68A255655518E68741476971BE11865096D68A869C0C8D0103C4E2742E121F8021EC4E329C4E3313435354B94971161D2775A5A9AC50250EA5AAA3F8CA80D9F47C8E9B4CC8BB776373A036EE1F3D9565266485B7467CF9FC3A9D367D0D9D121B426A96471F122CACBD97751E1D7D23A1B1E1E862F1090083B3259B4B43609558BEDCFE40346D1693D1B09483621695A0B172E44592098DFE617025233D3C813A57A938530369B2F0EAFC785443203A7CBA70AA6DAB3482513F2ECCCA2235F3A91544C021733013349E55D77B8E538BA32320445974778D507F6EFC5C60D6B1550BABCA259CE76318B20173063B9CECC5BABAB18E0A4B83EF9C0A29DAE65387B7B7B641E55945560F7BBEFA1BDBD03274F9E143A5C77F7696CD8B05ED1E516B44A75133231B8E33971E224962F57BCF1CECE7659782F5C382FB4C15DBB76A3B373A1D008D55C5465B2CCFC9BC977BB916BDD766A76F1783C47A1734E4033D8CD04E7CACA41410A11B7B81CC82C0914898C8A2E6EC0E717EA4F2A93119173AEDE24D247474611F47BC59289B3569BD674B52E046AD576211E8BC1E355DAB512C165643A430A945B683826DBC8D0816EA4736FF573AD0C02023045DA7BFB06A4F61BAB55545656A0A7E74A7ED2912BCC063FDDD585728AB94B2DBB8CF43739BF46EF977D50162C436824247F633FB23F9889E7F3283A9AF5DE06606EB4BDAF07D05C545E7FFD755990489D2358334BB0A1A10EFD0303F0CA73D9E0F705F1DEDE77B17DFB1DE227AFAF6FC0C18387D0D8D884D5AB566160B81F17E90E4AA4104DA74D223C5AEB1A11898EA0A7FF0ADA17758ABBCE96C961381C436B6B1B366CDC209548C4125514F119FF88054DFA9C4EF52660F267F7EE77247184F533CF9C3D8FBFF88BBFC457BEF2153CF1C4A7F1C61B6FA0AAAA52161082337F3EF4A10F491288DF1FC4BE7D0704D0B76FDF86EF7DEFBBB8E79EBB9148B0F6A04DE6F8430FFEB60897A92AE7CA05329F3EB79D16C79E3D7B721CDCFCE18020F791939B9DC5C9C86C2002F6F1E3C7C54D31141A853F18808B05331331D873369407CB1149A670A9B707EBD6AF45CF8573B09115104BC05B5989DE814149063039F7EC748287E1A4F21E4C19E5BFAB2ACBC56A33890104E975EBD60968943E536B016E750787423261159898EDAB11145255D155D61D79A6D448A028BD5332CF84BBAAC1D7E854D08560262DBF376C02657529949AA9497D3D80E66EECB5D75EC3B973E7F0D8638F4932098FA755B076F50A1C3F76146565953429D03F38846D776C44321E971D44782482B5EB37CA986271E0EF7DE3DF50E1F763F3DDF7E17CCF15545456A2A3B61E878F1EC6A1E38751D3DC88B52B96E39D377760D3D6BB10892670F7DD774B1156A5CB9CD562DA53EB9FF18E366D672C680609DD1EB7042B0998BC5F6F5F0F5E7FED35D4D536E0C5975EC1073FF8980072636383EC6C5E7DF5157CE4231FC1AE5D3BB178F1223174984CF3E94F7F065FFFFABFE20B9FFF027EF6F39F221209E3DE7BEF9573588FF1A31FF9A88C118F9795C0E9C251CC91F9F4B9ED2CE89E9E9E9CD93AD152E2F69716B5A998C081C24C21A347108DA5A4F8E3A9AE53E8EC68432A9194EF2F5FE945DA0ED4D4D5A0BFA7077E97138E9C1DE5B5B5088723963A832E21D013148C856E7C6504E8587454267A5D5D9D2C1A9C880477FA4A4B9FF15BA0D87A35A233745370511DF329B6F46ED8401A4F20FE862F2A8F7C3D80E6F8E4D8A021C15A797CCFFEFE5E6CDFBE056FEED8857BEF7D5052B083412FAA2B2B25F3EDB5D77760FD868D387EE228CA026558B16C19B2B9242E5CBC8C8EF68578FED7CF8B1B88EE38BA49687D9605BD58B4B85DB2E6962E5D069B8D3EDF9C365C6459523AE63368415BE96EC68256D2A08A4142CD8DC868044D8DCD387AEC047CBE80BC3F9353589771DBB66DF2EE8CF3D0F0613599E5CB9763EFDE7DD8BEFD6EECD9F3AED4FDF3FBBDD2C674551D3B7602AD2D0BC4CD41D125137B986F73EEB6B3A0E98336568F95EB79ADD59D0BAAE67168A60509E7460C514596878606A4A8A5EA65F5231C55AD7025BF0BE3CE90ECB5E2981149D3D698894E97828445183B8EA56AF51512BCB8008A85E86040ACE853C8859881F93737006DC66C315F379B4BC161770A88CA771C680C7E81FE68FE5DE92BA7526429F14317052D45E5B661728B8C70D9DAF31AD4C3E035150B229B637579ED234EA7E070AA0A2DB3EDE22013CA58D0EA1D9CE22BB73BD4F3A8D891A206F2C37737711C9EA7DA8BCF6AE6A3D2F93065C1184064069F0486B56A9EA12CCEC02099B14BDC76004D1687616E58077BB155966F6185C18A3B4A7FB15441D1B2ED9A231A1A1A42B0BA52A2DE6EA86DB021F45F8515DC424BD45D0D2C157D9FD9ADF28C8D8E797E21B61B771DA4C2319DF737B3B0CD1D409B05DC8C2DA1BC5122955CE62C990B36D81D1ECDDD4F29253F025D3A07267F300027D662868C17BB04116D043C06FEC41221ACD3BE5032B8B94C1A99ACAA6B58603B196B73064D68C348D13E68F2D909D005394FBE9F9647D525BB38344D1660F1FC29C47E0A006EB4A54DB2982AFD652459D5CEA0E4E2284CF899D9134E03408C056DF4704D47AB95B50094790B4D6BC7D25FA906AF02540A24D958E2C60684868711ACAE120EAA64A1E5015DBDA6F1635A7D95565A9DA14F19FAD235178B69BCEFCD7E4A715B58B7C38CEC337E409753E133D93ADC2A576BEA599C1327A158A16B2A037DA2925786074DFF79815AA68059123248BB13BFAD7A35A6AD1B2B40525004F4B406844E9EA0F52829E2F682E03F991D595AAB9205ABB2F08CBBC1CC9BD9603B58697605C693D6B0A6352CC944643C311B92E90863D3D90D4D562D26CA82569F9C58CFF4A19B1883EA774A857297A10AC9CE247D70A6E6DD6DE783CE652553456D7FF43ECD58B385D5D5E4F0EB80886C0185D36F499537D33087D070585801EA30B19F75869245FCDB22C66D3ACF90E9C75B18662AF034530365AEAF63056A4E6482B3D135B68ADE98B69F38E1609A006D1185BF5649F6D90068C5D31E2BB8AF76601C9474EB180343D7E7935470651C081849762BC579A85DAE133EB4268C30180400559A8B23ABDC78521984AE847C3D3DF56604FEC2F8B42E413796A8429AA04954D10EC2425ABAE06C0E991CDD14CEFC0E557B2CD53A3446D7465F41EB71281F7321CDDD003471803E6B1A683A876CAE87FA98FBDF7E99841433303D61014DE95C439FD256837431AB36A8DC581D1F29582534956960338041E16F46F955985F4D24E3BEA0F5ADC697552BA1906966A5E31506DABC1A2733F730F9B4D76BE4BF16FDD9B499D572A65B83006D7CCE63B7B8B36C414F027D2771C8B8ED39998A2A66B765C6936A17055E94795256A34A52C921A3CA3C49511905C0D4B848534AD161432E95868B56357248D1CD415706F358983D287F57413A9B58263AFB957E5FF14DAB4A35922AAD330E8DB53ADDC1422F8BF0A02DA9DE920128D6BC7E473EB79A903AC1A46029F3CF2C6460AC64717971E7CB854D176F30CFACE699D12FB10609D53BCD97CF6DE78316F379863E526BD2064422A46DB9E066258CD2E7DA2D906F79369C1548B53E045D46B277558BA1523319EB76A24BC3B06F6EB5A62E0668BB852A41B049A6B84D7731B7262FB9497EBED39E412C1A81C35B21B97F4E5B0EE94C0236875B454B98FD484684D3298143B18CED76C44746A52289A474D3882080937A483D0F131FA1FEA2839A4C698447A3089655AA406C26A9AC735668A1246F3A2569F3D1684C2870D27BCC40141D109780241756B29332E9B404F4443E34AF1B42CDA1020F5A02EADA5DE8B2DB100D87652790B2B9E115594F96BBA2BB46D1F194CC28EFABABB6EB5D96CBE7021C2E05B9E984B882E87BF7B8A82D429F3C634619793637150D450B4495D562B6217315C2236104CACA9578932EFB457AA694CBD2B2872C48CC1D9DCA368DE977663F29CB3C166556AB4716518753EDCC53499D85CA47D6B2A3BC9FC7AD323F73593B1A9A4A6A76539EE7569C61CFC7A231A97B26DCDA295FED363B41EB54707FA1045895DAB244E5B5DC17653F8D7CA3B896F4CE83343302152DE75BD105743D8026BDEEED777663C58A9538D5D52D1982034303A80878515F5B8563478FA275E15201C8A6867AF45CEE414D5D0356AE58894B674EE2E5575EC392E52BE172BA101A1DC1AAD5ABF0AD7FFD061E7FFC719C397F4E32EF860706859E76AAFBB4D03E63D1A858B49B376D403A95C4B7BEFD5D6CDA7287F8FD2B834A73D94E7AA9CB8763470E61F3C6F5D8F1E65BD8B0618308E6D73736E0E2C54BD8B8699324CA9012C73EA46E32136F1E79E491BC521DC7012BAAA4B33A514554E2B292FD78F8C001ECDDB34784AE4E9DBF2245989B9B1AD0DF77195BB66C121D96B7DFDE8D75EB3788F8BDD7ED4530A04A7AFDF6FB1F45E7A245D8B57327BC6EB54011CCB9A03011C9E3F5A1B9B909478F1D950499C6FA3A49E7A71B25102893E49EA79EFA2E2AABAAC5B2975259C90442A161D4D5D548D92C2E0C274F7563E99265088F8684CEC70F99334CBFBFE79E3BF1D24B2FA0B2A21CE1D138FC7E1F46A321B8DC4E78DC7EF4F78510F0073030D88340C00D87CD858AF26A74779FC5673FFF87730229737253BD2D9C310BDA000789F1FC50F7A1F499A005B469467026198A0381FB0EA98ACC4DAB5433D172117A8742EB82139B0B20AD2E6B80F7566AEFEB0134C7D8F77FF04301E0FA8626F111B36453477B23DE78E555545556E3ECE51E7CFEF39FC38F7FF4235457D74BE511AFD78DA0C786175E7A159F79F20FF1F39FFF1C651541A9D6F1C273CF0B50BFF6E61B2204D5DEBA005DA7BAB071EB66D1E4D8B56B175A16B4A1BAB25C00EFC5975FC5DA751BB06FDF7EF85C0E7CEEF39FC50F9F7E1A2323310C0CF4E2CFFEFDFF82FFF1DFBF22554C08E297AFF448F625DD3265E595924E4F90FEB33FFD7778EFBD7D52D18402464A1F5D5B910CE67954651827EB2BBA5DF8E2DFFD1D36AE5F8791915191F4F50503E83A711C765B56126812C9244E9EECD252AC4E49F53F71F4885461F9DC9FFC094E9C3C2119BF6FBEF196EC3456AF5C8581C1413435354AAA78341197946FB6FF5FFDE5FF8AA79E7A4A1628064FC92767F516BA5F962D5B86969616ECD8F186BCD3FBDFFF28BEF3ED6FC1E70F606868045FF8FC1FE3FFFBF297F0977FF91F447C6BC78E5D686A6CC182B6569C39D385CB972EE283BFF361BCF2EA2BA8A808E091471EC0CF7FF13C76EDDC8F8F7CF8C348A6423879EA30DA5A16C2EF2BC7EEDDEFE2FFFABFFFEB9C60E59CDC74A601DA808311ED61E249E9739D16307139318F559A31E19996B3783C68383BD22AC49A7588921A7D9FA391519556AFAB7EDC8AD633DFFD7A00CDECB7E77EF53C366FDE827DFB0F8A25D7D8548F851DEDD8F3F6DBF0FAFCA8AEAFC75B6FBD85BBEFBC13EFBDB71FCB96AFC2C68DEB70E5F259EC7CEB6DDC73DF03D8F1C69B486612D8B071235E7DF165A9F377B9B74780A8BEA64EACDB3777BD85B6050BF4CED0857BEEBE53DC772FBEF42A52D91C823A03F6F0A183B2F5B7DBB973CCC0E7A5BE471A65E5653877FEBC58D2741D50A69596F9C18307A52622B36A59624B0AD652BC4903348BAB2A2D0E8FACD85C8809D2278F1FC34BBF7E019B366F8637502E5209870E1EC0DA35AB6447313A1AC1F7BEFF432C5ABC18838303282F0B8AF55F5D538DA1E1307EE7773E801D6FBE89E150041EB2409271F8CBAB505F57CB8A547877DF21AC59BB1A5D278F23128BA3BAAA5A2C632E2ED4ED78EEB9E7A4F02B0BBA0E8786C5FAE73B313371786808E5E51548A632F8E0071EC30B2F3E8F586C145555D5C2AEA19EC9C30F3F844307F7898BE3D5D77662DDBA953877BE0BC323615455D6A1EBD4197CE0031FC0FEFDEF6161E702749D3E8986FA5644C329FCEE131F9F13AC9C939B4E07A0AF0E651519E014ECC9649088271028A5674FB83E290F079DA869641964A54F8E143085CAF24371733B5CAC3586F0282B4C3BAFDA9DDC8A207D7590506B8A6B8682B01774208CEE0071FF087D4C9587CAB18A8AE281EAC40D2DAB9B61A56BA7F85E1974133A1EAB50D33FAD772CC2AD56FE24E42866AE2B9A503D3D9B4E28C53EFA53A90297A6FF55C55F541C86FACDDC0F3119C6A114F674E28895BB6D744DF43C143FB4A288E87C000B400BCF44F267C4412BEA83F40B4B554FEA5353579DC1CD2445EEE9D7A56F5E73A599684329D23455F998E0A2FCC5B0BB60A7EE06B2C8D89CC268E1C292B3A9D811255AA98B2D7AD3129854D43B1A070468691EBAE4A4A28D0AC44A4101117612EB028CB28ACF5EFEC00A100EADA3AD5E958B1905ABC40FCDE335FF5A3299993C2322552C64CEF774A1BAA6724EB0724E6E3A5D8096CECB434FDE0C54161F2B1167B322E4122C2B9F10A06EE703C48521342ECEC84C5E839800AD1B53748A6959E7B20E8486E8AFF489B0BE9523AE26D39C0DA159EBC2F1591CAABA8BE2F82AD6906272C85F659B4FAA5D3A9392125E90121F8A6AA734CEE9E127079AE7520C48D14BA56AB616F6E20B19117C8228D3AD850D22CC103B1CC24ACA2AB0CBD92489045926BBA860633623C59EE4B8ACDC5FF58F95816380DAFA7F1E27E1482B40A7291CE651EB8C7CABAA95E40374129CB30980D2BAE663C9DA4E0AA1EE19A11EB2B6249F81C136CD0BE0EF0C3C72312128139C856228EB98A6C7E6E55A4DB92A9D74A60B1D9898884A72A3F56F28BB7C16260A91EDC25A8DEA9954C524F683AAA044D714415B71D7550B98ED2383824A2295EDCFF74FA3A1FE36D3839E2A8BA3D0E9665E2A80B60E3EA6D9D2475812389A18BB18A957255849ED52AE0D87D0BA34C79C4511721944C3A328F304E0F2B826BEE82D72C4447AD0C5A02740C8E168279011A85D52F35200C9460B50201C5966030A7C1198146019C672F1422756A855905F2C55A5392D241BB13655F963A2230B57703185A49CF33994E094953A5AC842BCBAA3242EACCB42898B4303B400B758F766BCE86031AD53EA511348B5C0BEE4F6DA68B9EBFBE6F8BD0256B1E865C1521635192532D6F40E249DCD69612D2E407A5111CBAB109C5656BC7A1E43DB53EFA4D2E7A59559A185D16D1B8B24287F1DD73F8783FE74FAD919304C0BB30539EE3858F99240AE74B6D547A5E0DB6DECC714B2B6249A1B16CC89253227379D510B5AAC0B954ACA41158DC524123E672F76938014278BF06C59A5DA6EC3F0680C57FA876173BBD052578D80C38EE8E808821E0FBC2EB7A6ADDE1EADAA6A12D688BFB73883923B086E83CDF63A2F5320B5EE4C96206963AA4C9BE1F533B3D0E9F220C7B46E52D34CCD151EE4A4F56B0164A100B34CB8768DE8926C52FC8A092EB452ED04E302408B059D75083813A455C95D65A15BF9C8D71A9E06A005E832D4CBC88A0F5AAC67E976DECB80ADA9EFA976AE5C2084362817574B908639A5EF2C9E1A72A11D12407439B8AB50EDE3B0A96C44717B20ADD2E38DC68EA61BE62D6F29CAA0761E62C98B6EBBBABF7227F1FA4A0082FB3F6967592CE80A5196B9DDCE3691D12FCF2469F902CCAAF28D4ADF573C7695BCAC2CEB052D6D7332F8E7E4A6330AD07A2810A409D031D26D7C7EB8945BAFF419A70538EE24AD96969E1D38131EC5BE23DD58BD7211A299348E9F3883D59D6D58565D0637072F01229FAE5BB8603178DD2A8D3D7ED158F5767C678233815A40486B898B8D99A355EB80C3468B2C2D6E089BCD2DBE7E9B3D23B6B57828740D435A9F1CA3D4952140B3AA8CF88CE99F753868900B508BB782C0237EDB0C720E1758F1CDE570219B4928707238914A2BF0918C18FAA98D3898F68517343526B6A0C94D26DD2D2B40A77CEBA4C54B824D26839C9D2E0055C28A2E0AB18C25F74C2D0CEA1C5564961C69FAD0794DFAEF6D5C40C4ED40B70D9F953C6D0E338A403991A6C56DD1FA1050D6D995A6E0ABE87FF0DE92569F91DAA3BC3FC1D56E638C80199F4A2655F9A0EDB0F32064944F5C78D1AABA0F5DF0AADA0B331909C9A142850000200049444154CEFC9DE9ECAAD28BDDEE425D4DF59CC0C99CDC7466019A2BA18AC928804E21E0F7EA62B1B70A64CCEC7B28FB2D83141C88A432F8F1ABBBB069D9323CFFA35FA2B6BE06EB1FDC8E0B4323F8E0F245E2A726A343C95215EAFADD8ABE67D3CAD70368AB7B83C92906A8A548AC9D16A7038E6C42F9332558C81F15B8E392C8B58E9C6202BD8032B1D7CED2600EA93E235B7AAE8976BBB89CE289049C1E5A9792442E1ED804CF73B2F24A162EFABE6D3649D22AAFA846361517FB312BD6A4760F188B96A0A915E6640E16CD7E31DC75156FEA41F3BEB253A0AE88C9194C517304C83A3D70BA18A84CC24546865EB0685073B120A01258F9CCC2D37633BBD726D573025E9FFC9FC7113F95FA9D4B15DA88C7E57D9C7A01E0EFD48916DB5C74C3154FDBC9DD8D58E1D4F748C1C3D5438C08E50F97EC4D2DA8984E33F147050519C8E502C68416B560296D6DB52B327E721DA03401E05C0E0D75F57382957372D399036895F0C68ECF4847E5904C67E0F1B8E0D2F5E16616DA6E9DAB7170C6EC76BC75F8141A6B6BF1FD7FFB16CE1D3D2C0070D7873E084775359EBCF72E3808062447EB74E25B1998C7076845025739961039556A34B37C1ADD98FC3735CB83C132A4B236D43534E0D2D9D3221C75EEC245D4D4D48189ADD1C8285A3B97A2B9B1016FBEFE2A5C2E37528914162F5E8CEEF367515E560EA7CD2EBCE0DEFE3E2C5CB408894854E87177DE7337CE9CEE428E40E476A16760502C585624A92E57D982C78E9D146EF4F0403F6AAA2A70FADC05B4B57708AF58B921540AB9AA34AEDE650C406BBF84D898AC5C9E5182FD648250908CD0D77BF932DE7CED55D4D535A2EBFC15ACDBB801AD2D8D181E1AC0C285EDB878F1220E1D3A8255AB56A3AFAF1FF5B5F542B33B74F810B66EDF8A8ECE4E7CF5AB5FC5EF7DFA09FCF8E91F62F9B26558B97A0DBEFB9DEF883BEDD34F3C891FFCE007B8FFBE7BE171FB70ECD8512988F0DB0F3F24943AA9633914423C114763531322D1B8F0D149E7DBB4612D0E1F3A2C5996E43C8F8479BC0B172F5E407535935E32686D6DC6E9D327D1D9B100070E1E445BDB4284C32AFB78E9D245280BFAF0EC73CF2118AC909D00E9825DDD27D1D2DA88F5AB37CC0956CEC94D6F04A0CD2452D15815614E833E373B86469338DD7511F575756869AE21414C62B7F98F25D278356D6FAAE03B892BE40FB9FEB156C2E06FA443B4746BC40EFCFA9D77B16EE962FCF72F7E19A1DEF3C8A6D2D8FA810FA0BCA9150FAD5803172D24B7D22CA60563CA51CD16508F6929FD0F15772FC82FA9CDB1716119368F625388DB61AA5D59747CC182A6E6B109B429EB953C682679B0165F64744400F6E48953F8E33FFE77F8C92F7E8605ED6DB0A75370B97D786BE7DBF8F4673E891D6FBC86782C0197AF12EBD7ADC6B3BFFC299E78E249BCB36BB70030E5716B6AAA7168DF013CF9FB9FC157FFE9EBD8BC79338E1D3E82254B97A0BAB6163EAF0BBBDE7A539EA7B9B51D274E9DC6A31F783F7A2F5D402CC63263FD180947B165E37A5C3877162DED1DC209BEF3CE3B752AB47253A87ED301F6620B5AFBCCC9893682FD4A3BC32625C6BEFCA57FC0DA552B118B25309A0228471A0A0D0A40DF7DF79D62099F3A754A8CA6707814D595353266CE9F3F8B27FEE0499C3DD32D9995914412995412B1C828DA3B1763EF7BEF62CDEAE5D8B7EF90F404332617762EC68B2FBE889ADA2A01E9B5EBD6E1DD3D7BF0DB0F3F824B972FA173E1423CFBECF3921CB361DD3AF8BD4EF4F6F661F3963BF04FFFF44F527B349188CA0E60C386CD38B0FF203A1776A2A9A91E2FBCF82B545757A1B36329FA7A87A43EE2F2154BB06471BB24FC6CDD42BEB91F6FEF7E07F7FFD63DD8FDDE4EFCF55FFCA71B1D56D31A957372D3E902B4A18789B39F032797452C1DC6CEA32F23928D23166BC6F2855B313438820B0397F1D09675A83369DFA43AC9DBDAF30A618C2B5B455B26DF828A3E247C4B0307726D2381690A06E8F03E7D929A663546605DF3392D67E5C1E5463B667C412815E4A17F2D9ECC20964AA23F16C389A108E27D97F0C64F7E2C09120F7DEA93B83C9AC027EFDA0CAF16CE61E5666EE7CD8FF2DFD924AB50B6B2F499E6A3E0C2FAD28241059A97720F149408557B6BB0D0C1258917692AB64875DA7318CDE5D04B6BD2668797556F023EF8A9BF20E099111FAFF87785D9A0740C95D16F7221F346A3BAE5351AD72C94B4F86AAA6A15EFD602D07C5666E17DF39BDF1460A6FF9255776835FEDEEF3D81975E7D09A94C1CE1FE105A5ADA71FACC197CEC138FE39BFFF60DB436B7C1E1F3E3D3BFF7297CE98BFF2F3EF9894F61F73BEF88CF9560DFD6DE8E81FE7EC99CEBEEEE968412BA06987475CF3DF7602414C28F9F7E1ACB962FC75028242E8D2D5BB648E5929ECB17E5B9982A3D3ACAA48B4AD4D5378ABB80C798BE9ACCF8E6B1EC63822DFB5635974D5C032FBDF4120E1F38288B86C75F2EC1F89D3B77481209B31199FCC2EC3FB60DC703B34D2F5DBA24D76B6D5B807BEFBE479AFE0F3EFF39FCF57FFC2B444646B074D9327CF77BDFC3A38FBC0FEFEC7A07E72F5CC0E7BFF07919A3070EECC7430F3D846F7CE31BE286606AF77DF7DD8763C78EE3FCF90BD23F43C321DC75E75DD8BA7913BEF3D453F0F97DC216A121416DF2AE93A7B0FD8EEDD8F9D65B92F2CED4F7A6A606C9886D6E69C56BAFBE818E8E765914D6AE5D85BFFBBBBF9724248FD72FBB1216FA65BB7EFC631FBBD1293999E6BFEA9839B9E974005A7C7312FD96B085F8B608D2D1D408761CDD016F59392E9D49E3C0BBC7D058D780471EFF1D2987B56AC90204297C8EB400BAE2699262A37C20B275D5422B93B7BDF45221D11BE34B31969C21C6EBA6956B6B27B946060928EB4FFED7221EE1441D339ED6D4B5685426C3D2048908921E8F4F7C87A4CEBE76E2AC90F15D4C55B1D9108A8E62C9A23674FA1DE207559CDD02B0E6A3EAE2562A80F6D820D4D8C58FD7E00F83317C4E092EE5036CAA7D54FFB23B245543ACE650268D43E72F211C51BE4B3A2133F128B6AD5B0997247964642C70AF94E679A2F266BCE5966798C436E56A80B6B238D4B7043D82222B5933EACFB6255F982E587A999D1E0790E0FB386495B239A83741A17B0740360CFD9FB934EC22526F2AFB28B6014185D727B03145DBEC5A441F453B59588897AE0D321608EECA07CEFB6565AB9E88C7E5FF0CCA997E2A2E88311E5258591C4A0F5A01B48C436D594BDC22A58A34F3FA8A134E1126F51CFC3F7704BC1F1717BA2454956E3B92BC9E8B6249DCFB6A3E398386F495EB925AD4C2E67D6D741EEB0732E7A758AB92E98612E0E6351DFA59DC32AEB8489FEEEE465D7D1DCA2BA9D39154E34CF3CC25C8E966020A45985C923929CFA20B543381C8B8B154B0910607F542B88374A3AEB61424BCFE0A93B78832C889F342D88A48E61278EFCC2954D6B7E07FFFD3BF40B9D3875434850F7EF46368DFB00AF50DB568F07BE1455A9F4562A69EC27AF4092F92B4254B106CC2E5EEAA096FEC7B0DD0722DAD722196760191B5FD2D7F90D09B39554569CCDA31EE231810B4F25BA52D8A1246389138D9CD80E464535ABB9A5624EB06694D69C46D6E5C8CC4D113CDC9E46EF4E6D0E0F5C08BA48E5869F9D6719EC854D328B6D218B85125910AFAC0FC9DCFC3C2A0FC51595E4AE7D8EBF20AB839E84A61143E0BC4EDC0B1A1280606FB70FCBD3D38BDF72836DFB10D6BB66D416FDF156C5BBD0C545D71EA523BE2E2C8C731954B22BF439A36405BB4C4F3AC0D054CB4A00D6048065D2E8D74360577CE09BB830C08D2769392A1C977226E93D160A3FA9BDD296D61AD686FC0CEE84D9BBE962216024A4A92543149C8DA6082078D0DD58E02E4B240B1D155969DB9BE59BCC72D4566495431597B7980163606F727A4C9A97BC8C2A2CB781194791FD5972ABB4F1B60790097B1690AC1EACC485E836352005902805C60359F9989405AF3DD94D39220AC56DCE3BB2B9E3615EB28F26F87D3CE40655AB34014C346F4C965EDD27C736DF548BB3AD8274AB255D5265542F3D28652B498224B5C7CD4F2DF505F3B91CD3421644CE78039B9A9EE40EB9499F8D9E568F61A1B9F047335F792D924DE3BD383405D3DFECB9FFF39CA1D5924E2293CFCF1DF45C78A25686EA8439D00740E4E992063132E1425C86CAC277E8C31478CB17A3940550D360DBB169707E78F9640D5CF4D03C1A8C8E541DAE0895A7DC6FD58AD57E3521046801691E78ACFC015BFA34E81F1195B270D7F5756989ACCD9AC1D71669F51F3970334954619AD1F46FC09E8126D570F6426A25910AC0B85D5AD329E8FDA4CEEF1B494C5CA4F53AE328D6C9A8B0890F538F1F2D12E5478ECF8FE57FE273289A404AFFEE6FFFC2FD87FEE321EBC6B0B7C39C88F22AD524CD904BF1443623A2E2C95A8421787E2D95ADF85EF60CDA63496AF80948D20CA841F8704A568E1C22EA6B58CBB442A2D954820C244DC45281095ACC13429612A53CF808B59784DBBF13B55BF90343E45F733206EAC64B560286A9CC94AB482E6B546B8B5EF941B4CEB41CBC0D149297C76F3119A9C1A0FA60DCCBDCD731B0B3B7F0ED3BEB3597874B6619202FD4EA714A74B723C7ADDAAA4962C0605FEB6E2265BCB7DA945DFD43E14B74C8AE04C09D30CECCE42BB1880E6F815F6B34513DE5C77BC36298C6B6564343696581CD74547B5F52DF2030887348D43178730104B61F87C17F6EDD98DDA86063CF0F8E352E57B755B2B1CD9149C3A5B4E883F1CDC6E8744C41570A974CFC907BE14514D9DCC812317B1383A8D7BC3E8C4695FB509A06B2BD9B83AC451622EA7A3EB0542DBD866B15AD057BB2E7232818DEFD04C946270E6AD76EDD983AA8A6AF45DBEA2DEDF4985780546B148026E5740FCD1A95C0A8D2DCDE8686ABC6EFF148358F1BDAD6053DCCEB2E8E483573464547FA46DC0CFF61C420009FCE01FFF116E9B0DD1440AFFDBDFFE0D4EF60DE1AE2DEB5166033C4AC75E7D7463AA8C3EF50755BD72F21F05D0351AA0AD554BD40EC080B4B11E0B57562E385B96AE169D512719DF6A0155855699B8A1161303BCD6B6B23EA5D505226F429A99708F0B00648E3760A3AC686B49A9B1E9DE13B5820155AB0F9A7440E5C648CAE9628D4BA287EA36734EF118300B8EF93BF7BEE47723A553D895FA7F5EA08B74435E93B3255F264CBFB775E132BF5BC794B83274A92503C4D226B225D53521F5626BDAD5EC2ACCF35B1748F337D5D6392C58D03A95213451334FFAFB39B9A9068C495BD0EA40957B25EE00F54F318E32B624225917F69EBA8C8B97BAB17EDD1AF40F0CE3CCE50B7864EB26D4B93CF954551165C9D173CD12F22924A26119101E8F1FC1A052C09B1C48AB945E659D51EDCDD2DED635C446809692A1F2B8F2EC96EF69454B184B6B20F0723C837FE3D2315EE77070519398BE3E8231FD951C58E6C758D8C593C5FA6F3EFD89336711F405D07FA9579E2F118F209B8DA3B1B119E1D118FAFB87457B2369CBA2AD7301DA1B9BC63262261862568B4CF7F75596A8B9843C9B3427B3151863A0980EA4BAC881FE618C0CF6E3C8AE5DD8F5DA0EDCFD5B0FE0FEF73F8A935D5DB86FCB3A7872004359C657AA5C1C6C64F6B26A7B132A9CEC609FA826A1F5D5C74E6E1588E618930413016165CD8A954780D08B85691FAB0FD75CD70AB0D69D8A017403C2D6F633006D2C5A734F034213218275DC582D68732F71970880AA019CCD2901FC6C56BB59F40DAC606D5C2CC6A8C85BB0922EA8DD79DAE5213107A6C4B3AD2CF3C9BC734118C92407A905CEDC832E2095BDC902BC8542B7BC9658CFFCDEFA778B4689757133ED647628CAFD61673078B2C367A2A69ED2F77372D3E900B414B0673690D9B46A0767D69105EB26F3673099C2A1A35D68AAA9C3D2D61A38981490073A5A87869A279B2899D422B294CE6064949522940F8D16A8298469180A56C09141A3AB8A4B8C5B99F73A214195A39707D5B141E690F1F9783F67460A22691116193D7AC151A3322D13BBF0DCC6BF476B99A0CC7F139429F959EC5EA0CFD950E1F89D494996EBA6D3720EFF260B1107337D76CC624B3BE5DF0E970AD2487A70862D1E874D02420EA493B4AA75545F6F9FCD04B182007F2F667498496D1DFC0640A45DE58D95BC6986D7CEA9C40CEE30065269BC73EC341A9AEA11F0783092C8E1D0E123F8E47D9BE1D1344AA9F7A2036ED2AB04429D4D9735014EDDD456ABF45A8BB1D0EC6AAA45545F89F0684B4F07B724FA910F9C713BAE5D2C747F3025CE4ED683F2CDAA8AD5327A6507480BDA543631F7BFDE56BBD8F5506C3D176FFF95556B529755BB98716DB53CAF87123CCED0EC0C58CAB36A5122A5E0E7CABFA3B8A3F22C29757F53A3D02C361218346BA7CE7034C69629006D9E95FF66C0D000BBF93BDD7779664971993CFA99A9E161E177CBB8946C1D950844F798D5C5915F382DBB92E245CF2C5025809E8445A6E3D522BBC21992CD30CBCD2129B25C1D47010C876328F7781074D0776A479AD592E329C423619497D327AB20BB907A200ECC7C80D0508C4482D16CE7F420A7C5CA1FB5C5332A58A66A94B2FE725995312582F7DA50C8B0DA8B5E2818D47233DB4AFF5B980B6AFEE74B34725008185BD28939B00CA5CD3C97B5C9FAFBFB71ECD831545656221289482205FF662C34B202962E5D2A54A8789C406F87CB6D47343A828A60AD00476D5D15060607446C8673309A0C8B1E83CBE1C568784806797979B93C1BFF4F5F379F95D7E68794305AF7AB56AD92124ECA482A640C9909271698F62B9A924AF237022D015E2C50E5E2206C8FA673E8BED087542A2719649DAD35A8743A44924892300810622913DCB3B0F3DA82060E51EA93BEB2145DB5FAC0C71B765703B44216B1F232199C3EDD2D4920172E5C445959397AFBAFC0E771A3B1A111C78E9EC0E2A58B71F9F2252C5AB41867CF9E476D6D1DAA6BABD0D77309E7841EE6C6C2850B85DF5B53538337DE78039B366D927625758D5430D2ECBABABAA49DD956FC8EF4352EB0A49F353151231291E01AC7249365088C0D0D8DC2D526685247591B4357698A4C16A0B52085005B3412163DE7DADA5A5CBE328055AB57A3A1BE1EE1704878DCBDBD578407BD62C50A8C8C84515FD7209AD35DA74F63D98A65685FD086A1C1415CEABD22B90A7D3DBD686B6BC3E933DDA8ADAB45B93F88935DA750D7D880C1BE7E19C34C7E615BF01D59B880B446B605DFEDCC9933C2B21083C5ED81DBE311595CEE541A1B1B85E2D750C7649918828100AA6B6B3034342422FEF5F575721D566161DB197721E708FB85EFF8FCF3CFE381071E10CDEF12404F64F81390C5A59116E5E293278EE3F88953181A8EC34F71935C0A613BA9463E642249DC7FE71DB834D08BFDC78EA0AEAA02158120EEDC7EA7D233166D095AE48E7C3695D45DD3CF60B508CD96D1802607047F274F92623A8A9EC333E99BA465C1EC2BF277B3C8E44248669C387AE212BAAE5C960174C786F5A8F1F9C4B297B0A1F69410A88475114F8A35E26339295AB596A8B8351064567F03761C6C045F0E264E5C4E7C665FF1590D358ABC501E170E47E0740590B56544D4BCA6AA0EF1E828AAAB83123C64465C5CF47D8154320B9FCB07E458205655AC619B18C54033B0B9787012111C9A9B9BE1A2A68109C868CB93C772D120E8F0BD3C5EAFBCB3CBED923E8D45E352F0D7E5A1F04E0E198AC58B0219E062BB122645F33B2E62F54A361288A71292FA4C660163EE0E2EA8196A10BB118E25E0F1B9A5ADA947CCE7B45AF4E359D15703B4B242D9CBE42AFFE29967D1DABA00030343180987D1D8D4808AA01F4383434824D28827E3D87EE7761C3B725492456814AC5EBB12996402CF3DF32C1EFFC847A53A08DB8BA5AEBEF6B5AFE1D1471FC50B2FBC80868606691FB615FFCF7EDCBF7FBFB4D7EAD5AB6501FEF5AF7F255545C8E5EDEDED173A1BFF4EEA646F6FAFE2070F0DE0631FFB98FCDD30794CF070C2A966B1A0E9DBE5F90C387FE3DFFE053555D5D237834361D15DE7BD2E5E3887471E791F464642387CF8B000269F239BCE61F9F215387CF4283EF9BB9F40243C2A25AFFC654179BFCA20AB95ECC6FA4D1B71EEFC39B43434211A8FE1FCC50BF8FDCF3C89679F7D560099BCF0C71E7B0CCF3CF38C3C0B1737822ADF870B1A01FCC0BEFD88C5E3E83ADD85279EFC0CBEFDED6FE3F77FFFF785077DA6FB0C46C3613CFEE10F4916E8C68D1BF1F4D33FC4D6ADDBB063C75B92F5C9FBB04ACBBE7DFBE4F909E42C9EB066CD1A590C6B6B4B2C8EEB8F1B6A42084067858D71F8E8111C3A7A0C9D1D2B511508209B8EA277B80F8D754D48C65270063CF007838845C2703A191A74A2B56581164A576C10D2F58C55AE521CC6FF580373E688783C29994AC9544CB896EC5497F8BB9D22FD087B18CFECF82212C900D62CFF085CB900721E2F761FD8277EF2B6AA6A38A91896C921311A0123DA6E6A2EFBFD79C5AE62F02876B3582D69AB0FD1F8ED8AF9AFE207D53E35D1CCD51921B2348905AF7C3372BED6F1CD08A3426FE3B50569B540AD819631943B7D4DE547525BFC2B577AF0EEBBEFA2ACBC42B2D068E1A4531904CA2B313834023F9CA80A96A1373E8AB28A0042FDFDB8FBAEBB70EA6437FA87C2E88F84515D5686BA323F366F5E8B575E7E51764983C321A4B276B47574E2D2C58B280B78111919C2E38F7F147BF61DC4E933E7D0D1D684D69626AC5CB9523B9B943F758C35AD7D9F4C5419EBE2280034770D2FBDF4327AFBFAB174E972356A6C36AC5CB1104FFFE0C758D0DA8EFE91416C58BF0E8798BDD6B9542CB79ADA4A0C5EB984175F7A051FFFD4A7F1B39FFD440080E3E6EDB7DF1690397EFCB8586EFC3B175B820F772504BB95AB578926371799BD7BF7CA77870E1E446D4D3DBC3E2FAAAAABE1F70771FCF809343537499592A54C28F178F2C1C5EBC557C443A75721291A6B59CCB873A211F2BDEF7E07951515F2CE5E7F998CD59D3B77A2BD6301DEF7F0C3E8BDD223EF42C0ABA9AE166A21771967CF9DC3C73FF5717191F55EB92225B076EE7C0B8F3FF638FAAEF48AE1C20A295C18EFBEE71E59BC3EFFB93FC22F7FF90CEEBEFB1E014B566C79FAE91F8BC5BC62C572F87C6A71DFBBF73D2979F5DDEF7C4F52B37BAEF4E00F3FFB47F8F297BF8C279F7C12470E1D9636ABADAEC5B295CB6541D8B66D1BBEFE4F5F95CA2C9224D4D6818E8E4E343635CB22B9B0B3432C6CDE77D9D2A5686A6C426D7DA968EC75019A5B59D9324BD9FA34068607114BA751555507B7C38EA1C15E193CA95812A3A3315437D68A3F90CA55D48265F060706000AD2DCD82190A8C7420A788015D0C76565F6FE1217915C95F93899E4C25957FD7E6123F6AD616C5C1EE97E1F5D5E0C09E4BD8F9FC1E04EB6AF0993FF9439CEDBD8C8DCB97A3D2EE802FC76C3C17ECF4598A5F5B2F14161F9B01E2F1160AB38535CF650DD258CFB382B916D915F686F802189C13DEA95188D65534722652AFE419CD27EFEFD5890A63AFAD8F2233C4989DDA671F898CCAF6926A83E2C7640B66B2188D2524BA5F1908223A1AC64034869ACA32C48699EDD58EFEC141246825FBBC28F3FA604BA7102CF7A3BBEB94B210535924D3592CE8E810B740756510A964427613B10417621BE2B188E860D4D4D6C8826A5DEC0A2FA67E23401364B888281F7401A0B90875779FC1C2458B71FAF419048204511FCA826E4446A2C2A0F3960770EEDC192C5EB808A74E9E45755D0DAA6B2A90898D62687804D5750DE8EFEF939D0EB7F8DCC6B3DF083EBC2FAD7C022BFF4E2016EA64222E35FE18E81E1C1C1417127723ACF84170E642452A1F5D1EBD7DBDE2FA696F572E0E3346A603D072AE96FD4C25E338DDD585868666D89D2EA99EC2CCC5CAAA72D94D321847C0E33CA4755F535D87506844DC2EE72E9CC592654B05F4FAAFF4A2B9A505172E5E90EF3C2EE5CF1E1E61A157BFCCDB8B17CFA3ADAD5D3206A927E2F3F931303028EFC28ADDDCADB27D98D24DD78ACFA3C61477630D4D8D721FBA8A16B4B44A1626E3094D2DCDD276DC99F45EB9AC38F9628557C8BB30E188EE3A8E53EA7BB0BDD8CE4CA6A96F6C989378DD9CDC540F9849B338D4F1A2522E2BF9D0C0208E771F47D2060CF60F63D1D24E0C0FF54B265C269995F2ECDBB66F45CF952BB874F13252199BF800D3E904B66DDE22D790CCACBC5B43F9498B276D7180C61AD8D279E3968873C12A4FB1D47C2E8BEECB7D0885C3F8977FFC2A9CA339445349DCF9FE0770F743BF0537D2E8ACAD1316820A6C6832984E0428F6935A178D6BAD64D6009815B08B2D6AF1A74A650F3BB25A08487CB49261A902A0E24717D172155C5554C402F7D51A6C190FEC54B04E77B15C8B0A629A9265347A7359848647C45DE2743990411A9178047E4F506891E1A111F8CA2B914CA4E0F7D964E18B86A3E2A6B2331640FF77282C559FC9CA618D3CBAC1B8E68C84861089C6C42A927542760557B304C68096C582BE1640F35D255142A8674CB450DACFB96C124E1B8B57399064D6AA28EBAB7249B448496174695951327D39700CADCB58F26637626515E403893AA187D620DD0A523E4A2A99E8FC3799C99AC72EC92BD4592E4CB1E285BB780C5DCB8256E86E58329AE2270419AAE5E9D2564CF4D2F100E12BEBD80DCB1C8A41A5294C52424D620C6ABEC9122DA2FD7A97C58D27B30265B7AC7C7F26D149BD8A62C398A4151588557B60B6BB50F3E4BA85C0A8B03BF43BE43318A5C6A24E3612EAA2CA1CCCEB776BDD6D19E39A6552B2A0AF853A160BC00CE4643C81FEA101D96271307362D22F49FF6A2695118B837E50AEB03CA7BA46E92AB01C515565D59438B1E33D96092BB2E33559433311C4F92CF4B0840DB8141E45FF95017CFF9BDF41FFC53E61177CE60F3E8DCAA67A34D757A3BEA25CF9A10D614F2984AB3961E1654F069C2768BE71BE363B88C2FDCD64BCBA8134276AEA3719F70CB313A06F9116973FE047341617BF2A8B9C8A9F9FC916B063EBB66DD8B3E75DF1875314885847AD8473172E883FD8EFF52A7D912C652D999DC80C3397F885D988DC0E2B4DE06BBBB08A1FF27A34BB899A40806E8CD9634688E9DB996DCB899E67B2DF9BB965FA867389567CE9A35AA014249CC44898AC85C84015B7B72695D658261345EF27F108F943C60A1C997F91B9618A1A01E14402874E9C86D3E7C57E5D01BAB3B31D8970046B972F819DDB2BAF47C939EAB242F97C0D2D905F4C619BCA33CED763CD82C3400F591FF4C326922954949723343282744A5989A9744A5C187DBD7D2282C3BFB352B5CBE94468242C404E77006BC7114C08D0B4AAA8DB40638A5BD9B2B28040B361334EA64DAE07D086A668B54E2773CD9BE51833C74C42CCCDF2DCB3FD9CADADA5449509DB384F78D7142DB18A34E1DCFA3B95BD186CB192F7AD01B3096F34C903F2B69016F6A6E59910ABDA0E27998059A02F11C7CBEFBD07B83C188D46B06CE142AC6F69848F81974C5622DB3EBB1D1EAA70B99588AA176B59C200002000494441544A8653A9ADB7EAC7BAD8E6930D0A1E9131AA77AAAA05B7A44A254F38B6F9B62958A422242F63C35020951B4BA5B44FFE3391057DAB82335BA838107D2B8FC1C98F08905D33952134954B5FF7D839B9A91E0853F4418F4DB92D9E24C6C7462026F792F424EBE0B2B20D66A2F5F2B020FE0E155423B2523D575E4C8BBDD0279A1627B372C9523320C0804A9E089D433211477434029BC705BF2FA8448DF2E2372A38373B6E8E996889A95DA3386B6BBC00ACE92BF3CEF964078B2603EF6A1829C57DCBF38AB3D8A6023493C9241C8F6133B596987F47E7FDDD1603E8565E8CA6D20325809EA0B5AC169775525B831F66A232BA4D0BDAD0CAAC053EA7D229D73DD6B2BCA8B46F9D6822E5E76D486633387BFE026C991C7C2E8FD45C639092BE564FC02DBCD2A686FA3C5798E7A71309118D51E9E7AEBC0FD0F80767ECD9E7F84257072DD50359D921C5C060F591F2586B9072BCD729F6A9CE24404FE55A73DCD493BEFD7881DE499F7C1B1C58F2414FA293AD206D1D50D609C3BFD3C5410BDA7C8A417C12B7BAFE21DA22968398A9A8015A027E0C2A53690BC07FFD7FFE1B962F5A8CC87018DEB24A9D28E14277CF596CBFE30EDCB9658BF8468DAA1D4332A49D31EA9F2458279302E456E1F85B051C8A990A13A53BB3698B8FB1B685354BF146FDF6D7B3A08BAD7BB530CFD946F4868772F11C318B9FB53D67EC2637F1854A003DCDCEB36EFD0D6833838EFC519385772DFEF0346FA94ED37E5049E990D46F9ACE4A805CD1926C52E0522A1A8B1C80A2D1712A87C223A8282B137D5DA67393C3CA238C8297AAFAACB408C827E57B918A56AC716105879BDE029A92C36B0A948C6974F2443EE8695CB274CA4DDE0225809E66078EE79B253B805C595A9EE3595ED3BCD598D394F84B41CC3C341292E29F81B23249736EA96FC48573E7E1F17944E798890375A25B10462414128A6082B5EB48F8B73B108BC551DB508F603020AC0EA584A6E43F09D4CC9A32EF4AD6835534C7EA02B1BA066E2AD74809A067625896AE314B2D5002E86936EC7800CD6C20021B818C9FD9B02E959743952262E0EFECB9B33874FC181A17B420154FA0B3B50DA78E1E930C41568A70D99DE858D88923478FA2AEAA1ABD7D7D7079BDA8AF6F407FEF0052A93436DFB11565015F9E1266A41CCDB65A54C6D269C94023AD8C59571305766E85EDF73487C6B44F2B59D0D36EBA5BF6C41240CF50D7128C0962D44C200F76B6005A158D655202F5A50BEE0B919E908A16AA3E1EDD164AB14D05B64425359391CC37A6A51240D571927655908B66C50DCD85B6BA68CC82C44588C904C69AB68AF49B77B6BA4066A8796F8BCB9400FAB6E8E629BD6409A0A7D45C571F6C0D20F25BE6E253BD6DD62C4802AA56CE20406B61CD7C0AB9911CA59B4280D65A0DC60644A2AA24BC646BE553CE553ABB4864E44B5816825086FD20A0AE858F247B52CB92F25AC6AD635A68D6DEFF06FB6B3E9F5E02E8F9DC3B73F36C2580BEC1762FA6E1916A57CC85BEC15B149DAEC0548B78A8EF44D45CFFA9F0ABF89FA5CC914EAAC9D91C484B00308CAACA0A5551C5304344B7208FFD63EE399E7FD9FCCD148965050FBA3EA839AC123C8A8A6799E7D3572EE61F144A45E5F3CD67B6D96E82AB9500FA26E8A4DFF02396007A861BDC50EDC6E34FCFF0AD267DB9313441B2394642280F96E54154828E26496E8ACC2D452AC921958C21121D85D3E182D71380D3E156863E038E22FE220E10A4346E6BC551956A4E811DA5954F6D1F75AC9D9AD953CBC49B7483CCD3034B003D4F3B660E1FAB04D033DCF804682A9229C3562BD7CD315FD500B4E1F3D2EAA51605F526ACFCDAE96886280F8A29EB45E1A034E2B1246C70C0E5768A6605019A40CE2A3323992C2EF40E4BE180B6A66A29BCEAA67FDC4E7FBA5200536A6374B694007A868767E97237590B94007A863B8C3E68037C6233E66BCBCDF08DA670B9F1AC7972B6456ED3A974EDC663A54CFE16AA0289127C547E12EADDC61371245953D01780D3EBC5403C8BE7DF7807EB37AE432E67C7A1437BF1D0D64D68F0B9A418822885DA00D670A6C0A8FC4DC07AF24F72331F59B2A06FE6DE9B9D672F01F40CB76B71B2CA0C5F7E5A97B32E12E67713E4334560A76DED8BAE74415C9EE66F867F73A8EA8B84EBBED028467276ECDCBB17F7AC5D85D75F7D1D2E8F1FEB36AFC3C5C110362C5B8C2A560897E2ADCA8266F92829212562CED37AED9BEEA41240DF745D36EB0F5C02E8196E6266E0314DDA6413CEF0E5A775B9F1AC6332304899E3B31AC6C5B4981746685F287DF435EB5AD976554ED59EB3210507F6749F43657D2D9EFEFAD77062EF5E291EBB66FB76DCF1F08368696C407B3028AE0E8A3C29A399D7D3003DADB7BEF94E2A01F4CDD767B3FDC425809EE116264093CD605C07337CF9295F6E3C178B016CFAA14DE6E3F45D1CA68E84922A356C92942DC73A332AA1060EEC3C7556CA81FDC3DFFE0D52434352F1C35F5B830FFFD193527B6D6159995479518145FEDF5AB571CAAF7D539E5002E89BB2DB66F5A14B003DC3CDCBD4685AA2E406CF07FFF3F55E8F6E0E060CE98BBE118036C40B870168913FA5059C819DA5916C0E1CE91B40286B43F4EC09FCE85BDF46CAE6C0273EF3243CE565686B6E424B30080F83A9363A4C9870C37257AA74932A7BA54CEBF9DEA637329C4A007D23AD776B9E5B02E819EE5702343FB44CE7339898E413FACCC93A993E4093C1ACA279768B059D11F74656AC6A7AA2230EE09DE3A7E1CCD8A550261CD40109A1A1A61A0D15E5F0650027D270FB58C8B650A74DD5189C3F8C98191E2E632E5702E8D96CDD9BF3DA25809EE17EA3554A3A9BD1E398E1CBCFE8E508CAF443935E478B7F3A343BB16A55F959458AD385392570486E9D9423714AA1DD880DE8198AA06F98453FB368A872A221E8878F7CE764024C7661F517BBC30D5F59B958CD4CA62157DA2C28B351A166461BF5062E5602E81B68BC5BF4D41240CF70C7524B999A1CF443CFE78F951BCD92F046C77A5A81428168165BE5870439C5FF2EA49203F17406C28ED66E6A661BBA1C0E24924978DC4E7825638595AAED48A6D2181989C11F08C0E37628A0B66426CEE79DC98DF47909A06FA4F56ECD734B003DC3FD4A70A69B837EDDF9FE3140C76021B53424A964AA493512D0E37F8CFCBF726908574EFEAE3CD4274E9C444F6F1F9C1E17B2A92C464722707ABC48A692D8B67533AA2ACB15C06773C8E9B2F3F1585C0AB3129CE93232CC98293FE37CEF08FD7C2580BE493AEA37F89825809EE1C6A606B300B485BE26B7986755EF0D38936E47970C5D3356CADDA49B45A7702BD6055F936CE6029B239D49C2E9B08B46F595DE5E641C7604BC7E5CB9D8076FB00C417F104D8D8DA8A9AF103C27B52E6DCB81C503E8DEE0731AA9535E9F4A8104EC5B11A44B003DE95177DB1C5802E8A974B555DCDD923C61FD73329311B00BFAFC4A5FD97C69C488A672BF593CD6EA2620405326957E68D203AD99877C84EB82613EDB4FB12E5426216491E275699567695D4BB517269DD8904EA5E55E69967EC9D13542DD0D31B945BB2393C9C1E3750B485B1368D8AED4A436D44029726B49A737CF5DCCF8B8BE4BC4D4332F6A6C595055CD47F529127F9A85BE2901F42C34EA4D7EC912404FA5032701D04C714EC4130888A8BDAEAAAD05DA04EC4CE6F23C4863B60217F9DB0C6C5AEB104EA66972192D86A45F8EA04C3FFCC1830705A409C495D54A7E95F770D89CF27D474787042859099D1F1EC7E359328C7FDBB871832E0CA09E82CF6A0284046AFE10A0B9009867B61674B51E7FFD45462F0C5A30CA9AB5486D10531E8121D0D986E912404F66C4DD5EC794007A26FB9BA4854C0A89780C5EBA3838A96DF4C92A43DAAAE85950C89FC90798DAB5AC004D3EF478C506260AC81980A6B4A9CDC1C20039E1565FB97225CF05F7FA7D02D02CBB655205E9AA20C0864221B1B41954E5F7F4DD13A819B474BB0B3A21069CADCF43D707419E7FE37956D7C778155FC66F1D0B40171DA0722255FD1AF399CDACF312404F6DFCDE0E4797007AA25E2EB274C7357CF3967516D96C1AC958141E5AD0B2A5D75A125A4FD3EAF1986D8B6CC257D362FE86036D849EA69AA67E3D0EB5F9AED88A35B439E3A230006C9EB9D85D617D97E2CADCF4A313E8CD0EC05A3791D7BD5EE56E063195753C8E725E7167E5B73F13B5ECF4BE2F01F4F4DAED563EAB04D013F5AE0591D5AF053F47DE9AB2B83ED2C8201A8BC1EFF5499AB35D978FD21B75E566D59C07A5FD3677A29AC5C04AD783958132195E74F1358AFDD7E67BABFBA1B8C98B7DDC56501FAF7BAC3E662BA01BBF37CFA7DB43AAC6E8CFB5FCE88AC32DCB47C1BB91EF4F4BC74A9184F10B1A4C348426FB7D09A027DB52B7CF7125809EA8AFC705E8F1405A995729E4309A88C3E7F6C061B70B2B586D904D42B43A379F1E6D580F133DC72C7C6F054203ACA6649760D124D2ABAD2E072B388F17A81B2F8837DE7DAE17A4B45ADEC6FAB6360DAD651EC360227FA7EBA3B81C97F5F8AB764479B68D4563644CDBCF5EB0B004D0B330C86FF24B96007A8A1D68B2E6789A04A2A4DC9465D2E67222864FBFAB436B2D4BC2861CA73DD1628CCDF27E798AEF650E3756287DC213F99FA7798B593FCD3C377DD4EC0B5AEF7C1FFEDF6AC9E7AD6A6BF0577CCE5971955B774CAAB7E88D2E2CB933FD2225809EE916BDF9AF5702E829F7A1AA966D009A55B47359BA9AB566443687682402B7CFA3009A3430D6E8337503CDFDE6273E0BE7D854ED9E8C8B63CACD37CB2714FBBC6945D3476D44AC4823B4BA3ED83FB25ECADAC98E540FC8725BAA9F0D52AB4C49F6F76C51EE4A003DCB83E326BC7C09A0A7DC69868FA10CE29C8DAAC7850FFF363A1A85973C5E97531C180EEA49181030C6B3A98D3AE5FBCFEE09C63DC0809B0916DECC96747E3D24FF5A2711193A9FDBEAA336002D9DCA4D9143E2BB795F14B368F81DB31C6789CA5102E8D91DDB37E3D54B003D41AF8DF151CA3F74296CAAB4D9548233FF4C904E01188E27D133144620E0811740655940643419AE72C8CCCF68494D05EB36A9CE377B7ECDE90C4A23A06414F9E439AF91026EF50E5C13B72675D0749E74E273C66370F06FA4F491B35E565E26B10229D42506B32AD9C5BE550571351EEB55587F3DF18DA7714409A0A7D168B7F82925809E0E406B6835004D90E64FCFC030BA2EF58A9CA6CDE1442A1E466D552516B734C26BB7C325842E65818B9F53409B5CDF5932C9A63978E9122080B1B6E244D6F3A4B07752074DF361AF715A71F0D27A98718310A8A3B1A8542527487B3D3ED8EC0EA419ECB501896C0E83A151E99DAA8A3278EC904577B696D31240CFEC18B815AE5602E849F4623EB06FBC1BC64F490D376E9DA10A9DBEF8EA9B58BB7C09FEF95FBE89BEFE213CF0E0FD685AD08CC59DED68282B1B135E329762C8693E7D8CC549853B02343FD7F3454F0A7B2775D0CCB5C2F51695620A1F2DE44C3A85442226198E4E8F1F769F1FFD8924DED97F0CAD0B5A64493D77E132B6AD5D8A16AF47F63CB3F12901F46CB4EACD7DCD12404FA2FF8C8F592CA7BCC3593996397913B0A1BB7F08499B1D075F7F01BFFAD92FE074FAE1F6FAF0E93FFD335435D661456550009A60EED417319C80493CC26FF410436523E58E62FEFCDC8AE2447C2F05E6EC45A51712198921E1F4E357474E63695B1DCE1E7A57AAE02E5AB319DD1707F1E8A64570CB79DCF764158BBDD8FD9367804C6D6F5402E8DFE830BF296E5602E889BA490281AA6A88C32032E733C199FE64FA9E6D0E9C190C61289E40CFA177F1A36F7F172E7719BCC1203EF1277F8CDAC63A2CAD2C136706CF7011A0C5AA9CBD80D344AF75ADEFAD892704686A631851A2E95E733E9F9767A5E748AD53443A56217FBBEB22BA8FEEC3AE177F2D0C9C3B1F7C1F16AD5E8FF56D8D68AC2A17C287685B67B54A8715A44B003D9FBBFCA67AB612404FD45D1AA055C5106D328B4999138026ED2A95B149B5909FBDF81A1EBE730B7EFCF42F70EAD4593CF1074F2096CBA2A5A906AD01BF00B4C2760274A1FAC83C73414B8207AD426A6A70DB7F33685B4FD48DD75C90C48C368B300BDC02A7CE5D44042E3CF3F40F71E6C841E9F98E356BF1D8473F8A402A8E651D6D63005A78EE9682027966DE14A30B250B7ABABD78EB9E5702E889FA561CD08AFB2C006DFD64538AE76C73220AC8CFD32FBE8375EB57A3CC039C3F3F840A6F166B172E40402E439EAD11E7516C81F9F6B1EA5C18195293E431DF9E75269EC7107378AD34C3833607A2391B7EFAC67E789221BCFEE39F206B4BE3C18F7E14596F2D1EDDB61A7E870A148A58613E09493FCD0D746909A067A2476FAD6B94007AD2FD5910D511039A90CD124D02DD0EF13F4BDDBD641A272FF48AAA5D536D2DAA7C4E547A9C70093F4B93F2728AB921D87F03137AD28F3E8503AD2E0EC3896662C7F5D2A5A770F97976A8E23C4B48C06E439A01432A12DA8077BB2E49828B239744DA9645C6EE83D7E1C4868E46786C86D7AE3344B5152E2F7703FD5902E879363CE6C1E394007AD29DA0B41914518EB6744E2CE2443402A7D383ACC30D386C18BC7C11D54D8DC2EEE077B97416E5C14021C59841252280F9CC16676BD2EF35F64063110A38391C79E1FDF95E63717AAF9B55456DB5EA2001DAEC6F12D92C2E8422E8EA1B40DA6147675D2DDA825EF8EC7671555DB5FF1943989FDED394007A7AED762B9F550268DDBBC5023D6214C9F65523A82498D0BAB24B028383209DCBE1E8A1FD0804CA70E0E8710C0C0E03E918BC5555188AC551E3F320319A462E63436363191219E0FE071F40D0E316BB9B0129A9BAA2EF657D86626ADB447CE4D918A4C6DDD1DFDF2F6C8E6269D09B9FD9C1588062A3A7533964722995B4428952BB5D76430E9703996C066E9B1D4E5958D542ED70D891CD64A4028D18CE33B0152A01F46C8CE29BFB9A2580B600B4E9CAB12A6F045143C5CA491203B3CD582FCF9ECB22343488442A85482481742687642282ACCB0587D78B0A9F13BD97FA61B3B91008DA90B5BBB0A07D217C76FAA21990A2F48ED282306048CBB558D06732AA72B3310CCDA2C0CC427E98FE6D05A3B9583466F63D09B6196433361C3C7814239161783D1E24936994955762A06F00EBD6ACC6C123FBE1F5FAE1B0BB108B45A57F183CADA9A9C2D2254B44DB6326744B4A003DB3BD7B2B5CAD04D0E3F42281872A68CCA66B6C6A96ED6C321EE35486D3EB13800EF50FA2B6A61A9954020EB70BB99C1D67CE9C457D4D35E07221924CA1B6C28FD1D1B854AF8E448690CED9110C94C14F710E5A5D0E97A4178B2A9E5D552329063D8233C19B9F9900818906ED78A0CBFB0F0F0F4BE20A9F6726ACC5899EE337F37D16E96C4ACA70ED7A6737B28E1C1C4E3772193B62D151786C2EAC59B91A5D67BB91CA6570BAFB0C92F128962D592AAE9FCE85EDA8AAACBABA40F0341FBE04D0D36CB85BF8B412405B2C68034E2CFD646AEA657376F83D2EB43636E0F4F93392FEEBF397C3E370A1A6AA02E7CE9E41341583D3E14664348A7BEFBD1B23A1118C44A2B878FE22CACBAB104BA6104DC450555189442C86546C14B5755588C66358B7661D76EFDE23E04B4B95BC633E074B3EAD5AB5529771D24AA5BFC1A0A2D5DD62CA55B1FEDF1825B85B60629894FB4C96E9DE36449369715BA42351785D5EA11A3A6C0E649D392499CB92CDC0EF758D0D9A1A2687B53DA6E1932E01F42D30A066F8154A005DE4E22030D162649286DD413E95134EE4E07739D1171A009C1E9ABEA04E9DD36EC795DECBA8ACAB123F66369313AB3AC98AD699AC54AF26B8C59369610890C9918AC7E1F6B8E91F91EB5704CBC452A7C4A7CBA500301E67856D2F2A2ACAB5756D53996B37C01098CAB829D6B1E03B50098E0B171790E2925353B9F67C3B568BD7A9B6CDA470E8D009D89C6E74779F40477B3B7A2EF5A2A23C80F2CA4AA4B34082C5187C5E2C5EBC080E27DD5F6AE72372B225809E6FDD7BD33F4F09A08BBA708C5603DD0B742D307143A76767ED0E49F0A50F9AEE896C2E839CC386483406AFC72BA0ABE4451904A4C75A4DDC0C7248C69270D9E89F760BE14E94D278ACD6F2379AFED6FF67A9256DA79B4351BA7E13205DB09E0B8B026B2D46225111BE77389CD75830741EBC296070D582925735993F13475BBA2C7ACBC4A3C84804FDFDC328AF2BC7C8E808827E1F92B151385C6EA45336B83C1E64D259D4D5D5283956FD8E2C5D5602E8F9D3ADB7CA9394007A829E2C408AA49B15F4DBB5EF98C4BB6C2E87583C86803FA04094D79413AD4AD14A00BAAFAF0F35B5B5CA8F6B8E9D57A389CC06C55C3165F814F92C8B4874146E97072E3BAB746BFAB0A4BC2BAD649B2DAD45B259A84083974E7B56893EE48D5391E437B415986ABB16893AA9BE37B256BCD8EC72224B2E8EA976D8AD7F7C09A06FA08F8DA5C9883E5D14DCFE5FEFC3E3E9D3A4ABA0BCBC5C0E9D6F013705A4053109EA9088FD9F03E8A70D87A3A8AEA840369785CD9E838D991DDC55D8B8ABE07159D88487E82E54275170AF417C7641EE06BA73CE4F2D01F49C77C1BC7B801240DF4097185F2C7DC8F41D338836990FFDDB1315339DCC7566E3987C6C6BCC2F6AF7C03250DCFED75697C366CF22934DC341956B9B036956D2D68C13BB3DA74B4631A14771879539AE2DE7796A40CF467B4EE59A25809E4A6BDD1EC796007A9AFD6CF555533BB9AAAAEABA1434636D13D445285E3336E69B05ADCB2D5ABC10668BCF6018039F718C8E2624804981A074D626AA6ECCAA64520FDD3D4A9F44E5E411A045313B67716D94007ADC515702E8694EC65BF8B412404FB3738DF54CA0E5EF8180F23F4FE4E2E0314C46E17953B1BAA7F998533F4D6B5118DF3B839DF46F30304A39215AD197C254B8F34B709330ECCB66E191231CF2BDF2DD98D2BA5ABD4FDC26CAEF5EFA8CDF0225802E8D8CE2162801F434C784B1A0E9AEA0F52C9834098036B7236D8D205D515131CD2798ADD314181B4D0A072D6206426D368CC67B319208E1DC6800478F9F83DBE1823FE0C5C39B57239849C12602C95AA5420AAF2A0057556398B5A7407CDE060967AB492779DD12404FB2A16EA3C34A003DCDCE36597F23232302B246A7E29AC555753283D5D5C1602113546849179F3711D84FF3B1FFFFF6AEAC398EEB3A7FD33D1B96198000487011297011C5454B28D9946C2596652B6549919D384EB9E24A2AE507975FF2903757C50FCEB32B3F2029BFA4EC2CAE9415DB522A2E57D90E1D45916849259292B883A448821B4080008101304B77A7BE7BFB0E9A43806800B3F4A04FAB280033B7FB9EFECE9DAFCF9C7B96079FA6FCCEBA7810CB4E68AFB1F61F97130E4E9C7F0397478F6143F717F0D0A603AA1605D269DCB8318AC38FED43C6D6354A74F08A1FF15235987524882ED92A1B858B294208BA21ABBAAD2F2A04BD06F5D102662CACD91C0C43AAC124109342CD880E15531B38C25C6B0DA22F79AA8EE208C4D825748954D2EBD9B10F7179E202B2B35BF0A31FFC18A55219CF3CF71C9E7EEE796CDDB6111BBBBB90F12A2AB1878DBD8CA5ACC3F5745D4F4DD0E2E610826EC4EA5D7FD714825E834E19BDC10242B482550534D75DB25E466D9D65E31261781EDD1D4C0059CE0A5F83A8A14E5D080366BC327DC624D38A8AE7F6BC044E5CBB854C5F0FFEE39FFE05E78E1D43D24A209BCDE0EBDFFE1B6CDAB90DDBBAB2E88483A44AD04901AE6F29FB8D6884961FAC06B1A0432DD3580D12825EA5BAB9D1471785215643B8612F67089B3F49F4DC640C43F461AFBFFA71B495FD2D4245D0BA0B8C0B1B97278BB83659C4F8A55378ED9F7F849495C0D0DE3D78F14FFE14835B366273AE0B698F232BB012C985D03A61E650EA10820E0553AC060941AF52DDA65F9F21E80759CF668AA0156D5E23D1D382E6F548D2E6688D8B43BB21E8E470FD08668B49277C95858400FCDF893340CA4269BA8099A949EC7EFC494C8FDFC6A30F6DC240BE473936D4366095947D67F62A718ED36942D071D276B87B15820E87D37DA30A05765249AAAA66A604E783EA232F46E086B04D71A6818181FBCA8DAE52BC559EA60BD8B3294145D5AA066CDDB81CAE0D94E161D671706A7C12274F5F82532C61DBB687F0CCEECDE84B02535333C877E7914EA5AA6E666E369A2DC10856E258254E8D394D08BA31B8B6F35585A097D15E2DE91A526597918D1B37D6A5B29B890861C20BCB8CB6D68AD6511B7EC2B70EEA60E127063DB3671F8B3EF9A9E0D38522F2DD19A4548719864BBB989ABAABFCF2A95452557A73136C4BA0CD6926B2E83C1656E7D3B5AF9B51E3BA5D3EA042D0EDA2A9E6C92904BD0AACB9B1C7FA1BA676F35A36F7826E0FFAA26991332A24485C8BB946562176F853FC56D79E5F418FAC5A761C5CBA7409A363A3E8DDD087D9B979CC146690EBEC84C3D2AA95320E1F3EAC8899D12D74DB64B359A4553303D35C9517B6EE0B297CD0378FF042B7FF4821E8F6D761BDEF40083A24A2411261720AC999A171C17654DA4A5CDD8E984901A7EB84D76EA56559BD57538AD3F354079123478EA822AAF3C5B2AA913AB87933CE9D3A8D6DDBB6A96251AFBCF20A9249EDD0A06F9D0F1C62A41F644C05E73B0B31D04D7FF084D475AB860941B70AF9E8CE2B041D4237412221F1303985D9838BB93F5643D00BF5973D657D1A2BBA5ED70F718BD5219A933DD57040974ED52DAED83895244CAB982DBFE8B5989D2F229B4C2952360D0554E2A1DF63918D5519E962AAF79987CEFA6A9BB512741F3C5608BA7E58AE972B094187D4A4214B5A923C4854F5F86A1E24E7A0E5C9ECC4DAE6B121455DD3304759BA09CC4C4F63F4D6A8DA0865A623AD60126DB15452644CD7F486BE0D9818BD8D64D2561D60D86D84E75A960DC7A9A807CDC040BFC2890F1EDE8FA959C26F0C613657D774336D76B210749B29AC09E20A41AF10645ACFDC04237105ADE5B59275B0AB371F022605DC34935D8B9F7B25B7A802ED5C17C3178671E9C245B56939323282679F7D16D7AE5FC3E8D818F2B95E942B15ECDAB513273FFA58954E257953C6DEDE0D989D2D28421E1A1AC2BE7D8FFA1D615C65819BFA23C46FAD98ADE4BEDA61AC10743B68A9B9320A4187C0DB100937BE4832267B30C4A9AB1EC2880E6345378B9CB57363E1A8F5A607DF33A3CE9F1B56FDF9745B2E761E27C1EB9F8B1DC645440C4D03DAA01FBF99F7BA6AE534E84421E80601DBC69715825E4679411704C985D66D98D2A26B5D132605DC3C0C9A656D3E88A06B099C7FDF1E63B8E1BDF1DBCB35B835F5B0F9D37C1B09E265489AAFADC6A7BF56EC5B75BE1074AB908FEEBC42D02175438234AE0786C1359A386A53C01B3D9F81613982AE1D37363AAAE2C16BADE0A5600D3E68983D4997870EC74B575D1E718D8F16820EF9618CD13021E810CA36A4C2E4149348D268C2E49CB4A24962C178EB10E23675C89D3BDA15C32494B0EE09DE5B30B392E1787C8D81BB162900001A4049444154BE6C1E41BF7BA3716E2A58CB4C26041D256D44431621E8902E0E12E5CCCC0C7A7B7B1B6E3D2B57821FAF363535A50A329994F2482C9B8099CD64954C86A1763AE5DDC8BE40ACF77AB24D0661ED06ABA96DC2CD4315CA1733F706EF57083A12AB3B524208418750074985C92941726EB4656708DAD48CEEEBEB8B0E690508BA582AC2F39C6AD8E1BDC41A68141BC03918571E246CFECE68106669126B7DC326E93C5C0250B5DE47B5E9ED92CE167F4B343ACD0384A0437C18633644083A84C26B49B2591B76C61A25617183921B6AB59665ABB3F118D912DC385D0B36C158735EB3B3AB03764AF56841C2D3ED6735267E2D269641F51C15776DBA863B7E7126DDD5C5EF0DC0D2D6E6CFEA2FAC2A42F28F4E871721E8101FC6980D11820EA17013E35B1B1616E2D4350D0986F791B0160BEF6BB425BFDC0DD48BA0CD83C63C94F850E43DB31A5E67A60349CB062B9F7A16EB53EB46B696B2AEB5CDECB239804532D76F576B5A93867DD7CBBD36B85FA62F421D5E84A0975B6DF17B5F087A199D932848D0246753507F2D5662D825169C83BFB34607FDD0C1F2A6E65ACD906729B949D0C4871B7C613709578241B154C1FCCC3C726C6890B6E0582E1C38AA821E6BEB59245FC743C54AC24BD848A9668A34B17557716D25F3BFE8B83296BA7F21E8B02B233EE384A043103443C1B851D78AD4EBA04539393909FAA2A354AED324EF045B76D5BA61C27C9C82BEE885FB634D265AC71EEE4C4EA033DB815436A34A9E6694554CFAF52D68DFCD61AB9EB7B49A3D382A21DDD38D6C49D0EC101374778411AC896384A09B08769B4C2504BD8CA21A69213E68EA60828C2169F595DF4FEEA86D32DBAAF5669277D6DA53B1F67E15492B9F06E0D97464B8281766E114CBE84877C29A9CC24CAE1B1FDD1E8753B1D0DDDD851D9B7BD063695BD94DF00C36A97591ACF657A475AD9D22EA21D22AD0969857083A620A89803842D0CB28C1902209886444626C864BA136D2C158A5B4A2E94E08D6B268863C4BC164B202CD378CD5CAB2E879BA3088F24393582DCF815BACE0CCAF8EA0F0FE47B832B811BBFEFCAB48A73398B85BC4D8CD51BCFCF45ED53C8087A5AC67DDC04B9739D5512542D011601E1121140242D03E4CB504114C4E09B6A2325FC55B55AF99F1C2B5F5405AB951687CF48C5D262675F743935B13AC7CC74DBD0AFB6E61E49D6378EB07FF86A12F7D0EBF99B88AD3A72FE095575FC5F6471E452A9DC6C19DDB91F4808C4FD2FEAEE1424847A0E64894AC68B1A0437156AC06094107D45D1BB2468B99C929CC9433C76A2DC47AAD2ACE4F994CC81D2DE9561FDCC0E4266AB081417D64F254E406095A15FCE77F151709D7C66FDF38824287837FFFD98F91B26C58C92CFEF6EFBE87A367CFE3A5E77F1F6CBF9BF1DB75293F89652C671DACA77DD7B4A7A343D142D0F55935EBE92A42D035041DCC8633A5455927224A046D6A58F0C1611E18ADB4A2F9C0A0056DFCE2F594457B925D381E89D456D11BE504F0AFBFFD0076E90E7EFDDA6B48C38395CEE23BDFFB2EDE3B731E2F3FFF1C3A01A41CBFBBB89F2F73AF6B43C778043BBCB4FA832D04DD6A0D446F7E21E8808BA3563D2CF969A226A2A23A43C84C01A7151D2C32D42A190D411B6BBE6EDF32940F5A7B265C8B492934842D14011CB97C133DD92CDEFFCFD771E3E2653CF3D21F22BFE361F4D8C081ED5BC1472ADD1C2AAB4539A46B7DCF42D0AD5A2F326F780484A06BB0326E0E5AA9FCC7D2A2513B8C1F9CE9E76CBDD52A7F387131E9D92646BBDE998D2E5D1ACAB74DA704D9DAA6271AA3E5124E5F1A41A2C2C24B36BC149D15653CB76F0FD2AA73B8870493597C4786DA1C24D157B70B75B28B6ADF1591432CE88828224262C490A01D95286C2A3C2CE8827E4EDD7D9A9FDB994201D94C56258698C35460AB9B85B88A85A0E6A6FC1E502A1751AE94D1D1D5093B9888E117A4A8D6A558C53C614FA13CDCB4646E08FDD024418561E0026BF1F2BABC515ACE34A399BFCD8C410FA8242B982C7B98982B29C24E5B16367565D1AD1257D831C090B4329F75F44640109277D5C5B11601C30215629C1074089062362486043DEFB99ECE3A5309673A820B0C0FD0A462A970BAB95211D94C17526C0DA238628172AA7EEA45164BA33FEB7E029D929B8D5DA79D0252D9343ABC8CDEEE523B601E5C2678D0DE24AF3570512B1F71C5C5EC0CBB91F7E8441076555173EAFF2B7AE48B46BE15C85345DD4FDF666CF4ECDCBCAAD151745C541C0756D2865B7190B26D589E07DBB254424B523D6CFD4C421F8460BCB5DA206C24382BB84F0E15825E216031181E3F82764A9E972041EBBD7C9D154CEBCAC31C803BA5044AAE834ECB435FCA46CAB706FD720EF72D89A0A5B80AFE59E11273E0B03810237C5D5B65D9158A05D5713BD799F71F24FE25FD74676579369085B48BD7C3E4C4846A22ABFE4C300259BFAEC43024A84CFA9531A28AE2F04FE35CACC97DFEFCB0B2DAF9CF7CAB617C38372A1DD7433A93C60B9F7F1EDD5D9D7ED956F59D434B44B787C52EE47E14C70AE559A1C256345C087A4570C562700C095A9954CA22AE241CD82E29CCC254A582B74F7C023BD78B59670E994A199F3D38847C92E6203FD40BC4122C36DFDC55C2788692AEDC9648AB9F9EE3E2CED42472FD7DCA5E65B43013356CD6AB509974FCAB717E568FB58B2C6074EC16FAD95945398F74D1A2FBFD1CC6031C1E35B3CFA7FDEE50DDC2C7C66EABCD517ED3E1CFF1F171B0E8FFF6EDDBAB354B060737AAA812EA8AE7A5923AC1887F47250BB3160521E8F0EB222E23E347D06ED9D33519ACEAA6D1BCE7E167EF7D8CBD9B3701E3D3B0520914B2294C958117F7EF40B65A70472F8B051FB4F16306974BE3C850CDEDB8EAE162D92CB1E9A09CB031512CE1BDE14F7073741CE9640AFBF6EFC2EEDE1C3624696B9B0CBAC62D69D22EBB7DB3F5959A8D66AFB14C83D6B311610546343339B9594BAB9751222457A6DF1B1D9070E9FBE6181E2A3BDCF3E0382E52295BFD549BA89EEE7F58CF4EECF5465408BADE88B6FFF56247D0AE57F1122A77D8521667C90246A6A770EA93EB18F9E863BCFD8B5F2291B4F1F9AF7D155D5BB6E0C583FBD1D7A1E3A095CFD22F466CD21DEE351339AAC1046DC2CEE0AA99EE3816FEF7E333D890EFC0F8C83564D25964FB7B91B5D27862E73674FAB5291AB354751C1C6DE6F1094694F4FBFE66E35509FA277C095640CE3CE3F8F1E3CAADC1547292F1D0D010AE5DBBA67A199A10C303070EE0F2E5CBEAFD99C29C7275D0E5C15661C5E2BCB2E653A9243EF399CFDCE3DED0AE93150AD41820D55585A01B086E9B5E3A7604ED798EB6A05D4DADF33670FCF20564D33DF8C90F7F885B978651725C3CF2F4A7F0C24B2FE1E1AE0E3CB471A06A102E94AF34DFE16BBDD08D25680ACD4240CA8AF62C1CBD740D76BE0BFFF3D39FE3D4BBBF83E759F883975FC29E834F62E7F64DD8D29DC5421C4ABD57A99FE1974860FA6E011D1DDDB06C0B3458B57BE3DE5863E59959A108CC5234444A2B59F9991D47FD23B9F21F236D6855F3A828CB39892B5746B075EB163F0E5A47E7B086496D8D1321E8152A4486371581F811B44317874D96536CE1D8C0E8DC1C8E9E1DC19DEB17F1D61BAFAB68802F7CEDCF90E8DE882F1DDA87EE944E90B827BCCE2440282B2C48D2F78E0BB31915BC6EEDEF55AF80BFA9692C56156DE2026F0E5F44DF96417CFF3BDF45D6E1A69987C16D5BF1EA37BE892DDB366247AE53D5A45074A9FCB87A93CCFC1DB61BF762ABD2E4913072A2529855E9D8E9EE2E78094BF9C22D86C7298B9F51257456536A53CAA8A9EBBC2D26130BBA2DD4D454216347D0954A850E5C05B2CD0D242B81622281374F5D40AAA313B3B76FA22399423ADF07B752C1338FEE408A9B4B9E0B5B75F530A163A6978776B71A2226411A023485831EF455BAD6A20BA66ED7BEA7B600FD5E4E092F05D74DE0DDEB37E0E57378EFF537F0FE7F1F612D21FCF15F7C039BB7EFC2EEED8318ECEC408AF6B61FE35DBBBA6AE75BA945A9D0703D788EA3DC0E9DB96E1D2143EB9658F077D74182CF4446A024583BA4C1DF329AFA11AADF6442D0F5C372BD5C2976045D743D8F2E02C619247DE2752C1B775D17C33727706D6C1C5EB18C3DDBB762E7602FBA98C5E617EA0916D8B9A76A9BB2A6FD98DB6032842A36CF4A6CFAABF8830EBDB1C5FE7ABA225CF058207A96DE2C29D746C24DC3F312B8E539F8AFA3EFE185279FC4F4AD51D8691BE57C0FEE8EDDC2A71FD98DB40B24594FD9B7F88316B491CDCCB5AA080707A824B42F7F62721A03BD39F50C49D38BE4D2B5A0BF61A8C817858358D04BAD0321E8F542ABF5BB8FD811B4532E79A53289308D644A87A9D16FCA2E1DC58AA3FADAD95602F3C522D2990C922467CF53197B3A1A2001DB4EAAAFF30CBD23499284186D40FF68B95442369B51244BBFE872D5E64C8D69E372A8256665A092DC2CCBFF99D08CE827CC955300BDB4BF7CFB0394ED349C7209DB37E4F0E9038FA033E122AD73F096B5A06B5D1EA1961823265C4DCEA373B3B83D5F462E6D63534727BA123A7E84563FBD49B4AA19CE28F4BC34B242D0A1565DAC06C58EA0DF79EB4DAFEC59982FBBD8D0DD85345B28792E1EEADB80B3C39750283BE8EAC860B23087439F7A1297872FAA780FC6DAB22EF4DCDC3C2C2B895CAE1BB3B373EAB57C3E8777DF7D1F5BB76E4661661ACF3FFFB9257DBD8BB9188C551BB46883196F869C9565ED5BEB8C70D639282E2A4880B10A455D551359A63E7313112E6C4FC7FFF261622C5A3FDD5089A25FD316BBB6F4C3AF7FBA37E65DE0D2AD314C4C4F31425B65EF95E74A38F4E81EE4D84351E703F9BB830B73859F253E2385A0E3A3EBB0771A3B823E76FC032FDD95C3F0C54FB03197836301C96C12071EDA815FFDFA0886F63D8EE93B13C8E63AB067EF2338FDE10994E68B2ACC8B110503031B71777A468578CDCFCD2397EFC19E3DBB70ECF80995A4D1D991C5534F1DBACF0FBD948B23E802A10FF7CC9933B87AF52ABEF8C52FE2ECD9B38A34E7E78BE8EFEF53997367CE9CC281271EC77CC9414F771ED9245D301EAE5C1D455F6F2F7A7ABAF1D63BEFE0D52FBF823367CEA2B7B717232323989E99C1407FBF8A6450E9D18904F2F9BCFA66307C7E18F99E3C7AF23D3870605FD8B5A3FCDD57666671E5CA75607E16AFFDF4A718DABD0B2FFFD1CB3871F23CBEF2C267D1415F3F5DE7DC3134E53D57F010082DCC3A182804BD0E9458E75B881D41BB9E3AE0F9BE61137FA1929395C354D7DE60FA343710932A7A630175638D9A6408DDE95B338EAB7A946A3FB2B1481F14D6A532DB54676A3D7EA630AB48F9DCB97378F699CFAA9F2CE5D9D7D78F2B97AFE0C9DF7B0263A3373172ED1A868676E2EEDD02FAFA362093C9E2C30F3F52963C93360A85691C3A7408BF7BF71DCCCE16B17DC70EDD5ED571914C25512C95D099CDA23B9753216AE7CF9D4757771776EFDA8D271E3FA8657F805B44B94318430EE0DC5411E3D7AFE3C7FFF07DCC95CA989DAFE0AFBEF5D7E87BF800B6E69318CAA702F54E74FCB91C8B2320042D2BA31681D811F4F9F3E715DDD267FCF0C30FAB9FB48C754AB0A732D5F81A7DC76AD38C111D696EC84195F6BC79F326CAE5922236BA0776ECD881EBD7AFA9F7151907089AE7F3DCAD5BB7AAEBD586B4A90705133DFCD03766C1954A25B559D891ED52F3738E4A85B66A02994C0A6EB9A21F1EA43A5BC56720954EE1D2A54FB065EB566432695520890366E70AB06D1D23CCAA70D94C465DB352D131C4B69D50F75729B350947E0A7564B2DACD714F18E1FD26AF8A21077072BC88C2CDEBF8C93FFE3DE6E6CB28961DBCFAF5BFC4C3879EC54036815D799DFDC7F99547463609976421216821E8D813F49B6FBEE99168E92E2041D34265F17B5A9EFC9D044942E9EFEFC7F0F030BA733DEA3DFEA3BBE0C2850BAA4634098EE43B3838A8B2DD98B5A6D28ED34945DE263D99AF1D3C78F0BEBAD224653E08CE5F3887E9BBD3CA821D18D88472A98C8A538153F1303D338DFDFBF6A154AA2837453269034E45B9288676EEC2E8E82892A9140A73F3B83B7D57F9C39939373D39A52C6B1AE6A964466F5E96CB608718DE1BFFBE78F1220E1F3E8C1B376E546B3A531E62532997D0D1915561737BF7EE55F7597B180BFAF2DD026E5D1BC5AD8BC3F8F9EBBFC0F6A11DF8D6B7BF89B73F3C872F7FFE307A1823CE8D54B5A1BAE25A49B1FAC40A41C74ADDA16E36761634FD1BB5E165C10D39A246174530E42D18A2466227599BD03933AE36CE98EF93144D14C762D63309F1F4E9D3EAA1C07FECDE423224F16ACBB78CDDBBF78085F9F91061E4085D138C2EE9E9EDC1E4E45DCCCDCFAB9E89F45B9378395FFFC0065CBA78117D1BFA50762A4A5EDE130997D634E7215993D0F910E2C3850F15BEDFB7A11F85991935376B5790A0E9ABAEF5A19B2495390F78E7CC0574F6E5D1D5D1A922368E1DFB085F79E619F464B851E920E9A54CE5D185E6DAA19667BC060941C74BDF61EE367604EDD267507304134A167B2FB891574BEE663CAFB1D47BC16B9A718B95BC34E76BB237D97E2ECAE58A224FFA9855E2875F1744A7CC040BE4EB8A6FCA276E0AD2FB19901C4792D70D704D63023D4FD54FAE2F56756F185C82B1D3E65E0C8844932DA83EBA7C1D33F3F39C1C7B87B661A38AE0609B2A172955299F5BA89EEA8EB2F284EF304BB9FDC70841B7BF0EEB7D07B125E820F9D426922C966E1DB48017CBBE3324574BD8C176548B5D3738BE4A7E815AC5C1EBEA303B5D3E53156B0A9440D5A52F34F1EAF86B86D731494687D95589DC1F137C9804936E4C213A52EA83926C4CE49CC79CEE40C53A971983AA0EB47E58249978A38BBBFA0DAB1A5BFEB4DE1F90665E4F08BA9968B7C75CB1236815C2D1D687B19B79134B45442C3F466D50FA641D7CF8D0825616B3FF73B187067DF5EF1CFD1D0E1FFE347EF59B5FA3B77740C5896F1BECE356264E9E3E879D3B3721DDD1053BD38DB9BBE378F1C51755676E5BD5BE5B386AE3BD837F2F977DD9D66A5C447821E8F5A6D1B5DF8F10F4DA316CF21582CF97A5028A971F1374A704DD2DAE9780C586ABBECB267873E69B067DE2C78E1DC7634F3C8EABD72FC36635B97205C5E919F40F6C819DEAC0F5AB17D0D9D589642A8B5271164F3DFD292498A5A92EB8E062D186FFBDC932B5AF3519E0964D2704DD32E8233BB110746455D33CC1744CB7A33B8DF83E6ED7FCCD6E8DE5B2DA44341BA224F772A5825426ADE2B8E9D4D0FD1D2DB82CE5CA96526557D500A14B867E6E8E2ABB096493DA2362AE1574F1D45ACFADEB5CD33CEC83330941B706F728CF2A041D65ED345036921F0F5AC58CE8387AF4A80A05B493696CD9B219B76EDE5011218C5A21413FF5D453AA50FED8D898CAAA64EFBF62B9023B69236927E194CB38F0D8019C3C79168FEDDF87131F1C47672A0D381ECA968B446727C6A7EEA2336561433EAFA256D8818507A35618D1425998E938373787FDFBF7A3A7271F74B337108D685C5A083A1A7A88921442D051D24608596A1DE8ABCD9A0EBA15E853663C3463A027EE4CA1B727AFE2A949A2268283EFD1B5A1B21FFD3E7F1B376DC2C8D5117477E7904EA754ECF4F51BB7B065EB364C4DDC56EDB79814532E17D199CB01B68DF1DB63C8E772EADAE63C923E235518BBCD209BD9D902B66F7F081D1D9D42D021D6840C59BF080841B7996E17DBE15C2D49076FDD10B6EEE9674A832E9429E5D860E53D1D8EC75AFC3AFBC475746951169E4AB01722895C0F4152054DEB71AC6A67B60955A968577944D4A1B331F5DF26A9A51EF7D62E2A160BBA5D34D53C3985A09B87F5FA9CA95AA96EA16ADD222F2DB46E8C13E3AE50E342D02B042C06C385A063A064B9C5F6404008BA3DF4D44C2985A09B89B6CC25083C00012168591EB5080841CB9A10042282801074441411213184A023A40C1125DE080841C75BFF8BDDBD10B4AC09412022080841474411111243083A42CA1051E28D801074BCF52F16B4AEFBD0E6C5926411AF570484A0D7AB66577F5F6241AF1E3B395310A82B0242D07585735D5C4C087A5DA8516E623D202004BD1EB458DF7B1082AE2F9E72354160D5080841AF1ABA757BA210F4BA55ADDC58BB212004DD6E1A6BBCBC42D08DC758661004422120041D0AA6580D12828E95BAE566A38C80107494B5D31AD984A05B83BBCC2A08DC878010B42C8A5A0484A0654D0802114140083A228A88901842D011528688126F0484A0E3ADFFC5EE5E085AD6842010110484A023A288088921041D21658828F14640083ADEFA170B5A6A71C82720C20808414758392D124D2CE816012FD30A02B5080841CB9A90280EA966279F82882220041D51C5B4502CB1A05B08BE4C2D080411108296F52016B458D0F22988280242D011554C0BC5120BBA85E0CBD4828058D0B2061E848010B4AC0F4120220888051D114544480C21E80829434489370242D0F1D6FF62772F042D6B421088080242D011514484C410828E90324494782320041D6FFD8B052D9984F20988300242D011564E8B44130BBA45C0CBB482402D0242D0B2266A1110829635210844040121E888282242620841474819224ABC1110828EB7FEC5072D3E68F90444180121E8082BA745A28905DD22E0655A41407CD0B206964340087A3984E47D41A049088805DD24A0DB681A21E836529688BABE1110825EDFFA5DCDDD0941AF063539471068000242D00D00B5CD2F2904DDE60A14F1D70F0242D0EB4797F5BA1321E87A2129D71104D6888010F41A015C87A70B41AF43A5CA2DB5270242D0EDA9B7464A2D04DD4874E5DA82C00A1010825E015831192A041D1345CB6D461F0121E8E8EBA8D9120A41371B71994F105802012168591AB5080841CB9A10042282801074441411213184A023A40C1125DE080841C75BFF8BDDBD10B4AC09412022080841474411111243083A42CA1051E28D801074BCF52F16B4941B954F40841110828EB0725A249A58D02D025EA615046A111082963521511C9EE7C9321004A28880107414B5D25A99C4826E2DFE32BB20504540085A168358D06241CBA720A20808414754312D144B2CE816822F530B02410484A0653D88052D16B47C0A22800097612291A84AC2BF4F9E3C89BEBE3E249349F57AF0FD08882C22B40001B1A05B00BA4C29081001632B18220E5AD0B508895D11CF35333838B8F0146F22042D99D4FF5048144713152D532D8E80EBBAB02C4BBD69ACE95A1747D08A16828EE74A8A1D41BBAE2B041DCFB51EB9BBA6E54CE235047DEAD4A9AA8BA3D6051239E145A0A620202E8EA6C02C930802F72250EBDEE0DFB4A0FBFBFB914AA5EE717F88F51CDFD5133B0BBA52A988051DDFF51EA93B3756327FD2DD71E5CA1574777757370983C20A49474A754D13A6AFAFAF25EEE0FF0766F1DC443B7D42440000000049454E44AE426082 WHERE `app_id` = '7'; -UPDATE `fn_app` SET `thumbnail` = 0x89504E470D0A1A0A0000000D49484452000000D4000000BA0806000000D62063320000200049444154785EECBD09B86557552EFAAF7EB7A76FAA49484B8510087C88A04F405194EBA75E9B400286670BA2A2288D82CDA70F7D8A4A7C220AEA67C305858708DE4B083DF810BC72318020810409E92A55956A4FB3FBD5BEEF1F63CEB5D739D59D537572A1A8BDA152A7CE5EED9CF39F638C7F74CE3DBDB4B8F3F3FF811FFFBEFF829513C7D06CB5E1FB3E5CCF85E33880E3821F47FE7B864FC1EF0A80E714E6EF930EE7410E8F2AAF9703D03B9CE6630E2ECF39CDBF375C542E55BD8B5EFBE4DF8CEF79DAEF367C212F89020E9CA240C177359FCDE32343C063CD17F67B7B39BD921D87420F2C2FB2F1DF85DEF1A43738DD33DB6B57E7AD9C92CDE377C6B1DA7487936EB8F12DCEB6444E9E818D173CCBB2292F7FFA79AC8EAE194CF3881B8677D38356AF371EEB332C49CE7D9E23CF7324698A41B78B99F979BCF1D6F7C379CB7B3E54DCFC3DDF8985F979F87E504EEA498F76C6C1E402E0EA1883A58A2F79B41C285CC0D9CA1C54D7D369578D056D15A4E313E5B79B5168174FA1CFC935BA1108A7B859E5794F1A6CB99D9EA3D7B1DB838E0701377E86CD13B4711A373C49B9E82D90CCF056DE67D337FA3E06C4FA30274176FCEB9376C7F1B1278FC0997E53592595157BFA055F7DAA535F979BB16CE4A7FD9CFC5E1B3635AE3347AF51E4BABF572779E3BA38F926F6EAD5CD683C9AD5B9DEB8BFA5498263C78FEBB6B7B8B4044F245175719A0739D5BCE705721770B93065519E8C12EE36B29A0A2EB6CAE23FC3C08F5FB67253F9F16439566CDA72456228A637EDF666D0CA8B5706D12EFA0DB2CB82720C8EF1E2D573C7CB48BF51A0E914E86DCC1114D6763E3701B33A6AAEA24F267EC3F166FCCADFCB75CD4B1A0969015BCEDC6691B8492E8FAFBF518BB08F2C97DF349D1B1661F95D058425902B1B891DE60DC276B3ACB5FFAEAE3BBD6EC175E39891CD0BC01DCBE8129695B554EE21552C9A35325E4DE39F721470ED82299FD1FEB05140D899D5CBD9F9AE6A5AFA9C945ACE54AB55345A2DB3A3E6708C18D12562102950AF28665590999D39876B1E9067D985369612279DC2A3721D345D5CE39DC96285DF54D580EA6EAF80E2F51DE406D4560D5395CC689FE3AB57944D1DB8F299E4550BE48E53AA9F7965A72CF12C182B64B239979C1059BFE6214F92BEF2023972D7198F8D2C14034B0B227BBEAEA4B1E82C17848E27D715C78BEF2CA7CA2662AF67E4A339DD2CCB8AB092132083C58FEC9F55505915224791BB70F872B9991757D7825D1376F3B06251B732572583D962EC8621671970D81D43E75A4153AE31C73CBF018FD91EE5AEB2F0AD3A61B402D9C8364B64B34116E06AE4F5AD4A643488CAB956652A6472ED809432A0326E7A13BB7D8CB5117DF431A60D5696772DD31890C1752A03E71482613D2137AFC75DC26C5755C0D98991AF8CC8557967752AB3C70BF0EDCF050ADECF8A685918768556179CDE9B67C9E35981630448090B8E2E179A6E3BE580D839D36BF355CDC66016A7DE4996AB192057E16D77FA522018358227E4BC391165B53C1D713B3632017208CF715118DD838FE81A1B53BEAE80C2829B6AA25C56E6515F722C747524E4C6E6FD0BCE0D016B9E99EF99E766ACB8C39700B68BA2B299C89818A94BF594FF20E064F2B889F26FDAD279B938794C2E1B962C0C039F0A302ADB2987896BAAAA3DE8F231D2986BCECCA7DE5667D3BCA10EAEA842150DA5041C377F6E2C7A6FAB74CBEB98B9D561B79B813149E4BB8D8243EEAA3B54E54A7A217942234FE4D6D62E3660CE650C5CC50F6FB1B4BC2CCFC489711D57777B591C66F79249D1ABE80E6454D2D25E2AC0DDDC4A0BB129CCA4C800510C0A70284908512B8D8C583733CAC7E20BC882E3A4C925CDD6E0EAC4E9566157AE284A669B303B988C99EEB09C04873BACD924F4A9F577166DE3E56A67D10CACAC33A3725892C548022E275964A57A3C5E14027DB3802D90EDCEE6968BDB4CB0A8C26630A9425BE928A854E9CD1D448129FBBF9D735D742221F59D38AAE5062EE3A67326E3CE0B98F7D1D560D562057C5E18007359984D54A7620C1601B6AC19AB762921534A649138F284061EFA1D37123E8302D0AA51E3852D6322F3C17750D9A66ADE78531C6B3155E0AB742D3721036E59315595ACA2C7EADEA163A82A76B9A31979A06B4D8580193F0B77B3F1C90E68E6436F99EB3870C4EDD25C5EDEA57BB1058E990C824B0F1A4B149937EE88164C66EB1C6B0E63C1A833A72B46079E2A8B8A7AAB2F5527888B40F6598256D7C058FEDA856044BA9500BAC8CCC0162E0A379745A6D363D8492BE68D8A615508B98F4834A794C0BA1F991D91DF1989C231B0EA4C55CCDBEFAD2A268F6C8063D5205543CDCE6671CBF1330B5D1680CCB6B56155AA7063C9ADEA52EEE3F2F4A5CD6A87D2EA1EBAC875B1C87398CD49259A8262BC0AAD0E61A598D98D453C5875DCA895E57554BD14E96DE652CD3ABBB48D5093B569AD4BFDCEC8D9B146CB71311A8A5C810BD42E4AAB1594FBA555E10D90658D5A8DC1805C34B75C80AD5B8C5D07565BB4768E8E8DCA435D29623EF01955D0985D4E351ACE8F0802FD6785B5DDC8565BCDC9D9B5BCAC9091DD49675E416476126337E8A4F00616DD3A210A26AB37A80E248BD4EAF7664B14C165C0A9AAED4683D40AB6522018C54D777DBDBED5CFEDE053B591E7B452C8EEBE46453588DEA0E7DAE9E522A626A16FCA677695FBD0FF18609B0564EC00233BC49C143B83EF2FE48C59640226AACEAA2A8DC7C71AFAFA80B2205D02DA4C90A82646571715D8A845F21C2ABB793DD9F98C9D2292DFEE4DB2619B09368B52664200C67733924926D7ECAAA50D930B7865B194F36EEC0FD175784B638B983953C4DADF71F8AD9AA99A05DF518928AABBFACEDCCD752757A95902CEBC84FCBA94F04611E45C884260E6592E6ED438B9A7B9973C175553BB4ECCDA9231196FEC6ACFE9A64EC96CC75CEC70BB29D84DDF6C0AD4ACF4381D4B8EA9BCBF51AB4BCD4A6CF91CCEF2D2922A09B2637397D79B964B586753553EB3B0ED80954C8CB137748171F00C7569178CD9A245BA99C5C687530DCEA87266E154E80C2395B95B9AC56BC7B9E203B2FAEFF88915783265B250C6D69E591D6A8314542FC73BD2D8C8AF4851AB459B034B49CC7192C566776A731F4192AA8432C566A797A56240628D58BBB1735794C915DD4EA9762B61D426B46018AB4CD61857B5D24802A3AA1B75C39877469E55E653006925BD2C302B5F746790454755D9A8F7327AE317DF4088283E75A7579553B5108E8BB503558B305B7F7933B3D08D5E6CD5456B7AD879B29A8D7D6681A4D100644AAC58B05A8811944A5818895B6A0D5661E2B3885161806F54C90A4123A0339810759A73A33B94D115F446E59AB18615CF5B16093516D076B04BEAB7A20EEA02B56A8D0A71D17F2B14A75571C64C94D9552D1B6740A90BC74A4263A3559EC3DA0486461BEFDAA52D628DEBCAAE55B25E9654D8E8D390612807BF62CBC9EFEDA66217D3980E57D5B4EAC8353ABEEA7C627FD256E0DFE562305243258A9584461DB34A921D4F0338B5BFCC6455774C737CA913995D5AD51E63DB6C58F77631997B8BC418AB66BA53577C86E5A6A9A030F6F9D84A740C68ECE2B2EF634995AA3D65CC04A3E0A80650B5B12B1ACBF83EF63D2AB47405F4E5B89412C7A8B6E5B88C4D0BCB25A956C7CDD8A8A166416D589F566CD8313412BFAACECAC855D69C153432A3E61975F88C30595A5EB2E6F178C84B95D8EE01D5E9B0ABC1C804CB22D92D7793536E6C5559E3DD8899CA8EA033375E48251961D5D9722D1891677525738E799F928EAE325B954DCC2CEC0A1BB7296AC31EAB3BD898391AB33F278F87591F5533A2BC8CFDA57DB35205355AFA788F35DB6DF93E7602369D5919336B43549F79FC8255F0D8BB561ECB4ADEF1545A4363E341E5F795E7A9CE6FB94E2AD2A27C37BBDA2B268951574B3BB4727EB97F6CE0D9C607A89933B6E76D948A594D1BD76E098C8DAE13BDAF214C2A4EFD524894CBB0B2D99807ABDE67C32059E96FEC579150278DE2E65F54C673CCE49CF5ACD31E501DC773BFCA4E9FB971119FD3D577E2C576E21A677BF8EDDCE3A463B773F2E91E6427AEB18D973CEBEDCE7CC0992337363EC74980DA7CE90D9B4851A05EAF8F6DA953EF6715CEE76C2FAD3B694516E809671D80CD72672BF7F9DF70CC969F7B5B2F799210DAF13739DB736FF87EB3BCDDCE7C6DE1C9AD12B28543CF78C8B63782530F02C134180C54B5B68CF5496271FC24EA87AAAC60AB559C6ABF6630E0FCFCBC04059EFAB3C15AD8E290587AB572B82152CE7E812D1F78F64BEDC411DB7A9C6D1D2C4FB7FD33B6F85267BBF086EF4F31C7673B7F8B8F615FB2E26FDECE999B444545E5DCD2E89DFA255CD7C5F163C725587CC33668F43AEB07B710729697972C5B59D2B8EAC9DE486BF3627996636E7EEE0C12EADCDF7F72E66404BE16478012EAC4F113703C1B1D626065E9DA0D0F6D58BE4D41D26574A4F58B0B45C8583723A14AFAFC6B710426CF3419811D1C0101D4891326826723356159CA5200528B585A322C9F848118B5C246F64A0C93096D290A644581C5B939F5354C3E9311B8084680803A7EE2383CC72B43A2CAC015719758379D465E1A40A9822E6E14F133D9205813FCA28159E267A10D35915017C14A9ABCA20A1EC7C5F1E347E1BA9EC693DA103D6372599965C39204501A1E621CB512CA485C8DA3AEC5C812275981F9B909A0266BEDE219013AEC8F1F3DA181C665348A89EDABB80F4D800B9CC5C5A5C2C6E7D9E0CA32245EA83E1BBEE320CB332C2E2E9E81E5BB78067AF2A617C708B8AE83A364F94CEA5219425632E38C6ED1004C09F05E5A5AB4D183265F681C96AFA1563630D0D850F30BC84DDCD9C531A493B7BC984780B4F9B163AAF295AE241BE95E09FD2A333DA8F29D75C08CB3ADC8722C2C2E4C24D459076C72C0D7CB0828A08E817F1BC25C4D229BD9605FD4A0486CA8ADBE3C69F3858509A0B63A5E93E32EFC11D80C284555054D26C6D0464C56006512CD84DAA80C4435FB7802A80B7F854CDE605B236001E5305FAE3CD3B0DE265BB72ABA9CC5059212E64893E4558DF6AED61BCA8A1C8B1309B5AD09991C7C618FC0661BAA2A6FAA95B76C828CB3B8B45868E5204D1F974F19D664CB84E9AFF33CC5C2C2D2B66DA824491004C1853DB293A7BF28476083CA2799E0CA9D9FAA5C9D687F8B4B0B5AA6C326E7D94C4782AAEABCA2E3F71C543E82E9CA2BAFC4273FF9494C4F4F4BB4BA35F02ECA199ABCF40535025CAB478F1D05DDBAE256DA206C58F4C7D5C24C9A030C67619180D2FFD90A3A9A056A72A3A560827A8CD33CC7D23655BE071F7C10BD5E0FFCFB75AF7B1DFEE66FFE4606B4D56A210CC3B35409BDA0C67EF2B05F872320803A4ADA9CF5318CAFC956A3328519B56E852924B3B0B0A8E91B95CA36656688294925158B88C0BCC0D2D2F61CBB1650D5B17EDFFBDE873FF9933FC1473FFA51CCCCCCA0D168C0F3BCAFC3E998BCD2853E0202A82347357DC3A6CADB3A8B5A59A2CCDF63ED0C91507AE4B8F64359624B93E5E5FFAC8C9366199696B667439D0A507690A90EBEF6B5AFC51BDEF006ACACAC606A6A0AB55A6D22B52EF455F875F4FC04D4912347C4B15B5606A9D643B1C54F6C00C4E22223258C2BEAA44225634E83C7E7F9CE02AA3AEE9FF9CC67F0C77FFCC7F8C77FFC479158CD667342647C1D2DCC0BF5552CA03C4930B4F550F4C7AA03579DBD059CC585C571E9D333E69E17C8B27C4725D4E906F94D6F7A9380EBCB5FFEF284C8B85057E2D7C9738F01753A93C4960430B56FC58632CC453509F15429F0D90EAB7C671B73AA8B0416890CA6944C888CB38DD8E4FB9D1E812AA054228D2BA09C5C7FA5A00D455262DCD9C8DA4CA626D786E763B4F9D2E2CED950DB79F9F7BEF7BDC2127EEC631F9B1019DB19B8C9B1E73502252921A17CA61AB08984508AC148285396CC595C5830B5082B4E5D5B00D0A46F48652216B42FB06D966F7D7D1DBFFAABBF8A9FF8899F10BBE87C3FC3E15018C23FFDD33F05AFDD6EB72744C6F90EEAE4FCD38E000175F8C85128093DAEA32E854DCB824F0A2A71DD2ECC2F14B663810DA36572A16B3B2254EA4667F4436D5342F131B8F0D7D6D6F084273C013FF5533F851FF9911FD99129BCFDF6DB0558EF78C73B441D9C10193B32AC938B5446A064F91C4F8BD8DBBE54A60984F4EB326485948A5E585828589ED6F62B522DD1D6E81EF7F7E1F7A4DFB7EB87AACE4E1CC7E8F7FBE8743AF8AEEFFA2E3CFFF9CFC7F77EEFF7EEC804BEF18D6F14C935213276643827173123A012EA08BC321FCA94D02BDD4FA6F103FB1AD0B93BBF302FB17C6575F7B2B6357FC7BAE55698012425969797B71DCBB77976482F8E4623011741F6AC673D4BC0F5CDDFFCCDE73D91F7DF7FBF008B009B1019E73D9C17FD05045087092855F1040DB6D6B9947C36F9B9D248A020A0E8D8B57033450C4B8A4FED2A5B7E99B17C3B01A8EA2C115CB48BBADDAEF89DA80EBEE0052FC0BE7DFBCE7B326FBBED3601D79D77DE39B1B3CE7B342FCE0B28A00EC3F518CD67EA1C579B9E5B6794A94B2F36D486FCA7338CDB4E49A8D3DD828065D95BAA84AC5D41605172B1D2D2F97C1EF7B8C709607DDF3F9FCB4CCEBD0847C002AA1A1A570DCDDB8C9D4D801AD7193F55A5E7871B50D5F94AD354C04542E3DA6BAF153283003B97CF631EF318B9D60450E7327A17F7391B25D438A2C8768B298BC49A61521BAA02339B50685A1397A3493196EF900DB5DD2962CC1FED2D82EB694F7B9A00EB861B6ED8F2652680DAF2504D0EDC3402C2F21D3E0CF2E6AE89D72BB5BC0DA692A9694996CF064F48C73CE9FCA757355FA829566819B19DB6A1B633835409092A062BF2F3810F7C40D8C2B37D26803ADB084DBE3FDD0810500F1D3E0CDFD3AA47FCA3E55A6C87FA8A2EC74AB2F373F385E39AAEEBA69525F976D7F4A294EE0206598CE55BDE75FE2CDF76A66F332378E38D378A847AD2939EB4E5CB4C00B5E5A19A1C780A09454091365735AF0A20DB71D20820D2E673F3F322C1CA1622A63BBAE648992EF2A6172A6B4AEC5ADE75DEB4F95666ADEAB37AE6339F29E4C4F77CCFF76CE5D4938E9900EA9C866D7212A51125D44364F9C691E6D2E4DB46974B9364D1E734C970CE48289333A5CDA96D6B4A9360A8DDE10B1459F1B0AA7C96886054C5E31FFF7821227EF4477FF4BC27F6FAEBAF97ACE1092971DE4379D15D406CA8870E4B2FE56A6D73DB8BB8B48B6C07FAF9F939D3A2BCDA70B5DA7C6A1C8A4E1B6AD7AE9D955055AA9CF6D90B5FF842011263F4CEF7C39024FAA1EEBDF75EA96531F94C4660BB23A012EA2193513E6EAFB8B1EFA6F93D35BD79A3F219A125F7DBD80567FC08CCD8DDBD0380AA3A735957E2C77EECC7C42EBAEAAAABB6FBBE271D7FD75D774954FA5BDEF216445124F17DBCC7E43319817319818D80B228297B6ED824F812330AA83232C2D49628E9BD71854C1EC40E86E72AA10822DA4554BD187644728176D1377DD3379DCB7B9E74CEEB5FFF7AC99DA2579BA9F49448DB6936BC230F31B9C8D7DD081050871E3A04DFF52B92C6C8A79313A2484ACC692D976A9D162BA6B440A6F08434C3E8D8DDB56BF7B64909DA44A4BB9FF18C678824FABEEFFBBE1D19F88F7CE4232090DEFFFEF74B662F53E72776D28E0CEDE422660454421D82EBF95A90E5A44EC79A0B5F96B4544019E05892DD1CC0C29765166F016479BA6D40114CB7DC720B9EF7BCE7EDC824B1A41325D15FFEE55F822406D336A8DA4DA4D18E0CEFE4229B4660ACF2B18C18893C962C27AC5C0D92E03F58D652288B02CEDCECAC78722D772E91E752C945E2D1E5F2744931158475F9B66B439DA9EAD17666EF6D6F7B9B5448BAE38E3B4A69342998B99D119C1C7B2E236001A575F98820070E336D4D866E353656F2A166E7660B418CF89F36B48A929399A6CB22976A4365D8BD7B7B2ADFF900EA739FFB9CA8746F7DEB5B459DA3349A94743E97653139E75C47406DA887A42E1F658CB604D50AB2A76A8DEBCCCDCE11492A892AB5912A752F8D3E4895AFC0EEDDDBA3CDB70B28DA6954E958AB8F7D79489F4F0886735D0E93F3CE77042C29E1B13BB5D846E33EBB6266548909CAA3B9B9398BA68D7CB91CB891C6E0627FB824D4073FF841A1BBFFE99FFE6942309CEF2A989CBF632320803A7448FD50A74AC1B04CBA21F2C68032476F3867D305E887DAB3832A1FA517553A120CFC4CCA84EDD83A985C688746A00AA853B0E4E3A443E3897266E794E5E327CF19BBB4F949CC650AA5CD77EFD9B32DDAFC542A1F0B593282E14B5FFAD2A490E50E4DFCE4320FCF081050070F1D8427B4B9FD54E324941257528F2ADFEC5C2111E504942125B4E19A2502359D838618FB43EDDEBD3D401D387040B2653FFDE94F8B4A3729B5FCF04CFCE4AA0FCF08A8843A084F240DFDB50E0AD3754368F2D22F655C4CB3A4CD0D4DAE94B9419C624ABE22D9C71FB334C79E3DDB63F928D5D80080C09AD4D07B78267D72D5876F0454421D82EF38C88532B7F52E1514E29732E6125972676666C6C0C85549845CB808FDD9564457DE82E91B7BB629A1E4BC2C9BB4AB79F8E67C72E5877104045007A9F2B1D2256512F1A17950B9C919944822892A2AE0CCCECC14D299CDFAA04C74842A85D681A53A22FD507BB669433D8CEFBAE54B3376907FBE5A1FC6164E3E17E608584049108169AAA6ED9E683A99E211520C568590232A9F8D4A1F47A76FC84CB4EC0625CD85062802E9A94F7DAAFCF96A808A607AE52B5F2901BB93CF8537021B2554191751E1C40D1B615ECD999961E8D146979388AE0D4E2B855496A5D8B367EFB658BEAFF6103228F755AF7A95E4587DB53E4C21B9E4924BBE5AB79FDCF73C4680803A70F0007C69B866E28D4EBADE985017092524A021CF55748D0F50FFAEB1A1B21C7BF66E8FE53B8F77D9915309A85FFBB55FC3CFFDDCCFEDC8F5CEE52213409DCBA87D6D9C2312EAC001B8BED2E6A525645AD6881955898170A6A767D81AB40C8AB0A5976D1A3CC16439F63CCDB067EF8527A12680FADA589C17E25388843A7010BEEF49071A52E64EE16A2A8769996B5AAD29B0A6676695AB28533794171400566841AA80AC7AB4F70223252612EA425CC65F3BCF5C02CAD3740D238FA0E1E2CAECF1183675276A84362F930889205B0CDD50E6E637289C5C3276F74E24D4B6677BA2F26D7BC8BE664E50401D904889A2C86D02869A534C7B6293003AA78C1AE7CC4C4F6B6D734B9797E987E39C0F8B4AB27C1722A07EEFF77E6F47AA279DEB2C4F0075AE23F7D53FCF028A7F0B80ACA667D2376C1491CDD870A68D6377DCD3FA34255A2463F7C20314A7846A1FFF7CB53E1386EFAB35F2E77FDFB184DAD4B4BAAC19C17B54583EAA7C72DB0D3EA8CA83544EBC1025D4F90FE9E40A17F3085401A5B019B77EDA80296A7D24F76666A64D5D3E1BC36728741B7564CB52504265192EB9E4C262F92EE6C53079F7F31F0101D4830FC2632BA452E88CB37645161935502228A667A6B58BAE204CBB5C0B0A73F218EA93925C7987C1B113409DFF144DAE70218D8002EA003CDF2B8BB268A85EAEA14736E6C8026B7A6AA69088D93229CABE2EABB9B06EB3117404569EE292BD975E50911217D2E44D9EF56B6F0408A8FD071E44C0BA2A9558BE32784FDAE9520019EA6E6A8A2C9FAA79A5316573E74D6B1B294AC1BA7C792E21342C9F3CF94C46E0621801028A49B26C093AD6ED3412D606C8B29BBBD63AA7CA373D25E249FE2123B4B1F08435BC6CB4F9045017C3329ABCA31D010B28CFD304C331A167ED284B55A85072A6E987DAF4D1F8BD6A91731B1C4B1B6A22A126CBEDE2190101D47E92129B68F38D6CB925CAE14C4D4F97DD6B360E93CD9B1F2390911213405D3C8B69F2A6DA1F6AFF830FC217096534384B406CAA0A2684DE14553E419BB603B53C9F6D0B6AC36BA9FAD176BAE4D289849A2CB48B67042CA0D8C150B3741D093F520A7D5C53427806DA526D91500CEDD3A358B399074A1D0A5BE74584548E3CA7CA7799FC3DF94C46E062180101D4FEFDF07C966266F89125F04844D89AE686AF2051313535A5B5586CEB6ADB898D5F96317FEAD1626DF3CB2EBD44D8BEC967320217C3089480623B1B438F4B628649DDB0B0D2822D2E9CA9765BA1240D032A8986B6E9AE9CA8259028991E71E96512D337F94C46E06218011667B9FFFEFB959430F45D19102B6E25D350C3B4CF1509750AC2E29465671929F188CB1E21214893CF64042E861120A01E78E0810D55BB6C5B1B2B686C6ABC08A6A9F694359FAA244619415BB2E7399016192E7BC4045017C3429ABCA38E800594CB9A124242D84C5C6B37598498CCC1D286A2C2577631B4C528F4209B8D98A5291E71D965130935596D17CD0808A0EEBFCFD494303D0C3762C86A824A51B445424932AF90E69A0EAF69F052FD889072F542EC1878F9045017CD629ABCA89150F73F202C9F8D2832A483E1C0551089978AD479BBDD92429792239F1B049A2686EC6028B1E6242C18402B36D4E51309B5C32B8D1B976DDEA559A12705AFECF01DCFED72F6D9D87C9CF5EA9324D9522BD6B22C1D2065B999C1CC9DFF6BF95DED08B1C1DFFDF7DD2FCFABA10EB64594712FC98144892B4CB9D36AB7355242C83C738A9D50D1FC6C436BED603801D4B92DC6D39DC5C5C6C96287467E86C3A114C5A436F0B5002C3AF3C33094C5BFB2B222CF75DD75D7E10FFEE00F70CD35D768A074A5325645FF91949F3C2FA49138892C5EE31DEF780758928080E4EFD91F5916AB59733C86D7E4DF5F8DBEC9BC27DF91CFC50DA3D7EB61FFFE07E0BABE3E53912337DD086DEA86D5E4241ABDDDA284B2D3AD51E565E73571EE8EBB6FB0D0E5E5974F24D44E42CAEEDE333333B2B038999400FC990B6EA723FBAB8BB47A6D2B2DECF3D0FFC267B18BFDF8F1E3D26CEFC52F7E319EFDAC6763B5B386C1688424CF1150C3C90B78ECD022A9400620523A2B07034BE9BB745D078B8B4B3872E488F4057BF7BBDF2D40E266C2C5CB7BF24F55624B0964B98CFA3EC7B51D540A5800EED49C5401CD6762B561D2E65246AC943B0630122B6BA3255452A984D29F37763034A2ACFA4BB1A12680DAA9B9D31136128A9D490683814803DAB0A297BBAED9D977F296952E47726F8DA2AEBA42AABB346B7110E03FF8833F8857BCE215D24185AD5A9BF506B224D1C5EF3AC898802A5D331D30158FE02AD82402018ACC41E1336FC8451C0FD06C3644EDFBC4273E8157BFFAD5B8EBAEBB303737578283F7B740AAAA8B16586558DC4E0E8B89CFE306C2B1900A47AE271A8302CA37771B03A50C2257AFAE02BCDD6E6FF4436D0696F937FFCAD314974D00B5A3D3A880F251AF3791930C32F694767BD08FECCE3BB18AC6F35EEEEEBC3FAFCF05A300A6AA494017387AF4A8A877BFF99BBF896FF8866FC0DADA5AD9492519250899C59AA7929C9AC145E67A628B8B2D51003EEBD5887546FE0000200049444154F1D1798091525A2092616C3916161644F57BDBDBDE863FFBB33FC3EAEAAA48412BA1B4E61DEFA1CF68ED2E01FF4E8CC7E69934E3234DDA8B5C24749AC69B00654FAA00C3EC51C292B75B04944996A700630F9C317F6EA2006980E5C89202975F31A1CD7712510228D747A3D9161BD561B92A23B9AC9AB353B6C4E6BD92EC2D17691227A292D16E20348E1E3D22ED595FF8C217E2E69B6F166942A9C4E790E393047E1848281A055C91A5F0E0C34F3DF86E80300A10E7297A598AD84DE1FA05DCA40092142EA58F1F0840F8EE34FA67676771EFBDF7E2965B6EC17BDFFB5E9182B423799F24C91004919C279BBAB1C5AAB4CD69EA749DD334598D81EF1AC70992B48FFBEF7F40361C35F3B843E81C59C58EBF23AD277B85B07C6516A1B5A04C7B0EDBB283417DB92B8EDD2B26B4F9394DD4E94EB212AAD16896C6B835CAC7A5DD76E6969C6602822164BE1FC80E3C1C0E40FB2D4D33914083411F4F7FFAB7E1977EE99770F5D5578B04A11D514A07A4C41C022742175DA01E6026F1E1AFA4F096E77024EDE0E3777D092710E1E9575E8E7D7E03EB4907B1DB43800632378047C3DE100F0414AF4F005342BEFFFDEFC76B5FFB5A01D8AE5DBB50ABD531180C45ED0C021203C69D53212DF45AE73F4656CDE69C104054C1B32CC1FD0F58964FC3F9847430F693565ED1D63664C59D56B329391B5201536A9C33445DB441AD9259261B1632E8575C71C584363FFFB92BAF50059465C2AA8CD70EDEAA541FB970ADA4A12420E1D0E97424D7EDC52FFE79DC78E3B3D1EFF74B6A5CED3AA5F63D96E4662C67E0234C0A78690ED78B306884F8D4FA117CEC812FE18B711FEB61886FE807F8F6E54BF0C44B2FC57C9263351F61E8E6F073577C9B7C0E4A2152E9042EEF333F3F2FCFF38637BC017FF5577F85999959349B2DB31128314100D9B1B264CA4E4871553115B00AA821B22C56DA5C120C6DBCAB6E758A0FD32BCA545C5640557C1F9A1B6F4E35B524E4DF126D9EE28ACB2780DAC9457E3A40EDC402399354E4A2241170E79D778A7478D6B39E859FFFF99FC7C2C23C56574F88BAC3DF5332546D39A1307C52CB393C87EA5D1307463D7CF4D003F8E49103E8851E7C2744DB6FE248BC0AC78DF1244CE1DBF75E8DC7ED5D86D3EBE1706F0DB5A826EA1E0145559352CA326C5431F9DD673FFB59BCE635B7E0A31FFD18F6ED7BA4808852D5D2F0F6B9766AAC4E07A8FBEEBB4F25B4E5EE343A5671622A2E1BA8C169B65AA2DF9D5A646E6434187A3491503B0927CBF2F9A0CAC7052385E78D3AB4D53B9DCA5F55DDB9377F6FA5D38913278474F88DDFF80D3CE6B18F9505435F53BD51431AC75A0E9FBBB610242E5CCF455CE408696F799E48A17F3FFA103E70F7177028F2E00653981A3A68041156F3186114224E47406F04AF15E1C9A18F9B97AF803B55C730CB301CC508FD40DEDB0F3CD18CD46E544951AFD7E17B01DEFCE6BF153590609A9F5F109595448590D615FF95A85EA7708A6F1570670294D850658D4A05CC86845DF3A5D322A04AF3AA52F968437F6B3D822F3401D45697F9D68EB34C56BDDE281D99DB019435A2AD4A66D539EAFFD63949954AA960AAEDA951AF023CFFF93F899FFCC99F94E38E1E3E8236EDB8644473190378C80A0FAE13C0C96334C318712F46CD6FC19B8D70F7EA51BCF7DEFDF8F75E1FB5B00EDF70C51225600B3F8A5AC458505DE889E320F21CDC74D975781AEA088218FBDD554441034E3F409417A815195216E6F77C24EE08499660F7AE3DB8FBEEBB8562FFF8C73F26E33437B780D1281642876024BD6D9951BB9958EADDAA87679B110B28CB28523A93E5A384B2B47995D8A9FAA0ECEF0550B6DBBB584C8535B34C1295413C8DAE89843ADB946CFFFB31A09AA596B05540F15CAB265987A7750A134454A3AAFE1CAA5704DA939FFC64FCFAAFFF9AA851B49568B3B4A7A7D0EDF71184E39D98E401B3545324F2620BFE2C563A237C60E52BF8E8EA01ACE73E1A611B7E7A7A1ADB3E239F934C623E1CA1480678FC6597E0197BAEC0158C94180CD0C913148D50D8C034F34002DE0769EB048EEB95214BEF7AD7BB445A91795B5A5A1689C6F72253483B90AAA2DD38AA4EE0AD48A92AA008208E5F1550B9896DD58E9FA766419C46AB59B8DAC3B09449AA03AA934EC4A82126D26C424A6C1F32673EE37C0065551C2E162E2AEED054936C2F616BF0532A91F6667FE497BEF4A5B8E1861B84DD3B72E4B050E262E41739BC40A9F0280851244324F1104EE061C96BC1CB237C68B4820F1DF80AEEEEAF23A9B7303F02D8D72F73B42EDDE64F7581F23B2EF0200871BC18A09776716D1AE1197BAEC6636666D0AEE7E0FA2AD85B3CA821E1E2CD4768841192349377A224A5EF8A5DD95FFFFA37E0EFFFFEED0220122BD6D6B380DA1C05B295793B1DA0EEBDEF3E040C8F121DCFD0E3F2A3954BBAF1F02380521B4ABF6497364B4D0A8BC1FA12269E2FCD525C79C59513966F2BB3B3C5632CA06843558DFF33EDA876D7B7C78B8A21BE53F511F15C52CC741833CC87BBEDF77FFFF7E3975FF1CB4234F4BA3D1309A040A4EF2B743DD140281B92FE482495DFAA2329323C38E8E2FF7BE8417CECE07D4866DA08FD69B44F0051E8A0EB0FE0E31425B6CCC3559F557C4F648FC300711AC3190D91141EAE9B69E199972CE2FAF6A5687652ACC47D24AD3AE0A718F57B127BC1E726A8089C999969341A2D7CFCE3FF823FFAA33FC2A73EF5292C2D2EC20F0251FD6CECA1B5A7ACC4B7CFB2D9EEAA8EA3B561AB12EAFEFBEE15D552A8712717465C8B1919CC983A1322841A8D86115ECA53A8B145A64F0B4AE8CEA3A7D218BC6202A82D42656B8759962F8A6AA57A7626956FE3A2D048822C539A97F39D2629A25A0D491C4B7191FFE3294FC1CFBDE845F8CEEF783A3AAB1D74BA3D38D28D2F35C6BF07BF70D077C8B6D5E0F663A1C683B089434181CFEF7F00FFFAD0FDF822522C3567D1E89210C891852E620935A224392DAB75D220C89A940D80AAA40BD43CF17FEDCE023C6579198F5DDC856BE7E6B1DA3B8C6192A2E135308833F89E83A0C6087517C37E2CB17553D3D3C892147FF796BFC3EFBFE60F508F22B49B6D0CC91C86A16CFC127D62C80B4B8957E305376F5C166C3C86365A9E27B8F75EDA501A9FB881A6B79A9DED154591D46C36AD95B4013CA2231AE795851555872BAF9C48A8AD41656B476D07505625B16C20279DF436A5117D841159B53841B7DB11F5EF177FF117F1DCE73E5776EC13EB6B4851A0E6F95A6B2467948283241EC0F155151B7487C2CCF98D1ABEB8DAC147EEFB4F7CA1DB41529B42CD8D508B33785E86C4D56E96C2008AF3726B5E55351DCC02872B51DB419C034180F53047DA5BC3522BC47FDD7B35BEB3B18461D1476668E9A13CB40337056A913AA563466C381E76EDDA8BFF7CE05EFCD2CB5F8E2F7DF14E91647409D8F8444B5658E2C6AACA9B8155050CCFA1B46368159DCC04946C1F65122E69730D26D7DF99A008026A2CF2CE3C3613406D0D24DB396A3B80B20B41A31D3474270CE9CB89E567AA4324199EFAD4A7E015AF78A5443AF418DC4A86CDD36976E204A11B4ADC5D910E10652952A7402B68A170EBD8EF25B8FD8183F897FD07B0520F506BB9888631BCD4C3C8CF9038199C82CC9F3A79951419172B39DBBBF33973F01AD29156D4C5DC033A7981C8CD510C133406191EBB7B0F9EB9F70AEC0D7D74B00E2F8DE1BA215CB78538D5F796205EB1F372C0F7B1343B8337BDE9CDF89BBFF92B91CE54A3E9141E0CE8E3D22891AA5DC9F54C9BABAA129E4AE5BBF7DE7BE0F9C1062B717318977D6F9150E52058F681898522CE4BA8093A27803ADB72D9FEF76703945541EC952D6B27E090C59C49784CBF3F10839DE91574D2727765F401B21C7E1461E06670E20C4DF12501A95B43580CE0A743E44B33C856733C786C0DB71EBA0BF78D0618B466C45E084603F84E0D8E5B1310B945A68D264C16378348B7C2A0C9F34B9724DA51804740E50E1237452492CA43BFE1A1EB0CE1C519D224C192EFE329CB8FC0B72F5F8A4BB20C27D656D069D724AA5D523D68E3C7B924F7D5C208C56084BDBB77E1BE071FC05FFCC55FE09DEF7CA7345A6FB7A725AADE4A24329D246F345E8F405542C16A00F66F4B9BDF73CFBDA205D877305D024C0084BE9842C781D36C305262CCE4D9A601C2FA996040AD27CB866B09AEBCF2AA0929B17DDC9CF68CCD80AADA4F7662ED645B105195B1B9535C309DCE3A6EB8E187F0F297BF4C7A2093882098C87E31D8B93F1C82D9135CC06DA786B448903B23245108379C42B793E2830F7E059F583F84AE1BA31ED651141ED2C2419D0918698151C1C0DD0CB9E3C215D78AF1376D51DDDBB037CB8B98A20B0C34CD1464431F883D475457FE6E341C201CA5784C6B06DFB27B2F9EB867378AEE10703AC84719FA8E87B8E1C01B9070A3CFCC479AC4989A6E616A6A1A1FFEF08725E0F68B5FFCA2843051AD4D930CB57A2492DCC6275627C76E605552C2AA7C3415E957AB24469953E96BD3B2114EB35997180A8D491A871D511CCB4E64727E5DA790C8DFABAE9AD8503B8827930FC5CC55252536335255305940514DE12ECB4571D55557E1577EE557F0F4A77F2B8E1F3F866EB7276A8C951A8C99E344FA9E2746F6281BCA829A2E9A180575BCED2B5FC01F7FEEE3585F98C6D376EFC3625CA01B7735D1D40FA5F4B05A0A5C21A6FCC8764174BA0113B3A81052C4C90A649E033770908E62B8998B46D0445E0BF0C9635FC1A19543B8F9D26BF1738F7B1A16933E9CE10899EF23F532385E803849911640548B301AF491982004121E6F7CE31B45153C78F0101EFDE847E3A1871E12D690E0B1898D9B41B51150F7C073033DC41DD75856E3C9A8D26693711A8D7A211CBA93C3B53DA25CE397A2DD29F52534BD23276D3E91503B89A7B302AA4AF11224FC43072681F7333FF333F8E99FFE69F9796D6D55D41A1EAFA9061A15C1E3EB2117D91079E82268D51022C2C113095E79FB87706BF72022B785C5A286304971D59E655C3E370367D4C1A037841B3565A1BAE26B3A9DE5706E432212D886F0504A4938BC4A806663162B8301EEDA7F0077A38F4ECDC1D2B1753CB63685177EDB53F18DBB2FC1147C14C78E232D52B8F502B913208E5304BEFAE3185A453F1B098A2F7FF96E890BBCEDB6DB448A2BA1C308F6B10D65DFC28EA175ECDE7BCF7D70F95C8684507242DD4B363357B589024EBDDE900E863692D616EF53C16472A34C942D550DEE88934297E7B6804E75D6E954BE6A43649BF0361C8EC421CB488757BDEAB7445BA0C3D64E741C8FD0A837D0ED754D8D0A07499EAAFF910EDBE906BA9D1EFEECEECFE2F7EFBA0353C1221A49883CAA8B73D6CF4628D22196DA353C7EEF029A6E88B55E868206396B43C8C6AA11DF9A9050ADEE7D9A313176B935D44D5EAB5E83E0F73C61263D46AF333A21A7A40AF0D0F1E3F8E2B14318782E663085A0A8E1B0BF8ECE7481FAFDFBF1BCCBAEC5739FFC747C835F83578CB016AF22CF1DD46A4D64692C2C24C302E99B2268EB0D2D0C73EBADB74AA4059BA8312E9069F9362ED052E27CB6AA84BAE79E7BCA4DEA743192B69AACF8A1CA11DA9C0B2F11B5E321E08E3701D4CE81C92E2A82677A7A5608064BED52DA24C948982AAA258C0EE0D85322DD78E38DA2F29178A062EE6434B8234028ED04451CC1731264CE10E1C847AD1D619807F8E091C3B8E58B77E08E2327B0D8A62D954AD75751B7986B4B9F969323C98698F17D5C3DBF803D8D2930DAD3C932F40BA0E73908F927C981AC90B8BF71178A4D63232404FB37B3C83EE06640EA0009835F1DB2842E7C0604C729BC20443ED3C083EB1DDC73EC080EF78688221F412E6FA83E33B8922ED26BD7717C7D158F1B1578C193BE05DF7DD9322E7333AC27213A7181D0AFA3E78F107A19A2511FB9EB20287C0CD202BBF6ECC6F1A387F1FBBFFFFB78D7BB6E9507A6AD691940DA59DCC028F52D6D6E01A5F3756626DCA9D3B16B24B99A55A5E0D31F6CCC9253884177D5D51309B5939022801818CBA806EE7E5445E8532201D46A3571F8F06101CF8FFFF88F4B202B7396A8F2D17EA25A1333F2DA256BE788DDD072324429971EFD3B0EBC700EAB073BF8E37B3F83D71EBD1B4E1262B9368D224FC4C14ADB884E562E8182110F349D98F437E8C04B46D83D33872B1616315F0B900D47023E3A7487818390C7162E24C6ED947615251AB3BD55FFE1FFA58405370E63A00F9D44B29587A9832F1F3C8CC36B2730E409614DFC634E46164E23316C809C3B2C10053E8E867DAC272BF89EC62EBCE2FAEFC453F7EC42D2DD8FFB82049704D3C8D7531C9D0A9127299AAEC7C00BA4E9085E1460667A061FFDE847F1BAD7BD0EB7DF7EBB30A41A4C4C87B753A6888C46039412AA5A76455FC7B8E0CAF6F08C94A84BC8DF38A557FF65C32A44B29B576168CA4442ED249C54EDA1CA41F5C3324FD4EBA9BE1D3B7614D75E7B2D7EFBB77F1BD75F7FBDA97190966092B0A11C08235F4B5B251401298A06D5A00C7EA3857FB8E36EFCEE3D9FC63DDD0E2E49E6E0441EF2C841960C2575823E2CC7D6AFC835128141ACF44D099B1C27A8B9C0DE85362E9B99C78C1322CD637409C8BC40E8F8927671FAF41F8D7D63E40DFF380C901DC508FC08792D441CFA38B4B68E071E5A456FA8C1BCB5460B69CE8CF9017C7F5C568C6B92C989791860BD48409AA091E4584FFB288A003F7AC5E578FEE3AFC1E39A8B583FF020BAED1ADAC3508AC30C1DA6E313CB099A8D86B0A08F78C423244AE3AFFFFAAF259991E33937372F9127ACAD412915C743DCF3957BE007BE49B6A59B40372075529B9F6DB261ADA63694E886B25999DA7CA5B83200132337C3D51309B5A388520338903F0412550FDA45EC98F7B297BD1437DE7493FC9E60B301B0B461EDB1C26EA54378A187D9D4476D14A1B3348BCF76F6E30FFFF5C3B875AD83D9621AF5681A2B5101AFDF418B99B6918714996C953EB3B5A57D9196CA1A8A2871A45A2AD5B5A448304ABBB8A43E8BCBE767B1ECF9982E7CF4F30C23EA71C60763151A6D8D64ED2C168084A892851F4B1C9C5FF868D45A383CEAE3FEC387F1D04A0F497D0A919FCB221D243922C783EBE5C872122B3656B040C228F4C2956C612788D01FA5A8D75C745DA033ECE0FA4684E73FFE89F8B1BD8F40D4EFE04831825F8BD06370AD5393C80E26CA8A53D83876979696F0F9CFDF815B5EF31A7CE0831FC4E2E2B27198A7489221BE72CF57E0B1888D51F9F485557B73F85ED2370ABAB19094187781D78432F9D652E81C0DC98377906609AEBEEAEA0929B18390127688558FA286A84E470E1FC653BFF5A9F8ADDFFD6D5CB2BC0BD96884FE60A4EC179DA904209D9834BA47311A4E88F53917ADE31DE44B7B315C4BF1FFDEF5EFF87FEEFC2C0E3B1E16FC161A51842186020ACF67B4812F213C2E37506A6095C821C2AC0821C48033A2CA95A070422067E19501BC7C884BA7E670C5F43466A6EA480743014C4C89E61462F3A45C2B2ED541476C9E242030130459803C0AD02F121C5CEF63FF8955744729822894A80B8918674D7E297BAC3A12E3296C50B7140BCF1DB1B77AA3219825D16A46186631D298F70FD1F374D378F6EE4BF1926F790A964217D9600D491221F42344CE087D8A3FCF8597C772FDA1242ECE8BBDF3EE5BDF8BDFF9BF7F17ABAB6B989D9D0155BEAF7CE52B1A2B593AA08C9A4B56CF342654AE218753ABD73427CC20CEF2EAD47D95B9309EF08262309FD8503B08264B4AD046E8F5FA26BDE225B8E1593F84D5CE3A9C3C4332A2133790EDAF6051C9C0937A7834F6F31A0338735C96373098A9E12307EFC5AFDFF1097CEED03A1AF37B85C16BE4293AC90AC2D087C7C8877E8AD009117B40E28BA505576A7D19E53E4F91F2B75E80C0F50510EA8B62F43AD5D318A364849976139734A7B034DD46C410A85121922D0FA440895C8E11419453438F614504A787235982FDC78FE3E85A17591089BAE99952668C96E762CC2470573FBC33DD39A614147206AD3A9A6A521018F100C41F9DBA22C972076B418EDEE804AE19FA78D113BE1DCFD97739E6B31E0E1719FAA32EE69AD3E832A2DE6F0119D5CF42E202A9024FCDCCA23F18889ACD2AB7CC2BBBF79E7BD52561A2535422AB0F4D7DB7FC5B4B333BF55A5D8BB8D8B0A30A09310EFA53D6823614E3C326B4F9CEA1CA26C8FDD00FFD207EF9977F190B0B8BE2786C346AE88FFAF06B7524A31CA14355C945820411255527467D6A0641CDC77DEB3DBCEACB5FC4C73E750F8ECE31D4C643DCCDD1A464E1020DB83366F0F24CA4079534C6D051D513465D7C4CE3B6967C3B06A58AEB85FFA03F524A0316707C0FC33C45EE66084719969B0D5C3E338B2B9AF318C523ACD2EEA905702899B214D3614398BDD56284BB3B6B38D4ED03830C198BB49051CB3330CC909B8A309C127350F605D42CBD32509B214BBA16C5C6CB785E51E663E9572E42AF86B8D787DBACE3F0B087A7EC6AE1A5573F1ADFB77C2DF25E07C79355D46A1192CC0713FDD362887A54130C0C87319A5353989E9EC2FBDFFF01FCC44FFCB8AAE0A6D065190A56D693304D0A6DA672BD5E3309CB1B17C9A95C78D4392780DA3930F14AB48D6EBAE9260991611D6DFEDB293231E049F7AE73078D220419D38318B59621CA3CB49AF338EA7878FB9DFF865BF67F1EEB875378D3754C3B1E3A4981264224C301DCC813F52DA36AC96AA8E23765862D17B0AAF2D55871F99D34662689E0881A2AC71835262B8080602060221FBD51078D1CB8726911FBE61650CB81118351B9A3471E7A858395411F470F1DC67AEC60D0A84B4A3DA1CC77A154497951C39891A091D8BA71846919545A1201B4F3E954CD33B1F1C84EAA80E5B90E52537F9C36FF54AD8D63AB07D0AE87B879DF63F1C22B1E85AB66E771F4C4FD486BA18457859E8F51AF8F7A10220C23747B3D78AE8B5DBBF6482630E78536D4E963EAC7C9F0CEA90065C1A47F5B26433DEF8FBC5AABCF4C3E3B3302A4C059038F4525A5A3459EC2774390E64AC3026994A39502F9EA3ABC761B49EEA1DE9CC27F1C3B8EDFF9F4BFE19F4E1C4114D4500B69B8D3AE4AC4E7C2B2575C04243234FBDAA87455EAF794AF6009854D39B8A6CEBDF496A50B4A8802474272D20058ED1CC19E7A1DFB2ED983E55A0BADD8C78174802F1D3F8C636B1DE485A7CF98A570C35A192DBFDDA234F274560494617563F48944B351F0598E01622C390DDC9F0C310C627C933F879F7AF475F881EB2E45315A47BA4A82A281B4C1FA803D4469269116A30CD8BB67AF4459743B5D713C6B945145D468F1A3CAF80A29C1980DFDA5E8842628563DE163868FE3C814E58984DA1920D9AB10443FFBB33F2BEA1E2B0EB9BE27C1A7A3DE104EDB07D218D3EB29EA5113A39905AC65C05F7DFE7FE196BBFE052B8D3A16BC45346232574C514899A380C2F5D11F0DE004BEA4A807CC5DDAA9F83BE30FF284C97091C50952FA8B1A3E9C78042F4DB1777A018D2CC0E1EE3ABAF493B1FB066D2871D0D03ED23023CB56EEE488AA1B8275C959FBCF4523F1B0BFEE622E0DB1D4CFF1B9FA7134E32E7E78CF3EBCE009DF8C6F9C99C7E8C80AFAEE0869C3833BA41EE9C00943CCCDCE9680226DAECFAD7E35214A045F269ECF4AFBC89012C6EFA60E3A76509097D71C0ED3250A799CE2EA7D131B6A2717002514EB3C302E8F1A40A7DB157DDECD1C0CDD5880B2EC4DE14811E25DFB0FE2EF3FF63F717F081C9E0FD1CA81564CF713550EEEB4F4B4FAC83C5FFC2764C3683E3969BA6380D224760D49E39FC00B9064B9D8228DA001C4190E3E701079EA6269790ECDA9085990A313779117196A415DD43466D26A3C9C8D8BDB5A92E299C6DE5E4FD7B991B4641EA9066623E4A983F92C84DB9EC51DC70F61D7D10E5EF2C427E1C5DFF1541C397237FC5DF3708E0D2515A49F8EB07B79591CBE52FC45BA6F9013349B935C5FA3EE4B0E8232A81691A351CF7A59C8455E92F24CBDE816856C5AFDC8474E54BE9D06D42FFCC22FE0452F7A914C1C7756BFA04DE022F553A1BB67EA0BF8A7070EE3396FF96F18D5E9539AC7E5F5368A568615B783C223C9104AEC5A421F0ED332B2021E5533A6F33117EA0C16C0191769D59831A9EB6257B954FB948D6B784D847980F543EBE89F584746E76F54479E7631DD8C509FADC36D3B027C465A9048289550362810C09781DB273FCE99A4ABADC3573946640297BE695A106609E20888A30061E2217E60847CD4C2F1F8201E39EDE243CF7F3E1AF161F4EB21DA2B21529FDD4280E5A57991509C17DFF34DCA892D6EA951E7928622766721D5709D28AA09994E6AB212F668FC56A65F94E1DAE93D9E006A27E104992C028A555B299D58DF6EE4E66826394EB06EF8C841237271EBE10E6E7CD3AD886AAC5294C0AFE5989D69A211052868C3304427607A3B0D75CBCAB1BCB6D52FB62F01B8FB4A5B1AA69E7B115DC0488A1879C8E0D318CD3C440D750C7A239C5859C770C0D8C01A3C2F1456910B9B6B865D38A6A79BA8CDFB48E8DC4D33095ED5463AA4C599B54B06539326D5DD4CFF5C019FE6FAE9BA8F50BDB3B1A65CD56409736833027216542B1914ECFA6893D1EB0EB1D64DD065DA7F1121CE0A5C33E7E0D3CFBE19C79A6B98EBB8E8D6009F499B8E83E5C55D46E5EB688F5DE31B3385632BC1C106547C9B5AADA6B962622F19C88D83D24DFF4335C6C89A4C00F53002AAD311BE2A16401558A9FB68C70E9AA18B773FB4869BDE7C2B82DA0C3C97793C03385E8E563DC4EC7C1B458DD248FD53A324D585CA9D3673243BF61C05942C4A86D215452AAA1DAB22F98E2FC52DF3A183DEDA0027565690258EC4E431DE538BEEEB9AC9F83FB296C908CD4684A9D936DA33D3888B01567B2BF002551B8BCC8353B0C95C80CC2BC0661D1E231A4E1B27684C18A6DFF347D9389869CE70A111023740DDAB692DF624457F2DC1DA7A1F715CC067DB1DA7815196E0BA25179F7CF67370BCBE8299AE8F7E441053AA8F0125124A543E5BB2C80CA72129E4F726B05C0155FD54F9F24DDC799CA6B866A2F2ED28A2AC8462EA3A2514B933461D34D31C2B351FED11D0085DDCF6D03A6EFCDB5BE1856D448C832B62242963DFA8B0E798996DA0351D21F75D0CD2589CA34EC0DD9F0ED592E6DBDEB38B04A011CE9A1589D432AFFB4DF85988F563039C38BEC6807309A665992D3AFEF947C26C1989E0B9703C474A86911D7459103377D19C69A0315B87572F903A2C1D93A318E5146A52D492EA96684B927A72FA6797D417531C854B95AE01FAD402C745336802A31CBDD52EBABD21BA436E3235F86E0487753150C320E997805A69AE61BAE361C0F02C01948BA585A5B1CA67FD501B58D2939D4B4E8D2A9FE521C71E5E13D0580D9B65B0628A7D13406D6F519EE5E853036A2CA1A662078DD0C37B0EAFE3C637BF0B7E34656A27B23793234553923845C4CA0A418199F96934A6EA52F8A437EA8AA4A0856CE778E3121887448F459856F151654C0B3C03720000200049444154B67EE4058B99B05C5803C920C7606D20214E8402EB9DDB1639921FE8D2D6A00DAE5D00790D4698275E0E2F256B090CF33EEAAD1033F36DF8350D5E2560338980D7C299DC03A413A2B2F4FA34EA882AEB37A8CB8CCFEBC0173E9F00F3A41E7ADCCDB07E621D716F8494E923612811221C983863944403C36C807DB3193E75D3F3B0D258C374D7C320A464A4E3F96440295167483BABCF9967B205269CB01649093E8D3CD287B206A26E0E34EEB42C739226D8F7C87D133FD40E426A23A03AF07257C2829A4982957A84A96181460D78F743EBB8E96F6F455867EA76061244B6161F721F1999B39C5C5B8299761D53ED3A6A5335AC67EBC8C4A8F2240E4E15310D58859B18E59FCBD61624D71412B27022E5FC420887FAB089D5B53E4EACF7900C6284F59AA4ED8F688F48E80F43D5B856120991628522AA9B5C3B04965961722CC3A746C391A893D3AD69B4E62224B53E02AA7BA956452298F85E2467A45E839309F942A48965EFA5F03375EA8EC01AE7195ACE34DC9187D5F575AC9E1820CFE98F8B24C856630395592CC07E570DA9FBF7E8C5009FBAF18771343A81B9BE8F4E48954F01B56C25D4FABA867F1932450A4668AC9ED9874C933C2A855118092951CA221968A5CC8D71A593C05D23CEB0EF9A09A076104F2529A12A5F474880D8A5CA0751F9A6E21CF5D0C16D8754E50BEB6DB1A12C452C4E76E9B7C4969EECED95211E8ED024BB365547BB5543E130602941EAC49A4D20B1794C7E5079A54578CCCF6E26A5B9D850ADEEB3726C817890A1776420DD32689C33D29D80B65D3308184638287054DD7324AD436BE96DF8486683AD6357405A8B862EDA73116666A6A4D3476FB88684298FD22551438F1855C1B111BBCC49913999E45A79458480C17C5981A4E362D81BA2D7674D0C46F0D74505D5B2CC04A5761A64B11955F96205D44D37E358ED38667B01BA61069FE91B1540AD77D6D5CE138A5C0374A5F8B404C76AD486565C062561C8305DADE669AB0698803F11FC15D77492E6B8C6F4E9D9C94575315FEB2495AFC811BB0E9AB18F954681A9381340BDFB501737FEED6DD28FC975E9731A774797043C2912C285C20F834C33A4C31833D30D34DB35D4DA2106791F4931D4BEB5DCEEEDAE2DB415AFC77CA84C53C6BD26B22EBB1A76D0EBB24794271284159334EE8F3431179272C3E30443DB624683ABCD6E6C24A3E9C621EA2081C760564DAB778A54524AA6A6DAA8CF44C8DC14BD64244E6AAE4D864D514051B51BE6B41173D4BC86D4C7C84629FA9D213A6BB42B53448CC667B9337119494AB186D69BF8754D02A96310C778F4928F4F3FE779381A194005197CA6E15700C59C296E22654F28AD972BA926D242D78E070115459128CD638E6F6323A9713A8752A0FBF64D24D44E6E000414A513A9F30E435C9021765D34E3C0008A65BD5CBCFB500F37BEE93684B5165C8F8DA56D96AC768CA725CF9D976B864281067AC30D301C7411344334DB4DD4DB7538618124635E120F4D242F9DC4038B57720DB0086690FBE8ADF7B176620DD9886590A9EEF8C2206AE6AD662094C1D39217341E95719AB84DAA1BF35EF61CD17AD8078BFE9D34475000FD4CF3BA1A533534671BD2A626A53D93327C8A7CB8AA962C164436B0968588FB39D6D67BE8AFF5E1FA218230149B924555F8AC1C078942A74453554B9CE0AE4B4025B86E9180BA194708A87E808E9F21104039585E581652625D543E5E434BEB59B4D89A2B1A2461C643553ED5ACF563F56C5B837A3C52F4E44F00B59370523F144B26972C1F552C01948795466A543E0FEF3ED8C58D6FFE47048D69D9CD4F8E3050556E1CB7670B37B2565D82843D9EA6EA68B69AA8B310BF9B629851354A6411724776933A524AA5D5550CBA6C8616C1635CA1AC09D609573AFE54147C1985BD415A9D7AACAAC7D24795C4F45945524C32CB069200C834F5B9B910F5868794F5F78A04944B85CF629D5388D6231C3D760CFDE1004EE24B24434E0052D219E2624CAC58ED8B4B9D722E01F250F2A01EB32BC4BF3DFBB938565BC1F4BA8361C31DB37CF38B25A04ED51FAA1AD6677F560975D26723B8ECD79C987DD75C3321257610539B01C5DCA4C423A0A8F265984A52D4031FEF3ED0C18D7FF72E04B5365C8950D88AA3968E4E176110212D628CE2583281A7DA2D3466232064B9FE0239ED8F3845D60356567B12FDCD022AF5B0A9E5C828D1C44F79324D7C3E4361A5ACEBB0B4B42BFD6CA5108BEF61900E119068684468B61A68B49BC2028EB214BD6E82C10AD53B967B2924395348B3CC8658693CDF465554858696CC63FA3E1313333C6639C4EDCF7E0E8ED55730B5EE625823CBA72ADF521550265262F3FB6E2EDA22801AAB0FE362135666198E42E68FFAE9351395EF7CD6D049E79E195029A61392122E6E3DD8C5B3DFFC2E44B5295D105B0094AA26A4A4B5D50D4D693AE759B4845ADCE2D2AC2C56A65B1C3BB4A219B38C08109F8B49DDA07A27FD006CF99E9D05151B60B3404D4EC68E511E74D032852370E0339E911DE8231F7B969704689DA327D0E9F631741C51C3248CC9F3A491B6CB5267ACFB6E1A6CDBC1DE68DF6D04D4F5BB427CF2D93F8C63B51398EEB8E84B171D75EC2ECDAB1F8A2A5F197A6413DA4B7DCE8C87F9CB09A3A0906C43138B6487CB26940951A16D716407B866C2F2FD6F00942712EA4423C54C92A11E79B8F50055BEFF81A83E8D02CC271A4BA853EB13AAC5D3D149435E766C3169189303A9D910D26EA2EF87B6511E20F11DF492AED0F18CB2908E83DCD533824AFBECEA7D2D0D7EF6A1B0C57E4E294FB97F4B163025A99602A20A48BF153B17323371CA6F2300D9BBAE14A069D51BC8EA2E56BC18A334314997B934860B49784A37459655A35D37266EAC3573B2CA17E1F61B7F18C76B27D0362A9F444A380E163748282571B442540555640E4DB908918851188AFB8DF5006C354C4DF23211BB26014D3CD1A2F25D2BE4C4E4B3332370920D6522251845BE5A079A31301546B8F5C1153CE7ADEF02A2FA86E052895D338F42DF9186E1104812EE2C910601593DF64A4A33D9E56B610D41EC223EDE4711B333600D7EA381AC51200E32F4066C23938BAAC848081AE20CBCA1C3551BF08D8BCD9D6914241E4F8ED51875D202EA0B32D7A494715C24296B02FA08DD0C71DC47EA6468D59A68A10D0C72A4A304FDF51EBCCC413BACC39BF63098CAA40F14BD0689A7AA1E43A224E282528B9B88C994F00D63A26A20C1469631C0304E71DD5280DB6FFA611C8B56303F54524259BEB184627D09FACEA4DA919039A609A17145491336E37C768230105A4F01A5E566B5C884C99317346A9A2F93DFAEDD778DE4454D3E3B3302279312907257634015988A42DCBA7F1537BDF55D70682F08056CC8A34ABEB5462698740829E842F28F3D68638459282D6B4227C2A83B44D21B49E029D53F2103B8CBD61DD4A6D840C0453F4DB01EF7259489C9750C18158ADC24EF9DAC4E9DCA123F1950260CC3F0605A2783FE26D6C32B9214EDA081C86FA83F6E3DC1A81F4BC1C9665447CD0F3158EFC1F101772644441F9B976350F4D02F86C8A581754D6A4D08F1C1C876D2EDF453196ADB2529E1922535805A0E70FB8DEA879AEB87E85668736B43ADAEAD49555B194F6A8C961537318B25C9C2B90883A0900889B2DA910E8C86A6DB6652FC9A3525123CEADA6B256F67F2D99911D87140196A9712495AB93262DB0BD0F65B70060E46AB23A403F525895DC09D3CC9A57119034B1387B52A9AF0A7EA1821412F1B4A8301EEC2BE51A1AA2CD6195B979E42424993363B7452778BEB3E9380D576D844943750747374D7FAC8E2185EE84B0116E94125A91FCCFAA50B6704444034E523687A18B9313A4CD330522F60E1D09C640BD3F1956E17C942FFDB360145D693D9CF4A9B5B6349F9860D0E270A9E200C4D8B002BBFF46D75D08CA66EE29568D03EEA518F9A006A67B02457D90C284DDF00DA31B0522F54E58B2223A1FE874A281AB486BE2E553E495F3312C4A854A492032F44504448BA43744F0C10A62E6A7E4D6868D94759A52825554C3E823E29A09FC640E8A135DF82173918E523F4F358FBCBAAD3A5922555252936B6B891126992A4AA655734E055D5520DD61157B2843AB112AC330A91AEC7187546888A084EC8FA104AD5935C618402B7720FF4410143A78391C71A852E1A33118A46845E9660341A6AE96776E7602F5FE92745A5F51480B22A5FED04E6076145E51BB37C945081103525C360B230C6C110FC4E9E532225B6F8A1649A006A8B83B5C5C3AA80623ABC0D2815E58D91E22E30ED3978CF832B78EEDBDE836118A2C65262A6B0090148562B71B4925120E594C9961568E611FC61886197B5FDFA928220B5BB59E8D201060C5A75330951F3720F5EC645E749346B9E7799EA8B7623423117E2583D45DED33633999BA02624BA8617597849A4B844E28DB7635A111E555116536184108164C294580885365DDB09E1AD65E8ACB19976208B5FCAAE30725D1A5D2B99C2EE216400194EC4280D91B0B4F7136DC7E44DA5081B390A2F40AFC8E48FE3451217E890C871189AC5F378591FA324C3BE650F5FB8E97938E01FC5CC2044225D6B781CB0B8A82C1F2325AC1FEA6CD33A01D4D946E861FE7E8384928C5DDA3E8C44D0AA44DC55A723FAA156F1BCB7BE1B71382546334B2DB3CE1E435F860C6465D2A1CB809A00114278998B7C3D1330D126D6405A0D99F14D681B8370191327363C9730032D187121F557280BE8E781D820F57688ACE120CE5894BF8B946E2C2F82CBA824B1DB68879BEA43A64974D51D437532F552893564B2530375B4DD863481EB11483D76E0A823A5046323016156D42694A05BE28B928EEF4E9ADDB444254D2ECFCDFA810E4B9879081911D2F4D17763F4286DF976A407E438DA841CD810FD618C6B77F9F8C2739E87838D154C2721464E6A1AC039521E7B02A88719003B7D790B28861E490B4F59C2E2FD93C5CF8550F7805B0FAEE2A637FD7738F559B028B057A4F09D5C2AB452D30BE149392C4AA9B49322E966F024044FDBBB6E8C64B0B7D0A058319FC5682F3549D36E94A1412E5C861FD1CF3317C16B8740E862055D69E0C6443E8242CD212609F27A9490A605A7A87A4C332498D864DA91DA13CDBC867C2541776D2012493A5EF029A41478A512BFEE2A650408259334CC96C60A5A4E9900A30A494948B597A0F09B3E82962F2AEDB048E40FC7C64304C74F910C49B201D7EE09F099EF7F160EB65631350C3074D9795E651AEB9C4F00B5D32BFE61BEDE66407131324E8D3D93A84235C308619EE0B6633D3CFB2FFF014EABA5AA8B31E8C986B5DC10F52C423A84946D4E0629FCC4831369066B851454B89A5033910262D610BAAC0368E8601321AE347186D00B85054C923E8A86877633423374B0E2A5E8D1AAC9C89AA9C52DA548942C569F4D46254FCB4DD75C0F51EEC34D7C49FC8BBB31A2A02E4988626F999840F17DB99A0A2F25C12C4926A18AB926151A128DE790E266E14BD2EAE2BE760A8C18311F79684FB10B628E4E30449AA442B33B918B22659C60817D7B6AF88FEF7F0E0E4F75303F88D0CD7A083CDD2058747402A88719003B7DF953014A776B0D93618D8805BF897F38F0106E7EFB6D70BC16E0A59205DBE44E8F10FEC885DFC9D01FA6E8B1835F106AB7084A8B8C45336D147A8926433C195BC746B69EE42156E9C5DA7BCC6FA284C16880A10BCC450D84ED002BCD91B071235693F5553DA31A96B1A22BA31CD81CC0F751774334FA018A6E21F1778C1D679933F1C050E0F8243C52238D4CBE56851E538E6CEC2A5091AA4CB4326FCC2C26F83C4D361407558A80CD07DA0E9A33813086C7DD0CFDFE71B8ACCD517878EC7C880FDDF82CA4E931CCD597D01BF5E581286109A609A0767AC53FCCD7B3E91B2F79C94B84F1932E0EB95676A57AC370A0DD8BCB78E7E7BE8417BCF5BF23AF2F8A0A852010D5295E1F22EBB28A0FD52C360260F4C3B826BD4833A102B612FBB7F96555D7B2691054B158968C4980A4A4E9E3CAEB2E5AD34DA4418E13F19A04B686515D7C4A4E92A119B6C4D62AFA09D235764874852667C30269F026F1779A4B252D35A5D9D956AB9E2990F4C39F59875DC3AD287DE5BF39338487C256D6DA35A0568313A6E86729D6FA2770FD9C8BDB7FFA67B1961D879F441244CCF79C00EA615EF80FD7E52DA0347D43490902CA65421B0354591F22C9F0F124C0F7FEE17F0366E6B050AFA19104888F74908E728C588ACBE382F4A4B0254385243542DA139E47D5239322A20DCF487C1428924CEC3516AF2467C7227479E8A168FB5228A6EF26186424480234D93E6694235F8BE1F675D72F8C7A97524D7429BD683F696854B535E7D6C67B13A06C7E124129CE5DEDD411B16D569261E831D0B8803F1DA01FD4D139F610FEEB375D8A7FF8AE6760CD1B48BB9B24D74ABBFCB023C7D924D4E6C8C69359BEB202D2E61D4DAB1E4D68F3AD4DF5568FB2852E99BEC1204CF167D0E0F63DA429BB563059101814116E7FA88B57BDF383B8E39E63A84711DCA081A297C20B6BE8FBB4385284C200BAB25069BC5362D88AC05B7D267B9C3A2DC93672E71FC175B43C57BD003A640B8B1C330930F41D8C58F1BF1EA139457593AD69805177200B394A3D840360E433B53CD7AEEF8C1564E62D8B74D2F631B182A76D2F7ADA87AF90380490483E880DC5E7CE6A1EA6E31A8AC445528B512F5CAC748F61B9E1E2579FF75D78C2A397F024771A27D235B80851B8A974E260E02D8B5CB2B6B904C79A222DA70DB82F8363C3A0D094E8CD190163EC59F795FAA1269112DB5D98673ADE2618BEF295AF94AEE5CC0CE53873C7D62ABE9AD4C6101AFA4F12BF89DF7AFB3FE34FFEF92EA4B53978CD0097ACF670AC95A011336A3B1329C51E485EB329C9786C0AB6B5748F939FD4B633623116AA62AE306CAEB08BF409D1FE61BABAEF1598868B88BFCB1841EE6010FA389127C80A1735D65B2F987745758F01F38C7BD26673394B7F4926B02F3617A9FCEDA9A86685CA3A66CDBF0C53F5966447B046B95774904F35B13A6CC239760CCFBC6E377EE7FF7C06AE5F2E3062AF6209BF3501C42CDCD968481BD60D3694E7DB3A2C1515D3081D0315E149C220B45DA33634A816DC8B7F42236BF933C5F4B59348899DC4535953E2E52F7F79D93645AB08692D040195990CCD522FB030B3884FDD7514BFF2F71FC1873FFD15E0CA79EC4D7C8C0AB6D06C603566BDBEBA76C1A094D12279DBFED86069DEDF65192551D98098AA9514FFC944BD64BED62CA311564E60B4FF10D2CE3AD06CA0BDF712607601EB1EB0CAB63AA9F6E4656483941B1B25EAC0A5F6E869DD70A6606C4FA21AB54F3A9624F0EA0CA7F2305C198A9FABEEF938DCF431DC7F0CD7CF39F8999BBF15CF7FCA63E0AFDE87F534C2D063347B6CD44D668278D201857DA14A40ADAE09C9A3A69A8D341F37742F6BB570DB0A8240702D0536A4A0BB9E27FEE932E557AB4DB030C7A3AE9D841E6D7B659EE1044AA897BDEC6592B5CB9F494248BAB50407182048B113F6667231F47C04A32EE6030F2B6E0BEFBCFD21FCC23BDF87FE09C09B9F971A7E593A44443B62D413EA9D355ACF859290D20834D0D97B370B04CCB1A3855AF2780476679E891AF09204BD430F6278E8101AC81136027446230CF200ADF925B4969710B71B588B5911A9C088C16E9E8B801112AC72E42460CD18296AC9E008D3A462EBE36CE9494A620FFDD481DF6C8B27777062151876F033CF7C1AFEAF1F780C961A47D0ED0638EE2F62CACDE0255D242C7D2DE1AC9A7121E92BAE2BDDE1C5865A59831F6A540607525D0FA6AAB21028A6E91A0145092521F9528A99F55AF46F024BBAB431AF44764A76279F04C76E7D92B77624558BEFFEEEEFC69FFFF99F8BAAC7DD51B26453D64DD0E80631B0A96FD1AEF232F4923E5AB5169CAC867AE4607828C18FBEEF7FE183FF7A27123742ADD58093F6D18A5CC4096733300BC66A7EC6592A8F585652D1632A8F2D35F25CAA9001EA59037DF491BAA914929C725DB48619F29575AC1D3B8CE1A08746C8E6D9DA302D20855EB8E8242CFAE263716609E1DE5DE80701D69221BA8EA37186A92FBEA5C41D0A5F47768EA9236A828C1B09948D056C585359885F6BA0484D8D3C60151724A4ECE321D295FDB8F67157E0F5DFFD6D78DA358B38E0E568F686E883C1BE4018D4246AC36E3736FA822A5FBD5EC7FEFDFBF1A4273D09478E1E41E0876529669BB829744FB555107F0ED80FD18C64D92F548B248903511CD5A6EC531A27B8F6D18F9E04C76E0D2B5B3A8A0B85A07AE2139F08DA514F7EF2934552B1AF13FF445124AAB6A85D9E27D9A46CD539720AF48B111A5E84C0CB1136A7F0B7FFF30EFCE507BE80CF7CE900A6765D82B5511F4DBF40C198372E6C86F97147E58ECCD2C25CFCE208920023E39CD5B633B695114904D96CE9D6F113A19F5B898BA9CE10C9894318AC1C45983988F210891F4AD93136B2E6F51B858780394B1861444ABC3587687A06C5C20C561B01BADD44C049658ACD0D0AA3EA92554C28A532AD022B795EC2565282A9A460036C6EF2092B34A5EC3795206D904209B07AE8202E9F6DE0A7FFCB75F8A9673E1E332C5D3D28D019C560F0C854AD211A99644DD0359126A5ED3A3D3D2DE9226F7FFBDBF1EA57BF5A7EFF9F5FFA92365C93D42EDB9ED4F4B4114FB6955C245B7C096C323B9856C5D4F6A0636FB4D61E23F598E2D113406D09285B3D8880E2A4B14B5EBBDDC60D37DC20EA1F7578EE980457C8222AECFC1E6A578D643090A4402EB0AEF488854453B4679670A493E10F6FFD04FEECC377A0E34D6176BA867CD445EAF8A0C5D260F1D4AC8B78C03CA150E2EF1864AA0558A8E2E52221723608802F691DB114E077B0081F8D610749670D2B478E221BAE238C982BE58BBF4792424C25D998D47FC282956CFDC9B4F414FD848D067C4CCFCEA335B70BBD4613ABD2910352F588EB8C81B7391943D3565DB26E1D4D71D70CE4042E8311B3004EC69E236D24E97124D319BAC77C34E202DFF9C45DF8F51F7C2A9E78F92CD6568E48AB9DA8602747093B97B83F5BE486D76DB5DB180E07989D9DC33FFFF33FE3965B5E83CF7DEE3FD06AB5641AEFBAF34E2937AD26D4380ECA360F280592A46FB0C66E696B593E4F7FA1B92E96C2D0CAB113406D152A5B3B4E0115A2D96C49C335AAD5975DF608BCE215AFC0777CC77708D88E1E3D2A004BE2041977499785577C2104423742BF3742587391E47DCC4540DA58C6FBEF5CC19FBEED7DF8D0E71F42303D85C5998600A09F25C8FC1A9A0464A6055A52A67CE789F49D1D0D07A236515A305D824988045CABE62238BC8AECC043E8774F20F53384615DCA74D9D4055BD7D12A8E928F25414D0CC865143855BB447C528DDA34DC5DBB50EC9E45ECD5D0E991DE4FA47458416692D289956473F57FD9BC2BC70BF599E9AC0D586F9D0C680DC78EF9D8379FE2A53FF48DB8E9DB1F8BB07F04ABFD5534DBBBE090321F0EC506A4439912900E65197B3F94CD89DAC06FFEE66FE23DEF798F24D0CECFCD89E6C0F48F3B09285F01659B02E8BB56DB0768148A026AB3776AD35AB05FF3A613406D0D285B3D4A62D85C1F515813237865F5B8A8DAC78F9FC00FFCC00F483336768DFCFFDBBBF618B9AAF3FE9B997BEFDC3B8F7D785FB6B18383E210C02E860895FE81690085586DA380A0C14011C510290F1A90AA483136A63634362F2798004E31D40AC2089C4484B61675086D4442092125046442E59A871FBBEBF57A76E73D73E74EF5FBCE3977EE2E361EC79B508919C95AEFCE9DC73DE77CE7FB9DEFFB7DBF6F646444E01F0BE7B8E058BD41A8E22463C249ABF9717439361AB509149B16E6647C04DE5CACDFF92E1EFBD1BFE07F470FC31B3A1981E509D268362AA0F8013D0F7BF84E4EE6914AA545938FA5E595441D69C7418AA0A55440736C1895C3E34095671F39B200019B53D39B28D6BBEA99CBF0BA3A89C9518164D786F27681C5B211EADE25A4C175CDB290EC7291ECEB4773D63CE41A75549858650F612A2191EF5EABCAE6C1200155B748CAF2FD1812C92CE05A189F1C43A6F80EAEBD601956FEF552F4DBEFA1DE7451AA5490B4183AE7B762D778E6E6687C7121F5D24053290F8EE362C7BF3D8B35B7DD8691E161C93B11113017C5B969342AD8B5EB4D257419A9880AA37DD3265A7BA88814F3075817CB944F3FBD93876AD758DAB98E93C61D928C69655C54F2518A3EB9DC2169A24CA3BAEEBAEB2402C8DA1C3E38C1FC47122D99150C60483083DC3B028B7A15A95805C96C16AF8E00DFFAD737F0E473AFC1E9EF86ED57E0A5320862BEEA2BCB739AAF0C9B8B9511ACACD344B656437CEC102AB9832897738853EDB5C9C4A90D9FDF932104C2434D6D1267158973E8C6E81A11A94008EBB5448F3356D510AF8284E7C2E99E8F5A7F1FAA290FD5661C956A80244BD783B26860940FD781641C48DAB0260BF0BB5D4CBC3782733E7906BE71F5F9F8CB4F95112B1451F33D043C17C56DA1E1B3CC8515CB52114FD1CC8642043D3D59ECDEBD47CE493B76EC1043220AA0A129067B429F638F625051E38A06726C3943B56C4F32D5C625693517454EA6E2A88FD34FEB0425DA319476AF31908F46C55D9846434321A6CF66D32895CA92F03DF3CC33B16EDD3A9C7DF6D91209E43F1A91E953CB4520BC38CB454388ACCA5B38CD3ABA9240DCEBC253BFD8856F3DFE02FE275703126564337D68C42C54FCAA947E34EB4D3816E1640CA97219F5F7F6C23F94438CA172EA35580E1A0C0430E7A36F50209D68861F3B302F50886733D1A550455964D79325DEA8C76165D2704F1A426DA01F638C6A561A4805714CC658EE5EC72CB86814028C5835CC6AD858F7D973F137CB4E41B62B8E4394166B3848F0FEFD8618AB63C761D3DC6B55398FD2F3781E0312C0962D5BB069D32639A39E7CF2C9F2930F6E2E26754107E2FBDAA02C52C1A676A33173AC209E62DBC7AC08E493141993760C244ACC5C3762230D9F16EEFB38ADE3A1DAB595B6AEA341D13B71A285EBC68DAB5E473A9D42A9540C3D0F83167CEEAAABAE9226D7030303E2AD8C019A902FAB79034227BA2A8BB53F0E927E15B1FA04DCFEF93854AEE1CEED2FE0BE5F8FC31F3D88A1FE6E94C81362A331B21D0873F68DA0B27F042E43CA2C43E7992AA070BFD2A9B0589128E15F2A21999CCCB16F573CB00E0CF0EA20F0A56B08BD41C2579D0D93B0617777A3B16008A56412E47E374A55F4D8BDD85F2E21703C7C7E41376E5FBE181F5B3088746E12659E91E21E925602956A01B64B564620A5F0413306279591B54B2FF4F39FFF02EBD6DD8ED75F7F1D838383A1682B8D8DE36EE6803FF9BB9CA1DE5467285DF5D292118B189294C0307E62592CA2D6C7C8687B458906EAE4951E2B65501D0F75ECA5D3FE152A91680BB4A3C7E1247272B91848DF917D4F17D311DE150A799C74D23CAC5AB50A175F7CB1847879780ED9156C6E26D88A392C5BB874E4C93C0261BF000013AA4944415431CAC6F2082799443699C62BBBF663F58F5FC48ED7F621397B2EE6DA556446F7617278946811763D40E0DAA2259188276111EAD5ABD25D90FC194742C5AA8F1335F5DA6A322F89E2685123E12D398BBC571FC9781255B6E969FA48916430300BCEBC8FE39D58976C1EA7BA05ACB9E45C7CE1FC45B02B75346C17FB0AA3C85A2E52F4B4014BDE2DD8CD3A027A6C5614DB49A45D475EBF69D37D78ECB1C7C573D3B8A26243619E2B24042BB4D068D4555082A154E9EBA4D30AC666E47A2D9546CF9B48584DD5E24435E3950A4E09B56B413F4D905714AD4ED8BC7D5369EF4AE3A1441B4F4445147EE743B4134C5364FD763C5F118A8C8C0CE3924B2EC5EDB7AF9570EFD8D8283CCF9C0118817350C8E7E17ADE946ADD26DB6E36EBC8A6D218775D7CFF3FDEC2A67F7E12EFED1AC79C4C067E750CF5862570B350E299A40E3795062893CC85231A0FAA90D074396FCB98427C14491DF33DC8E7735C54AA75C4EA55245349544A05A4AD2EC45C07C3B55164FB8670F95F7D165FFDE29FE39414458B7CE40A07D5192E66CB62A7CC34352A9467614D982DE3C1C7B3CF3E8B0D1BEEC49E3D6F63CE9CB902A7795E3209F49091A2C3E2E6776E6ECAA0DE6CB504550AB0EA9014B6D4527C4B89765A5642153FCA20298C289E499F28A3014026183B51BEF60CA5DDAB8E665006C2BDBF29000DAD81743A8DBD7BF7A2A7A7075FFFFADFE1FAEB57209F9FD02D3963A856AB9247E1CFE90FD64DB1D71365ED7B7BB2D8F3BBFDD8F0E873D8FCC31790EAEE455F770AC56201AE65C34B7B389C1B87E72A48A404FD35C7B0DD9BFC80EB9A01EBA16CA9EF6288DC65933437815CA582DC8103387FC9C95873F315F8CCB90BD02CD4902B5A68B26F54A302D7A5B6845AD8DCEC5590A626E456321DDE79E71D3977EEDCB953D2128C629A5211698E2D245EC59B34617915185294AF9641ED52895DC9C71A29B1703FD1CAB1E2AA95414563EA61AB8E56FE2AD41AE061AF635033B08A226F713483E2DFCD441B38A276C5A62C985C2E171ACCE1C3E358B26409D6AE5D8333CF5C8262B124AFA531196F673E926BA541E677C246AC348A188A48F77D02BEEDE0E9E75FC6868D4FE1D7AFBE8E051FFF24FC660CF94219B37A7B50AA1425B9C93305031433F110F2B550E913A8F981C8A3F5245DBCB56717FAE6CEC1DF5F7705AEBEF43398D71DC3C4F89BF09B1EE256AF84BE4579427A40A90827173F8D8841051AC7238F3C827BEEB947C68BDEC8753D490D9009C1800EC787D7D3008FEDA176491572E899F4CD1BDEABEE71A3B8AFEA0C1586F58E4EF3D76CF38E41CDC4526ABD47D4A0B8C37261D0083EC8A00CB3823FD5219A8C8A49298B58B16205BEF295AF09EB82E786E8EECB4F655F5C8BDC4D86AEBD0CF27E1109DF412A7918D974370E4E76E1E1AD4F61F3D6ED982C07E81F5A806A59B506E56BA740D030F16F18812DEE9D814472A7E1CA935F5A877B81B3A461C4E0DA716160E4C6F7E32F969D87D537DF844F9D9C46DDDF8FC93C43F5196432ECA638AACA407C46456DB8AE83F1F14352BB4498FBF2CB2F8B577AF1C51771CA29A7682F43186D4B7A82B54DF4EEA644A65D0FD5B68C98094AB4B34CF8253A06D5CE48B57F8D3128C211E3818C473A524B16F39C5908860A432846633C70E0004E3D75A164FD2FB8E002D98D19B4903C15D5629B148F0CD0489267172056A9C3733328935F140BE0A5E3487829FCE7ABEFE28EEF6CC34F7EF632064E9A27CD05E80D9AD29797A5F6BA549FC45BC945718356755724BB2AD3D14C6C56258612107CD6978432A3E171CB456035303E7C080B66A7B0F2A62B71F9C5E7C16D1624A95B2C0748B341402C40A55687E528A9B17A9DF42B5BA05E6F6F9F94BE6CDCB811DBB76F9771983B77AE304F18EC61F2967FABD5AAE2AD4C30623A9C36704FCD49423C7C1894300586C798DA30CAD7CE12E818543BA3747CD7440D6ABA3799FEFB91DE595481F479803F1DC7C6A14363723EB8E8A28BB061C386B0258B54DE3602816E9249E2FFC928674F593F80E33A28D754A942A6A70F13350B3F78F2DF71E7FDDBB0B76421D3D50BDBF1E1971A483931C41BACB76235115565C934B755C5AC08EA9374CBE2C6A6F404968603FC2C36D62633A3E2C34BBA28141B8857C670CDB273B1F21B37A27F16509A98845F9E44C2756133AFC47C90A827314246E81587E32855D8EEEE1E3CF5D493B8EBAEBB255F4783A1A732B4399EB178E633B266D3CF4B5129E928B43639C18E411DDF7AFED0AF8E1A94817906D37F9041F139739D49EE727170576548989ECAECC0AB57AFC6F2E5CB05FE31B725A5E1012B80D93A46C1C65ABD0C3BA108B735963E90CFD63F287AE6EF8C16B07AE356FC60C7CF90887BE81F9C877A390FC70EE0D7E342CDA0D7909072A03886094BEBE6B1A33A397ABAF134AB68DDD4002A9500E307F7E04F162FC4FA55D7E3C2B3985C2DA358CD239DB451AFD590EDEAC5D8D838BC94271E83D4233EC878E8EFEBC7EEDD6F63EDDA7FC04F7FFA3C66CDEA15C3E186C2FB16E8CCBA2D6ABC470A2CA34189E993DF31A80FDD1C4EFC0B4CF750D128533B1E4A413E558C2849E11A2371247C2605EE71210E0F0FE3BCA54BB1F29BDFC492B3164B2E8B7C3687410642C0066B9102B8B6877285CDD89AB092094C164B88D92E322EF5D57BB1FD27AFE18E6F6FC3AEDF1DC0C0FC01E41B6524621921D93214EF0AD3BC815A9D9ECB819D484A293EFB24C659914B1E9F03E447F370FD1856DFFC45ACB8F27CC4BD0A460F1591B6D348260234A4A52ECF7AACC76241A26A584DB253571719E0317CEF7B0FE3DB1BEF938D21935670598C85C11CCA0048A77A5FA49E0955CDE6C2713ADAB846215FC7439DF8DAFE50DEC11814A35066F73406D2AE414577609E95785660C294410BAAD19274BB6FDF5E61635C76D9E558B5EA16785E12FBF7EF97A817D3244C10DB8E2DB420A59BCE9DDD470315246D17F9F11C86667F0C13BE833577FE13B6FDE8BF900F12C8F6F752231931D655356BC29D632F25C74E2097AFC34A649048D45171EA28157CD40F1671D185A7E1DE357F8B85B367A17C7812093B40CD6AA0CA8EF77617EA351260552D18D9EF648DF0C160C22F7FF92BD0E3BEF5D65BF2DDCD46429029DDED752BD0E9895A33B9512F74A4093746C5B9E0983092A8D8E6ED45363B67A80FC58C5A1F3A5306154D529A04B1395F996007BD15237FB367CFC62DB7ACC4B2659F9324E7D8D84111C667A450450E09B9B8E33711B76AE2F5B2E921E4F2C3F0524D7465E6E2B95FBD8B75776DC12BBF7D159ED7876C6A3E9AF1328AFE419681A3526E22E5F48AD7ABE60F225F1EC149030358F9B51B70F9A59F46509B40AD9C4733484A8302862AEC98A5FA033078A2FB3131ACCEB2127ADBFBEFBF1FDFFDEE03E8E9518C70425D1326E73DF28C7FA4BC5DBB531C45077C0D43EAA447750CAADD11FC7F70DD4C18146FC384DACD798A6708C340E7F3DCB9798DDA759B92B8A541DD76DB1ACC9E3D4742CFFC3BE5C7B8A8EDB827F0A95A9D403ADD8D529930AA8A386B95E022D39745C96FE0FBDB9FC55D1B9FC4482E81AEA141C02E8BDA90C54A624A8C156B28E586B1E2868BF1D52F7F1E0B7B065099AC20F02B88C51DF82CEB677FAA664C180FB55A1971491EABE475D2B1F0CC33CF487065F7EEDD181C1C1248CBE7E99D7866E426600233C66345830DED4EB33128335653A8471D0FD5EE307EB8D79D88414D87355C4C26FB6F169C818DE64CD04A66C6303939214676CB2DAB71CD3557CB40B098514A4862B644EA58B2C1A6D0B5660D5E3C059FE1F5440571CB4750B5D03BD08FBDC387B172FD7D787AE7ABB0522721E6A6D18CD55039B80F672D1CC49DAB6EC29F9DF309148B1368F05CE77AA857AB086249C458A744F9E4262B8AEBA8342A48BB69A4D31EF6BCFD2EFEF18EDBF1CC8F9F9648250D8C8187B04C2472763C1AC43BDED93567521A298DB5556038C3904F5075270F75BCF373CCEB4FC4A00C943330C71CCCA72F2EB348A21090A2A58984625433D979C61967E09E7BEEC5E9A79F2A410B7A329EB98AA5A254CE9260CB08A0913723E4A231964B25385E1AD9B4872776BE86BBBEB305BBDE7C17438343B8E68ACFE1A62F7F01191B38B86F2F0606FA91CB17A4AF2E830695725905461A0C1E9085D1405F6F9FC0BF071E78100F3DF820F2F902E6CC9D239FCBEF64A09EB9D7E963F0FB78A6E824991C14FF16B2CD7FBF335494B5D72A858F56B974F250C7B48FE3BEE0440DEA783FD0189B8188DC89B9584965E28EFCA52FDD20DC40E673B880E9E98CC19A64A7596C84948469EC27952F953077702EDE1D29E1F16D3FC49F7EFA1C5C78DEA918CF1F9630FCACEE6E1C3E34896492C117B5581954A03193C4CAC008830FAFBCF2DF58BB76AD9457F03BD02B29E8A52846D1C0CD899C978E366EC7655046A32FF266ADA0C4119E144A92A81E29BA48C7A08E77F91EFBFA0FC3A008FFCC99838B9530D09CC3DE7E7B0F162D3A4322694B972E9585CCE23B2E66322EB8C88D77E07BD4D822A659C1ACDE34F2B922BC64065EA64B58E9138786117302342D1DA44866C40BF1A06F2A6269D024F88E8C8CE2A1873663EBD6ADAA5B87A7724F86246CCE4934C42891F5443DD2F4193AB641BDDFD944FF12B31294116BB506992AD91BBD54699B77A847C73692E3B9E2C806A592A212023673733C6FFA01D71AD8673C9539C4D3B0F8A0CE422E378E42A188CB2EBB4CCAEF59D14A0FC6454E8F6216B7A2F058F0D2349871A5519EF4E0D77C58415CBAB557EB25A4BC341A4D6A59D4D1A89791E9EA12952726A0693C4F3CF1041E7E780B7EF39BDF62CE9CD902EBF8FD4C148F9F436FC96B0DE4E3F306CACED0D0846F6308C553201F09C111DD5169831AEA971BC7438126619BAB872A7D67AB7B5DB16B1A23EBA2AB8E879AE9A953EC7106013299AC8657FC0CD512946A44528334457E7266BF83615C1862AE626FAB7A2C0628D881E2C61B6FC4B5D75E2B8B5A95DA2BF8C5FFB39933375AD562900B8B11375B04514A9502DC24CB3E14644B26C901A4E25043E01E85246FBDF5563CFFFCF352A43734345B6A99A49D8F7E44A15E34D012AED9E32AC66A6FECA21EB05A2D493D14ABAA45E7486A0555A986349433EA608CF54BC56E22DE24A493E03F5562B5061FDB3C8A40949E4F467B5802DDF150ED4D4ABB572983A2024F5A75B9601366A1CA283DF93FC623EAB5B8106828CCEFA81DDA176FB278F162DC7BEFBD58B870A1404043308D063C548F270BF51A4535C94C575EC4B6791E2B4F29AF78F4D14771F7DD77CBF364C6B36A99FA19C63B99FB8E265A4DC4D2246FFF5063633C14EFB15EAF4A1E8ADD50A4F2DFF0E5796F5A9759598A82126181A1126D5656A7944395DA9ABC8CBFC679866A60D1A2451DE5D8199C49B5C3C591CD2A4A8D08AD4838583A47877ADB33F891477CAB70A7353AF7524C4B9D09EEC20DA12A917CCAC670D4B4106E1DBB5B54ABE199467CAB88A128E9676E0EF438BCD6B01A5E7AE925AC5FBF5ECA2C4C289C1E8C1EF968858B518FF1871E07730FFCC93161D8FC8D37DE10D55EE5A1D85552C456948DA8AE0921FA8B251209A585A9145A448F5A156F692FAEE9F814E720ED7F70604035F45220710A1C319052BD563FA73F502ED76D735819FCBE122CF31AE940A7AA87758B07FD3A835995A14FD1459345192949D650D5287BAAE73424E1BBEBCA4B11F3D46A3D51E51AD38356F74BD081197DB7D17B93F7921B8B481EAAEF493901A520A5EFA57550D5C290FA3E8200A94C0ADD5D5D12E5AAD71BB271D1C8A4D58BA6D2FC3116520B4651E84555B3D2C0C9C6A3D8251736611A9597D8208E9A16ED3E4873DABC7933B66DDB26C18DF9F3E74BF4CE041978BFAC59521E2FEA9AB52C8376D7D1D07FD48BB5FB3D8E7D9D3ABFB26309C3FA070EEC158DC418FF264646F5592D4FCD79D69D82E47BD319598984B4F95156A68AD54472827850C437A49D71680C2289CB174AF8CF2C43418B262838456F40493B2B4F270B4D4B3C4B5302E966A02C4114639428B40C2721A6885329FD0B3DC41133D6066B5A1A4F99882965CA4A015FE087699DA00BE5B879880496169E0FAB958D41E8EA1EBD1768E3335DD3F53D4D81007A93D1DA1C72AF5A275E75B29076EC61819DD9D9A8CCF3873C271D7B1175AE38DA08700EA955C1490B5B95EA3994A3921899B22C85E4546353DD59C03408500B596080AC61E3315A06217FD57DA3A65671B6821BC62B857A666230DA03E94E7DB2D0229FAF3F4D9448A58FAB5E6BEABB2B63332EC32CE9D03B85CD97F5EB8C07112CDF52706A7D9E0ABE28B8D3F27C2D7D0DADFCA48D31F478467F2374FBBAF58F8609A173D65EDC18730B4AEBE96B4A9B2F65E8E1C61371EEDAF04DEAC2C863AB0C87BE27DD8645A9236964A1E7468DADF696A10FD57310DEAFDE4CCD39DA1CBCF5E6168A3486D2DC4A9DA4358B916A5DF95C1D190EF7CA087A08BB6928B4D2D2808CC81AEBF736F2CEF249E675F2B2C8CEAD5BCA180D94B075935E22613BA61029882A8C39EDE8038DD653D1ABAB25AEAC505474AB0BD779441DCC84C8C3EF48C8172EEA0874315ED7740D3109DE16D66EA1B62962B3D1FCF051CCFE4897B402F466973733A290A50101AD44730466E94BDFFF71FA5511B817B147ED65153C350A3611F711BE9D7A4E1BBE0178DA98A2D0751A1A9CF6FAF721641551550037DC2C14AC30703BF27FBD5AA6A70B5BBFB70CCC8050592A219E9FB234A64C994A37B6C2C0D1319EBAA3456721AA366C56B0DE94D416A11748EBC8FEBE0F8D6C906A14CC917FFA7868A39A324AD1D99E7AEFAD816F9D1A5A65F891EF13BD5003F1308364F63C3D6D475ACAD16F69E641CE501D87DF1981CE08CCCC08740C6A66C6B1F32E9D115000BFE3A13A2BA133023337021D839AB9B1ECBC53670454946FA609869D71ED8CC047750424A8315D5DF4A33A189DFBEE8CC0898E801894F4EB89482D9DE89B765EDF19818FE208901411BB72F9F2E6E3DBB6C9FD773CD547711974EE792646804C783EFE0F0A507581F460CF450000000049454E44AE426082 WHERE `app_id` = '8'; - --- for R1 Enhanced Notification ticket source from JIRA -INSERT INTO `ep_basic_auth_account` VALUES (1,'JIRA','jira','6APqvG4AU2rfLgCvMdySwQ==','Y'); - --- for setting up CLI and AAI-UI to be visible on Home page for demo account -INSERT INTO `fn_pers_user_app_sel` VALUES (1,1,7,'S'); -INSERT INTO `fn_pers_user_app_sel` VALUES (2,1,8,'S'); - -commit; diff --git a/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql b/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql new file mode 100644 index 0000000000..781b04626c --- /dev/null +++ b/kubernetes/portal/charts/portal-mariadb/resources/config/mariadb/oom_updates.sql @@ -0,0 +1,8 @@ +USE portal; +/* +Any updates required by OOM to the portaldb are made here. +1. split up SDC-FE and SDC-BE. Originally both FE and BE point to the same IP +while the OOM K8s version has these service split up. +*/ +UPDATE fn_app SET app_rest_endpoint = 'http://sdc.api.be.simpledemo.onap.org:8080/api/v2' where app_name = 'SDC'; +UPDATE fn_app SET app_url = 'http://cli.api.simpledemo.onap.org:8080', app_type = 1 where app_name='CLI'; diff --git a/kubernetes/portal/charts/portal-mariadb/templates/configmap.yaml b/kubernetes/portal/charts/portal-mariadb/templates/configmap.yaml index fd42fd49ac..fcd325d804 100644 --- a/kubernetes/portal/charts/portal-mariadb/templates/configmap.yaml +++ b/kubernetes/portal/charts/portal-mariadb/templates/configmap.yaml @@ -15,8 +15,8 @@ apiVersion: v1 kind: ConfigMap metadata: - name: {{ include "common.fullname" . }}-docker-entry-initd + name: {{ include "common.fullname" . }}-mariadb namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/mariadb/docker-entrypoint-initdb.d/*").AsConfig . | indent 2 }} +{{ tpl (.Files.Glob "resources/config/mariadb/*").AsConfig . | indent 2 }} diff --git a/kubernetes/portal/charts/portal-mariadb/templates/deployment.yaml b/kubernetes/portal/charts/portal-mariadb/templates/deployment.yaml index fd5e524d33..bdb760d24d 100644 --- a/kubernetes/portal/charts/portal-mariadb/templates/deployment.yaml +++ b/kubernetes/portal/charts/portal-mariadb/templates/deployment.yaml @@ -52,7 +52,7 @@ spec: periodSeconds: {{ .Values.readiness.periodSeconds }} env: - name: MYSQL_HOST - value: "{{ .Values.service.name }}" + value: "{{ include "common.fullname" . }}" - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: @@ -64,9 +64,6 @@ spec: - mountPath: /etc/localtime name: localtime readOnly: true - - name: mariadb-docker-entrypoint-initdb - mountPath: /docker-entrypoint-initdb.d/zzz_apps_users_onboarding.sql - subPath: Apps_Users_OnBoarding_Script.sql resources: {{ toYaml .Values.resources | indent 12 }} {{- if .Values.nodeSelector }} @@ -85,9 +82,6 @@ spec: {{- else }} emptyDir: {} {{- end }} - - name: mariadb-docker-entrypoint-initdb - configMap: - name: {{ include "common.fullname" . }}-docker-entry-initd - name: localtime hostPath: path: /etc/localtime diff --git a/kubernetes/portal/charts/portal-mariadb/templates/job.yaml b/kubernetes/portal/charts/portal-mariadb/templates/job.yaml new file mode 100644 index 0000000000..5dad1c0002 --- /dev/null +++ b/kubernetes/portal/charts/portal-mariadb/templates/job.yaml @@ -0,0 +1,90 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ include "common.fullname" . }}-config + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }}-job + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + template: + metadata: + labels: + app: {{ include "common.name" . }}-job + release: {{ .Release.Name }} + spec: + restartPolicy: Never + initContainers: + - name: {{ include "common.name" . }}-init-readiness + image: "{{ .Values.global.readinessRepository }}/{{ .Values.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + command: + - /root/ready.py + args: + - --container-name + - {{ include "common.name" . }} + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + containers: + - name: {{ include "common.name" . }}-job + image: "{{ .Values.global.readinessRepository }}/{{ .Values.mariadbInitImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + env: + - name: DB_HOST + value: "{{ include "common.fullname" . }}" + - name: DB_USER + value: {{ .Values.config.mariadbUser }} + - name: DB_PASS + valueFrom: + secretKeyRef: {name: {{ include "common.fullname" . }}, key: db-root-password} + - name: SQL_SRC_DIR + value: {{ .Values.config.sqlSourceDirectory }} + - name: {{ include "common.name" . }}-oom-update-job + image: "{{ .Values.global.readinessRepository }}/{{ .Values.mariadbInitImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + env: + - name: DB_HOST + value: "{{ include "common.fullname" . }}" + - name: DB_USER + value: {{ .Values.config.mariadbUser }} + - name: DB_PORT + value: "{{ .Values.service.internalPort }}" + - name: DB_PASS + valueFrom: + secretKeyRef: {name: {{ include "common.fullname" . }}, key: db-root-password} + command: + - /bin/sh + - -x + - -c + - "mysql -vv --user=$DB_USER --password=$DB_PASS --host=$DB_HOST --port=$DB_PORT < /tmp/oom_updates.sql" + volumeMounts: + - name: portal-mariadb-sql + mountPath: /tmp/oom_updates.sql + subPath: oom_updates.sql + volumes: + - name: portal-mariadb-sql + configMap: + name: {{ include "common.fullname" . }}-mariadb + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" + restartPolicy: Never
\ No newline at end of file diff --git a/kubernetes/portal/charts/portal-mariadb/values.yaml b/kubernetes/portal/charts/portal-mariadb/values.yaml index 629ec86c7f..c7ecea59f1 100644 --- a/kubernetes/portal/charts/portal-mariadb/values.yaml +++ b/kubernetes/portal/charts/portal-mariadb/values.yaml @@ -19,16 +19,23 @@ global: # global defaults nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== persistence: {} + readinessRepository: oomk8s # application image repository: nexus3.onap.org:10001 -image: onap/portal-db:latest +image: onap/portal-db:2.1-STAGING-latest pullPolicy: Always +readinessImage: "readiness-check:2.0.0" +mariadbInitImage: "mariadb-client-init:2.0.0" + # application configuration config: + mariadbUser: root mariadbRootPassword: Aa123456 + #The directory where sql files are found in the projects gerrit repo. + sqlSourceDirectory: portal/deliveries # default number of instances diff --git a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/music.properties b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/music.properties index 742b5ea328..59d438a669 100644 --- a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/music.properties +++ b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/music.properties @@ -14,7 +14,7 @@ music.serialize.compress = true music.atomic.get = false music.atomic.put = true -cassandra.host={{.Values.cassandra.service.name}}.{{.Release.Namespace}} -zookeeper.host={{.Values.zookeeper.service.name}}.{{.Release.Namespace}} +cassandra.host={{.Release.Name}}-{{.Values.cassandra.chart.name}}.{{.Release.Namespace}} +zookeeper.host={{.Release.Name}}-{{.Values.zookeeper.chart.name}}.{{.Release.Namespace}} cassandra.user={{.Values.cassandra.config.cassandraUsername}} cassandra.password={{.Values.cassandra.config.cassandraPassword}}
\ No newline at end of file diff --git a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties index 32dd1f9c2a..4b6f251e8b 100755 --- a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties +++ b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/portal.properties @@ -30,7 +30,7 @@ ecomp_rest_url = http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi ueb_listeners_enable = false # UEB Configuration -ueb_url_list = dmaap.{{.Release.Namespace}} +ueb_url_list = {{.Values.messageRouter.chart.name}}.{{.Release.Namespace}} # ECOMP Portal listens on this UEB topic ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX # Replace these 3 default values with the ones for your specific App, diff --git a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties index 6b8e685fcd..6fbf5b750e 100755 --- a/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties +++ b/kubernetes/portal/charts/portal-sdk/resources/config/deliveries/properties/ONAPPORTALSDK/system.properties @@ -24,7 +24,7 @@ decryption_key = AGLDdG4D04BKm2IxIWEr8o== ########################################################################## db.driver = org.mariadb.jdbc.Driver -db.connectionURL = jdbc:mariadb://{{.Values.mariadb.service.name}}.{{.Release.Namespace}}:3306/ecomp_sdk +db.connectionURL = jdbc:mariadb://{{.Release.Name}}-{{.Values.mariadb.chart.name}}.{{.Release.Namespace}}:3306/ecomp_sdk db.userName = root db.password = Aa123456 db.min_pool_size = 5 diff --git a/kubernetes/portal/charts/portal-sdk/templates/deployment.yaml b/kubernetes/portal/charts/portal-sdk/templates/deployment.yaml index 09f2e45a25..1c94c78bb4 100644 --- a/kubernetes/portal/charts/portal-sdk/templates/deployment.yaml +++ b/kubernetes/portal/charts/portal-sdk/templates/deployment.yaml @@ -38,7 +38,7 @@ spec: - /root/ready.py args: - --container-name - - {{ .Values.mariadb.nameOverride }} + - {{ .Values.mariadb.chart.name }} env: - name: NAMESPACE valueFrom: diff --git a/kubernetes/portal/charts/portal-sdk/values.yaml b/kubernetes/portal/charts/portal-sdk/values.yaml index 778c855b7d..94c1103832 100644 --- a/kubernetes/portal/charts/portal-sdk/values.yaml +++ b/kubernetes/portal/charts/portal-sdk/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 @@ -28,7 +28,7 @@ global: ################################################################# # application image repository: nexus3.onap.org:10001 -image: onap/portal-sdk:latest +image: onap/portal-sdk:2.1-STAGING-latest pullPolicy: Always # flag to enable debugging - application support required @@ -60,21 +60,23 @@ service: internalPort: 8080 mariadb: - nameOverride: portal-db - service: + chart: name: portal-db - +widget: + chart: + name: portal-widget cassandra: - service: + chart: name: portal-cassandra config: cassandraUsername: root cassandraPassword: Aa123456 - zookeeper: - service: - name: portal-zk - + chart: + name: portal-zookeeper +messageRouter: + chart: + name: message-router ingress: enabled: false diff --git a/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties b/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties index 3f4f950a58..b7a20734c6 100644 --- a/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties +++ b/kubernetes/portal/charts/portal-widget/resources/config/deliveries/properties/ONAPWIDGETMS/application.properties @@ -6,7 +6,7 @@ spring.http.multipart.max-request-size=128MB microservice.widget.location=/tmp ## App DB Properties -spring.datasource.url=jdbc:mysql://{{.Values.mariadb.service.name}}.{{include "common.namespace" .}}:3306/portal +spring.datasource.url=jdbc:mysql://{{.Release.Name}}-{{.Values.mariadb.chart.name}}.{{include "common.namespace" .}}:3306/portal spring.datasource.username=root spring.datasource.password=Aa123456 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect diff --git a/kubernetes/portal/charts/portal-widget/templates/deployment.yaml b/kubernetes/portal/charts/portal-widget/templates/deployment.yaml index 0fb3c10384..bff7924e29 100644 --- a/kubernetes/portal/charts/portal-widget/templates/deployment.yaml +++ b/kubernetes/portal/charts/portal-widget/templates/deployment.yaml @@ -38,7 +38,7 @@ spec: - /root/ready.py args: - --container-name - - {{ .Values.mariadb.nameOverride }} + - {{ .Values.mariadb.chart.name }} env: - name: NAMESPACE valueFrom: diff --git a/kubernetes/portal/charts/portal-widget/values.yaml b/kubernetes/portal/charts/portal-widget/values.yaml index e2d1b915f4..7637c4465e 100644 --- a/kubernetes/portal/charts/portal-widget/values.yaml +++ b/kubernetes/portal/charts/portal-widget/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 ubuntuInit: ubuntu-init:1.0.0 @@ -29,7 +29,7 @@ global: ################################################################# # application image repository: nexus3.onap.org:10001 -image: onap/portal-wms:latest +image: onap/portal-wms:2.1-STAGING-latest pullPolicy: Always # flag to enable debugging - application support required @@ -55,8 +55,7 @@ readiness: periodSeconds: 10 mariadb: - nameOverride: portal-db - service: + chart: name: portal-db service: diff --git a/kubernetes/portal/docker/init/mariadb-client/Dockerfile b/kubernetes/portal/docker/init/mariadb-client/Dockerfile index 3089bafcfd..009f2fa757 100644 --- a/kubernetes/portal/docker/init/mariadb-client/Dockerfile +++ b/kubernetes/portal/docker/init/mariadb-client/Dockerfile @@ -1,11 +1,40 @@ -FROM ubuntu:16.04 +FROM boxfuse/flyway:5.0.7-alpine +ARG branch=master ENV no_proxy "localhost,127.0.0.1,.cluster.local,$KUBERNETES_SERVICE_HOST" # Setup Corporate proxy ENV https_proxy ${HTTP_PROXY} ENV http_proxy ${HTTPS_PROXY} -RUN apt-get update -RUN apt-get install -y mariadb-client-10.0 +RUN apk add --update \ + mariadb-client=10.1.28-r1 \ + git \ + && rm -rf /var/cache/apk/* -VOLUME /portal-mysql +ENV so_branch=$branch +#ENV policy_branch: $branch +ENV portal_branch=$branch +#ENV sdnc_branch: $branch +#ENV vid_branch: $branch +#ENV clamp_branch: $branch + +#ENV appc_repo: http://gerrit.onap.org/r/appc/deployment.git +ENV so_repo=http://gerrit.onap.org/r/so/docker-config.git +#ENV policy_repo: http://gerrit.onap.org/r/policy/docker.git +ENV portal_repo=http://gerrit.onap.org/r/portal.git +#ENV sdnc_repo: http://gerrit.onap.org/r/sdnc/oam.git +#ENV vid_repo: http://gerrit.onap.org/r/vid.git +#ENV clamp_repo: http://gerrit.onap.org/r/clamp.git + +RUN mkdir -p /onap-sources +WORKDIR /onap-sources + +RUN git clone -b $branch $portal_repo && cd portal && git checkout HEAD +RUN git clone -b $branch $so_repo && cd docker-config && git checkout HEAD + +VOLUME /onap-sources + +COPY db_migrate.sh /root + +RUN chmod a+x /root/db_migrate.sh +ENTRYPOINT /root/db_migrate.sh diff --git a/kubernetes/portal/docker/init/mariadb-client/db_migrate.sh b/kubernetes/portal/docker/init/mariadb-client/db_migrate.sh new file mode 100644 index 0000000000..32a634a9e5 --- /dev/null +++ b/kubernetes/portal/docker/init/mariadb-client/db_migrate.sh @@ -0,0 +1,23 @@ +#!/bin/sh -x +SQL_DEST_DIR=${SQL_DEST_DIR:-/tmp/sql} +DB_PORT=${DB_PORT:-3306} + +[[ -z "$SQL_SRC_DIR" ]] && { echo "Error: SQL_SRC_DIR must be provided as an environment variable"; exit 1; } +[[ -z "$DB_USER" ]] && { echo "Error: DB_USER must be provided as an environment variable"; exit 1; } +[[ -z "$DB_PASS" ]] && { echo "Error: DB_PASS must be provided as an environment variable"; exit 1; } +[[ -z "$DB_HOST" ]] && { echo "Error: DB_HOST must be provided as an environment variable"; exit 1; } + +mkdir -p $SQL_DEST_DIR + +#Find all sql files and copy them to the destination directory +find "/onap-sources/$SQL_SRC_DIR" -type f -iname "*.sql" | awk -v dest="$SQL_DEST_DIR" '{n=split($1,a,"/"); system(sprintf( "cp %s %s", $1, dest"/"a[n])) }' + + +#Not needed right now? +#--database=$DB_NAME + +#--force to deal with duplicate records in absense of "insert ignore" +##ERROR 1062 (23000) at line 382: Duplicate entry '2' for key 'PRIMARY' + +cd $SQL_DEST_DIR +cat *.sql | mysql -vv --user=$DB_USER --password=$DB_PASS --host=$DB_HOST --port=$DB_PORT --force diff --git a/kubernetes/portal/values.yaml b/kubernetes/portal/values.yaml index 5ec23e10d1..e22b3f9669 100644 --- a/kubernetes/portal/values.yaml +++ b/kubernetes/portal/values.yaml @@ -21,5 +21,23 @@ config: portal-mariadb: nameOverride: portal-db - service: - name: portal-db
\ No newline at end of file + +mariadb: + chart: + name: portal-db +widget: + chart: + name: portal-widget +cassandra: + chart: + name: portal-cassandra + config: + cassandraUsername: root + cassandraPassword: Aa123456 +zookeeper: + chart: + name: portal-zookeeper + +messageRouter: + chart: + name: message-router
\ No newline at end of file diff --git a/kubernetes/readiness/dep-health-init.yaml b/kubernetes/readiness/dep-health-init.yaml index 63cfc809d3..5b97852da0 100644 --- a/kubernetes/readiness/dep-health-init.yaml +++ b/kubernetes/readiness/dep-health-init.yaml @@ -37,7 +37,7 @@ spec: - hbase command: - /root/ready.py - image: oomk8s/readiness-check:1.1.0 + image: oomk8s/readiness-check:2.0.0 imagePullPolicy: Always name: healthy env: diff --git a/kubernetes/robot/demo-k8s.sh b/kubernetes/robot/demo-k8s.sh index 23fc555dc5..d5e7a0384d 100755 --- a/kubernetes/robot/demo-k8s.sh +++ b/kubernetes/robot/demo-k8s.sh @@ -22,7 +22,7 @@ function usage echo " demo.sh <namespace> appc <module_name>" echo " - provide APPC with vFW module mount point for closed loop" echo " " - echo " demo.sh <namespace> init_robot" + echo " demo.sh <namespace> init_robot [ <etc_hosts_prefix> ]" echo " - Initialize robot after all ONAP VMs have started" echo " " echo " demo.sh <namespace> instantiateVFW" @@ -36,7 +36,7 @@ function usage } # Set the defaults -if [ $# -le 1 ];then +if [ $# -le 2 ];then usage exit fi @@ -47,9 +47,9 @@ shift ## ## if more than 1 tag is supplied, the must be provided with -i or -e ## -while [ $# -gt 0 ] +while [ $# -gt 1 ] do - key="$1" + key="$2" case $key in init_robot) @@ -62,6 +62,10 @@ do fi VARIABLES="$VARIABLES -v WEB_PASSWORD:$WEB_PASSWORD" shift + if [ $# -eq 2 ];then + VARIABLES="$VARIABLES -v HOSTS_PREFIX:$2" + fi + shift ;; init) TAG="InitDemo" @@ -75,7 +79,7 @@ do TAG="InitDistribution" shift if [ $# -eq 1 ];then - VARIABLES="$VARIABLES -v DEMO_PREFIX:$1" + VARIABLES="$VARIABLES -v DEMO_PREFIX:$2" fi shift ;; @@ -86,9 +90,9 @@ do echo "Usage: demo.sh preload <vnf_name> <module_name>" exit fi - VARIABLES="$VARIABLES -v VNF_NAME:$1" + VARIABLES="$VARIABLES -v VNF_NAME:$2" shift - VARIABLES="$VARIABLES -v MODULE_NAME:$1" + VARIABLES="$VARIABLES -v MODULE_NAME:$2" shift ;; appc) @@ -98,7 +102,7 @@ do echo "Usage: demo.sh appc <module_name>" exit fi - VARIABLES="$VARIABLES -v MODULE_NAME:$1" + VARIABLES="$VARIABLES -v MODULE_NAME:$2" shift ;; instantiateVFW) @@ -113,14 +117,14 @@ do echo "Usage: demo.sh deleteVNF <module_name from instantiateVFW>" exit fi - VARFILE=$1.py + VARFILE=$2.py if [ -e /opt/eteshare/${VARFILE} ]; then VARIABLES="$VARIABLES -V /share/${VARFILE}" else echo "Cache file ${VARFILE} is not found" exit fi - shift + shift ;; heatbridge) TAG="heatbridge" @@ -129,11 +133,11 @@ do echo "Usage: demo.sh heatbridge <stack_name> <service_instance_id> <service>" exit fi - VARIABLES="$VARIABLES -v HB_STACK:$1" + VARIABLES="$VARIABLES -v HB_STACK:$2" shift - VARIABLES="$VARIABLES -v HB_SERVICE_INSTANCE_ID:$1" + VARIABLES="$VARIABLES -v HB_SERVICE_INSTANCE_ID:$2" shift - VARIABLES="$VARIABLES -v HB_SERVICE:$1" + VARIABLES="$VARIABLES -v HB_SERVICE:$2" shift ;; *) diff --git a/kubernetes/robot/ete-k8s.sh b/kubernetes/robot/ete-k8s.sh index 9810ac236e..71e2027e4a 100755 --- a/kubernetes/robot/ete-k8s.sh +++ b/kubernetes/robot/ete-k8s.sh @@ -6,7 +6,7 @@ # Note: Do not run multiple concurrent ete.sh as the --display is not parameterized and tests will collide # if [ "$1" == "" ] || [ "$2" == "" ]; then - echo "Usage: ete.sh [namespace] [ health | ete | closedloop | instantiate | distribute ]" + echo "Usage: ete-k8s.sh [namespace] [ health | ete | closedloop | instantiate | distribute ]" exit fi diff --git a/kubernetes/robot/resources/config/authorization b/kubernetes/robot/resources/config/authorization index 988730f7a8..23b429e04e 100755 --- a/kubernetes/robot/resources/config/authorization +++ b/kubernetes/robot/resources/config/authorization @@ -1 +1 @@ -robot:robot +{{ .Values.config.lightHttpdUsername }}:{{ .Values.config.lightHttpdPassword }} diff --git a/kubernetes/robot/resources/config/eteshare/config/integration_preload_parameters.py b/kubernetes/robot/resources/config/eteshare/config/integration_preload_parameters.py index b125f792b9..502d8fcc63 100755 --- a/kubernetes/robot/resources/config/eteshare/config/integration_preload_parameters.py +++ b/kubernetes/robot/resources/config/eteshare/config/integration_preload_parameters.py @@ -1,57 +1,24 @@ GLOBAL_PRELOAD_PARAMETERS = { -# heat template parameter values common to all heat template continaing these parameters + # heat template parameter values common to all heat template continaing these parameters "defaults" : { - 'key_name' : 'vfw_key${uuid}', - "pub_key" : "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAqqnA9BAiMLtjOPSYBfhzLu4CiBolWoskDg4KVwhTJVTTeB6CqrQNcadlGXxOHhCYuNCKkUmIVF4WTOisVOJ75Z1c4OMoZLL85xVPKSIeH63kgVugwgPYQu55NbbWX+rsbUha3LnElDhNviMM3iTPbD5nnhKixNERAJMTLKXvZZZGqxW94bREknYPQTT2qrk3YRqwldncopp6Nkgv3AnSJz2gc9tjxnWF0poTQnQm/3D6hiJICrzKfAV0EaPN0KdtYjPhKrYoy6Qb/tKOVaaqsvwfKBJGrT9LfcA7D7M/yj292RT1XN63hI84WC383LsaPJ6eWdDTE6zUP1eGTWCoOw== rsa-key-20161026", - "repo_url_blob" : "https://nexus.onap.org/content/repositories/raw", - "repo_url_artifacts" : "https://nexus.onap.org/content/groups/staging", - "demo_artifacts_version" : "{{ .Values.demoArtifactsVersion }}", - "onap_private_net_id" : "{{ .Values.openStackPrivateNetId }}", - "onap_private_subnet_id" : "{{ .Values.openStackPrivateSubnetId }}", - "onap_private_net_cidr" : "{{ .Values.openStackPrivateNetCidr }}", - "dcae_collector_ip" : "10.0.4.102", - "dcae_collector_port" : "8080", - "public_net_id" : "{{ .Values.openStackPublicNetId }}", - "cloud_env" : "${cloud_env}", - "install_script_version" : "${install_script_version}", -### -# vims_preload same for every instantiation -### - "bono_image_name" : "${vm_image_name}", - "sprout_image_name" : "${vm_image_name}", - "homer_image_name" : "${vm_image_name}", - "homestead_image_name" : "${vm_image_name}", - "ralf_image_name" : "${vm_image_name}", - "ellis_image_name" : "${vm_image_name}", - "dns_image_name" : "${vm_image_name}", - "bono_flavor_name" : "${vm_flavor_name}", - "sprout_flavor_name" : "${vm_flavor_name}", - "homer_flavor_name" : "${vm_flavor_name}", - "homestead_flavor_name" : "${vm_flavor_name}", - "ralf_flavor_name" : "${vm_flavor_name}", - "ellis_flavor_name" : "${vm_flavor_name}", - "dns_flavor_name" : "${vm_flavor_name}", - "repo_url" : "http://repo.cw-ngv.com/stable", - "zone" : "me.cw-ngv.com", - "dn_range_start" : "2425550000", - "dn_range_length" : "10000", - "dnssec_key" : "9FPdYTWhk5+LbhrqtTPQKw==", -### -# vlb_preload same for every instantiation -### - "vlb_image_name" : "${vm_image_name}", - "vlb_flavor_name" : "${vm_flavor_name}", -### -# vlb_preload same for every instantiation -### - "vfw_image_name" : "${vm_image_name}", - "vfw_flavor_name" : "${vm_flavor_name}", -### - }, + 'key_name' : 'vfw_key${uuid}', + "pub_key" : "${pub_key}", + "repo_url_blob" : "https://nexus.onap.org/content/repositories/raw", + "repo_url_artifacts" : "https://nexus.onap.org/content/groups/staging", + "demo_artifacts_version" : "${GLOBAL_INJECTED_ARTIFACTS_VERSION}", + "onap_private_net_id" : "${GLOBAL_INJECTED_NETWORK}", + "onap_private_subnet_id" : "{{ .Values.openStackPrivateSubnetId }}", + "onap_private_net_cidr" : "{{ .Values.openStackPrivateNetCidr }}", + "dcae_collector_ip" : "${dcae_collector_ip}", + "dcae_collector_port" : "8080", + "public_net_id" : "${GLOBAL_INJECTED_PUBLIC_NET_ID}", + "cloud_env" : "${GLOBAL_INJECTED_CLOUD_ENV}", + "install_script_version" : "${GLOBAL_INJECTED_SCRIPT_VERSION}", + }, -### -# heat template parameter values for heat template instances created during Vnf-Orchestration test cases -### +# ## + # heat template parameter values for heat template instances created during Vnf-Orchestration test cases + # ## "Vnf-Orchestration" : { "vfw_preload.template": { "unprotected_private_net_id" : "vofwl01_unprotected${hostid}", @@ -60,37 +27,103 @@ GLOBAL_PRELOAD_PARAMETERS = { "protected_private_net_cidr" : "192.168.20.0/24", "vfw_private_ip_0" : "192.168.10.100", "vfw_private_ip_1" : "192.168.20.100", - "vfw_private_ip_2" : "{{ .Values.openStackOamNetworkCidrPrefix }}.1", + "vfw_private_ip_2" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.1", "vpg_private_ip_0" : "192.168.10.200", - "vpg_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.2", + "vpg_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.2", "vsn_private_ip_0" : "192.168.20.250", - "vsn_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.3", + "vsn_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.3", 'vfw_name_0':'vofwl01fwl${hostid}', 'vpg_name_0':'vofwl01pgn${hostid}', + "vfw_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "vfw_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", 'vsn_name_0':'vofwl01snk${hostid}' }, + "vfwsnk_preload.template": { + "unprotected_private_net_id" : "vofwlsnk_unprotected${hostid}", + "unprotected_private_subnet_id" : "vofwlsnk_unprotected_sub${hostid}", + "unprotected_private_net_cidr" : "192.168.10.0/24", + "protected_private_net_id" : "vofwlsnk_protected${hostid}", + "protected_private_subnet_id" : "vofwlsnk_protected_sub${hostid}", + "protected_private_net_cidr" : "192.168.20.0/24", + "vfw_private_ip_0" : "192.168.10.100", + "vfw_private_ip_1" : "192.168.20.100", + "vfw_private_ip_2" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.101", + "vpg_private_ip_0" : "192.168.10.200", + "vsn_private_ip_0" : "192.168.20.250", + "vsn_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.102", + 'vfw_name_0':'vofwl01fwl${hostid}', + 'vsn_name_0':'vofwl01snk${hostid}', + "image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + }, + "vpkg_preload.template": { + "unprotected_private_net_id" : "vofwlsnk_unprotected${hostid}", + "unprotected_private_subnet_id" : "vofwlsnk_unprotected_sub${hostid}", + "unprotected_private_net_cidr" : "192.168.10.0/24", + "protected_private_net_cidr" : "192.168.20.0/24", + "vfw_private_ip_0" : "192.168.10.100", + "vpg_private_ip_0" : "192.168.10.200", + "vpg_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.103", + "vsn_private_ip_0" : "192.168.20.250", + 'vpg_name_0':'vofwl01pgn${hostid}', + "image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + }, "vlb_preload.template" : { + "vlb_image_name" : "${GLOBAL_INJECTED_UBUNTU_1604_IMAGE}", + "vlb_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", "vlb_private_net_id" : "volb01_private${hostid}", + "pktgen_private_net_id" : "volb01_pktgen${hostid}", "vlb_private_net_cidr" : "192.168.30.0/24", "vlb_private_ip_0" : "192.168.30.100", - "vlb_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.4", + "vlb_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.4", "vdns_private_ip_0" : "192.168.30.110", - "vdns_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.5", + "vdns_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.5", 'vlb_name_0':'vovlblb${hostid}', 'vdns_name_0':'vovlbdns${hostid}', - "vlb_private_net_cidr" : "192.168.10.0/24", - "pktgen_private_net_cidr" : "192.168.9.0/24" + "pktgen_private_net_cidr" : "192.168.9.0/24", + "vpg_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.7", + "pg_int" : "192.168.9.109", + "vpg_private_ip_0" : "192.168.9.110", + "vlb_private_ip_2" : "192.168.9.111", + "vip" : "192.168.9.112", + "gre_ipaddr" : "192.168.30.112", + "vpg_name_0" : "vovlbpgn${hostid}", + "vnf_id" : "vLoadBalancer_${hostid}", + "vf_module_id" : "vLoadBalancer" }, "dnsscaling_preload.template" : { "vlb_private_net_id" : "volb01_private${hostid}", "vlb_private_ip_0" : "192.168.30.100", - "vlb_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.4", + "vlb_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.4", "vdns_private_ip_0" : "192.168.30.222", - "vdns_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.6", + "vdns_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.6", 'scaling_vdns_name_0':'vovlbscaling${hostid}', "vlb_private_net_cidr" : "192.168.10.0/24" }, + "vims_preload.template" : { + "bono_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "sprout_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "homer_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "homestead_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "ralf_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "ellis_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "dns_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "bono_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "sprout_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "homer_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "homestead_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "ralf_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "ellis_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "dns_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "repo_url" : "http://repo.cw-ngv.com/stable", + "zone" : "me.cw-ngv.com", + "dn_range_start" : "2425550000", + "dn_range_length" : "10000", + "dnssec_key" : "9FPdYTWhk5+LbhrqtTPQKw==" + + }, "vvg_preload.template" : { } }, @@ -103,36 +136,101 @@ GLOBAL_PRELOAD_PARAMETERS = { "protected_private_net_cidr" : "192.168.120.0/24", "vfw_private_ip_0" : "192.168.110.100", "vfw_private_ip_1" : "192.168.120.100", - "vfw_private_ip_2" : "{{ .Values.openStackOamNetworkCidrPrefix }}.11", + "vfw_private_ip_2" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.11", "vpg_private_ip_0" : "192.168.110.200", - "vpg_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.12", + "vpg_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.12", "vsn_private_ip_0" : "192.168.120.250", - "vsn_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.13", + "vsn_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.13", 'vfw_name_0':'clfwl01fwl${hostid}', 'vpg_name_0':'clfwl01pgn${hostid}', + "vfw_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "vfw_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", 'vsn_name_0':'clfwl01snk${hostid}' }, + "vfwsnk_preload.template": { + "unprotected_private_net_id" : "clfwlsnk_unprotected${hostid}", + "unprotected_private_subnet_id" : "clfwlsnk_unprotected_sub${hostid}", + "unprotected_private_net_cidr" : "192.168.10.0/24", + "protected_private_net_id" : "clfwlsnk_protected${hostid}", + "protected_private_subnet_id" : "clfwlsnk_protected_sub${hostid}", + "protected_private_net_cidr" : "192.168.20.0/24", + "vfw_private_ip_0" : "192.168.10.100", + "vfw_private_ip_1" : "192.168.20.100", + "vfw_private_ip_2" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.111", + "vpg_private_ip_0" : "192.168.10.200", + "vsn_private_ip_0" : "192.168.20.250", + "vsn_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.112", + 'vfw_name_0':'clfwl01fwl${hostid}', + 'vsn_name_0':'clfwl01snk${hostid}', + "image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + }, + "vpkg_preload.template": { + "unprotected_private_net_id" : "clfwlsnk_unprotected${hostid}", + "unprotected_private_subnet_id" : "clfwlsnk_unprotected_sub${hostid}", + "unprotected_private_net_cidr" : "192.168.10.0/24", + "protected_private_net_cidr" : "192.168.20.0/24", + "vfw_private_ip_0" : "192.168.10.100", + "vpg_private_ip_0" : "192.168.10.200", + "vpg_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.113", + "vsn_private_ip_0" : "192.168.20.250", + 'vpg_name_0':'clfwl01pgn${hostid}', + "image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + }, "vlb_preload.template" : { + "vlb_image_name" : "${GLOBAL_INJECTED_UBUNTU_1604_IMAGE}", + "vlb_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", "vlb_private_net_id" : "cllb01_private${hostid}", - "vlb_private_net_cidr" : "192.168.130.0/24", - "vlb_private_ip_0" : "192.168.130.100", - "vlb_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.14", - "vdns_private_ip_0" : "192.168.130.110", - "vdns_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.15", + "pktgen_private_net_id" : "cllb01_pktgen${hostid}", + "vlb_private_net_cidr" : "192.168.30.0/24", + "vlb_private_ip_0" : "192.168.30.100", + "vlb_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.14", + "vdns_private_ip_0" : "192.168.30.110", + "vdns_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.15", 'vlb_name_0':'clvlblb${hostid}', 'vdns_name_0':'clvlbdns${hostid}', - "vlb_private_net_cidr" : "192.168.10.0/24", - "pktgen_private_net_cidr" : "192.168.9.0/24" + "pktgen_private_net_cidr" : "192.168.9.0/24", + "vpg_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.17", + "pg_int" : "192.168.9.109", + "vpg_private_ip_0" : "192.168.9.110", + "vlb_private_ip_2" : "192.168.9.111", + "vip" : "192.168.9.112", + "gre_ipaddr" : "192.168.30.112", + "vpg_name_0" : "clvlbpgn${hostid}", + "vnf_id" : "vLoadBalancer_${hostid}", + "vf_module_id" : "vLoadBalancer" }, "dnsscaling_preload.template" : { "vlb_private_net_id" : "cllb01_private${hostid}", "vlb_private_ip_0" : "192.168.130.100", - "vlb_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.14", + "vlb_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.14", "vdns_private_ip_0" : "192.168.130.222", - "vdns_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.16", + "vdns_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.16", 'scaling_vdns_name_0':'clvlbscaling${hostid}', "vlb_private_net_cidr" : "192.168.10.0/24" }, + "vims_preload.template" : { + "bono_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "sprout_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "homer_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "homestead_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "ralf_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "ellis_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "dns_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "bono_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "sprout_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "homer_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "homestead_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "ralf_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "ellis_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "dns_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "repo_url" : "http://repo.cw-ngv.com/stable", + "zone" : "me.cw-ngv.com", + "dn_range_start" : "2425550000", + "dn_range_length" : "10000", + "dnssec_key" : "9FPdYTWhk5+LbhrqtTPQKw==" + }, "vvg_preload.template" : { } }, @@ -145,36 +243,101 @@ GLOBAL_PRELOAD_PARAMETERS = { "protected_private_net_cidr" : "192.168.120.0/24", "vfw_private_ip_0" : "192.168.110.100", "vfw_private_ip_1" : "192.168.120.100", - "vfw_private_ip_2" : "{{ .Values.openStackOamNetworkCidrPrefix }}.11", + "vfw_private_ip_2" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.11", "vpg_private_ip_0" : "192.168.110.200", - "vpg_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.12", + "vpg_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.12", "vsn_private_ip_0" : "192.168.120.250", - "vsn_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.13", + "vsn_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.13", 'vfw_name_0':'demofwl01fwl', 'vpg_name_0':'demofwl01pgn', + "vfw_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "vfw_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", 'vsn_name_0':'demofwl01snk' }, + "vfwsnk_preload.template": { + "unprotected_private_net_id" : "demofwlsnk_unprotected${hostid}", + "unprotected_private_subnet_id" : "demofwlsnk_unprotected_sub${hostid}", + "unprotected_private_net_cidr" : "192.168.10.0/24", + "protected_private_net_id" : "demofwlsnk_protected${hostid}", + "protected_private_subnet_id" : "vofwlsnk_protected_sub${hostid}", + "protected_private_net_cidr" : "192.168.20.0/24", + "vfw_private_ip_0" : "192.168.10.100", + "vfw_private_ip_1" : "192.168.20.100", + "vfw_private_ip_2" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.121", + "vpg_private_ip_0" : "192.168.10.200", + "vsn_private_ip_0" : "192.168.20.250", + "vsn_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.122", + 'vfw_name_0':'${generic_vnf_name}', + 'vsn_name_0':'demofwl01snk${hostid}', + "image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + }, + "vpkg_preload.template": { + "unprotected_private_net_id" : "demofwlsnk_unprotected${hostid}", + "unprotected_private_subnet_id" : "demofwlsnk_unprotected_sub${hostid}", + "unprotected_private_net_cidr" : "192.168.10.0/24", + "protected_private_net_cidr" : "192.168.20.0/24", + "vfw_private_ip_0" : "192.168.10.100", + "vpg_private_ip_0" : "192.168.10.200", + "vpg_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.123", + "vsn_private_ip_0" : "192.168.20.250", + 'vpg_name_0':'demofwl01pgn${hostid}', + "image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}" + }, "vlb_preload.template" : { - "vlb_private_net_id" : "demolb_private", - "vlb_private_net_cidr" : "192.168.130.0/24", - "vlb_private_ip_0" : "192.168.130.100", - "vlb_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.14", - "vdns_private_ip_0" : "192.168.130.110", - "vdns_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.15", - 'vlb_name_0':'demovlblb', - 'vdns_name_0':'demovlbdns', - "vlb_private_net_cidr" : "192.168.10.0/24", - "pktgen_private_net_cidr" : "192.168.9.0/24" + "vlb_image_name" : "${GLOBAL_INJECTED_UBUNTU_1604_IMAGE}", + "vlb_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "vlb_private_net_id" : "demolb_private${hostid}", + "pktgen_private_net_id" : "demolb_pktgen${hostid}", + "vlb_private_net_cidr" : "192.168.30.0/24", + "vlb_private_ip_0" : "192.168.30.100", + "vlb_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.24", + "vdns_private_ip_0" : "192.168.30.110", + "vdns_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.25", + 'vlb_name_0':'demovlblb${hostid}', + 'vdns_name_0':'demovlbdns${hostid}', + "pktgen_private_net_cidr" : "192.168.9.0/24", + "vpg_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.27", + "pg_int" : "192.168.9.109", + "vpg_private_ip_0" : "192.168.9.110", + "vlb_private_ip_2" : "192.168.9.111", + "vip" : "192.168.9.112", + "gre_ipaddr" : "192.168.30.112", + "vpg_name_0" : "clvlbpgn${hostid}", + "vnf_id" : "vLoadBalancer_${hostid}", + "vf_module_id" : "vLoadBalancer" }, "dnsscaling_preload.template" : { - "vlb_private_net_id" : "demolb_private", + "vlb_private_net_id" : "demolb_private${hostid}", "vlb_private_ip_0" : "192.168.130.100", - "vlb_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.14", + "vlb_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.24", "vdns_private_ip_0" : "192.168.130.222", - "vdns_private_ip_1" : "{{ .Values.openStackOamNetworkCidrPrefix }}.16", - 'scaling_vdns_name_0':'demovlbscaling', + "vdns_private_ip_1" : "{{.Values.openStackOamNetworkCidrPrefix}}.${ecompnet}.26", + 'scaling_vdns_name_0':'demovlbscaling${hostid}', "vlb_private_net_cidr" : "192.168.10.0/24" }, + "vims_preload.template" : { + "bono_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "sprout_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "homer_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "homestead_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "ralf_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "ellis_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "dns_image_name" : "${GLOBAL_INJECTED_UBUNTU_1404_IMAGE}", + "bono_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "sprout_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "homer_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "homestead_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "ralf_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "ellis_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "dns_flavor_name" : "${GLOBAL_INJECTED_VM_FLAVOR}", + "repo_url" : "http://repo.cw-ngv.com/stable", + "zone" : "me.cw-ngv.com", + "dn_range_start" : "2425550000", + "dn_range_length" : "10000", + "dnssec_key" : "9FPdYTWhk5+LbhrqtTPQKw==" + }, "vvg_preload.template" : { } } diff --git a/kubernetes/robot/resources/config/eteshare/config/integration_robot_properties.py b/kubernetes/robot/resources/config/eteshare/config/integration_robot_properties.py index 305ba3e8a0..0c65960ad8 100755 --- a/kubernetes/robot/resources/config/eteshare/config/integration_robot_properties.py +++ b/kubernetes/robot/resources/config/eteshare/config/integration_robot_properties.py @@ -1,50 +1,56 @@ -# aaf info - everything is from the private oam network (also called ecomp private network) -GLOBAL_AAF_SERVER = "http://10.0.12.1:8101" +# aaf info - everything is from the private oam network (also called onap private network) +GLOBAL_AAF_SERVER = "http://{{.Release.Name}}-aaf.{{include "common.namespace" .}}:8101" GLOBAL_AAF_USERNAME = "dgl@openecomp.org" GLOBAL_AAF_PASSWORD = "ecomp_admin" -# aai info - everything is from the private oam network (also called ecomp private network) +# aai info - everything is from the private oam network (also called onap private network) GLOBAL_AAI_SERVER_PROTOCOL = "https" GLOBAL_AAI_SERVER_PORT = "8443" GLOBAL_AAI_USERNAME = "AAI" GLOBAL_AAI_PASSWORD = "AAI" -# appc info - everything is from the private oam network (also called ecomp private network) +# appc info - everything is from the private oam network (also called onap private network) GLOBAL_APPC_SERVER_PROTOCOL = "http" GLOBAL_APPC_SERVER_PORT = "8282" -GLOBAL_APPC_SERVER = "http://10.0.2.1:" +GLOBAL_APPC_SERVER = "http://{{.Release.Name}}-appc.{{include "common.namespace" .}}:" GLOBAL_APPC_USERNAME = "admin" -GLOBAL_APPC_PASSWORD = "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U" -# sdc info - everything is from the private oam network (also called ecomp private network) +GLOBAL_APPC_PASSWORD = "admin" +# sdc info - everything is from the private oam network (also called onap private network) GLOBAL_ASDC_SERVER_PROTOCOL = "http" GLOBAL_ASDC_FE_PORT = "8181" GLOBAL_ASDC_BE_PORT = "8080" GLOBAL_ASDC_BE_USERNAME = "beep" GLOBAL_ASDC_BE_PASSWORD = "boop" -# clamp info - everything is from the private oam network (also called ecomp private network) +# clamp info - everything is from the private oam network (also called onap private network) GLOBAL_CLAMP_SERVER_PROTOCOL = "http" GLOBAL_CLAMP_SERVER_PORT = "8080" -# dcae info - everything is from the private oam network (also called ecomp private network) +# cli info - everything is from the private oam network (also called onap private network) +GLOBAL_CLI_SERVER_PROTOCOL = "http" +GLOBAL_CLI_SERVER_PORT = "8080" +# dcae info - everything is from the private oam network (also called onap private network) GLOBAL_DCAE_SERVER_PROTOCOL = "http" -GLOBAL_DCAE_SERVER_PORT = "8080" +GLOBAL_DCAE_HEALTH_SERVER_PORT = "8000" GLOBAL_DCAE_USERNAME = "console" GLOBAL_DCAE_PASSWORD = "ZjJkYjllMjljMTI2M2Iz" -# microservice bus info - everything is from the private oam network (also called ecomp private network) +# microservice bus info - everything is from the private oam network (also called onap private network) GLOBAL_MSB_SERVER_PROTOCOL = "http" GLOBAL_MSB_SERVER_PORT = "80" -# message router info - everything is from the private oam network (also called ecomp private network) +# message router info - everything is from the private oam network (also called onap private network) GLOBAL_MR_SERVER_PROTOCOL = "http" GLOBAL_MR_SERVER_PORT = "3904" -# mso info - everything is from the private oam network (also called ecomp private network) +# mso info - everything is from the private oam network (also called onap private network) GLOBAL_MSO_SERVER_PROTOCOL = "http" GLOBAL_MSO_SERVER_PORT = "8080" GLOBAL_MSO_USERNAME = "InfraPortalClient" GLOBAL_MSO_PASSWORD = "password1$" +# music info - everything is from the private oam network (also called onap private network) +GLOBAL_MUSIC_SERVER_PROTOCOL = "http" +GLOBAL_MUSIC_SERVER_PORT = "8080" # openstack info - info to select right info in environment -# packet generate vnf info - everything is from the private oam network (also called ecomp private network) +# packet generate vnf info - everything is from the private oam network (also called onap private network) GLOBAL_PACKET_GENERATOR_PORT = "8183" GLOBAL_PACKET_GENERATOR_USERNAME = "admin" GLOBAL_PACKET_GENERATOR_PASSWORD = "admin" GLOBAL_PGN_PORT = "2831" -# policy info - everything is from the private oam network (also called ecomp private network) +# policy info - everything is from the private oam network (also called onap private network) GLOBAL_POLICY_SERVER_PROTOCOL = "http" GLOBAL_POLICY_SERVER_PORT = "8081" GLOBAL_POLICY_HEALTHCHECK_PORT = "6969" @@ -52,18 +58,18 @@ GLOBAL_POLICY_AUTH = "dGVzdHBkcDphbHBoYTEyMw==" GLOBAL_POLICY_CLIENTAUTH = "cHl0aG9uOnRlc3Q=" GLOBAL_POLICY_USERNAME = "healthcheck" GLOBAL_POLICY_PASSWORD = "zb!XztG34" -# portal info - everything is from the private oam network (also called ecomp private network) +# portal info - everything is from the private oam network (also called onap private network) GLOBAL_PORTAL_SERVER_PROTOCOL = "http" GLOBAL_PORTAL_SERVER_PORT = "8989" GLOBAL_PORTAL_USERNAME = "demo" GLOBAL_PORTAL_PASSWORD = "Kp8bJ4SXszM0WXlhak3eHlcse" -# sdngc info - everything is from the private oam network (also called ecomp private network) +# sdngc info - everything is from the private oam network (also called onap private network) GLOBAL_SDNGC_SERVER_PROTOCOL = "http" GLOBAL_SDNGC_REST_PORT = "8282" GLOBAL_SDNGC_ADMIN_PORT = "8843" GLOBAL_SDNGC_USERNAME = "admin" GLOBAL_SDNGC_PASSWORD = "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U" -# vid info - everything is from the private oam network (also called ecomp private network) +# vid info - everything is from the private oam network (also called onap private network) GLOBAL_VID_SERVER_PROTOCOL = "http" GLOBAL_VID_SERVER_PORT = "8080" GLOBAL_VID_USERNAME = "demo" @@ -71,11 +77,9 @@ GLOBAL_VID_PASSWORD = "Kp8bJ4SXszM0WX" GLOBAL_VID_HEALTH_USERNAME = "Default" GLOBAL_VID_HEALTH_PASSWORD = "AppPassword!1" #global selenium info -GLOBAL_PROXY_WARNING_TITLE = "" -GLOBAL_PROXY_WARNING_CONTINUE_XPATH = "" -# settings for vm to attach vvg too -GLOBAL_VVGSERVER_IMAGE = "{{ .Values.ubuntuImage }}" -GLOBAL_VVGSERVER_FLAVOR = "{{ .Values.openStackFlavourMedium }}" +GLOBAL_PROXY_WARNING_TITLE="" +GLOBAL_PROXY_WARNING_CONTINUE_XPATH="" # dns info GLOBAL_DNS_TRAFFIC_DURATION = "600" +# location where heat templates are loaded from GLOBAL_HEAT_TEMPLATES_FOLDER = "/share/heat" diff --git a/kubernetes/robot/resources/config/eteshare/config/vm_properties.py b/kubernetes/robot/resources/config/eteshare/config/vm_properties.py index cd1ce14dc8..b7da6fadd2 100755 --- a/kubernetes/robot/resources/config/eteshare/config/vm_properties.py +++ b/kubernetes/robot/resources/config/eteshare/config/vm_properties.py @@ -1,79 +1,91 @@ -#file generated from /opt/config +# File generated from /opt/config # -GLOBAL_INJECTED_AAI1_IP_ADDR = "{{.Release.Name}}-aai.{{include "common.namespace" .}}" +GLOBAL_INJECTED_AAF_IP_ADDR = "{{.Release.Name}}-aaf.{{include "common.namespace" .}}" +GLOBAL_INJECTED_AAI1_IP_ADDR = "aai.{{include "common.namespace" .}}" GLOBAL_INJECTED_AAI2_IP_ADDR = "N/A" -GLOBAL_INJECTED_APPC_IP_ADDR = "{{.Release.Name}}-appc-sdnhost.{{include "common.namespace" .}}" +GLOBAL_INJECTED_APPC_IP_ADDR = "{{.Release.Name}}-appc.{{include "common.namespace" .}}" GLOBAL_INJECTED_ARTIFACTS_VERSION = "{{.Values.demoArtifactsVersion}}" GLOBAL_INJECTED_CLAMP_IP_ADDR = "{{.Release.Name}}-clamp.{{include "common.namespace" .}}" GLOBAL_INJECTED_CLOUD_ENV = "openstack" GLOBAL_INJECTED_DCAE_IP_ADDR = "{{.Release.Name}}-dcae-controller.{{include "common.namespace" .}}" -GLOBAL_INJECTED_DNS_IP_ADDR = "10.0.100.1" +GLOBAL_INJECTED_DNS_IP_ADDR = "N/A" GLOBAL_INJECTED_DOCKER_VERSION = "1.2-STAGING-latest" -#GLOBAL_INJECTED_EXTERNAL_DNS = "N/A" +GLOBAL_INJECTED_EXTERNAL_DNS = "N/A" GLOBAL_INJECTED_GERRIT_BRANCH = "master" GLOBAL_INJECTED_KEYSTONE = "{{ .Values.openStackKeyStoneUrl }}" -GLOBAL_INJECTED_MR_IP_ADDR = "{{.Release.Name}}-dmaap.{{include "common.namespace" .}}" -GLOBAL_INJECTED_MSO_IP_ADDR = "{{.Release.Name}}-so.{{include "common.namespace" .}}" +GLOBAL_INJECTED_MR_IP_ADDR = "message-router.{{include "common.namespace" .}}" +GLOBAL_INJECTED_MSO_IP_ADDR = "so.{{include "common.namespace" .}}" +GLOBAL_INJECTED_MUSIC_IP_ADDR = "music.{{include "common.namespace" .}}" GLOBAL_INJECTED_NETWORK = "{{ .Values.openStackPrivateNetId }}" GLOBAL_INJECTED_NEXUS_DOCKER_REPO = "nexus3.onap.org:10001" GLOBAL_INJECTED_NEXUS_PASSWORD = "docker" GLOBAL_INJECTED_NEXUS_REPO = "https://nexus.onap.org/content/sites/raw" GLOBAL_INJECTED_NEXUS_USERNAME = "docker" -GLOBAL_INJECTED_OPENO_IP_ADDR = "{{.Release.Name}}-msb-iag.{{include "common.namespace" .}}" -GLOBAL_INJECTED_OPENSTACK_PASSWORD = "{{ .Values.openStackEncryptedPassword }}" +GLOBAL_INJECTED_OOF_IP_ADDR = "oof.{{include "common.namespace" .}}" +GLOBAL_INJECTED_OPENO_IP_ADDR = "msb-iag.{{include "common.namespace" .}}" +GLOBAL_INJECTED_OPENSTACK_PASSWORD = "{{ .Values.openStackPassword }}" GLOBAL_INJECTED_OPENSTACK_TENANT_ID = "{{ .Values.openStackTenantId }}" GLOBAL_INJECTED_OPENSTACK_USERNAME = "{{ .Values.openStackUserName }}" -GLOBAL_INJECTED_POLICY_IP_ADDR = "{{.Release.Name}}-pypdp.{{include "common.namespace" .}}" +GLOBAL_INJECTED_POLICY_IP_ADDR = "pdp.{{include "common.namespace" .}}" GLOBAL_INJECTED_POLICY_HEALTHCHECK_IP_ADDR = "{{.Release.Name}}-drools.{{include "common.namespace" .}}" -GLOBAL_INJECTED_PORTAL_IP_ADDR = "{{.Release.Name}}-portalapps.{{include "common.namespace" .}}" +GLOBAL_INJECTED_PORTAL_IP_ADDR = "{{.Release.Name}}-portal-app.{{include "common.namespace" .}}" +GLOBAL_INJECTED_PUBLIC_NET_ID = "{{ .Values.openStackPublicNetId }}" GLOBAL_INJECTED_REGION = "{{ .Values.openStackRegion }}" GLOBAL_INJECTED_REMOTE_REPO = "http://gerrit.onap.org/r/testsuite/properties.git" -GLOBAL_INJECTED_SDC_IP_ADDR = "{{.Release.Name}}-sdc-be.{{include "common.namespace" .}}" -GLOBAL_INJECTED_SDC_FE_IP_ADDR = "{{.Release.Name}}-sdc-fe.{{include "common.namespace" .}}" +GLOBAL_INJECTED_SCRIPT_VERSION = "{{ .Values.scriptVersion }}" GLOBAL_INJECTED_SDC_BE_IP_ADDR = "{{.Release.Name}}-sdc-be.{{include "common.namespace" .}}" -GLOBAL_INJECTED_SDNC_IP_ADDR = "{{.Release.Name}}-sdnhost.{{include "common.namespace" .}}" +GLOBAL_INJECTED_SDC_FE_IP_ADDR = "{{.Release.Name}}-sdc-fe.{{include "common.namespace" .}}" +GLOBAL_INJECTED_SDC_IP_ADDR = "N/A" +GLOBAL_INJECTED_SDNC_IP_ADDR = "{{.Release.Name}}-sdnc.{{include "common.namespace" .}}" GLOBAL_INJECTED_SDNC_PORTAL_IP_ADDR = "{{.Release.Name}}-sdnc-portal.{{include "common.namespace" .}}" -GLOBAL_INJECTED_SO_IP_ADDR = "{{.Release.Name}}-so.{{include "common.namespace" .}}" -GLOBAL_INJECTED_VID_IP_ADDR = "{{.Release.Name}}-vid-server.{{include "common.namespace" .}}" +GLOBAL_INJECTED_SO_IP_ADDR = "so.{{include "common.namespace" .}}" +GLOBAL_INJECTED_UBUNTU_1404_IMAGE = "{{ .Values.ubuntu14Image }}" +GLOBAL_INJECTED_UBUNTU_1604_IMAGE = "{{ .Values.ubuntu16Image }}" +GLOBAL_INJECTED_VID_IP_ADDR = "{{.Release.Name}}-vid.{{include "common.namespace" .}}" GLOBAL_INJECTED_VM_FLAVOR = "{{ .Values.openStackFlavourMedium }}" -GLOBAL_INJECTED_VM_IMAGE_NAME = "{{ .Values.ubuntuImage }}" -GLOBAL_INJECTED_PUBLIC_NET_ID = "{{ .Values.openStackPublicNetId }}" -GLOBAL_INJECTED_SCRIPT_VERSION = "{{ .Values.scriptVersion }}" + GLOBAL_INJECTED_PROPERTIES = { - "GLOBAL_INJECTED_AAI1_IP_ADDR" : "{{.Release.Name}}-aai.{{include "common.namespace" .}}", - "GLOBAL_INJECTED_APPC_IP_ADDR" : "{{.Release.Name}}-appc-sdnhost.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_AAF_IP_ADDR" : "{{.Release.Name}}-aaf.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_AAI1_IP_ADDR" : "aai.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_AAI2_IP_ADDR" : "N/A", + "GLOBAL_INJECTED_APPC_IP_ADDR" : "{{.Release.Name}}-appc.{{include "common.namespace" .}}", "GLOBAL_INJECTED_ARTIFACTS_VERSION" : "{{.Values.demoArtifactsVersion}}", "GLOBAL_INJECTED_CLAMP_IP_ADDR" : "{{.Release.Name}}-clamp.{{include "common.namespace" .}}", "GLOBAL_INJECTED_CLOUD_ENV" : "openstack", "GLOBAL_INJECTED_DCAE_IP_ADDR" : "{{.Release.Name}}-dcae-controller.{{include "common.namespace" .}}", - "GLOBAL_INJECTED_DNS_IP_ADDR" : "10.0.100.1", + "GLOBAL_INJECTED_DNS_IP_ADDR" : "N/A", "GLOBAL_INJECTED_DOCKER_VERSION" : "1.2-STAGING-latest", + "GLOBAL_INJECTED_EXTERNAL_DNS" : "N/A", "GLOBAL_INJECTED_GERRIT_BRANCH" : "master", "GLOBAL_INJECTED_KEYSTONE" : "{{ .Values.openStackKeyStoneUrl }}", - "GLOBAL_INJECTED_MR_IP_ADDR" : "{{.Release.Name}}-dmaap.{{include "common.namespace" .}}", - "GLOBAL_INJECTED_MSO_IP_ADDR" : "{{.Release.Name}}-so.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_MR_IP_ADDR" : "message-router.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_MSO_IP_ADDR" : "so.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_MUSIC_IP_ADDR" : "music.{{include "common.namespace" .}}", "GLOBAL_INJECTED_NETWORK" : "{{ .Values.openStackPrivateNetId }}", "GLOBAL_INJECTED_NEXUS_DOCKER_REPO" : "nexus3.onap.org:10001", "GLOBAL_INJECTED_NEXUS_PASSWORD" : "docker", "GLOBAL_INJECTED_NEXUS_REPO" : "https://nexus.onap.org/content/sites/raw", "GLOBAL_INJECTED_NEXUS_USERNAME" : "docker", - "GLOBAL_INJECTED_OPENO_IP_ADDR" : "{{.Release.Name}}-msb-iag.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_OOF_IP_ADDR" : "oof.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_OPENO_IP_ADDR" : "msb-iag.{{include "common.namespace" .}}", "GLOBAL_INJECTED_OPENSTACK_PASSWORD" : "{{ .Values.openStackEncryptedPassword }}", "GLOBAL_INJECTED_OPENSTACK_TENANT_ID" : "{{ .Values.openStackTenantId }}", "GLOBAL_INJECTED_OPENSTACK_USERNAME" : "{{ .Values.openStackUserName }}", - "GLOBAL_INJECTED_POLICY_IP_ADDR" : "{{.Release.Name}}-pypdp.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_POLICY_IP_ADDR" : "pdp.{{include "common.namespace" .}}", "GLOBAL_INJECTED_POLICY_HEALTHCHECK_IP_ADDR" : "{{.Release.Name}}-drools.{{include "common.namespace" .}}", "GLOBAL_INJECTED_PORTAL_IP_ADDR" : "{{.Release.Name}}-portalapps.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_PUBLIC_NET_ID" : "{{ .Values.openStackPublicNetId }}", "GLOBAL_INJECTED_REGION" : "{{ .Values.openStackRegion }}", "GLOBAL_INJECTED_REMOTE_REPO" : "http://gerrit.onap.org/r/testsuite/properties.git", - "GLOBAL_INJECTED_SDC_FE_IP_ADDR" : "{{.Release.Name}}-sdc-fe.{{include "common.namespace" .}}", "GLOBAL_INJECTED_SDC_BE_IP_ADDR" : "{{.Release.Name}}-sdc-be.{{include "common.namespace" .}}", - "GLOBAL_INJECTED_SDNC_IP_ADDR" : "{{.Release.Name}}-sdnhost.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_SDC_FE_IP_ADDR" : "{{.Release.Name}}-sdc-fe.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_SDC_IP_ADDR" : "N/A", + "GLOBAL_INJECTED_SCRIPT_VERSION" : "{{ .Values.scriptVersion }}", + "GLOBAL_INJECTED_SDNC_IP_ADDR" : "{{.Release.Name}}-sdnc.{{include "common.namespace" .}}", "GLOBAL_INJECTED_SDNC_PORTAL_IP_ADDR" : "{{.Release.Name}}-sdnc-portal.{{include "common.namespace" .}}", - "GLOBAL_INJECTED_SO_IP_ADDR" : "{{.Release.Name}}-so.{{include "common.namespace" .}}", - "GLOBAL_INJECTED_VID_IP_ADDR" : "{{.Release.Name}}-vid-server.{{include "common.namespace" .}}", - "GLOBAL_INJECTED_VM_FLAVOR" : "{{ .Values.openStackFlavourMedium }}", - "GLOBAL_INJECTED_VM_IMAGE_NAME" : "{{ .Values.ubuntuImage }}", - "GLOBAL_INJECTED_PUBLIC_NET_ID" : "{{ .Values.openStackPublicNetId }}", - "GLOBAL_INJECTED_SCRIPT_VERSION" : "{{ .Values.scriptVersion }}" -} + "GLOBAL_INJECTED_SO_IP_ADDR" : "so.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_UBUNTU_1404_IMAGE" : "{{.Values.ubuntu14Image}}", + "GLOBAL_INJECTED_UBUNTU_1604_IMAGE" : "{{.Values.ubuntu16Image}}", + "GLOBAL_INJECTED_VID_IP_ADDR" : "{{.Release.Name}}-vid.{{include "common.namespace" .}}", + "GLOBAL_INJECTED_VM_FLAVOR" : "{{ .Values.openStackFlavourMedium }}" +}
\ No newline at end of file diff --git a/kubernetes/robot/resources/config/robot/resources/asdc_interface.robot b/kubernetes/robot/resources/config/robot/resources/asdc_interface.robot deleted file mode 100644 index 5b69a66c7c..0000000000 --- a/kubernetes/robot/resources/config/robot/resources/asdc_interface.robot +++ /dev/null @@ -1,495 +0,0 @@ -*** Settings *** -Documentation The main interface for interacting with ASDC. It handles low level stuff like managing the http request library and DCAE required fields -Library RequestsLibrary -Library UUID -Library JSONUtils -Library OperatingSystem -Library Collections -Library ExtendedSelenium2Library -Resource global_properties.robot -Resource browser_setup.robot -Resource json_templater.robot -*** Variables *** -${ASDC_DESIGNER_USER_ID} cs0008 -${ASDC_TESTER_USER_ID} jm0007 -${ASDC_GOVERNOR_USER_ID} gv0001 -${ASDC_OPS_USER_ID} op0001 -${ASDC_HEALTH_CHECK_PATH} /sdc1/rest/healthCheck -${ASDC_VENDOR_LICENSE_MODEL_PATH} /onboarding-api/v1.0/vendor-license-models -${ASDC_VENDOR_SOFTWARE_PRODUCT_PATH} /onboarding-api/v1.0/vendor-software-products -${ASDC_VENDOR_KEY_GROUP_PATH} /license-key-groups -${ASDC_VENDOR_ENTITLEMENT_POOL_PATH} /entitlement-pools -${ASDC_VENDOR_FEATURE_GROUP_PATH} /feature-groups -${ASDC_VENDOR_LICENSE_AGREEMENT_PATH} /license-agreements -${ASDC_VENDOR_ACTIONS_PATH} /actions -${ASDC_VENDOR_SOFTWARE_UPLOAD_PATH} /orchestration-template-candidate -${ASDC_CATALOG_RESOURCES_PATH} /sdc2/rest/v1/catalog/resources -${ASDC_CATALOG_SERVICES_PATH} /sdc2/rest/v1/catalog/services -${ASDC_CATALOG_INACTIVE_RESOURCES_PATH} /sdc2/rest/v1/inactiveComponents/resource -${ASDC_CATALOG_INACTIVE_SERVICES_PATH} /sdc2/rest/v1/inactiveComponents/service -${ASDC_CATALOG_LIFECYCLE_PATH} /lifecycleState -${ASDC_CATALOG_SERVICE_RESOURCE_INSTANCE_PATH} /resourceInstance -${ASDC_CATALOG_SERVICE_DISTRIBUTION_STATE_PATH} /distribution-state -${ASDC_CATALOG_SERVICE_DISTRIBUTION_PATH} /distribution -${ASDC_DISTRIBUTION_STATE_APPROVE_PATH} /approve -${ASDC_CATALOG_SERVICE_DISTRIBUTION_ACTIVATE_PATH} /distribution/PROD/activate -${ASDC_LICENSE_MODEL_TEMPLATE} robot/assets/templates/asdc/license_model.template -${ASDC_KEY_GROUP_TEMPLATE} robot/assets/templates/asdc/key_group.template -${ASDC_ENTITLEMENT_POOL_TEMPLATE} robot/assets/templates/asdc/entitlement_pool.template -${ASDC_FEATURE_GROUP_TEMPLATE} robot/assets/templates/asdc/feature_group.template -${ASDC_LICENSE_AGREEMENT_TEMPLATE} robot/assets/templates/asdc/license_agreement.template -${ASDC_ACTION_TEMPLATE} robot/assets/templates/asdc/action.template -${ASDC_SOFTWARE_PRODUCT_TEMPLATE} robot/assets/templates/asdc/software_product.template -${ASDC_CATALOG_RESOURCE_TEMPLATE} robot/assets/templates/asdc/catalog_resource.template -${ASDC_USER_REMARKS_TEMPLATE} robot/assets/templates/asdc/user_remarks.template -${ASDC_CATALOG_SERVICE_TEMPLATE} robot/assets/templates/asdc/catalog_service.template -${ASDC_RESOURCE_INSTANCE_TEMPLATE} robot/assets/templates/asdc/resource_instance.template -${ASDC_FE_ENDPOINT} ${GLOBAL_ASDC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SDC_FE_IP_ADDR}:${GLOBAL_ASDC_FE_PORT} -${ASDC_BE_ENDPOINT} ${GLOBAL_ASDC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SDC_BE_IP_ADDR}:${GLOBAL_ASDC_BE_PORT} - -*** Keywords *** -Distribute Model From ASDC - [Documentation] goes end to end creating all the asdc objects based ona model and distributing it to the systems. it then returns the service name, vf name and vf module name - [Arguments] ${model_zip_path} ${catalog_service_name}= - ${catalog_service_id}= Add ASDC Catalog Service ${catalog_service_name} - ${catalog_resource_ids}= Create List - ${catalog_resources}= Create Dictionary - : FOR ${zip} IN @{model_zip_path} - \ ${loop_catalog_resource_id}= Setup ASDC Catalog Resource ${zip} - \ Append To List ${catalog_resource_ids} ${loop_catalog_resource_id} - \ ${loop_catalog_resource_resp}= Get ASDC Catalog Resource ${loop_catalog_resource_id} - \ Add ASDC Resource Instance ${catalog_service_id} ${loop_catalog_resource_id} ${loop_catalog_resource_resp['name']} - \ Set To Dictionary ${catalog_resources} ${loop_catalog_resource_id}=${loop_catalog_resource_resp} - ${catalog_service_resp}= Get ASDC Catalog Service ${catalog_service_id} - Checkin ASDC Catalog Service ${catalog_service_id} - Request Certify ASDC Catalog Service ${catalog_service_id} - Start Certify ASDC Catalog Service ${catalog_service_id} - # on certify it gets a new id - ${catalog_service_id}= Certify ASDC Catalog Service ${catalog_service_id} - Approve ASDC Catalog Service ${catalog_service_id} - Distribute ASDC Catalog Service ${catalog_service_id} - ${catalog_service_resp}= Get ASDC Catalog Service ${catalog_service_id} - ${vf_module}= Find Element In Array ${loop_catalog_resource_resp['groups']} type org.openecomp.groups.VfModule - Check Catalog Service Distributed ${catalog_service_resp['uuid']} - [Return] ${catalog_service_resp['name']} ${loop_catalog_resource_resp['name']} ${vf_module} ${catalog_resource_ids} ${catalog_service_id} ${catalog_resources} - -Setup ASDC Catalog Resource - [Documentation] Creates all the steps a vf needs for an asdc catalog resource and returns the id - [Arguments] ${model_zip_path} - ${license_model_id}= Add ASDC License Model - ${key_group_id}= Add ASDC License Group ${license_model_id} - ${pool_id}= Add ASDC Entitlement Pool ${license_model_id} - ${feature_group_id}= Add ASDC Feature Group ${license_model_id} ${key_group_id} ${pool_id} - ${license_agreement_id}= Add ASDC License Agreement ${license_model_id} ${feature_group_id} - Checkin ASDC License Model ${license_model_id} - Submit ASDC License Model ${license_model_id} - ${license_model_resp}= Get ASDC License Model ${license_model_id} 1.0 - ${software_product_id}= Add ASDC Software Product ${license_agreement_id} ${feature_group_id} ${license_model_resp['vendorName']} ${license_model_id} - Upload ASDC Heat Package ${software_product_id} ${model_zip_path} - Validate ASDC Software Product ${software_product_id} - Checkin ASDC Software Product ${software_product_id} - Submit ASDC Software Product ${software_product_id} - Package ASDC Software Product ${software_product_id} - ${software_product_resp}= Get ASDC Software Product ${software_product_id} 1.0 - ${catalog_resource_id}= Add ASDC Catalog Resource ${license_agreement_id} ${software_product_resp['name']} ${license_model_resp['vendorName']} ${software_product_id} - Checkin ASDC Catalog Resource ${catalog_resource_id} - Request Certify ASDC Catalog Resource ${catalog_resource_id} - Start Certify ASDC Catalog Resource ${catalog_resource_id} - # on certify it gets a new id - [Return] ${catalog_resource_id} - ${catalog_resource_id}= Certify ASDC Catalog Resource ${catalog_resource_id} -Add ASDC License Model - [Documentation] Creates an asdc license model and returns its id - ${uuid}= Generate UUID - ${shortened_uuid}= Evaluate str("${uuid}")[:23] - ${map}= Create Dictionary vendor_name=${shortened_uuid} - ${data}= Fill JSON Template File ${ASDC_LICENSE_MODEL_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_VENDOR_LICENSE_MODEL_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()['value']} -Get ASDC License Model - [Documentation] gets an asdc license model by its id - [Arguments] ${id} ${version_id}=0.1 - ${resp}= Run ASDC Get Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${id}/versions/${version_id} - [Return] ${resp.json()} -Get ASDC License Models - [Documentation] gets an asdc license model by its id - ${resp}= Run ASDC Get Request ${ASDC_VENDOR_LICENSE_MODEL_PATH} - [Return] ${resp.json()} -Checkin ASDC License Model - [Documentation] checksin an asdc license model by its id - [Arguments] ${id} ${version_id}=0.1 - ${map}= Create Dictionary action=Checkin - ${data}= Fill JSON Template File ${ASDC_ACTION_TEMPLATE} ${map} - ${resp}= Run ASDC Put Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${id}/versions/${version_id}${ASDC_VENDOR_ACTIONS_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Submit ASDC License Model - [Documentation] submits an asdc license model by its id - [Arguments] ${id} ${version_id}=0.1 - ${map}= Create Dictionary action=Submit - ${data}= Fill JSON Template File ${ASDC_ACTION_TEMPLATE} ${map} - ${resp}= Run ASDC Put Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${id}/versions/${version_id}${ASDC_VENDOR_ACTIONS_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Checkin ASDC Software Product - [Documentation] checksin an asdc Software Product by its id - [Arguments] ${id} ${version_id}=0.1 - ${map}= Create Dictionary action=Checkin - ${data}= Fill JSON Template File ${ASDC_ACTION_TEMPLATE} ${map} - ${resp}= Run ASDC Put Request ${ASDC_VENDOR_SOFTWARE_PRODUCT_PATH}/${id}/versions/${version_id}${ASDC_VENDOR_ACTIONS_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Validate ASDC Software Product - [Documentation] checksin an asdc Software Product by its id - [Arguments] ${id} ${version_id}=0.1 - ${data}= Catenate - ${resp}= Run ASDC Put Request ${ASDC_VENDOR_SOFTWARE_PRODUCT_PATH}/${id}/versions/${version_id}/orchestration-template-candidate/process ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Submit ASDC Software Product - [Documentation] submits an asdc Software Product by its id - [Arguments] ${id} ${version_id}=0.1 - ${map}= Create Dictionary action=Submit - ${data}= Fill JSON Template File ${ASDC_ACTION_TEMPLATE} ${map} - ${resp}= Run ASDC Put Request ${ASDC_VENDOR_SOFTWARE_PRODUCT_PATH}/${id}/versions/${version_id}${ASDC_VENDOR_ACTIONS_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Package ASDC Software Product - [Documentation] creates_package on an asdc Software Product by its id - [Arguments] ${id} ${version_id}=0.1 - ${map}= Create Dictionary action=Create_Package - ${data}= Fill JSON Template File ${ASDC_ACTION_TEMPLATE} ${map} - ${resp}= Run ASDC Put Request ${ASDC_VENDOR_SOFTWARE_PRODUCT_PATH}/${id}/versions/${version_id}${ASDC_VENDOR_ACTIONS_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Add ASDC Entitlement Pool - [Documentation] Creates an asdc Entitlement Pool and returns its id - [Arguments] ${license_model_id} ${version_id}=0.1 - ${uuid}= Generate UUID - ${shortened_uuid}= Evaluate str("${uuid}")[:23] - ${map}= Create Dictionary entitlement_pool_name=${shortened_uuid} - ${data}= Fill JSON Template File ${ASDC_ENTITLEMENT_POOL_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${license_model_id}/versions/${version_id}${ASDC_VENDOR_ENTITLEMENT_POOL_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()['value']} -Get ASDC Entitlement Pool - [Documentation] gets an asdc Entitlement Pool by its id - [Arguments] ${license_model_id} ${pool_id} - ${resp}= Run ASDC Get Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${license_model_id}${ASDC_VENDOR_ENTITLEMENT_POOL_PATH}/${pool_id} - [Return] ${resp.json()} -Add ASDC License Group - [Documentation] Creates an asdc license group and returns its id - [Arguments] ${license_model_id} ${version_id}=0.1 - ${uuid}= Generate UUID - ${shortened_uuid}= Evaluate str("${uuid}")[:23] - ${map}= Create Dictionary key_group_name=${shortened_uuid} - ${data}= Fill JSON Template File ${ASDC_KEY_GROUP_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${license_model_id}/versions/${version_id}${ASDC_VENDOR_KEY_GROUP_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()['value']} -Get ASDC License Group - [Documentation] gets an asdc license group by its id - [Arguments] ${license_model_id} ${group_id} ${version_id} - ${resp}= Run ASDC Get Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${license_model_id}/versions/${version_id}${ASDC_VENDOR_KEY_GROUP_PATH}/${group_id} - [Return] ${resp.json()} -Add ASDC Feature Group - [Documentation] Creates an asdc Feature Group and returns its id - [Arguments] ${license_model_id} ${key_group_id} ${entitlement_pool_id} ${version_id}=0.1 - ${uuid}= Generate UUID - ${shortened_uuid}= Evaluate str("${uuid}")[:23] - ${map}= Create Dictionary feature_group_name=${shortened_uuid} key_group_id=${key_group_id} entitlement_pool_id=${entitlement_pool_id} manufacturer_reference_number=mrn${shortened_uuid} - ${data}= Fill JSON Template File ${ASDC_FEATURE_GROUP_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${license_model_id}/versions/${version_id}${ASDC_VENDOR_FEATURE_GROUP_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()['value']} -Get ASDC Feature Group - [Documentation] gets an asdc Feature Group by its id - [Arguments] ${license_model_id} ${group_id} - ${resp}= Run ASDC Get Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${license_model_id}${ASDC_VENDOR_FEATURE_GROUP_PATH}/${group_id} - [Return] ${resp.json()} -Add ASDC License Agreement - [Documentation] Creates an asdc License Agreement and returns its id - [Arguments] ${license_model_id} ${feature_group_id} ${version_id}=0.1 - ${uuid}= Generate UUID - ${shortened_uuid}= Evaluate str("${uuid}")[:23] - ${map}= Create Dictionary license_agreement_name=${shortened_uuid} feature_group_id=${feature_group_id} - ${data}= Fill JSON Template File ${ASDC_LICENSE_AGREEMENT_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${license_model_id}/versions/${version_id}${ASDC_VENDOR_LICENSE_AGREEMENT_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()['value']} -Get ASDC License Agreement - [Documentation] gets an asdc License Agreement by its id - [Arguments] ${license_model_id} ${agreement_id} - ${resp}= Run ASDC Get Request ${ASDC_VENDOR_LICENSE_MODEL_PATH}/${license_model_id}${ASDC_VENDOR_LICENSE_AGREEMENT_PATH}/${agreement_id} - [Return] ${resp.json()} -Add ASDC Software Product - [Documentation] Creates an asdc Software Product and returns its id - [Arguments] ${license_agreement_id} ${feature_group_id} ${license_model_name} ${license_model_id} - ${uuid}= Generate UUID - ${shortened_uuid}= Evaluate str("${uuid}")[:23] - ${map}= Create Dictionary software_product_name=${shortened_uuid} feature_group_id=${feature_group_id} license_agreement_id=${license_agreement_id} vendor_name=${license_model_name} vendor_id=${license_model_id} - ${data}= Fill JSON Template File ${ASDC_SOFTWARE_PRODUCT_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_VENDOR_SOFTWARE_PRODUCT_PATH} ${data} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()['vspId']} -Get ASDC Software Product - [Documentation] gets an asdc Software Product by its id - [Arguments] ${software_product_id} ${version_id}=0.1 - ${resp}= Run ASDC Get Request ${ASDC_VENDOR_SOFTWARE_PRODUCT_PATH}/${software_product_id}/versions/${version_id} - [Return] ${resp.json()} -Add ASDC Catalog Resource - [Documentation] Creates an asdc Catalog Resource and returns its id - [Arguments] ${license_agreement_id} ${software_product_name} ${license_model_name} ${software_product_id} - ${map}= Create Dictionary software_product_id=${software_product_id} software_product_name=${software_product_name} license_agreement_id=${license_agreement_id} vendor_name=${license_model_name} - ${data}= Fill JSON Template File ${ASDC_CATALOG_RESOURCE_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_RESOURCES_PATH} ${data} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 201 - [Return] ${resp.json()['uniqueId']} -Mark ASDC Catalog Resource Inactive - [Documentation] deletes an asdc Catalog Resource - [Arguments] ${catalog_resource_id} - ${resp}= Run ASDC Delete Request ${ASDC_CATALOG_RESOURCES_PATH}/${catalog_resource_id} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 204 - [Return] ${resp} -Delete Inactive ASDC Catalog Resources - [Documentation] delete all asdc Catalog Resources that are inactive - ${resp}= Run ASDC Delete Request ${ASDC_CATALOG_INACTIVE_RESOURCES_PATH} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Get ASDC Catalog Resource - [Documentation] gets an asdc Catalog Resource by its id - [Arguments] ${catalog_resource_id} - ${resp}= Run ASDC Get Request ${ASDC_CATALOG_RESOURCES_PATH}/${catalog_resource_id} ${ASDC_DESIGNER_USER_ID} - [Return] ${resp.json()} -Checkin ASDC Catalog Resource - [Documentation] checksin an asdc Catalog Resource by its id - [Arguments] ${catalog_resource_id} - ${map}= Create Dictionary user_remarks=Robot remarks - ${data}= Fill JSON Template File ${ASDC_USER_REMARKS_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_RESOURCES_PATH}/${catalog_resource_id}${ASDC_CATALOG_LIFECYCLE_PATH}/checkin ${data} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Request Certify ASDC Catalog Resource - [Documentation] requests certify on an asdc Catalog Resource by its id - [Arguments] ${catalog_resource_id} - ${map}= Create Dictionary user_remarks=Robot remarks - ${data}= Fill JSON Template File ${ASDC_USER_REMARKS_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_RESOURCES_PATH}/${catalog_resource_id}${ASDC_CATALOG_LIFECYCLE_PATH}/certificationRequest ${data} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Start Certify ASDC Catalog Resource - [Documentation] start certify an asdc Catalog Resource by its id - [Arguments] ${catalog_resource_id} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_RESOURCES_PATH}/${catalog_resource_id}${ASDC_CATALOG_LIFECYCLE_PATH}/startCertification ${None} ${ASDC_TESTER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Certify ASDC Catalog Resource - [Documentation] start certify an asdc Catalog Resource by its id and returns the new id - [Arguments] ${catalog_resource_id} - ${map}= Create Dictionary user_remarks=Robot remarks - ${data}= Fill JSON Template File ${ASDC_USER_REMARKS_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_RESOURCES_PATH}/${catalog_resource_id}${ASDC_CATALOG_LIFECYCLE_PATH}/certify ${data} ${ASDC_TESTER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()['uniqueId']} - -Upload ASDC Heat Package - [Documentation] Creates an asdc Software Product and returns its id - [Arguments] ${software_product_id} ${file_path} ${version_id}=0.1 - ${files}= Create Dictionary - Create Multi Part ${files} upload ${file_path} contentType=application/zip - ${resp}= Run ASDC Post Files Request ${ASDC_VENDOR_SOFTWARE_PRODUCT_PATH}/${software_product_id}/versions/${version_id}${ASDC_VENDOR_SOFTWARE_UPLOAD_PATH} ${files} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - -Add ASDC Catalog Service - [Documentation] Creates an asdc Catalog Service and returns its id - [Arguments] ${catalog_service_name} - ${uuid}= Generate UUID - ${shortened_uuid}= Evaluate str("${uuid}")[:23] - ${catalog_service_name}= Set Variable If '${catalog_service_name}' =='' ${shortened_uuid} ${catalog_service_name} - ${map}= Create Dictionary service_name=${catalog_service_name} - ${data}= Fill JSON Template File ${ASDC_CATALOG_SERVICE_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_SERVICES_PATH} ${data} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 201 - [Return] ${resp.json()['uniqueId']} -Mark ASDC Catalog Service Inactive - [Documentation] Deletes an asdc Catalog Service - [Arguments] ${catalog_service_id} - ${resp}= Run ASDC Delete Request ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_id} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 204 - [Return] ${resp} -Delete Inactive ASDC Catalog Services - [Documentation] delete all asdc Catalog Serivces that are inactive - ${resp}= Run ASDC Delete Request ${ASDC_CATALOG_INACTIVE_SERVICES_PATH} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Get ASDC Catalog Service - [Documentation] gets an asdc Catalog Service by its id - [Arguments] ${catalog_service_id} - ${resp}= Run ASDC Get Request ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_id} ${ASDC_DESIGNER_USER_ID} - [Return] ${resp.json()} -Checkin ASDC Catalog Service - [Documentation] checksin an asdc Catalog Service by its id - [Arguments] ${catalog_service_id} - ${map}= Create Dictionary user_remarks=Robot remarks - ${data}= Fill JSON Template File ${ASDC_USER_REMARKS_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_id}${ASDC_CATALOG_LIFECYCLE_PATH}/checkin ${data} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Request Certify ASDC Catalog Service - [Documentation] requests certify on an asdc Catalog Service by its id - [Arguments] ${catalog_service_id} - ${map}= Create Dictionary user_remarks=Robot remarks - ${data}= Fill JSON Template File ${ASDC_USER_REMARKS_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_id}${ASDC_CATALOG_LIFECYCLE_PATH}/certificationRequest ${data} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Start Certify ASDC Catalog Service - [Documentation] start certify an asdc Catalog Service by its id - [Arguments] ${catalog_service_id} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_id}${ASDC_CATALOG_LIFECYCLE_PATH}/startCertification ${None} ${ASDC_TESTER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Certify ASDC Catalog Service - [Documentation] start certify an asdc Catalog Service by its id and returns the new id - [Arguments] ${catalog_service_id} - ${map}= Create Dictionary user_remarks=Robot remarks - ${data}= Fill JSON Template File ${ASDC_USER_REMARKS_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_id}${ASDC_CATALOG_LIFECYCLE_PATH}/certify ${data} ${ASDC_TESTER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()['uniqueId']} -Approve ASDC Catalog Service - [Documentation] approve an asdc Catalog Service by its id - [Arguments] ${catalog_service_id} - ${map}= Create Dictionary user_remarks=Robot remarks - ${data}= Fill JSON Template File ${ASDC_USER_REMARKS_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_id}${ASDC_CATALOG_SERVICE_DISTRIBUTION_STATE_PATH}${ASDC_DISTRIBUTION_STATE_APPROVE_PATH} ${data} ${ASDC_GOVERNOR_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Distribute ASDC Catalog Service - [Documentation] distribute an asdc Catalog Service by its id - [Arguments] ${catalog_service_id} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_id}${ASDC_CATALOG_SERVICE_DISTRIBUTION_ACTIVATE_PATH} ${None} ${ASDC_OPS_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Add ASDC Resource Instance - [Documentation] Creates an asdc Resource Instance and returns its id - [Arguments] ${catalog_service_id} ${catalog_resource_id} ${catalog_resource_name} - ${milli_timestamp}= Generate MilliTimestamp UUID - ${map}= Create Dictionary catalog_resource_id=${catalog_resource_id} catalog_resource_name=${catalog_resource_name} milli_timestamp=${milli_timestamp} - ${data}= Fill JSON Template File ${ASDC_RESOURCE_INSTANCE_TEMPLATE} ${map} - ${resp}= Run ASDC Post Request ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_id}${ASDC_CATALOG_SERVICE_RESOURCE_INSTANCE_PATH} ${data} ${ASDC_DESIGNER_USER_ID} - Should Be Equal As Strings ${resp.status_code} 201 - [Return] ${resp.json()['uniqueId']} -Get Catalog Service Distribution - [Documentation] gets an asdc catalog Service distrbution - [Arguments] ${catalog_service_uuid} - ${resp}= Run ASDC Get Request ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_uuid}${ASDC_CATALOG_SERVICE_DISTRIBUTION_PATH} ${ASDC_OPS_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Check Catalog Service Distributed - [Documentation] gets an asdc catalog Service distrbution - [Arguments] ${catalog_service_uuid} - ${dist_resp}= Get Catalog Service Distribution ${catalog_service_uuid} - Should Be Equal As Strings ${dist_resp['distributionStatusOfServiceList'][0]['deployementStatus']} Distributed - Sleep 3 minutes - ${det_resp}= Get Catalog Service Distribution Details ${dist_resp['distributionStatusOfServiceList'][0]['distributionID']} - @{ITEMS}= Copy List ${det_resp['distributionStatusList']} - :FOR ${ELEMENT} IN @{ITEMS} - \ Log ${ELEMENT['status']} - \ Should Match Regexp ${ELEMENT['status']} ^(DEPLOY_OK|NOTIFIED|DOWNLOAD_OK|NOT_NOTIFIED)$ -Get Catalog Service Distribution Details - [Documentation] gets an asdc catalog Service distrbution details - [Arguments] ${catalog_service_distribution_id} - ${resp}= Run ASDC Get Request ${ASDC_CATALOG_SERVICES_PATH}${ASDC_CATALOG_SERVICE_DISTRIBUTION_PATH}/${catalog_service_distribution_id} ${ASDC_OPS_USER_ID} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.json()} -Run ASDC Health Check - [Documentation] Runs a ASDC health check - ${session}= Create Session asdc ${ASDC_FE_ENDPOINT} - ${uuid}= Generate UUID - ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} - ${resp}= Get Request asdc ${ASDC_HEALTH_CHECK_PATH} headers=${headers} - Should Be Equal As Strings ${resp.status_code} 200 - @{ITEMS}= Copy List ${resp.json()['componentsInfo']} - :FOR ${ELEMENT} IN @{ITEMS} - \ Log ${ELEMENT['healthCheckStatus']} - \ Should Be Equal As Strings ${ELEMENT['healthCheckStatus']} UP -Run ASDC Get Request - [Documentation] Runs an ASDC get request - [Arguments] ${data_path} ${user}=${ASDC_DESIGNER_USER_ID} - ${auth}= Create List ${GLOBAL_ASDC_BE_USERNAME} ${GLOBAL_ASDC_BE_PASSWORD} - Log Creating session ${ASDC_BE_ENDPOINT} - ${session}= Create Session asdc ${ASDC_BE_ENDPOINT} auth=${auth} - ${uuid}= Generate UUID - ${headers}= Create Dictionary Accept=application/json Content-Type=application/json USER_ID=${user} X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} - ${resp}= Get Request asdc ${data_path} headers=${headers} - Log Received response from asdc ${resp.text} - [Return] ${resp} -Run ASDC Put Request - [Documentation] Runs an ASDC put request - [Arguments] ${data_path} ${data} ${user}=${ASDC_DESIGNER_USER_ID} - ${auth}= Create List ${GLOBAL_ASDC_BE_USERNAME} ${GLOBAL_ASDC_BE_PASSWORD} - Log Creating session ${ASDC_BE_ENDPOINT} - ${session}= Create Session asdc ${ASDC_BE_ENDPOINT} auth=${auth} - ${uuid}= Generate UUID - ${headers}= Create Dictionary Accept=application/json Content-Type=application/json USER_ID=${user} X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} - ${resp}= Put Request asdc ${data_path} data=${data} headers=${headers} - Log Received response from asdc ${resp.text} - [Return] ${resp} - -Run ASDC Post Files Request - [Documentation] Runs an ASDC post request - [Arguments] ${data_path} ${files} ${user}=${ASDC_DESIGNER_USER_ID} - ${auth}= Create List ${GLOBAL_ASDC_BE_USERNAME} ${GLOBAL_ASDC_BE_PASSWORD} - Log Creating session ${ASDC_BE_ENDPOINT} - ${session}= Create Session asdc ${ASDC_BE_ENDPOINT} auth=${auth} - ${uuid}= Generate UUID - ${headers}= Create Dictionary Accept=application/json Content-Type=multipart/form-data USER_ID=${user} X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} - ${resp}= Post Request asdc ${data_path} files=${files} headers=${headers} - Log Received response from asdc ${resp.text} - [Return] ${resp} - -Run ASDC Post Request - [Documentation] Runs an ASDC post request - [Arguments] ${data_path} ${data} ${user}=${ASDC_DESIGNER_USER_ID} - ${auth}= Create List ${GLOBAL_ASDC_BE_USERNAME} ${GLOBAL_ASDC_BE_PASSWORD} - Log Creating session ${ASDC_BE_ENDPOINT} - ${session}= Create Session asdc ${ASDC_BE_ENDPOINT} auth=${auth} - ${uuid}= Generate UUID - ${headers}= Create Dictionary Accept=application/json Content-Type=application/json USER_ID=${user} X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} - ${resp}= Post Request asdc ${data_path} data=${data} headers=${headers} - Log Received response from asdc ${resp.text} - [Return] ${resp} -Run ASDC Delete Request - [Documentation] Runs an ASDC delete request - [Arguments] ${data_path} ${user}=${ASDC_DESIGNER_USER_ID} - ${auth}= Create List ${GLOBAL_ASDC_BE_USERNAME} ${GLOBAL_ASDC_BE_PASSWORD} - Log Creating session ${ASDC_BE_ENDPOINT} - ${session}= Create Session asdc ${ASDC_BE_ENDPOINT} auth=${auth} - ${uuid}= Generate UUID - ${headers}= Create Dictionary Accept=application/json Content-Type=application/json USER_ID=${user} X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} - ${resp}= Delete Request asdc ${data_path} headers=${headers} - Log Received response from asdc ${resp.text} - [Return] ${resp} -Open ASDC GUI - [Documentation] Logs in to ASDC GUI - [Arguments] ${PATH} - ## Setup Browever now being managed by the test case - ##Setup Browser - Go To ${ASDC_FE_ENDPOINT}${PATH} - Maximize Browser Window - - Set Browser Implicit Wait ${GLOBAL_SELENIUM_BROWSER_IMPLICIT_WAIT} - Log Logging in to ${ASDC_FE_ENDPOINT}${PATH} - Title Should Be ASDC - Wait Until Page Contains Element xpath=//div/a[text()='SDC'] ${GLOBAL_SELENIUM_BROWSER_WAIT_TIMEOUT} - Log Logged in to ${ASDC_FE_ENDPOINT}${PATH} - - -Create Multi Part - [Arguments] ${addTo} ${partName} ${filePath} ${contentType}=${None} - ${fileData}= Get Binary File ${filePath} - ${fileDir} ${fileName}= Split Path ${filePath} - ${partData}= Create List ${fileName} ${fileData} ${contentType} - Set To Dictionary ${addTo} ${partName}=${partData} diff --git a/kubernetes/robot/resources/config/robot/resources/policy_interface.robot b/kubernetes/robot/resources/config/robot/resources/policy_interface.robot index 9193fe438a..9656b7bc90 100644 --- a/kubernetes/robot/resources/config/robot/resources/policy_interface.robot +++ b/kubernetes/robot/resources/config/robot/resources/policy_interface.robot @@ -28,6 +28,7 @@ Run Policy Health Check :FOR ${ELEMENT} IN @{ITEMS} \ Should Be Equal As Strings ${ELEMENT['code']} 200 \ Should Be True ${ELEMENT['healthy']} + Run Policy Put Request [Documentation] Runs Policy Put request [Arguments] ${data_path} ${data} @@ -37,6 +38,7 @@ Run Policy Put Request ${resp}= Put Request policy ${data_path} data=${data} headers=${headers} Log Received response from policy ${resp.text} [Return] ${resp} + Run Policy Delete Request [Documentation] Runs Policy Delete request [Arguments] ${data_path} ${data} @@ -46,12 +48,13 @@ Run Policy Delete Request ${resp}= Delete Request policy ${data_path} data=${data} headers=${headers} Log Received response from policy ${resp.text} [Return] ${resp} + Run Policy Get Configs Request [Documentation] Runs Policy Get Configs request [Arguments] ${data_path} ${data} Log Creating session ${POLICY_ENDPOINT} ${session}= Create Session policy ${POLICY_ENDPOINT} - ${headers}= Create Dictionary Accept=application/json Content-Type=application/json Authorization=Basic ${GLOBAL_POLICY_AUTH} ClientAuth=${GLOBAL_POLICY_CLIENTAUTH} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json Authorization=Basic ${GLOBAL_POLICY_AUTH} ClientAuth=${GLOBAL_POLICY_CLIENTAUTH} ${resp}= Post Request policy ${data_path} data=${data} headers=${headers} Log Received response from policy ${resp.text} - [Return] ${resp} + [Return] ${resp}
\ No newline at end of file diff --git a/kubernetes/robot/resources/config/robot/resources/sdngc_interface.robot b/kubernetes/robot/resources/config/robot/resources/sdngc_interface.robot index 5b79f9a305..57198dbe99 100644 --- a/kubernetes/robot/resources/config/robot/resources/sdngc_interface.robot +++ b/kubernetes/robot/resources/config/robot/resources/sdngc_interface.robot @@ -1,7 +1,7 @@ *** Settings *** Documentation The main interface for interacting with SDN-GC. It handles low level stuff like managing the http request library and SDN-GC required fields Library RequestsLibrary -Library UUID +Library UUID Library OperatingSystem Library ExtendedSelenium2Library Library Collections @@ -30,7 +30,7 @@ Run SDNGC Health Check [Documentation] Runs an SDNGC healthcheck ${resp}= Run SDNGC Post Request ${SDNGC_INDEX PATH}${SDNCGC_HEALTHCHECK_OPERATION_PATH} ${None} Should Be Equal As Strings ${resp.status_code} 200 - Should Be Equal As Strings ${resp.json()['output']['response-code']} 200 + Should Be Equal As Strings ${resp.json()['output']['response-code']} 200 Run SDNGC Get Request [Documentation] Runs an SDNGC get request @@ -43,7 +43,7 @@ Run SDNGC Get Request ${resp}= Get Request sdngc ${data_path} headers=${headers} Log Received response from sdngc ${resp.text} [Return] ${resp} - + Run SDNGC Put Request [Documentation] Runs an SDNGC put request [Arguments] ${data_path} ${data} @@ -66,8 +66,8 @@ Run SDNGC Post Request ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} ${resp}= Post Request sdngc ${data_path} data=${data} headers=${headers} Log Received response from sdngc ${resp.text} - [Return] ${resp} - + [Return] ${resp} + Run SDNGC Delete Request [Documentation] Runs an SDNGC delete request [Arguments] ${data_path} @@ -83,7 +83,7 @@ Run SDNGC Delete Request Preload Vnf [Arguments] ${service_type_uuid} ${generic_vnf_name} ${generic_vnf_type} ${vf_module_name} ${vf_modules} ${service} ${uuid} - ${base_vf_module_type}= Catenate '' + ${base_vf_module_type}= Catenate ${closedloop_vf_module}= Create Dictionary ${templates}= Get From Dictionary ${GLOBAL_SERVICE_TEMPLATE_MAPPING} ${service} :for ${vf_module} in @{vf_modules} @@ -92,36 +92,36 @@ Preload Vnf \ ${filename}= Get From Dictionary ${dict} template \ ${base_vf_module_type}= Set Variable If '${dict['isBase']}' == 'true' ${vf_module_type} ${base_vf_module_type} \ ${closedloop_vf_module}= Set Variable If '${dict['isBase']}' == 'false' ${vf_module} ${closedloop_vf_module} - \ ${vf_name}= Update Module Name ${dict} ${vf_module_name} - \ Preload Vnf Profile ${vf_module_type} + \ ${vf_name}= Update Module Name ${dict} ${vf_module_name} + \ Preload Vnf Profile ${vf_module_type} \ Preload One Vnf Topology ${service_type_uuid} ${generic_vnf_name} ${generic_vnf_type} ${vf_name} ${vf_module_type} ${service} ${filename} ${uuid} - [Return] ${base_vf_module_type} ${closedloop_vf_module} + [Return] ${base_vf_module_type} ${closedloop_vf_module} Update Module Name [Arguments] ${dict} ${vf_module_name} Return From Keyword If 'prefix' not in ${dict} ${vf_module_name} Return From Keyword If '${dict['prefix']}' == '' ${vf_module_name} - ${name}= Replace String ${vf_module_name} Vfmodule_ ${dict['prefix']} - [Return] ${name} + ${name}= Replace String ${vf_module_name} Vfmodule_ ${dict['prefix']} + [Return] ${name} Get From Mapping - [Documentation] Retrieve the appropriate prelad template entry for the passed vf_module + [Documentation] Retrieve the appropriate prelad template entry for the passed vf_module [Arguments] ${templates} ${vf_module} ${vf_module_name}= Get From DIctionary ${vf_module} name - :for ${template} in @{templates} - \ Return From Keyword If '${template['name_pattern']}' in '${vf_module_name}' ${template} - [Return] None - + :for ${template} in @{templates} + \ Return From Keyword If '${template['name_pattern']}' in '${vf_module_name}' ${template} + [Return] None + Preload One Vnf Topology [Arguments] ${service_type_uuid} ${generic_vnf_name} ${generic_vnf_type} ${vf_module_name} ${vf_module_type} ${service} ${filename} ${uuid} Return From Keyword If '${filename}' == '' ${data_template}= OperatingSystem.Get File ${PRELOAD_VNF_TOPOLOGY_OPERATION_BODY}/preload.template ${parameters}= Get Template Parameters ${filename} ${uuid} - Set To Dictionary ${parameters} generic_vnf_name=${generic_vnf_name} generic_vnf_type=${generic_vnf_type} service_type=${service_type_uuid} vf_module_name=${vf_module_name} vf_module_type=${vf_module_type} uuid=${uuid} - ${data}= Fill JSON Template ${data_template} ${parameters} + Set To Dictionary ${parameters} generic_vnf_name=${generic_vnf_name} generic_vnf_type=${generic_vnf_type} service_type=${service_type_uuid} vf_module_name=${vf_module_name} vf_module_type=${vf_module_type} + ${data}= Fill JSON Template ${data_template} ${parameters} ${put_resp}= Run SDNGC Post Request ${SDNGC_INDEX_PATH}${PRELOAD_VNF_TOPOLOGY_OPERATION_PATH} ${data} - Should Be Equal As Strings ${put_resp.json()['output']['response-code']} 200 + Should Be Equal As Strings ${put_resp.json()['output']['response-code']} 200 ${get_resp}= Run SDNGC Get Request ${SDNGC_INDEX_PATH}${PRELOAD_VNF_CONFIG_PATH}/${vf_module_name}/${vf_module_type} Should Be Equal As Strings ${get_resp.status_code} 200 @@ -130,29 +130,47 @@ Get Template Parameters ${rest} ${suite}= Split String From Right ${SUITE NAME} . 1 ${uuid}= Catenate ${uuid} ${hostid}= Get Substring ${uuid} -4 - ${ecompnet}= Evaluate ${GLOBAL_BUILD_NUMBER}%255 + ${ecompnet}= Evaluate (${GLOBAL_BUILD_NUMBER}%128)+128 + + # Initialize the value map with the properties generated from the Robot VM /opt/config folder - ${valuemap}= Create Dictionary + ${valuemap}= Copy Dictionary ${GLOBAL_INJECTED_PROPERTIES} + + # These should be deprecated by the above.... Set To Dictionary ${valuemap} artifacts_version=${GLOBAL_INJECTED_ARTIFACTS_VERSION} - Set To Dictionary ${valuemap} network=${GLOBAL_INJECTED_NETWORK} + Set To Dictionary ${valuemap} network=${GLOBAL_INJECTED_NETWORK} Set To Dictionary ${valuemap} public_net_id=${GLOBAL_INJECTED_PUBLIC_NET_ID} Set To Dictionary ${valuemap} cloud_env=${GLOBAL_INJECTED_CLOUD_ENV} Set To Dictionary ${valuemap} install_script_version=${GLOBAL_INJECTED_SCRIPT_VERSION} Set To Dictionary ${valuemap} vm_image_name=${GLOBAL_INJECTED_VM_IMAGE_NAME} Set To Dictionary ${valuemap} vm_flavor_name=${GLOBAL_INJECTED_VM_FLAVOR} + + # update the value map with unique values. Set To Dictionary ${valuemap} uuid=${uuid} hostid=${hostid} ecompnet=${ecompnet} - ${parameters}= Create Dictionary - ${defaults}= Get From Dictionary ${GLOBAL_PRELOAD_PARAMETERS} defaults - Resolve Values Into Dictionary ${valuemap} ${defaults} ${parameters} + + # + # Mash together the defaults dict with the test case dict to create the set of + # preload parameters + # ${suite_templates}= Get From Dictionary ${GLOBAL_PRELOAD_PARAMETERS} ${suite} ${template}= Get From Dictionary ${suite_templates} ${template} - ${vnf_parameters}= Resolve VNF Parameters Into Array ${valuemap} ${template} ${parameters} + ${defaults}= Get From Dictionary ${GLOBAL_PRELOAD_PARAMETERS} defaults + # add all of the defaults to template... + @{keys}= Get Dictionary Keys ${defaults} + :for ${key} in @{keys} + \ ${value}= Get From Dictionary ${defaults} ${key} + \ Set To Dictionary ${template} ${key} ${value} + + # + # Get the vnf_parameters to preload + # + ${vnf_parameters}= Resolve VNF Parameters Into Array ${valuemap} ${template} ${vnf_parameters_json}= Evaluate json.dumps(${vnf_parameters}) json - Set To Dictionary ${parameters} vnf_parameters=${vnf_parameters_json} + ${parameters}= Create Dictionary vnf_parameters=${vnf_parameters_json} [Return] ${parameters} - -Resolve Values Into Dictionary + +Resolve Values Into Dictionary [Arguments] ${valuemap} ${from} ${to} ${keys}= Get Dictionary Keys ${from} :for ${key} in @{keys} @@ -161,7 +179,7 @@ Resolve Values Into Dictionary \ Set To Dictionary ${to} ${key} ${value} Resolve VNF Parameters Into Array - [Arguments] ${valuemap} ${from} ${to} + [Arguments] ${valuemap} ${from} ${vnf_parameters}= Create List ${keys}= Get Dictionary Keys ${from} :for ${key} in @{keys} @@ -170,7 +188,7 @@ Resolve VNF Parameters Into Array \ ${parameter}= Create Dictionary vnf-parameter-name=${key} vnf-parameter-value=${value} \ Append To List ${vnf_parameters} ${parameter} [Return] ${vnf_parameters} - + Preload Vnf Profile [Arguments] ${vnf_name} Login To SDNGC Admin GUI @@ -180,25 +198,25 @@ Preload Vnf Profile Input Text xpath=//input[@id='nf_availability_zone_count'] 999 Input Text xpath=//input[@id='nf_equipment_role'] robot-ete-test Click Button xpath=//button[contains(.,'Submit')] - Page Should Contain VNF Profile + Page Should Contain VNF Profile Input Text xpath=//div[@id='vnf_profile_filter']//input ${vnf_name} - Page Should Contain ${vnf_name} + Page Should Contain ${vnf_name} Delete Vnf Profile [Arguments] ${vnf_name} Login To SDNGC Admin GUI Go To ${SDNGC_ADMIN_VNF_PROFILE_URL} - Page Should Contain VNF Profile + Page Should Contain VNF Profile Input Text xpath=//div[@id='vnf_profile_filter']//input ${vnf_name} Page Should Contain ${vnf_name} - Click Button xpath=//button[contains(@onclick, '${vnf_name}')] + Click Button xpath=//button[contains(@onclick, '${vnf_name}')] Page Should Contain Are you sure you want to delete VNF_PROFILE Click Button xpath=//button[contains(text(), 'Yes')] Page Should Not Contain ${vnf_name} - + Login To SDNGC Admin GUI [Documentation] Login To SDNGC Admin GUI - ## Setup Browser is now being managed by the test case + ## Setup Browser is now being managed by the test case ## Setup Browser Go To ${SDNGC_ADMIN_SIGNUP_URL} ##Maximize Browser Window @@ -207,7 +225,7 @@ Login To SDNGC Admin GUI Log Logging in to ${SDNGC_ADMIN_LOGIN_URL} Handle Proxy Warning Title Should Be AdminPortal - ${uuid}= Generate UUID + ${uuid}= Generate UUID ${shortened_uuid}= Evaluate str("${uuid}")[:12] ${email}= Catenate ${shortened_uuid}@robotete.com Input Text xpath=//input[@id='nf_email'] ${email} @@ -219,4 +237,4 @@ Login To SDNGC Admin GUI Input Password xpath=//input[@id='password'] ${shortened_uuid} Click Button xpath=//button[@type='submit'] Title Should Be SDN-C AdminPortal - Log Logged in to ${SDNGC_ADMIN_LOGIN_URL} + Log Logged in to ${SDNGC_ADMIN_LOGIN_URL}
\ No newline at end of file diff --git a/kubernetes/robot/templates/deployment.yaml b/kubernetes/robot/templates/deployment.yaml index 3403810d20..6379aa1908 100644 --- a/kubernetes/robot/templates/deployment.yaml +++ b/kubernetes/robot/templates/deployment.yaml @@ -23,52 +23,64 @@ metadata: release: {{ .Release.Name }} heritage: {{ .Release.Service }} spec: - replicas: {{ .Values.robotReplicas }} + replicas: {{ .Values.replicaCount }} template: metadata: - labels: + labels: app: {{ include "common.name" . }} release: {{ .Release.Name }} spec: + initContainers: + - name: {{ include "common.name" . }}-inject-demo-project + command: + - /bin/bash + - -c + - > + git clone -b {{ .Values.config.gerritBranch }} --single-branch {{ .Values.config.gerritProject }} /tmp/gerrit; + echo "Clone complete. Copying from /tmp/gerrit/heat to /share"; + cp -rf /tmp/gerrit/heat /share; + echo "Done."; + image: "{{ .Values.global.ubuntuInitRepository }}/{{ .Values.ubuntuInitImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: demodir + mountPath: "/share" containers: - - name: {{ .Chart.Name }} - image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" - imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} - ports: - - containerPort: {{ .Values.service.internalPort }} - # disable liveness probe when breakpoints set in debugger - # so K8s doesn't restart unresponsive container - {{- if eq .Values.liveness.enabled true }} - livenessProbe: - tcpSocket: - port: {{ .Values.service.internalPort }} - initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} - periodSeconds: {{ .Values.liveness.periodSeconds }} - {{ end -}} - readinessProbe: - tcpSocket: - port: {{ .Values.service.internalPort }} - initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} - periodSeconds: {{ .Values.readiness.periodSeconds }} - volumeMounts: - - name: localtime - mountPath: /etc/localtime - readOnly: true - - name: robot-eteshare - mountPath: /share/config - - name: robot-resources - mountPath: /var/opt/OpenECOMP_ETE/robot/resources/asdc_interface.robot - subPath: asdc_interface.robot - - name: robot-resources - mountPath: /var/opt/OpenECOMP_ETE/robot/resources/policy_interface.robot - subPath: policy_interface.robot - - name: robot-resources - mountPath: /var/opt/OpenECOMP_ETE/robot/resources/sdngc_interface.robot - subPath: sdngc_interface.robot - - name: robot-lighttpd-authorization - mountPath: /etc/lighttpd/authorization - subPath: authorization - resources: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + volumeMounts: + - name: localtime + mountPath: /etc/localtime + readOnly: true + - name: robot-eteshare + mountPath: /share/config + - name: robot-resources + mountPath: /var/opt/OpenECOMP_ETE/robot/resources/policy_interface.robot + subPath: policy_interface.robot + - name: robot-resources + mountPath: /var/opt/OpenECOMP_ETE/robot/resources/sdngc_interface.robot + subPath: sdngc_interface.robot + - name: robot-lighttpd-authorization + mountPath: /etc/lighttpd/authorization + subPath: authorization + - name: demodir + mountPath: /share + resources: {{ toYaml .Values.resources | indent 12 }} {{- if .Values.nodeSelector }} nodeSelector: @@ -79,18 +91,20 @@ spec: {{ toYaml .Values.affinity | indent 10 }} {{- end }} volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: robot-eteshare - configMap: - name: {{ include "common.fullname" . }}-eteshare-configmap - defaultMode: 0755 - - name: robot-resources - configMap: - name: {{ include "common.fullname" . }}-resources-configmap - - name: robot-lighttpd-authorization - configMap: - name: {{ include "common.fullname" . }}-lighttpd-authorization-configmap + - name: localtime + hostPath: + path: /etc/localtime + - name: robot-eteshare + configMap: + name: {{ include "common.fullname" . }}-eteshare-configmap + defaultMode: 0755 + - name: robot-resources + configMap: + name: {{ include "common.fullname" . }}-resources-configmap + - name: robot-lighttpd-authorization + configMap: + name: {{ include "common.fullname" . }}-lighttpd-authorization-configmap + - name: demodir + emptyDir: {} imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/robot/templates/service.yaml b/kubernetes/robot/templates/service.yaml index f9f2805f00..3fc21b4550 100644 --- a/kubernetes/robot/templates/service.yaml +++ b/kubernetes/robot/templates/service.yaml @@ -15,7 +15,7 @@ apiVersion: v1 kind: Service metadata: - name: {{ include "common.fullname" . }} + name: {{ include "common.servicename" . }} namespace: {{ include "common.namespace" . }} labels: app: {{ include "common.name" . }} @@ -26,14 +26,14 @@ spec: type: {{ .Values.service.type }} ports: {{if eq .Values.service.type "NodePort" -}} - - port: {{ .Values.service.internalPort }} - nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.externalPort }} - name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.portName | default "http" }} {{- else -}} - port: {{ .Values.service.externalPort }} targetPort: {{ .Values.service.internalPort }} - name: {{ .Values.service.name }} + name: {{ .Values.service.portName | default "http" }} {{- end}} selector: app: {{ include "common.name" . }} - release: {{ .Release.Name }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/robot/values.yaml b/kubernetes/robot/values.yaml index 6ef3a21d89..a842673930 100644 --- a/kubernetes/robot/values.yaml +++ b/kubernetes/robot/values.yaml @@ -18,38 +18,69 @@ global: # global defaults nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + ubuntuInitRepository: registry.hub.docker.com # application image repository: nexus3.onap.org:10001 -image: openecomp/testsuite:1.2-STAGING-latest +image: onap/testsuite:1.2-STAGING-latest pullPolicy: Always +ubuntuInitImage: oomk8s/ubuntu-init:2.0.0 + # flag to enable debugging - application support required debugEnabled: false ################################################################# # Application configuration defaults. ################################################################# - -# openstack configuration - +config: + # Username of the lighthttpd server. Used for HTML auth for webpage access + lightHttpdUsername: robot + # Password of the lighthttpd server. Used for HTML auth for webpage access + lightHttpdPassword: robot + # gerrit branch where the latest heat code is checked in + gerritBranch: master + # gerrit project where the latest heat code is checked in + gerritProject: http://gerrit.onap.org/r/demo.git + + +# Demo configuration +# Nexus demo artifact version. Maps to GLOBAL_INJECTED_ARTIFACTS_VERSION demoArtifactsVersion: "1.2.0-SNAPSHOT" -openStackPrivateNetCidr: "192.168.30.0" +# Openstack medium sized flavour name. Maps GLOBAL_INJECTED_VM_FLAVOR openStackFlavourMedium: "m1.medium" +# Openstack keystone URL. Maps to GLOBAL_INJECTED_KEYSTONE openStackKeyStoneUrl: "http://1.2.3.4:5000" +# UUID of the Openstack network that can assign floating ips. Maps to GLOBAL_INJECTED_PUBLIC_NET_ID openStackPublicNetId: "e8f51958045716781ffc" -openStackPrivateNetId: "e8f51956-00dd-4425-af36-045716781ffc" -openStackOamNetworkCidrPrefix: "192.168.120" -openStackEncryptedPassword: "c124921a3a0efbe579782cde8227681e" +# password for Openstack tenant where VNFs will be spawned. Maps to GLOBAL_INJECTED_OPENSTACK_PASSWORD +openStackPassword: "tenantPassword" +# Openstack region. Maps to GLOBAL_INJECTED_REGION openStackRegion: "RegionOne" -openStackPrivateSubnetId: "e8f51956-00dd-4425-af36-045716781ffc" +# Openstack tenant UUID where VNFs will be spawned. Maps to GLOBAL_INJECTED_OPENSTACK_TENANT_ID openStackTenantId: "47899782ed714295b1151681fdfd51f5" -openStackUserName: "vnf_user" -ubuntuImage: "Ubuntu_14.04.5_LTS" -scriptVersion: "1.1.1" +# username for Openstack tenant where VNFs will be spawned. Maps to GLOBAL_INJECTED_OPENSTACK_USERNAME +openStackUserName: "tenantUsername" +# Openstack glance image name for Ubuntu 14. Maps to GLOBAL_INJECTED_UBUNTU_1404_IMAGE +ubuntu14Image: "Ubuntu_14_trusty" +# Openstack glance image name for Ubuntu 16. Maps to GLOBAL_INJECTED_UBUNTU_1604_IMAGE +ubuntu16Image: "Ubuntu_16_xenial" +# GLOBAL_INJECTED_SCRIPT_VERSION. Maps to GLOBAL_INJECTED_SCRIPT_VERSION +scriptVersion: "1.2.0-SNAPSHOT" +# Openstack network to which VNFs will bind their primary (first) interface. Maps to GLOBAL_INJECTED_NETWORK +openStackPrivateNetId: "e8f51956-00dd-4425-af36-045716781ffc" + +# SDNC Preload configuration +# Openstack subnet UUID for the network defined by openStackPrivateNetId. Maps to onap_private_subnet_id +openStackPrivateSubnetId: "e8f51956-00dd-4425-af36-045716781ffc" +# CIDR notation for the Openstack private network where VNFs will be spawned. Maps to onap_private_net_cidr +openStackPrivateNetCidr: "10.0.0.0/8" +# The first 2 octets of the private Openstack subnet where VNFs will be spawned. +# Needed because sdnc preload templates hardcodes things like this 10.0.${ecompnet}.X +openStackOamNetworkCidrPrefix: "10.0" # default number of instances -robotReplicas: 1 +replicaCount: 1 nodeSelector: {} @@ -69,10 +100,12 @@ readiness: service: - type: NodePort name: robot - externalPort: "09" + type: NodePort + portName: httpd + externalPort: 88 internalPort: 88 + nodePort: "09" ingress: diff --git a/kubernetes/sdc/Chart.yaml b/kubernetes/sdc/Chart.yaml index ad56334404..92e836f209 100644 --- a/kubernetes/sdc/Chart.yaml +++ b/kubernetes/sdc/Chart.yaml @@ -1,4 +1,4 @@ -# Copyright © 2017 Amdocs, Bell Canada +# Copyright © 2017 Amdocs, AT&T, Bell Canada # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/kubernetes/sdc/charts/sdc-be/Chart.yaml b/kubernetes/sdc/charts/sdc-be/Chart.yaml index 9c3648709d..de59fd5f71 100644 --- a/kubernetes/sdc/charts/sdc-be/Chart.yaml +++ b/kubernetes/sdc/charts/sdc-be/Chart.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 description: Service Design and Creation Backend API name: sdc-be diff --git a/kubernetes/sdc/charts/sdc-be/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-be/templates/deployment.yaml index 4869966876..4a08504575 100644 --- a/kubernetes/sdc/charts/sdc-be/templates/deployment.yaml +++ b/kubernetes/sdc/charts/sdc-be/templates/deployment.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: extensions/v1beta1 kind: Deployment metadata: diff --git a/kubernetes/sdc/charts/sdc-be/templates/job.yaml b/kubernetes/sdc/charts/sdc-be/templates/job.yaml index 7338d2e261..e4f3807cf8 100644 --- a/kubernetes/sdc/charts/sdc-be/templates/job.yaml +++ b/kubernetes/sdc/charts/sdc-be/templates/job.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: batch/v1 kind: Job metadata: diff --git a/kubernetes/sdc/charts/sdc-be/templates/service.yaml b/kubernetes/sdc/charts/sdc-be/templates/service.yaml index 83e9bb458d..ec9d3004f5 100644 --- a/kubernetes/sdc/charts/sdc-be/templates/service.yaml +++ b/kubernetes/sdc/charts/sdc-be/templates/service.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 kind: Service metadata: diff --git a/kubernetes/sdc/charts/sdc-be/values.yaml b/kubernetes/sdc/charts/sdc-be/values.yaml index ebd5f8fe10..614ead4f0c 100644 --- a/kubernetes/sdc/charts/sdc-be/values.yaml +++ b/kubernetes/sdc/charts/sdc-be/values.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + ################################################################# # Global configuration defaults. ################################################################# @@ -5,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.1 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 diff --git a/kubernetes/sdc/charts/sdc-cs/Chart.yaml b/kubernetes/sdc/charts/sdc-cs/Chart.yaml index 9632644448..0e99a9ae4b 100644 --- a/kubernetes/sdc/charts/sdc-cs/Chart.yaml +++ b/kubernetes/sdc/charts/sdc-cs/Chart.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 description: Service Design and Creation Cassandra name: sdc-cs diff --git a/kubernetes/sdc/charts/sdc-cs/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-cs/templates/deployment.yaml index 10fabae288..d7e8afd30f 100644 --- a/kubernetes/sdc/charts/sdc-cs/templates/deployment.yaml +++ b/kubernetes/sdc/charts/sdc-cs/templates/deployment.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: extensions/v1beta1 kind: Deployment metadata: diff --git a/kubernetes/sdc/charts/sdc-cs/templates/job.yaml b/kubernetes/sdc/charts/sdc-cs/templates/job.yaml index da2ec3dfec..c6e9c190e3 100644 --- a/kubernetes/sdc/charts/sdc-cs/templates/job.yaml +++ b/kubernetes/sdc/charts/sdc-cs/templates/job.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: batch/v1 kind: Job metadata: diff --git a/kubernetes/sdc/charts/sdc-cs/templates/pv.yaml b/kubernetes/sdc/charts/sdc-cs/templates/pv.yaml index 31230a9ed7..184728f8ad 100644 --- a/kubernetes/sdc/charts/sdc-cs/templates/pv.yaml +++ b/kubernetes/sdc/charts/sdc-cs/templates/pv.yaml @@ -1,3 +1,19 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} kind: PersistentVolume apiVersion: v1 diff --git a/kubernetes/sdc/charts/sdc-cs/templates/pvc.yaml b/kubernetes/sdc/charts/sdc-cs/templates/pvc.yaml index b0cd3bf238..e27c3311e9 100644 --- a/kubernetes/sdc/charts/sdc-cs/templates/pvc.yaml +++ b/kubernetes/sdc/charts/sdc-cs/templates/pvc.yaml @@ -1,3 +1,19 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} kind: PersistentVolumeClaim apiVersion: v1 diff --git a/kubernetes/sdc/charts/sdc-cs/templates/secrets.yaml b/kubernetes/sdc/charts/sdc-cs/templates/secrets.yaml index 72d96344a8..0b6c838539 100644 --- a/kubernetes/sdc/charts/sdc-cs/templates/secrets.yaml +++ b/kubernetes/sdc/charts/sdc-cs/templates/secrets.yaml @@ -1,4 +1,4 @@ -# Copyright © 2017 Amdocs, Bell Canada +# Copyright © 2017 Amdocs, AT&T, Bell Canada # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/kubernetes/sdc/charts/sdc-cs/templates/service.yaml b/kubernetes/sdc/charts/sdc-cs/templates/service.yaml index a41fc38d23..30297a3369 100644 --- a/kubernetes/sdc/charts/sdc-cs/templates/service.yaml +++ b/kubernetes/sdc/charts/sdc-cs/templates/service.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 kind: Service metadata: diff --git a/kubernetes/sdc/charts/sdc-cs/values.yaml b/kubernetes/sdc/charts/sdc-cs/values.yaml index 5e2b77c12a..3a7752d761 100644 --- a/kubernetes/sdc/charts/sdc-cs/values.yaml +++ b/kubernetes/sdc/charts/sdc-cs/values.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + ################################################################# # Global configuration defaults. ################################################################# @@ -5,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 diff --git a/kubernetes/sdc/charts/sdc-es/Chart.yaml b/kubernetes/sdc/charts/sdc-es/Chart.yaml index f2097a532d..2accff16b3 100644 --- a/kubernetes/sdc/charts/sdc-es/Chart.yaml +++ b/kubernetes/sdc/charts/sdc-es/Chart.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 description: Service Design and Creation Elasticsearch name: sdc-es diff --git a/kubernetes/sdc/charts/sdc-es/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-es/templates/deployment.yaml index bb08a2aecd..75ea024f3e 100644 --- a/kubernetes/sdc/charts/sdc-es/templates/deployment.yaml +++ b/kubernetes/sdc/charts/sdc-es/templates/deployment.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: extensions/v1beta1 kind: Deployment metadata: diff --git a/kubernetes/sdc/charts/sdc-es/templates/job.yaml b/kubernetes/sdc/charts/sdc-es/templates/job.yaml index 03a21c0636..0d2512cf7a 100644 --- a/kubernetes/sdc/charts/sdc-es/templates/job.yaml +++ b/kubernetes/sdc/charts/sdc-es/templates/job.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: batch/v1 kind: Job metadata: diff --git a/kubernetes/sdc/charts/sdc-es/templates/pv.yaml b/kubernetes/sdc/charts/sdc-es/templates/pv.yaml index 31230a9ed7..184728f8ad 100644 --- a/kubernetes/sdc/charts/sdc-es/templates/pv.yaml +++ b/kubernetes/sdc/charts/sdc-es/templates/pv.yaml @@ -1,3 +1,19 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} kind: PersistentVolume apiVersion: v1 diff --git a/kubernetes/sdc/charts/sdc-es/templates/pvc.yaml b/kubernetes/sdc/charts/sdc-es/templates/pvc.yaml index b0cd3bf238..e27c3311e9 100644 --- a/kubernetes/sdc/charts/sdc-es/templates/pvc.yaml +++ b/kubernetes/sdc/charts/sdc-es/templates/pvc.yaml @@ -1,3 +1,19 @@ +{{/* +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}} kind: PersistentVolumeClaim apiVersion: v1 diff --git a/kubernetes/sdc/charts/sdc-es/templates/service.yaml b/kubernetes/sdc/charts/sdc-es/templates/service.yaml index a41fc38d23..30297a3369 100644 --- a/kubernetes/sdc/charts/sdc-es/templates/service.yaml +++ b/kubernetes/sdc/charts/sdc-es/templates/service.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 kind: Service metadata: diff --git a/kubernetes/sdc/charts/sdc-es/values.yaml b/kubernetes/sdc/charts/sdc-es/values.yaml index b32ed11045..4dddbed769 100644 --- a/kubernetes/sdc/charts/sdc-es/values.yaml +++ b/kubernetes/sdc/charts/sdc-es/values.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + ################################################################# # Global configuration defaults. ################################################################# @@ -5,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 ubuntuInitRepository: oomk8s diff --git a/kubernetes/sdc/charts/sdc-fe/Chart.yaml b/kubernetes/sdc/charts/sdc-fe/Chart.yaml index dc60986581..9cbffbac4e 100644 --- a/kubernetes/sdc/charts/sdc-fe/Chart.yaml +++ b/kubernetes/sdc/charts/sdc-fe/Chart.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 description: Service Design and Creation Front End name: sdc-fe diff --git a/kubernetes/sdc/charts/sdc-fe/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-fe/templates/deployment.yaml index 818a279773..1a6e01bba6 100644 --- a/kubernetes/sdc/charts/sdc-fe/templates/deployment.yaml +++ b/kubernetes/sdc/charts/sdc-fe/templates/deployment.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: extensions/v1beta1 kind: Deployment metadata: diff --git a/kubernetes/sdc/charts/sdc-fe/templates/service.yaml b/kubernetes/sdc/charts/sdc-fe/templates/service.yaml index fc7a3c75b8..dccb75143e 100644 --- a/kubernetes/sdc/charts/sdc-fe/templates/service.yaml +++ b/kubernetes/sdc/charts/sdc-fe/templates/service.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 kind: Service metadata: diff --git a/kubernetes/sdc/charts/sdc-fe/values.yaml b/kubernetes/sdc/charts/sdc-fe/values.yaml index 828ec4117a..ca9af3f4b0 100644 --- a/kubernetes/sdc/charts/sdc-fe/values.yaml +++ b/kubernetes/sdc/charts/sdc-fe/values.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + ################################################################# # Global configuration defaults. ################################################################# @@ -5,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 diff --git a/kubernetes/sdc/charts/sdc-kb/Chart.yaml b/kubernetes/sdc/charts/sdc-kb/Chart.yaml index 2bb4e49829..f9bc14a097 100644 --- a/kubernetes/sdc/charts/sdc-kb/Chart.yaml +++ b/kubernetes/sdc/charts/sdc-kb/Chart.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 description: Service Design and Creation Kibana name: sdc-kb diff --git a/kubernetes/sdc/charts/sdc-kb/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-kb/templates/deployment.yaml index 73c01f575e..4501ded18d 100644 --- a/kubernetes/sdc/charts/sdc-kb/templates/deployment.yaml +++ b/kubernetes/sdc/charts/sdc-kb/templates/deployment.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: extensions/v1beta1 kind: Deployment metadata: diff --git a/kubernetes/sdc/charts/sdc-kb/templates/service.yaml b/kubernetes/sdc/charts/sdc-kb/templates/service.yaml index 0fbaae9947..14d0b8202d 100644 --- a/kubernetes/sdc/charts/sdc-kb/templates/service.yaml +++ b/kubernetes/sdc/charts/sdc-kb/templates/service.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 kind: Service metadata: diff --git a/kubernetes/sdc/charts/sdc-kb/values.yaml b/kubernetes/sdc/charts/sdc-kb/values.yaml index b1796f4f84..3523374f12 100644 --- a/kubernetes/sdc/charts/sdc-kb/values.yaml +++ b/kubernetes/sdc/charts/sdc-kb/values.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + ################################################################# # Global configuration defaults. ################################################################# @@ -5,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 diff --git a/kubernetes/sdc/charts/sdc-wfd/.helmignore b/kubernetes/sdc/charts/sdc-wfd/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/sdc/charts/sdc-wfd/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/sdc/charts/sdc-wfd/Chart.yaml b/kubernetes/sdc/charts/sdc-wfd/Chart.yaml new file mode 100644 index 0000000000..a04b2e5784 --- /dev/null +++ b/kubernetes/sdc/charts/sdc-wfd/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2018 ZTE +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: Common Workflow Design +name: sdc-wfd +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/sdc/charts/sdc-wfd/templates/NOTES.txt b/kubernetes/sdc/charts/sdc-wfd/templates/NOTES.txt new file mode 100644 index 0000000000..d83c152a4c --- /dev/null +++ b/kubernetes/sdc/charts/sdc-wfd/templates/NOTES.txt @@ -0,0 +1,20 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} + diff --git a/kubernetes/sdc/charts/sdc-wfd/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-wfd/templates/deployment.yaml new file mode 100644 index 0000000000..eb1f47974c --- /dev/null +++ b/kubernetes/sdc/charts/sdc-wfd/templates/deployment.yaml @@ -0,0 +1,54 @@ +# Copyright © 2018 ZTE +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file diff --git a/kubernetes/sdc/charts/sdc-wfd/templates/service.yaml b/kubernetes/sdc/charts/sdc-wfd/templates/service.yaml new file mode 100644 index 0000000000..09c7e04287 --- /dev/null +++ b/kubernetes/sdc/charts/sdc-wfd/templates/service.yaml @@ -0,0 +1,54 @@ +# Copyright © 2018 ZTE +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "workflow-modeler", + "version": "v1", + "url": "/api/workflow-modeler/v1", + "protocol": "REST", + "port": "{{ .Values.service.internalPort }}", + "enable_ssl": true, + "visualRange":"1" + }, + { + "serviceName": "workflow-modeler-ui", + "version": "v1", + "url": "/workflow-modeler", + "protocol": "UI", + "path": "/workflow-modeler", + "port": "{{ .Values.service.internalPort }}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/sdc/charts/sdc-wfd/values.yaml b/kubernetes/sdc/charts/sdc-wfd/values.yaml new file mode 100644 index 0000000000..d678f5d64b --- /dev/null +++ b/kubernetes/sdc/charts/sdc-wfd/values.yaml @@ -0,0 +1,55 @@ +# Copyright © 2018 ZTE +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/sdc/sdc-workflow-designer:1.1.0-SNAPSHOT-STAGING-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# default number of instances +replicaCount: 1 + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: sdc-wfd + nodePort: "56" + internalPort: 8080 + +ingress: + enabled: false + diff --git a/kubernetes/sdc/requirements.yaml b/kubernetes/sdc/requirements.yaml index acca8ef7e2..1e8f788318 100644 --- a/kubernetes/sdc/requirements.yaml +++ b/kubernetes/sdc/requirements.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + dependencies: - name: common version: ~2.0.0 diff --git a/kubernetes/sdc/templates/configmap.yaml b/kubernetes/sdc/templates/configmap.yaml index f09c48276e..ec5e95fd36 100644 --- a/kubernetes/sdc/templates/configmap.yaml +++ b/kubernetes/sdc/templates/configmap.yaml @@ -1,3 +1,17 @@ +# Copyright © 2017 Amdocs, AT&T, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + apiVersion: v1 kind: ConfigMap metadata: diff --git a/kubernetes/sdc/values.yaml b/kubernetes/sdc/values.yaml index 90a4d28eaa..d5664a765e 100644 --- a/kubernetes/sdc/values.yaml +++ b/kubernetes/sdc/values.yaml @@ -26,8 +26,6 @@ config: vnfRepoPort: 8702 vnfRepoHost: 192.168.50.5 - - sdc-es: service: name: sdc-es
\ No newline at end of file diff --git a/kubernetes/sdnc/.helmignore b/kubernetes/sdnc/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/sdnc/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/sdnc/Chart.yaml b/kubernetes/sdnc/Chart.yaml index 6e0ec8d433..fe27426f13 100644 --- a/kubernetes/sdnc/Chart.yaml +++ b/kubernetes/sdnc/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +description: SDN Controller name: sdnc -version: 0.1.0 +version: 2.0.0 diff --git a/kubernetes/sdnc/charts/dmaap-listener/Chart.yaml b/kubernetes/sdnc/charts/dmaap-listener/Chart.yaml new file mode 100644 index 0000000000..ba2e574d06 --- /dev/null +++ b/kubernetes/sdnc/charts/dmaap-listener/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: SDNC DMaaP Listener +name: dmaap-listener +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/sdnc/charts/dmaap-listener/requirements.yaml b/kubernetes/sdnc/charts/dmaap-listener/requirements.yaml new file mode 100644 index 0000000000..ce82a2f838 --- /dev/null +++ b/kubernetes/sdnc/charts/dmaap-listener/requirements.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/sdnc/resources/config/dmaap/dhcpalert.properties b/kubernetes/sdnc/charts/dmaap-listener/resources/config/dhcpalert.properties index cfc8e130be..dc0deb278e 100644 --- a/kubernetes/sdnc/resources/config/dmaap/dhcpalert.properties +++ b/kubernetes/sdnc/charts/dmaap-listener/resources/config/dhcpalert.properties @@ -14,7 +14,7 @@ password =admin contenttype =application/json authKey=fxoW4jZrO7mdLWWa:f4KxkoBtToyoEG7suMoV8KhnkwM= authDate=2016-02-18T13:57:37-0800 -host=dmaap.{{.Values.nsPrefix}}:3904 +host=dmaap.{{.Release.Namespace}}:3904 topic=VCPE-DHCP-EVENT group=jmsgrp id=sdnc1 @@ -32,4 +32,4 @@ sessionstickinessrequired=NO DME2preferredRouterFilePath=/opt/onap/sdnc/data/properties/dmaap-listener.preferredRoute.txt sdnc.odl.user=admin sdnc.odl.password=admin -sdnc.odl.url-base=https://sdnhost.{{.Values.nsPrefix}}:8443/restconf/operations +sdnc.odl.url-base=https://sdnhost.{{.Release.Namespace}}:8443/restconf/operations diff --git a/kubernetes/sdnc/templates/dmaap-deployment-configmap.yaml b/kubernetes/sdnc/charts/dmaap-listener/templates/configmap.yaml index b2b8a45cbc..ee3c6a1c99 100644 --- a/kubernetes/sdnc/templates/dmaap-deployment-configmap.yaml +++ b/kubernetes/sdnc/charts/dmaap-listener/templates/configmap.yaml @@ -12,12 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableSdncDmaap }} apiVersion: v1 kind: ConfigMap metadata: name: sdnc-dmaap-configmap - namespace: {{ .Values.nsPrefix }} + namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/dmaap/*").AsConfig . | indent 2 }} -#{{ end }} +{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }} diff --git a/kubernetes/sdnc/templates/dmaap-deployment.yaml b/kubernetes/sdnc/charts/dmaap-listener/templates/deployment.yaml index ca092ff261..e712a410c8 100644 --- a/kubernetes/sdnc/templates/dmaap-deployment.yaml +++ b/kubernetes/sdnc/charts/dmaap-listener/templates/deployment.yaml @@ -12,58 +12,70 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableSdncDmaap }} apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: sdnc-dmaap-listener - namespace: "{{ .Values.nsPrefix }}" + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} spec: - replicas: {{ .Values.dmaapReplicas }} - selector: - matchLabels: - app: dmaap-listener + replicas: {{ .Values.replicaCount }} template: metadata: labels: - app: dmaap-listener - name: sdnc-dmaap-listener + app: {{ include "common.name" . }} + release: {{ .Release.Name }} spec: initContainers: - command: - /root/ready.py args: - --container-name - - sdnc-db-container + - {{ .Values.config.mysqlChartName }} - --container-name - - sdnc-controller-container + - {{ .Values.config.sdncChartName }} env: - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: sdnc-dmaap-readiness + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness containers: - command: - /opt/onap/sdnc/dmaap-listener/bin/start-dmaap-listener.sh + name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} env: - name: PROPERTY_DIR - value: /opt/onap/sdnc/data/properties + value: "{{ .Values.config.configDir }}" - name: SDNC_CONFIG_DIR - value: /opt/onap/sdnc/data/properties - image: {{ .Values.image.dmaaplistener }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: dmaapp-listener-container + value: "{{ .Values.config.configDir }}" volumeMounts: - mountPath: /etc/localtime name: localtime readOnly: true - - mountPath: /opt/onap/sdnc/data/properties/dhcpalert.properties + - mountPath: {{ .Values.config.configDir }}/dhcpalert.properties subPath: dhcpalert.properties name: dmaap-dhcapalert-config + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + volumes: - name: localtime hostPath: @@ -72,5 +84,4 @@ spec: configMap: name: sdnc-dmaap-configmap imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} + - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file diff --git a/kubernetes/sdnc/templates/mysql-configmap.yaml b/kubernetes/sdnc/charts/dmaap-listener/templates/service.yaml index e8c267261c..a76592e89d 100644 --- a/kubernetes/sdnc/templates/mysql-configmap.yaml +++ b/kubernetes/sdnc/charts/dmaap-listener/templates/service.yaml @@ -13,22 +13,16 @@ # limitations under the License. apiVersion: v1 -kind: ConfigMap +kind: Service metadata: - name: sdnc-mysql - namespace: "{{ .Values.nsPrefix }}" + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} labels: - app: mysql -data: - master.cnf: | - # Apply this config only on the master. - [mysqld] - log-bin - [localpathprefix] - master - slave.cnf: | - # Apply this config only on slaves. - [mysqld] - super-read-only - [localpathprefix] - slave + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: ClusterIP + clusterIP: None diff --git a/kubernetes/sdnc/charts/dmaap-listener/values.yaml b/kubernetes/sdnc/charts/dmaap-listener/values.yaml new file mode 100644 index 0000000000..474113dd95 --- /dev/null +++ b/kubernetes/sdnc/charts/dmaap-listener/values.yaml @@ -0,0 +1,73 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/sdnc-dmaap-listener-image:1.3-STAGING-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: + dmaapPort: 3904 + mysqlChartName: sdnc-dbhost + sdncChartName: sdnc + configDir: /opt/onap/sdnc/data/properties + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +ingress: + enabled: false + +resources: {} +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/sdnc/charts/sdnc-portal/.helmignore b/kubernetes/sdnc/charts/sdnc-portal/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/sdnc/charts/sdnc-portal/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/mso/Chart.yaml b/kubernetes/sdnc/charts/sdnc-portal/Chart.yaml index b4edecc4bd..193c38ffce 100644 --- a/kubernetes/mso/Chart.yaml +++ b/kubernetes/sdnc/charts/sdnc-portal/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes -name: mso -version: 1.1.0 +description: SDN-C Admin Portal +name: sdnc-portal +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/sdnc/charts/sdnc-portal/requirements.yaml b/kubernetes/sdnc/charts/sdnc-portal/requirements.yaml new file mode 100644 index 0000000000..1e8f788318 --- /dev/null +++ b/kubernetes/sdnc/charts/sdnc-portal/requirements.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + repository: '@local'
\ No newline at end of file diff --git a/kubernetes/sdnc/resources/config/conf/admportal.json b/kubernetes/sdnc/charts/sdnc-portal/resources/config/admportal.json index ee575c22ac..4c0754b691 100755..100644 --- a/kubernetes/sdnc/resources/config/conf/admportal.json +++ b/kubernetes/sdnc/charts/sdnc-portal/resources/config/admportal.json @@ -39,8 +39,8 @@ "dbPassword": "gamma", "dbName": "sdnctl", "odlProtocol": "http", - "odlHost": "sdnhost.{{.Values.nsPrefix}}", - "odlConexusHost": "sdnhost.{{.Values.nsPrefix}}", + "odlHost": "sdnhost.{{.Release.Namespace}}", + "odlConexusHost": "sdnhost.{{.Release.Namespace}}", "odlPort": "8181", "odlConexusPort": "8181", "odlUser": "admin", diff --git a/kubernetes/sdnc/templates/sdnc-conf-configmap.yaml b/kubernetes/sdnc/charts/sdnc-portal/templates/configmap.yaml index 3d89f20cab..f2f2524dfd 100644 --- a/kubernetes/sdnc/templates/sdnc-conf-configmap.yaml +++ b/kubernetes/sdnc/charts/sdnc-portal/templates/configmap.yaml @@ -12,12 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableSdncSdnc }} apiVersion: v1 kind: ConfigMap metadata: - name: sdnc-conf-configmap - namespace: {{ .Values.nsPrefix }} + name: sdnc-portal-configmap + namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/conf/*").AsConfig . | indent 2 }} -#{{ end }} +{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }} diff --git a/kubernetes/sdnc/charts/sdnc-portal/templates/deployment.yaml b/kubernetes/sdnc/charts/sdnc-portal/templates/deployment.yaml new file mode 100644 index 0000000000..5e1293c37f --- /dev/null +++ b/kubernetes/sdnc/charts/sdnc-portal/templates/deployment.yaml @@ -0,0 +1,104 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: + - command: + - /root/ready.py + args: + - --container-name + - {{ .Values.config.mysqlChartName }} + - --container-name + - {{ .Values.config.sdncChartName }} + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + command: ["/bin/bash"] + args: ["-c", "cd /opt/onap/sdnc/admportal/shell && ./start_portal.sh"] + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{- if eq .Values.liveness.enabled true }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end -}} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }} + key: db-root-password + - name: SDNC_CONFIG_DIR + value: "{{ .Values.config.configDir }}" + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: {{ .Values.config.configDir }} + name: sdnc-conf + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: sdnc-conf + configMap: + name: sdnc-portal-configmap + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file diff --git a/kubernetes/sdnc/charts/sdnc-portal/templates/secrets.yaml b/kubernetes/sdnc/charts/sdnc-portal/templates/secrets.yaml new file mode 100644 index 0000000000..345c194d96 --- /dev/null +++ b/kubernetes/sdnc/charts/sdnc-portal/templates/secrets.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +type: Opaque +data: + db-root-password: {{ .Values.config.dbRootPassword | b64enc | quote }} diff --git a/kubernetes/sdnc/charts/sdnc-portal/templates/service.yaml b/kubernetes/sdnc/charts/sdnc-portal/templates/service.yaml new file mode 100644 index 0000000000..2d67c1f26e --- /dev/null +++ b/kubernetes/sdnc/charts/sdnc-portal/templates/service.yaml @@ -0,0 +1,50 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "sdnc-portal", + "version": "v1", + "url": "/", + "protocol": "UI", + "port": "{{ .Values.service.externalPort }}", + "visualRange":"0|1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/sdnc/charts/sdnc-portal/values.yaml b/kubernetes/sdnc/charts/sdnc-portal/values.yaml new file mode 100644 index 0000000000..09d45ddae3 --- /dev/null +++ b/kubernetes/sdnc/charts/sdnc-portal/values.yaml @@ -0,0 +1,80 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/admportal-sdnc-image:1.3-STAGING-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: + mysqlChartName: sdnc-dbhost + dbRootPassword: openECOMP1.0 + sdncChartName: sdnc + configDir: /opt/onap/sdnc/data/properties + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: sdnc-portal + internalPort: 8443 + externalPort: 8443 + nodePort: "01" + +ingress: + enabled: false + +resources: {} +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/sdnc/charts/ueb-listener/Chart.yaml b/kubernetes/sdnc/charts/ueb-listener/Chart.yaml new file mode 100644 index 0000000000..35b2a2e9c3 --- /dev/null +++ b/kubernetes/sdnc/charts/ueb-listener/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: SDNC UEB Listener +name: ueb-listener +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/sdnc/charts/ueb-listener/requirements.yaml b/kubernetes/sdnc/charts/ueb-listener/requirements.yaml new file mode 100644 index 0000000000..ce82a2f838 --- /dev/null +++ b/kubernetes/sdnc/charts/ueb-listener/requirements.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/sdnc/resources/config/ueb/ueb-listener.properties b/kubernetes/sdnc/charts/ueb-listener/resources/config/ueb-listener.properties index fb6e26da11..72dee15938 100644 --- a/kubernetes/sdnc/resources/config/ueb/ueb-listener.properties +++ b/kubernetes/sdnc/charts/ueb-listener/resources/config/ueb-listener.properties @@ -1,4 +1,4 @@ -org.onap.ccsdk.sli.northbound.uebclient.asdc-address=sdc-be.{{.Values.nsPrefix}}:8443 +org.onap.ccsdk.sli.northbound.uebclient.asdc-address=sdc-be.{{.Release.Namespace}}:8443 org.onap.ccsdk.sli.northbound.uebclient.consumer-group=sdc-OpenSource-Env1-sdnc-dockero org.onap.ccsdk.sli.northbound.uebclient.consumer-id=sdc-COpenSource-Env11-sdnc-dockero org.onap.ccsdk.sli.northbound.uebclient.environment-name=AUTO @@ -6,7 +6,7 @@ org.onap.ccsdk.sli.northbound.uebclient.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84 org.onap.ccsdk.sli.northbound.uebclient.user=sdnc org.onap.ccsdk.sli.northbound.uebclient.sdnc-user=admin org.onap.ccsdk.sli.northbound.uebclient.sdnc-passwd=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -org.onap.ccsdk.sli.northbound.uebclient.asdc-api-base-url=http://sdnhost.{{.Values.nsPrefix}}:8282/restconf/operations/ +org.onap.ccsdk.sli.northbound.uebclient.asdc-api-base-url=http://sdnhost.{{.Release.Namespace}}:8282/restconf/operations/ org.onap.ccsdk.sli.northbound.uebclient.asdc-api-namespace=org:onap:ccsdk org.onap.ccsdk.sli.northbound.uebclient.spool.incoming=/opt/onap/sdnc/ueb-listener/spool/incoming org.onap.ccsdk.sli.northbound.uebclient.spool.archive=/opt/onap/sdnc/ueb-listener/spool/archive diff --git a/kubernetes/sdnc/templates/ueb-deployment-configmap.yaml b/kubernetes/sdnc/charts/ueb-listener/templates/configmap.yaml index 0e5b3ac62e..397303ffd8 100644 --- a/kubernetes/sdnc/templates/ueb-deployment-configmap.yaml +++ b/kubernetes/sdnc/charts/ueb-listener/templates/configmap.yaml @@ -12,12 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableSdncUeb }} apiVersion: v1 kind: ConfigMap metadata: name: sdnc-ueb-configmap - namespace: {{ .Values.nsPrefix }} + namespace: {{ include "common.namespace" . }} data: -{{ tpl (.Files.Glob "resources/config/ueb/*").AsConfig . | indent 2 }} -#{{ end }} +{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }} diff --git a/kubernetes/sdnc/templates/ueb-deployment.yaml b/kubernetes/sdnc/charts/ueb-listener/templates/deployment.yaml index f785cf7411..b11cf95277 100644 --- a/kubernetes/sdnc/templates/ueb-deployment.yaml +++ b/kubernetes/sdnc/charts/ueb-listener/templates/deployment.yaml @@ -12,51 +12,52 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableSdncUeb }} apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: sdnc-ueb-listener - namespace: "{{ .Values.nsPrefix }}" + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} spec: - replicas: {{ .Values.uebReplicas }} - selector: - matchLabels: - app: ueb-listener + replicas: {{ .Values.replicaCount }} template: metadata: labels: - app: ueb-listener - name: sdnc-ueb-listener + app: {{ include "common.name" . }} + release: {{ .Release.Name }} spec: initContainers: - command: - /root/ready.py args: - --container-name - - sdnc-db-container + - {{ .Values.config.mysqlChartName }} - --container-name - - sdnc-controller-container + - {{ .Values.config.sdncChartName }} env: - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: sdnc-ueb-readiness + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness containers: - command: - /opt/onap/sdnc/ueb-listener/bin/start-ueb-listener.sh + name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} env: - name: PROPERTY_DIR - value: /opt/onap/sdnc/data/properties + value: "{{ .Values.config.configDir }}" - name: SDNC_CONFIG_DIR - value: /opt/onap/sdnc/data/properties - image: {{ .Values.image.ueblistener }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: ueb-listener-container + value: "{{ .Values.config.configDir }}" volumeMounts: - mountPath: /etc/localtime name: localtime @@ -64,6 +65,17 @@ spec: - mountPath: /opt/onap/sdnc/data/properties/ueb-listener.properties subPath: ueb-listener.properties name: ueb-config + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + volumes: - name: localtime hostPath: @@ -72,5 +84,4 @@ spec: configMap: name: sdnc-ueb-configmap imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} + - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file diff --git a/kubernetes/cli/templates/all-service.yaml b/kubernetes/sdnc/charts/ueb-listener/templates/service.yaml index 1ce6d97fd0..a76592e89d 100644 --- a/kubernetes/cli/templates/all-service.yaml +++ b/kubernetes/sdnc/charts/ueb-listener/templates/service.yaml @@ -12,25 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableCliCli }} apiVersion: v1 kind: Service metadata: - name: cli - namespace: "{{ .Values.nsPrefix }}" + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} labels: - app: cli + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: spec: - ports: - - name: 8080-port - port: 8080 - targetPort: 80 - nodePort: {{ .Values.nodePortPrefix }}60 - - name: 9090-port - port: 9090 - targetPort: 8080 - nodePort: {{ .Values.nodePortPrefix }}61 - type: NodePort - selector: - app: cli -#{{ end }} + type: ClusterIP + clusterIP: None diff --git a/kubernetes/sdnc/charts/ueb-listener/values.yaml b/kubernetes/sdnc/charts/ueb-listener/values.yaml new file mode 100644 index 0000000000..b86263315e --- /dev/null +++ b/kubernetes/sdnc/charts/ueb-listener/values.yaml @@ -0,0 +1,74 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/sdnc-ueb-listener-image:1.3-STAGING-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: + uebPort: 3904 + mysqlChartName: sdnc-dbhost + sdncChartName: sdnc + configDir: /opt/onap/sdnc/data/properties + + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +ingress: + enabled: false + +resources: {} +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/sdnc/requirements.yaml b/kubernetes/sdnc/requirements.yaml new file mode 100644 index 0000000000..c458755a85 --- /dev/null +++ b/kubernetes/sdnc/requirements.yaml @@ -0,0 +1,24 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + repository: '@local' + - name: mysql + version: ~2.0.0 + repository: '@local' + - name: dgbuilder + version: ~2.0.0 + repository: '@local'
\ No newline at end of file diff --git a/kubernetes/sdnc/resources/config/bin/installSdncDb.sh b/kubernetes/sdnc/resources/config/bin/installSdncDb.sh new file mode 100644 index 0000000000..e574bd7aec --- /dev/null +++ b/kubernetes/sdnc/resources/config/bin/installSdncDb.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +### +# ============LICENSE_START======================================================= +# ONAP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +SDNC_HOME=${SDNC_HOME:-/opt/onap/sdnc} +MYSQL_HOST=${MYSQL_HOST:-{{.Release.Name}}-{{.Values.mysql.nameOverride}}-0.{{.Values.mysql.service.name}}.{{.Release.Namespace}}} +MYSQL_PASSWD=${MYSQL_PASSWD:-{{.Values.config.dbRootPassword}}} + +SDNC_DB_USER=${SDNC_DB_USER:-sdnctl} +SDNC_DB_PASSWD=${SDNC_DB_PASSWD:-gamma} +SDNC_DB_DATABASE=${SDN_DB_DATABASE:-sdnctl} + + +# Create tablespace and user account +mysql -h ${MYSQL_HOST} -u root -p${MYSQL_PASSWD} mysql <<-END +CREATE DATABASE ${SDNC_DB_DATABASE}; +CREATE USER '${SDNC_DB_USER}'@'localhost' IDENTIFIED BY '${SDNC_DB_PASSWD}'; +CREATE USER '${SDNC_DB_USER}'@'%' IDENTIFIED BY '${SDNC_DB_PASSWD}'; +GRANT ALL PRIVILEGES ON ${SDNC_DB_DATABASE}.* TO '${SDNC_DB_USER}'@'localhost' WITH GRANT OPTION; +GRANT ALL PRIVILEGES ON ${SDNC_DB_DATABASE}.* TO '${SDNC_DB_USER}'@'%' WITH GRANT OPTION; +commit; +END + +# load schema +if [ -f ${SDNC_HOME}/data/sdnctl.dump ] +then + mysql -h ${MYSQL_HOST} -u root -p${MYSQL_PASSWD} sdnctl < ${SDNC_HOME}/data/sdnctl.dump +fi + +for datafile in ${SDNC_HOME}/data/*.data.dump +do + mysql -h ${MYSQL_HOST} -u root -p${MYSQL_PASSWD} sdnctl < $datafile +done + +# Create VNIs 100-199 +${SDNC_HOME}/bin/addVnis.sh 100 199 diff --git a/kubernetes/sdnc/resources/config/bin/startODL.sh b/kubernetes/sdnc/resources/config/bin/startODL.sh new file mode 100755 index 0000000000..aa5b6d1479 --- /dev/null +++ b/kubernetes/sdnc/resources/config/bin/startODL.sh @@ -0,0 +1,121 @@ +#!/bin/bash + +### +# ============LICENSE_START======================================================= +# SDNC +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +function enable_odl_cluster(){ + if [ -z $SDNC_REPLICAS ]; then + echo "SDNC_REPLICAS is not configured in Env field" + exit + fi + + echo "Installing Opendaylight cluster features" + ${ODL_HOME}/bin/client feature:install odl-mdsal-clustering + ${ODL_HOME}/bin/client feature:install odl-jolokia + + echo "Update cluster information statically" + hm=$(hostname) + echo "Get current Hostname ${hm}" + + node=($(echo ${hm} | tr '-' '\n')) + node_name=${node[0]} + node_index=${node[1]} + + if [ -z $PEER_ODL_CLUSTER ]; then + echo "This is a local cluster" + node_list="${node_name}-0.{{.Values.service.name}}-cluster.{{.Release.Namespace}}"; + + for ((i=1;i<${SDNC_REPLICAS};i++)); + do + node_list="${node_list} ${node_name}-$i.{{.Values.service.name}}-cluster.{{.Release.Namespace}}" + done + /opt/opendaylight/current/bin/configure_cluster.sh $((node_index+1)) ${node_list} + else + echo "This is a Geo cluster" + + if $IS_PRIMARY_CLUSTER; then + PRIMARY_NODE=${MY_ODL_CLUSTER} + SECONDARY_NODE=${PEER_ODL_CLUSTER} + else + PRIMARY_NODE=${PEER_ODL_CLUSTER} + SECONDARY_NODE=${MY_ODL_CLUSTER} + member_offset=4 + fi + + node_list="${PRIMARY_NODE} ${SECONDARY_NODE}" + /opt/onap/sdnc/bin/configure_geo_cluster.sh $((node_index+member_offset)) ${node_list} + fi +} + + +# Install SDN-C platform components if not already installed and start container + +ODL_HOME=${ODL_HOME:-/opt/opendaylight/current} +ODL_ADMIN_PASSWORD=${ODL_ADMIN_PASSWORD:-Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U} +SDNC_HOME=${SDNC_HOME:-/opt/onap/sdnc} +SLEEP_TIME=${SLEEP_TIME:-120} +MYSQL_PASSWD=${MYSQL_PASSWD:-{{.Values.config.dbRootPassword}}} +ENABLE_ODL_CLUSTER=${ENABLE_ODL_CLUSTER:-false} +MYSQL_HOST=${MYSQL_HOST:-{{.Release.Name}}-{{.Values.mysql.nameOverride}}-0.{{.Values.mysql.service.name}}.{{.Release.Namespace}}} +IS_PRIMARY_CLUSTER=${IS_PRIMARY_CLUSTER:-false} +MY_ODL_CLUSTER=${MY_ODL_CLUSTER:-127.0.0.1} + +# +# Wait for database to init properly +# +echo "Waiting for mysql" +until mysql -h ${MYSQL_HOST} -u root -p${MYSQL_PASSWD} mysql &> /dev/null +do + printf "." + sleep 1 +done +echo -e "\nmysql ready" + +if [ ! -f ${SDNC_HOME}/.installed ] +then + echo "Installing SDNC database" + ${SDNC_HOME}/bin/installSdncDb.sh + echo "Installing SDN-C keyStore" + ${SDNC_HOME}/bin/addSdncKeyStore.sh + echo "Starting OpenDaylight" + ${ODL_HOME}/bin/start + echo "Waiting ${SLEEP_TIME} seconds for OpenDaylight to initialize" + sleep ${SLEEP_TIME} + echo "Installing SDN-C platform features" + ${SDNC_HOME}/bin/installFeatures.sh + if [ -x ${SDNC_HOME}/svclogic/bin/install.sh ] + then + echo "Installing directed graphs" + ${SDNC_HOME}/svclogic/bin/install.sh + fi + + if $ENABLE_ODL_CLUSTER ; then enable_odl_cluster ; fi + + echo "Restarting OpenDaylight" + ${ODL_HOME}/bin/stop + + echo "Waiting 60 seconds for OpenDaylight stop to complete" + sleep 60 + + echo "Installed at `date`" > ${SDNC_HOME}/.installed +fi + +exec ${ODL_HOME}/bin/karaf + diff --git a/kubernetes/sdnc/resources/config/conf/aaiclient.properties b/kubernetes/sdnc/resources/config/conf/aaiclient.properties index 81f63ecdde..b5d1560d7e 100755 --- a/kubernetes/sdnc/resources/config/conf/aaiclient.properties +++ b/kubernetes/sdnc/resources/config/conf/aaiclient.properties @@ -40,7 +40,7 @@ org.onap.ccsdk.sli.adaptors.aai.application=openECOMP # # Configuration file for A&AI Client # -org.onap.ccsdk.sli.adaptors.aai.uri=https://aai-service.{{.Values.nsPrefix}}:8443 +org.onap.ccsdk.sli.adaptors.aai.uri=https://aai-service.{{.Release.Namespace}}:8443 # query @@ -134,8 +134,8 @@ org.onap.ccsdk.sli.adaptors.aai.path.vnf.image.query=/aai/v11/service-design-and # UBB Notify org.onap.ccsdk.sli.adaptors.aai.path.notify=/aai/v11/actions/notify -org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=https://aai-service.{{.Values.nsPrefix}}:8443/restconf/config/L3SDN-API:services/layer3-service-list/{service-instance-id} -org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=https://aai-service.{{.Values.nsPrefix}}:8543/restconf/config/L3AVPN-EVC-API:services/service-list/{service-instance-id}/service-data/avpn-logicalchannel-information +org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=https://aai-service.{{.Release.Namespace}}:8443/restconf/config/L3SDN-API:services/layer3-service-list/{service-instance-id} +org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=https://aai-service.{{.Release.Namespace}}:8543/restconf/config/L3AVPN-EVC-API:services/service-list/{service-instance-id}/service-data/avpn-logicalchannel-information # Service org.onap.ccsdk.sli.adaptors.aai.path.service=/aai/v11/service-design-and-creation/services/service/{service-id} diff --git a/kubernetes/sdnc/resources/config/conf/dblib.properties b/kubernetes/sdnc/resources/config/conf/dblib.properties new file mode 100644 index 0000000000..499834e0e2 --- /dev/null +++ b/kubernetes/sdnc/resources/config/conf/dblib.properties @@ -0,0 +1,37 @@ +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +# dblib.properrties +org.onap.ccsdk.sli.dbtype=jdbc + +org.onap.ccsdk.sli.jdbc.hosts=sdnctldb01 +org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://{{.Values.mysql.service.name}}.{{.Release.Namespace}}:{{.Values.mysql.service.internalPort}}/sdnctl +org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver +org.onap.ccsdk.sli.jdbc.database=sdnctl +org.onap.ccsdk.sli.jdbc.user=sdnctl +org.onap.ccsdk.sli.jdbc.password=gamma +org.onap.ccsdk.sli.jdbc.connection.name=sdnctldb01 +org.onap.ccsdk.sli.jdbc.connection.timeout=50 +org.onap.ccsdk.sli.jdbc.request.timeout=100 +org.onap.ccsdk.sli.jdbc.limit.init=10 +org.onap.ccsdk.sli.jdbc.limit.min=10 +org.onap.ccsdk.sli.jdbc.limit.max=20 +org.onap.dblib.connection.recovery=false diff --git a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/01-load-default-sql-files.sh b/kubernetes/sdnc/resources/config/conf/svclogic.properties index 326f27356c..99f6cf84b7 100644 --- a/kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/01-load-default-sql-files.sh +++ b/kubernetes/sdnc/resources/config/conf/svclogic.properties @@ -1,25 +1,27 @@ -#!/bin/sh -# -# ============LICENSE_START========================================== -# =================================================================== -# Copyright © 2017 AT&T Intellectual Property. All rights reserved. -# =================================================================== +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# ============LICENSE_END============================================ -# -# ECOMP and OpenECOMP are trademarks -# and service marks of AT&T Intellectual Property. -# -# -cd /docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-vfw -mysql -uroot -p$MYSQL_ROOT_PASSWORD -f < create_mso_db-demo-vfw.sql
\ No newline at end of file +# ============LICENSE_END========================================================= +### + +org.onap.ccsdk.sli.dbtype = jdbc +org.onap.ccsdk.sli.jdbc.url = jdbc:mysql://{{.Values.mysql.service.name}}.{{.Release.Namespace}}:{{.Values.mysql.service.internalPort}}/sdnctl +org.onap.ccsdk.sli.jdbc.database = sdnctl +org.onap.ccsdk.sli.jdbc.user = sdnctl +org.onap.ccsdk.sli.jdbc.password = gamma + diff --git a/kubernetes/sdnc/resources/config/log/org.ops4j.pax.logging.cfg b/kubernetes/sdnc/resources/config/log/org.ops4j.pax.logging.cfg index 50818a3d18..7b6563656b 100644 --- a/kubernetes/sdnc/resources/config/log/org.ops4j.pax.logging.cfg +++ b/kubernetes/sdnc/resources/config/log/org.ops4j.pax.logging.cfg @@ -1,57 +1,151 @@ -################################################################################
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-################################################################################
-
-# Root logger
-log4j.rootLogger=INFO, async, osgi:*
-log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer
-
-# Log Directory
-logDir=/var/log/onap
-componentName=sdnc
-logDirectory=${logDir}/${componentName}
-maxFileSize=100MB
-maxBackupIndex=20
-
-# CONSOLE appender not used by default
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss.SSS}\t%-16.16t\t%-5.5p\t%c{36}\t%X{bundle.id} - %X{bundle.name} - %X{bundle.version}\t%m%n
-
-# Async appender forwarding to file appender
-log4j.appender.async=org.apache.log4j.AsyncAppender
-log4j.appender.async.appenders=out
-
-# File appender
-log4j.appender.out=org.apache.log4j.RollingFileAppender
-log4j.appender.out.layout=org.apache.log4j.xml.XMLLayout
-log4j.appender.out.layout.Properties=true
-log4j.appender.out.file=${logDirectory}/karaf.log
-log4j.appender.out.append=true
-log4j.appender.out.maxFileSize=${maxFileSize}
-log4j.appender.out.maxBackupIndex=${maxBackupIndex}
-
-# Sift appender
-log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
-log4j.appender.sift.key=bundle.name
-log4j.appender.sift.default=karaf
-log4j.appender.sift.appender=org.apache.log4j.RollingFileAppender
-log4j.appender.sift.appender.layout=org.apache.log4j.xml.XMLLayout
-log4j.appender.sift.appender.layout.Properties=true
-log4j.appender.sift.appender.file=${logDirectory}/$\\{bundle.name\\}.log
-log4j.appender.sift.appender.append=true
+################################################################################ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +# Root logger +log4j.rootLogger=INFO, async, osgi:* +log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer + +maxFileSize=100MB +maxBackupIndex=20 +logDir=/var/log/onap +componentName=sdnc +logDirectory=${logDir}/${componentName} +karafLogName=karaf +errorLogName=error +metricsLogName=metrics +auditLogName=audit +debugLogName=debug + + +# CONSOLE appender not used by default +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss.SSS}\t%-16.16t\t%-5.5p\t%c{36}\t%X{bundle.id} - %X{bundle.name} - %X{bundle.version}\t%m%n + +# Async appender forwarding to file appender +log4j.appender.async=org.apache.log4j.AsyncAppender +log4j.appender.async.appenders=out + +# File appender +log4j.appender.out=org.apache.log4j.RollingFileAppender +log4j.appender.out.layout=org.apache.log4j.xml.XMLLayout +log4j.appender.out.layout.Properties=true +log4j.appender.out.file=${logDirectory}/${karafLogName}.log +log4j.appender.out.append=true +log4j.appender.out.maxFileSize=${maxFileSize} +log4j.appender.out.maxBackupIndex=${maxBackupIndex} + +# Sift appender +log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender +log4j.appender.sift.key=bundle.name +log4j.appender.sift.default=karaf +log4j.appender.sift.appender=org.apache.log4j.RollingFileAppender +log4j.appender.sift.appender.layout=org.apache.log4j.xml.XMLLayout +log4j.appender.sift.appender.layout.Properties=true +log4j.appender.sift.appender.file=${logDirectory}/$\\{bundle.name\\}.log +log4j.appender.sift.appender.append=true + + + +log4j.category.org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPusherImpl=DEBUG +log4j.category.org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPersisterActivator=DEBUG + + +#ECOMP Debug appender +log4j.appender.debug=org.apache.log4j.RollingFileAppender +log4j.appender.debug.key=bundle.name +log4j.appender.debug.default=karaf +log4j.appender.debug.appName=EELFDebug +log4j.appender.debug.layout=org.apache.log4j.xml.XMLLayout +log4j.appender.debug.layout.Properties=true +log4j.appender.debug.file=${logDirectory}/${debugLogName}.log +log4j.appender.debug.append=true +log4j.appender.debug.maxFileSize=${maxFileSize} +log4j.appender.debug.maxBackupIndex=${maxBackupIndex} +#log4j.appender.debug.filter.f1=org.apache.log4j.varia.LevelRangeFilter +#log4j.appender.debug.filter.f1.LevelMax=WARN +#log4j.appender.debug.filter.f1.LevelMin=TRACE + + +#Error appender +log4j.appender.error=org.apache.log4j.RollingFileAppender +log4j.appender.error.appName=EELFError +log4j.appender.error.File=${logDirectory}/${errorLogName}.log +log4j.appender.error.Threshold=ERROR +log4j.appender.error.maxFileSize=${maxFileSize} +log4j.appender.error.maxBackupIndex=${maxBackupIndex} +log4j.appender.error.layout=org.apache.log4j.xml.XMLLayout +log4j.appender.error.layout.Properties=true + +#Metrics appender +log4j.appender.metric=org.apache.log4j.RollingFileAppender +log4j.appender.metric.appName=EELFMetrics +log4j.appender.metric.File=${logDirectory}/${metricsLogName}.log +log4j.appender.metric.maxFileSize=${maxFileSize} +log4j.appender.metric.maxBackupIndex=${maxBackupIndex} +log4j.appender.metric.layout=org.apache.log4j.xml.XMLLayout +log4j.appender.metric.layout.Properties=true + +#Audit appender +log4j.appender.audit=org.apache.log4j.RollingFileAppender +log4j.appender.audit.appName=EELFAudit +log4j.appender.audit.File=${logDirectory}/${auditLogName}.log +log4j.appender.audit.maxFileSize=${maxFileSize} +log4j.appender.audit.maxBackupIndex=${maxBackupIndex} +log4j.appender.audit.layout=org.apache.log4j.xml.XMLLayout +log4j.appender.audit.layout.Properties=true + +#Loggers +#Routing of all messages from root logger +log4j.logger.com.att=TRACE, debug, error +#Store to the same log file messages from upper level appender or not +log4j.additivity.com.att=false + +#EELFManager loggers +#EELF parent logger +log4j.logger.com.att.eelf=TRACE, debug +log4j.additivity.com.att.eelf=false + +#Audit logger routing +log4j.logger.com.att.eelf.audit=DEBUG, audit +log4j.additivity.com.att.eelf.audit=false + +#Metric logger routing +log4j.logger.com.att.eelf.metrics=DEBUG, metric +log4j.additivity.com.att.eelf.metrics=false + +#Performance logger routing +log4j.logger.com.att.eelf.perf=DEBUG, metric +log4j.additivity.com.att.eelf.perf=false + +#Server logger routing +log4j.logger.com.att.eelf.server=DEBUG, debug +log4j.additivity.com.att.eelf.server=false + +#Policy logger routing +log4j.logger.com.att.eelf.policy=DEBUG, debug +log4j.additivity.com.att.eelf.policy=false + +#Error logger routing +log4j.logger.com.att.eelf.error=DEBUG, error +log4j.additivity.com.att.eelf.error=false + +#Debug logger routing +log4j.logger.com.att.eelf.debug=DEBUG, debug +log4j.additivity.com.att.eelf.debug=false diff --git a/kubernetes/sdnc/resources/geo/bin/sdnc.cluster b/kubernetes/sdnc/resources/geo/bin/sdnc.cluster new file mode 100755 index 0000000000..d59718fa27 --- /dev/null +++ b/kubernetes/sdnc/resources/geo/bin/sdnc.cluster @@ -0,0 +1,52 @@ +#!/bin/bash + +OOM_HOME=${OOM_HOME:-$HOME} + +if ! [ "$(command -v jq)" ]; then + echo "Error: jq is not installed." + echo "use: sudo apt install jq" + exit 1 +fi + +IS_PRIMARY_CLUSTER=`./sdnc.isPrimaryCluster` + +case $IS_PRIMARY_CLUSTER in +true) + MEMBER_NUMBER=1 + ;; +false) + MEMBER_NUMBER=4 + ;; +*) + echo "Error: isPrimaryODLCluster not defined in ${OOM_HOME}/oom/kubernetes/sdnc/values.yaml." + exit 1 + ;; +esac + +for pod_number in {0..2} +do + curl "http://localhost:3026$((${pod_number} + 1))" > /dev/null 2>&1 + if [ "$?" = "7" ]; then + continue + fi + + VOTING_RESULT=`curl -u admin:admin -H "Content-Type: application/json" -H "Accept: application/json" -X GET http://localhost:3026$((${pod_number} + 1))/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-$((${MEMBER_NUMBER} + ${pod_number}))-shard-default-config,type=DistributedConfigDatastore 2>/dev/null | jq '.value.Voting'` + + case $VOTING_RESULT in + true) + echo "active" + exit 0 + ;; + false) + echo "standby" + exit 0 + ;; + *) + echo "Error: Voting status could not be determined." + exit 1 + ;; + esac +done + +echo "Error: Voting status could not be determined." +exit 1 diff --git a/kubernetes/sdnc/resources/geo/bin/sdnc.failover b/kubernetes/sdnc/resources/geo/bin/sdnc.failover new file mode 100755 index 0000000000..961a5cb5cf --- /dev/null +++ b/kubernetes/sdnc/resources/geo/bin/sdnc.failover @@ -0,0 +1,65 @@ +#!/usr/bin/perl -s
+use strict;
+
+my $keyWord_standby = "standby";
+my $keyWord_active = "active";
+my $keyWord_true = "true";
+my $keyWord_false = "false";
+my $keyWord_success = "success";
+my $keyWord_failure = "failure";
+my $file_cluster = "sdnc.cluster";
+my $file_switchVoting = "switchVoting.sh";
+my $file_isPrimaryCluster = "sdnc.isPrimaryCluster";
+
+if ((!(-e $file_cluster)) || (!(-e $file_switchVoting))|| (!(-e $file_isPrimaryCluster))) {
+ # file not exist.
+ print qq|$keyWord_failure\n|;
+ exit 1;
+}
+
+my $roleRes = qx("./$file_isPrimaryCluster");
+my $clusterRes = qx("./$file_cluster");
+
+if ( index ($clusterRes, $keyWord_standby) != -1) {
+ # We are at standby side
+ if ( index ($roleRes, $keyWord_false) != -1) {
+ # We are at Secondary cluster
+ sub_activate_secondary();
+ } elsif ( index ($roleRes, $keyWord_true) != -1) {
+ # We are at Primary cluster
+ sub_activate_primary();
+ } else {
+ # Error.
+ print qq|$keyWord_failure\n|;
+ exit 1;
+ }
+} elsif ( index ($clusterRes, $keyWord_active) != -1) {
+ # We are at active side
+ if ( index ($roleRes, $keyWord_false) != -1) {
+ # We are at Secondary cluster
+ sub_activate_primary();
+ } elsif ( index ($roleRes, $keyWord_true) != -1) {
+ # We are at Primary cluster
+ sub_activate_secondary();
+ } else {
+ # Error.
+ print qq|$keyWord_failure\n|;
+ exit 1;
+ }
+} else {
+ # Error.
+ print qq|$keyWord_failure\n|;
+ exit 1;
+}
+
+sub sub_activate_primary {
+ #Switching voting in Primary cluster
+ system("./$file_switchVoting primary");
+ print qq|$keyWord_success\n|;
+}
+
+sub sub_activate_secondary {
+ #Switching voting in secondary cluster
+ system("./$file_switchVoting secondary");
+ print qq|$keyWord_success\n|;
+}
diff --git a/kubernetes/sdnc/resources/geo/bin/sdnc.isPrimaryCluster b/kubernetes/sdnc/resources/geo/bin/sdnc.isPrimaryCluster new file mode 100755 index 0000000000..8e816c4153 --- /dev/null +++ b/kubernetes/sdnc/resources/geo/bin/sdnc.isPrimaryCluster @@ -0,0 +1,19 @@ +#!/bin/bash + +OOM_HOME=${OOM_HOME:-$HOME} + +IS_PRIMARY_CLUSTER=`awk '/isPrimaryODLCluster/ {print $2}' ${OOM_HOME}/oom/kubernetes/sdnc/values.yaml` + +if [ "$?" -eq "2" ]; then + echo "Make sure you are ubuntu user." >&2 +fi + +case $IS_PRIMARY_CLUSTER in +true|false) + echo $IS_PRIMARY_CLUSTER + ;; +*) + echo "NOT CLUSTERED" + exit 1 + ;; +esac diff --git a/kubernetes/sdnc/resources/geo/bin/switchVoting.sh b/kubernetes/sdnc/resources/geo/bin/switchVoting.sh new file mode 100755 index 0000000000..05d1e0fd68 --- /dev/null +++ b/kubernetes/sdnc/resources/geo/bin/switchVoting.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +function usage() +{ + echo usage: switchVoting.sh primary\|secondary + exit 1 +} + +if [ $# -ne 1 ]; then + usage +fi + +partition=$1 + +if [ "$partition" == "primary" ]; then + curl -u admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:30202/restconf/operations/cluster-admin:change-member-voting-states-for-all-shards -d '{ "input" : { "member-voting-state" : [ { "member-name" : "member-1", "voting":true}, { "member-name" : "member-2", "voting":true}, { "member-name" : "member-3", "voting":true},{ "member-name" : "member-4", "voting":false},{ "member-name" : "member-5", "voting":false},{ "member-name" : "member-6", "voting":false}] } }' > switch_voting_resp.json 2>/dev/null + echo "" >> switch_voting_resp.json + exit 0 +fi + +if [ "$partition" == "secondary" ]; then + curl -u admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:30202/restconf/operations/cluster-admin:change-member-voting-states-for-all-shards -d '{ "input" : { "member-voting-state" : [ { "member-name" : "member-1", "voting":false}, { "member-name" : "member-2", "voting":false}, { "member-name" : "member-3", "voting":false},{ "member-name" : "member-4", "voting":true},{ "member-name" : "member-5", "voting":true},{ "member-name" : "member-6", "voting":true}] } }' > switch_voting_resp.json 2>/dev/null + echo "" >> switch_voting_resp.json + exit 0 +fi + +usage diff --git a/kubernetes/sdnc/templates/all-services.yaml b/kubernetes/sdnc/templates/all-services.yaml deleted file mode 100644 index 14d7b01a59..0000000000 --- a/kubernetes/sdnc/templates/all-services.yaml +++ /dev/null @@ -1,200 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableSdncSdncDbhost }} -apiVersion: v1 -kind: Service -metadata: - name: dbhost - namespace: "{{ .Values.nsPrefix }}" - labels: - app: sdnc-dbhost -spec: - ports: - - port: 3306 - selector: - app: sdnc-dbhost - clusterIP: None ---- -# Client service for connecting to any MySQL instance for reads. -# Only master: sdnc-dbhost-0 accepts the write request. -apiVersion: v1 -kind: Service -metadata: - name: dbhost-read - namespace: "{{ .Values.nsPrefix }}" - labels: - app: sdnc-dbhost -spec: - ports: - - name: sdnc-dbhost - port: 3306 - selector: - app: sdnc-dbhost ---- -apiVersion: v1 -kind: Service -metadata: - name: sdnctldb01 - namespace: "{{ .Values.nsPrefix }}" - labels: - app: sdnc-dbhost -spec: - ports: - - port: 3306 - selector: - app: sdnc-dbhost - clusterIP: None ---- -apiVersion: v1 -kind: Service -metadata: - name: sdnctldb02 - namespace: "{{ .Values.nsPrefix }}" - labels: - app: sdnc-dbhost -spec: - ports: - - port: 3306 - selector: - app: sdnc-dbhost - clusterIP: None -#{{ end }} -#{{ if not .Values.disableSdncSdnc }} ---- -apiVersion: v1 -kind: Service -metadata: - name: sdnc-dgbuilder - namespace: "{{ .Values.nsPrefix }}" - labels: - app: sdnc-dgbuilder -spec: - ports: - - name: "sdnc-dgbuilder-port" - port: 3000 - targetPort: 3100 - nodePort: {{ .Values.nodePortPrefix }}03 - type: NodePort - selector: - app: sdnc-dgbuilder ---- -apiVersion: v1 -kind: Service -metadata: - name: sdnhost - namespace: "{{ .Values.nsPrefix }}" - labels: - app: sdnc - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "sdnc", - "version": "v1", - "url": "/", - "protocol": "REST", - "port": "8282", - "visualRange":"1", - "path": "/" - } - ]' -spec: - ports: - - name: "sdnc-port-8181" - port: 8282 - targetPort: 8181 - nodePort: {{ .Values.nodePortPrefix }}02 - - name: "sdnc-port-8101" - port: 8201 - targetPort: 8101 - nodePort: {{ .Values.nodePortPrefix }}08 - - name: "sdnc-jolokia-port-8080" - port: 8280 - targetPort: 8080 - nodePort: {{ .Values.nodePortPrefix }}46 - type: NodePort - selector: - app: sdnc ---- -kind: Service -apiVersion: v1 -metadata: - name: nfs-provisioner - namespace: "{{ .Values.nsPrefix }}" - labels: - app: nfs-provisioner -spec: - ports: - - name: nfs - port: 2049 - - name: mountd - port: 20048 - - name: rpcbind - port: 111 - - name: rpcbind-udp - port: 111 - protocol: UDP - selector: - app: nfs-provisioner -#{{ end }} -#{{ if not .Values.disableSdncSdncPortal }} ---- -apiVersion: v1 -kind: Service -metadata: - name: sdnc-portal - namespace: "{{ .Values.nsPrefix }}" - labels: - app: sdnc-portal - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "sdnc-portal", - "version": "v1", - "url": "/", - "protocol": "UI", - "port": "8843", - "visualRange":"0|1" - } - ]' -spec: - ports: - - name: "sdnc-portal-port" - port: 8843 - nodePort: {{ .Values.nodePortPrefix }}01 - type: NodePort - selector: - app: sdnc-portal -#{{ end }} -#{{ if .Values.enableODLCluster }} ---- -apiVersion: v1 -kind: Service -metadata: - name: sdnhost-cluster - namespace: "{{ .Values.nsPrefix }}" - labels: - app: sdnc - annotations: - service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" -spec: - ports: - - name: "sdnc-cluster-port" - port: 2550 - clusterIP: None - selector: - app: sdnc - sessionAffinity: None - type: ClusterIP -#{{ end }} diff --git a/kubernetes/sdnc/templates/configmap.yaml b/kubernetes/sdnc/templates/configmap.yaml new file mode 100644 index 0000000000..54de05cd61 --- /dev/null +++ b/kubernetes/sdnc/templates/configmap.yaml @@ -0,0 +1,77 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-filebeat-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/filebeat/log4j/*").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-log-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/log/*").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-startodl + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/bin/startODL.sh").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-installsdncdb + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/bin/installSdncDb.sh").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-aaiclient-properties + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/conf/aaiclient.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-dblib-properties + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/conf/dblib.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-svclogic-config + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/conf/svclogic.properties").AsConfig . | indent 2 }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-onap-sdnc-svclogic-config + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/conf/svclogic.properties").AsConfig . | indent 2 }} diff --git a/kubernetes/sdnc/templates/db-statefulset.yaml b/kubernetes/sdnc/templates/db-statefulset.yaml deleted file mode 100644 index 29d592a6a7..0000000000 --- a/kubernetes/sdnc/templates/db-statefulset.yaml +++ /dev/null @@ -1,220 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableSdncSdncDbhost }} -apiVersion: apps/v1beta1 -kind: StatefulSet -metadata: - name: sdnc-dbhost - namespace: "{{ .Values.nsPrefix }}" -spec: - serviceName: "dbhost" - replicas: {{ .Values.numberOfDbReplicas }} - selector: - matchLabels: - app: sdnc-dbhost - template: - metadata: - labels: - app: sdnc-dbhost - name: sdnc-dbhost - spec: - initContainers: - - name: init-mysql - image: {{ .Values.image.mysql }} - imagePullPolicy: {{ .Values.pullPolicy }} - command: - - bash - - "-c" - - | - set -ex - # Generate mysql server-id from pod ordinal index. - [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 - ordinal=${BASH_REMATCH[1]} - echo BASH_REMATCH=${BASH_REMATCH} - echo [mysqld] > /mnt/conf.d/server-id.cnf - # Add an offset to avoid reserved server-id=0 value. - echo server-id=$((100 + $ordinal)) >> /mnt/conf.d/server-id.cnf - # Copy appropriate conf.d files from config-map to emptyDir. - if [[ $ordinal -eq 0 ]]; then - cp /mnt/config-map/master.cnf /mnt/conf.d/ - else - cp /mnt/config-map/slave.cnf /mnt/conf.d/ - fi - volumeMounts: - - name: conf - mountPath: /mnt/conf.d - - name: config-map - mountPath: /mnt/config-map - - name: clone-mysql - image: {{ .Values.image.xtrabackup }} - env: - - name: MYSQL_ROOT_PASSWORD - value: openECOMP1.0 - command: - - bash - - "-c" - - | - set -ex - # Skip the clone if data already exists. - [[ -d /var/lib/mysql/mysql ]] && exit 0 - # Skip the clone on master (ordinal index 0). - [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 - ordinal=${BASH_REMATCH[1]} - echo ${BASH_REMATCH} - [[ $ordinal -eq 0 ]] && exit 0 - # Clone data from previous peer. - ncat --recv-only sdnc-dbhost-$(($ordinal-1)).dbhost.{{ .Values.nsPrefix }} 3307 | xbstream -x -C /var/lib/mysql - # Prepare the backup. - xtrabackup --user=root --password=$MYSQL_ROOT_PASSWORD --prepare --target-dir=/var/lib/mysql - ls -l /var/lib/mysql - volumeMounts: - - name: sdnc-data - mountPath: /var/lib/mysql -#{{ if not .Values.disableNfsProvisioner }} - subPath: mysql -#{{ end }} - - name: conf - mountPath: /etc/mysql/conf.d - containers: - - env: - - name: MYSQL_ROOT_PASSWORD - value: openECOMP1.0 - - name: MYSQL_ROOT_HOST - value: '%' - - name: MYSQL_ALLOW_EMPTY_PASSWORD - value: "0" - image: {{ .Values.image.mysql }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: sdnc-db-container - volumeMounts: - - mountPath: /var/lib/mysql - name: sdnc-data -#{{ if not .Values.disableNfsProvisioner }} - subPath: mysql -#{{ end }} - - name: conf - mountPath: /etc/mysql/conf.d - ports: - - containerPort: 3306 - resources: - requests: - cpu: 500m - memory: 1Gi - livenessProbe: - exec: - command: ["mysqladmin", "ping"] - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - readinessProbe: - tcpSocket: - port: 3306 - initialDelaySeconds: 5 - periodSeconds: 10 - - name: xtrabackup - image: {{ .Values.image.xtrabackup }} - env: - - name: MYSQL_ROOT_PASSWORD - value: openECOMP1.0 - ports: - - name: xtrabackup - containerPort: 3307 - command: - - bash - - "-c" - - | - set -ex - cd /var/lib/mysql - ls -l - # Determine binlog position of cloned data, if any. - if [[ -f xtrabackup_slave_info ]]; then - echo "Inside xtrabackup_slave_info" - # XtraBackup already generated a partial "CHANGE MASTER TO" query - # because we're cloning from an existing slave. - mv xtrabackup_slave_info change_master_to.sql.in - # Ignore xtrabackup_binlog_info in this case (it's useless). - rm -f xtrabackup_binlog_info - elif [[ -f xtrabackup_binlog_info ]]; then - echo "Inside xtrabackup_binlog_info" - # We're cloning directly from master. Parse binlog position. - [[ `cat xtrabackup_binlog_info` =~ ^(.*?)[[:space:]]+(.*?)$ ]] || exit 1 - rm xtrabackup_binlog_info - echo "CHANGE MASTER TO MASTER_LOG_FILE='${BASH_REMATCH[1]}',\ - MASTER_LOG_POS=${BASH_REMATCH[2]}" > change_master_to.sql.in - fi - - # Check if we need to complete a clone by starting replication. - if [[ -f change_master_to.sql.in ]]; then - echo "Waiting for mysqld to be ready (accepting connections)" - [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 - ordinal=${BASH_REMATCH[1]} - echo $ordinal - until mysql --user=root --password=$MYSQL_ROOT_PASSWORD -h 127.0.0.1 -e "SELECT 1"; do sleep 1; done - - echo "Initializing replication from clone position" - # In case of container restart, attempt this at-most-once. - mv change_master_to.sql.in change_master_to.sql.orig - mysql --user=root --password=$MYSQL_ROOT_PASSWORD -h 127.0.0.1 <<EOF - $(<change_master_to.sql.orig), - MASTER_HOST="sdnc-dbhost-0.dbhost.{{ .Values.nsPrefix }}", - MASTER_USER="root", - MASTER_PASSWORD="$MYSQL_ROOT_PASSWORD", - MASTER_CONNECT_RETRY=10; - START SLAVE; - EOF - fi - - # Start a server to send backups when requested by peers. - exec ncat --listen --keep-open --send-only --max-conns=1 3307 -c \ - "xtrabackup --user=root --password=$MYSQL_ROOT_PASSWORD --backup --slave-info --stream=xbstream --host=127.0.0.1" - volumeMounts: - - name: sdnc-data - mountPath: /var/lib/mysql -#{{ if not .Values.disableNfsProvisioner }} - subPath: mysql -#{{ end }} - - name: conf - mountPath: /etc/mysql/conf.d - resources: - requests: - cpu: 100m - memory: 100Mi - volumes: - - name: conf - emptyDir: {} - - name: config-map - configMap: - name: sdnc-mysql - - name: localtime - hostPath: - path: /etc/localtime -#{{ if .Values.disableNfsProvisioner }} - - name: sdnc-data - hostPath: - path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/sdnc/data/mysql -#{{ else }} - volumeClaimTemplates: - - metadata: - name: sdnc-data - annotations: - volume.beta.kubernetes.io/storage-class: "{{ .Values.nsPrefix }}-sdnc-data" - spec: - accessModes: ["ReadWriteMany"] - resources: - requests: - storage: 1Gi -#{{ end }} -#{{ end }} - diff --git a/kubernetes/sdnc/templates/dgbuilder-deployment.yaml b/kubernetes/sdnc/templates/dgbuilder-deployment.yaml deleted file mode 100644 index 62f1d004d0..0000000000 --- a/kubernetes/sdnc/templates/dgbuilder-deployment.yaml +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableSdncSdncDgbuilder }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: sdnc-dgbuilder - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.dgbuilderReplicas }} - selector: - matchLabels: - app: sdnc-dgbuilder - template: - metadata: - labels: - app: sdnc-dgbuilder - name: sdnc-dgbuilder - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - sdnc-db-container - - --container-name - - sdnc-controller-container - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: sdnc-dgbuilder-readiness - containers: - - command: - - /bin/bash - - -c - - cd /opt/onap/sdnc/dgbuilder/ && ./start.sh sdnc1.0 && wait - env: - - name: MYSQL_ROOT_PASSWORD - value: openECOMP1.0 - - name: SDNC_CONFIG_DIR - value: /opt/onap/sdnc/data/properties - image: {{ .Values.image.dgbuilderSdnc }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: sdnc-dgbuilder-container - ports: - - containerPort: 3100 - readinessProbe: - tcpSocket: - port: 3100 - initialDelaySeconds: 5 - periodSeconds: 10 - volumeMounts: - - name: localtime - mountPath: /etc/localtime - readOnly: true - restartPolicy: Always - volumes: - - name: localtime - hostPath: - path: /etc/localtime - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/sdnc/templates/nfs-provisoner-deployment.yaml b/kubernetes/sdnc/templates/nfs-provisoner-deployment.yaml deleted file mode 100644 index 12713a1dbb..0000000000 --- a/kubernetes/sdnc/templates/nfs-provisoner-deployment.yaml +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableSdncSdncDbhost }} -#{{ if not .Values.disableNfsProvisioner }} -kind: Deployment -apiVersion: extensions/v1beta1 -metadata: - name: sdnc-nfs-provisioner - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.nfsReplicas }} - strategy: - type: Recreate - template: - metadata: - labels: - app: nfs-provisioner - name: sdnc-nfs-provisioner - spec: - containers: - - name: nfs-provisioner - image: quay.io/kubernetes_incubator/nfs-provisioner:v1.0.8 - ports: - - name: nfs - containerPort: 2049 - - name: mountd - containerPort: 20048 - - name: rpcbind - containerPort: 111 - - name: rpcbind-udp - containerPort: 111 - protocol: UDP - securityContext: - capabilities: - add: - - DAC_READ_SEARCH - - SYS_RESOURCE - args: - - "-provisioner=sdnc/nfs" - env: - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: SERVICE_NAME - value: nfs-provisioner - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - imagePullPolicy: "IfNotPresent" - volumeMounts: - - name: export-volume - mountPath: /export - volumes: - - name: export-volume - hostPath: - path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/sdnc/data -#{{ end }} -#{{ end }} diff --git a/kubernetes/sdnc/templates/sdnc-statefulset.yaml b/kubernetes/sdnc/templates/sdnc-statefulset.yaml deleted file mode 100644 index 3b07896462..0000000000 --- a/kubernetes/sdnc/templates/sdnc-statefulset.yaml +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableSdncSdnc }} -apiVersion: apps/v1beta1 -kind: StatefulSet -metadata: - name: sdnc - namespace: "{{ .Values.nsPrefix }}" -spec: - serviceName: "sdnhost-cluster" - replicas: {{ .Values.numberOfODLReplicas }} - podManagementPolicy: Parallel - selector: - matchLabels: - app: sdnc - template: - metadata: - labels: - app: sdnc - name: sdnc - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - sdnc-db-container - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: sdnc-readiness - containers: - - command: - - bash - - "-c" - - | - sed -i 's/dbhost/sdnc-dbhost-0.dbhost.{{ .Values.nsPrefix }}.svc.cluster.local/g' /opt/onap/sdnc/data/properties/svclogic.properties - sed -i 's/^\(org.onap.ccsdk.sli.jdbc.hosts=\).*/\1sdnc-dbhost-0.dbhost.{{ .Values.nsPrefix }}.svc.cluster.local/' /opt/onap/sdnc/data/properties/dblib.properties - /opt/onap/sdnc/bin/startODL.sh - env: - - name: MYSQL_ROOT_PASSWORD - value: openECOMP1.0 - - name: SDNC_CONFIG_DIR - value: /opt/onap/sdnc/data/properties - - name: ENABLE_ODL_CLUSTER - value: "{{ .Values.enableODLCluster }}" - - name: SDNC_REPLICAS - value: "{{ .Values.numberOfODLReplicas }}" - image: {{ .Values.image.sdnc }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: sdnc-controller-container - volumeMounts: - - mountPath: /etc/localtime - name: localtime - readOnly: true - - mountPath: /opt/onap/sdnc/data/properties/admportal.json - name: sdnc-conf - subPath: admportal.json - - mountPath: /opt/onap/sdnc/data/properties/aaiclient.properties - name: sdnc-conf - subPath: aaiclient.properties - - mountPath: /var/log/onap - name: sdnc-logs - - mountPath: /opt/opendaylight/current/etc/org.ops4j.pax.logging.cfg - name: sdnc-logging-cfg-config - subPath: org.ops4j.pax.logging.cfg - ports: - - containerPort: 8181 - - containerPort: 8101 - - containerPort: 2550 - - containerPort: 8080 - readinessProbe: - tcpSocket: - port: 8181 - initialDelaySeconds: 5 - periodSeconds: 10 - - image: {{ .Values.image.filebeat }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: filebeat-onap - volumeMounts: - - mountPath: /usr/share/filebeat/filebeat.yml - name: filebeat-conf - subPath: filebeat.yml - - mountPath: /var/log/onap - name: sdnc-logs - - mountPath: /usr/share/filebeat/data - name: sdnc-data-filebeat - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: filebeat-conf - configMap: - name: sdnc-log-configmap - - name: sdnc-logging-cfg-config - configMap: - name: sdnc-logging-cfg-configmap - - name: sdnc-logs - emptyDir: {} - - name: sdnc-data-filebeat - emptyDir: {} - - name: sdnc-conf - configMap: - name: sdnc-conf-configmap - items: - - key: admportal.json - path: admportal.json - mode: 0755 - - key: aaiclient.properties - path: aaiclient.properties - mode: 0755 - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/sdnc/templates/secrets.yaml b/kubernetes/sdnc/templates/secrets.yaml new file mode 100644 index 0000000000..345c194d96 --- /dev/null +++ b/kubernetes/sdnc/templates/secrets.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.fullname" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +type: Opaque +data: + db-root-password: {{ .Values.config.dbRootPassword | b64enc | quote }} diff --git a/kubernetes/sdnc/templates/service.yaml b/kubernetes/sdnc/templates/service.yaml new file mode 100644 index 0000000000..487368e721 --- /dev/null +++ b/kubernetes/sdnc/templates/service.yaml @@ -0,0 +1,153 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "sdnc", + "version": "v1", + "url": "/", + "protocol": "REST", + "port": "{{ .Values.service.externalPort }}", + "visualRange":"1", + "path": "/" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: "{{ .Values.service.name }}-8282" + - port: {{ .Values.service.externalPort2 }} + targetPort: {{ .Values.service.internalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + name: "{{ .Values.service.name }}-8202" + - port: {{ .Values.service.externalPort3 }} + targetPort: {{ .Values.service.internalPort3 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }} + name: "{{ .Values.service.name }}-8280" + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }}-cluster + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + annotations: + service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" +spec: + ports: + - name: "{{ .Values.service.name }}-cluster-port" + port: {{ .Values.service.clusterPort }} + clusterIP: None + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + sessionAffinity: None + type: ClusterIP + +{{ if .Values.geoEnabled }} +--- +apiVersion: v1 +kind: Service +metadata: + name: sdnhost-{{ include "common.fullname" . }}-0 + namespace: {{ .Release.Namespace }} + labels: + statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-0 +spec: + ports: + - name: {{ include "common.fullname" . }}-0-port-{{ .Values.service.internalPort4 }} + port: {{ .Values.service.clusterPort2 }} + targetPort: {{ .Values.service.internalPort4 }} + nodePort: {{ .Values.nodePortPrefix }}{{ .Values.service.geoNodePort4 }} + - name: {{ include "common.fullname" . }}-0-port-{{ .Values.service.internalPort }} + port: {{ .Values.service.clusterPort3 }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.nodePortPrefix }}{{ .Values.service.geoNodePort1 }} + type: NodePort + selector: + statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-0 +{{ end }} +{{ if .Values.geoEnabled }} +--- +apiVersion: v1 +kind: Service +metadata: + name: sdnhost-{{ include "common.fullname" . }}-1 + namespace: {{ .Release.Namespace }} + labels: + statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-1 +spec: + ports: + - name: {{ include "common.fullname" . }}-1-port-{{ .Values.service.internalPort4 }} + port: {{ .Values.service.clusterPort2 }} + targetPort: {{ .Values.service.internalPort4 }} + nodePort: {{ .Values.nodePortPrefix }}{{ .Values.service.geoNodePort5 }} + - name: {{ include "common.fullname" . }}-1-port-{{ .Values.service.internalPort }} + port: {{ .Values.service.clusterPort3 }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.nodePortPrefix }}{{ .Values.service.geoNodePort2 }} + type: NodePort + selector: + statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-1 +{{ end }} +{{ if .Values.geoEnabled }} +--- +apiVersion: v1 +kind: Service +metadata: + name: sdnhost-{{ include "common.fullname" . }}-2 + namespace: {{ .Release.Namespace }} + labels: + statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-2 +spec: + ports: + - name: {{ include "common.fullname" . }}-2-port-{{ .Values.service.internalPort4 }} + port: {{ .Values.service.clusterPort2 }} + targetPort: {{ .Values.service.internalPort4 }} + nodePort: {{ .Values.nodePortPrefix }}{{ .Values.service.geoNodePort6 }} + - name: {{ include "common.fullname" . }}-2-port-{{ .Values.service.internalPort }} + port: {{ .Values.service.clusterPort3 }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.nodePortPrefix }}{{ .Values.service.geoNodePort3 }} + type: NodePort + selector: + statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-2 +--- +{{ end }} + diff --git a/kubernetes/sdnc/templates/statefulset.yaml b/kubernetes/sdnc/templates/statefulset.yaml new file mode 100644 index 0000000000..8b4055e1df --- /dev/null +++ b/kubernetes/sdnc/templates/statefulset.yaml @@ -0,0 +1,188 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apps/v1beta1 +kind: StatefulSet +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + serviceName: "{{ .Values.service.name }}-cluster" + replicas: {{ .Values.replicaCount }} + podManagementPolicy: Parallel + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: + - command: + - /root/ready.py + args: + - --container-name + - {{ .Values.mysql.nameOverride }} + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + command: ["/bin/bash"] + args: ["-c", "/opt/sdnc/bin/startODL.sh"] + ports: + - containerPort: {{ .Values.service.internalPort }} + - containerPort: {{ .Values.service.internalPort2 }} + - containerPort: {{ .Values.service.internalPort3 }} + - containerPort: {{ .Values.service.clusterPort }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "common.fullname" . }} + key: db-root-password + - name: SDNC_CONFIG_DIR + value: "{{ .Values.config.configDir }}" + - name: ENABLE_ODL_CLUSTER + value: "{{ .Values.config.enableClustering }}" + - name: SDNC_REPLICAS + value: "{{ .Values.replicaCount }}" + - name: MYSQL_HOST + value: "{{.Values.mysql.service.name}}.{{.Release.Namespace}}" + volumeMounts: + - mountPath: /etc/localtime + name: localtime + readOnly: true + - mountPath: /opt/opendaylight/current/etc/org.ops4j.pax.logging.cfg + name: sdnc-logging-cfg-config + subPath: org.ops4j.pax.logging.cfg + - mountPath: /opt/onap/sdnc/bin/startODL.sh + name: startodl + subPath: startODL.sh + - mountPath: /opt/onap/sdnc/bin/installSdncDb.sh + name: installsdncdb + subPath: installSdncDb.sh + - mountPath: /opt/onap/sdnc/data/properties/aaiclient.properties + name: aaiclient-conf + subPath: aaiclient.properties + - mountPath: /opt/onap/sdnc/data/properties/dblib.properties + name: sdnc-dblib-properties + subPath: dblib.properties + - mountPath: /opt/onap/sdnc/data/properties/svclogic.properties + name: sdnc-svclogic-config + subPath: svclogic.properties + - mountPath: /opt/onap/sdnc/svclogic/config/svclogic.properties + name: onap-sdnc-svclogic-config + subPath: svclogic.properties + - mountPath: /var/log/onap + name: logs + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - mountPath: /usr/share/filebeat/filebeat.yml + name: filebeat-conf + subPath: filebeat.yml + - mountPath: /var/log/onap + name: logs + - mountPath: /usr/share/filebeat/data + name: data-filebeat + volumes: + - name: localtime + hostPath: + path: /etc/localtime + - name: logs + emptyDir: {} + - name: data-filebeat + emptyDir: {} + - name: filebeat-conf + configMap: + name: {{ include "common.fullname" . }}-filebeat-configmap + - name: sdnc-logging-cfg-config + configMap: + name: {{ include "common.fullname" . }}-log-configmap + - name: startodl + configMap: + name: {{ include "common.fullname" . }}-startodl + items: + - key: startODL.sh + path: startODL.sh + mode: 0755 + - name: installsdncdb + configMap: + name: {{ include "common.fullname" . }}-installsdncdb + items: + - key: installSdncDb.sh + path: installSdncDb.sh + mode: 0755 + - name: aaiclient-conf + configMap: + name: {{ include "common.fullname" . }}-aaiclient-properties + items: + - key: aaiclient.properties + path: aaiclient.properties + mode: 0644 + - name: sdnc-dblib-properties + configMap: + name: {{ include "common.fullname" . }}-dblib-properties + items: + - key: dblib.properties + path: dblib.properties + mode: 0644 + - name: sdnc-svclogic-config + configMap: + name: {{ include "common.fullname" . }}-svclogic-config + items: + - key: svclogic.properties + path: svclogic.properties + mode: 0644 + - name: onap-sdnc-svclogic-config + configMap: + name: {{ include "common.fullname" . }}-onap-sdnc-svclogic-config + items: + - key: svclogic.properties + path: svclogic.properties + mode: 0644 + + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/sdnc/templates/web-deployment.yaml b/kubernetes/sdnc/templates/web-deployment.yaml deleted file mode 100644 index ef469ac523..0000000000 --- a/kubernetes/sdnc/templates/web-deployment.yaml +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableSdncSdncPortal }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: sdnc-portal - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.portalReplicas }} - selector: - matchLabels: - app: sdnc-portal - template: - metadata: - labels: - app: sdnc-portal - name: sdnc-portal - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - sdnc-db-container - - --container-name - - sdnc-controller-container - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: {{ .Values.image.readiness }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: sdnc-portal-readiness - containers: - - command: - - /bin/bash - - -c - - cd /opt/onap/sdnc/admportal/shell && ./start_portal.sh - env: - - name: MYSQL_ROOT_PASSWORD - value: openECOMP1.0 - - name: SDNC_CONFIG_DIR - value: /opt/onap/sdnc/data/properties - image: {{ .Values.image.admportalSdnc }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: sdnc-portal-container - ports: - - containerPort: 8843 - volumeMounts: - - name: localtime - mountPath: /etc/localtime - readOnly: true - - mountPath: /opt/onap/sdnc/data/properties/ - name: sdnc-conf - readinessProbe: - tcpSocket: - port: 8843 - initialDelaySeconds: 5 - periodSeconds: 10 - restartPolicy: Always - volumes: - - name: localtime - hostPath: - path: /etc/localtime - - name: sdnc-conf - configMap: - name: sdnc-conf-configmap - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/sdnc/values.yaml b/kubernetes/sdnc/values.yaml index 94029179db..6360d37e21 100644 --- a/kubernetes/sdnc/values.yaml +++ b/kubernetes/sdnc/values.yaml @@ -12,31 +12,143 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap -pullPolicy: IfNotPresent -nodePortPrefix: 302 -dataRootDir: /dockerdata-nfs -image: - readiness: oomk8s/readiness-check:1.1.0 - mysql: mysql:5.7 - xtrabackup: gcr.io/google-samples/xtrabackup:1.0 - dgbuilderSdnc: nexus3.onap.org:10001/onap/ccsdk-dgbuilder-image:v0.1.0 - sdnc: nexus3.onap.org:10001/onap/sdnc-image:v1.2.1 - admportalSdnc: nexus3.onap.org:10001/onap/admportal-sdnc-image:v1.2.1 - ueblistener: nexus3.onap.org:10001/onap/sdnc-ueb-listener-image:v1.2.1 - dmaaplistener: nexus3.onap.org:10001/onap/sdnc-dmaap-listener-image:v1.2.1 - filebeat: docker.elastic.co/beats/filebeat:5.5.0 -enableODLCluster: false -numberOfODLReplicas: 1 -numberOfDbReplicas: 1 -dgbuilderReplicas: 1 -dmaapReplicas: 1 -nfsReplicas: 1 -uebReplicas: 1 -portalReplicas: 1 -disableSdncSdncDgbuilder: false -disableSdncSdncPortal: false -disableNfsProvisioner: false +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repository: nexus3.onap.org:10001 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + persistence: + mountPath: /dockerdata-nfs + +################################################################# +# Application configuration defaults. +################################################################# +# application images +repository: nexus3.onap.org:10001 +pullPolicy: Always +image: onap/sdnc-image:1.3-STAGING-latest + +# flag to enable debugging - application support required +debugEnabled: false + +geoEnabled: false + +# application configuration config: + dbRootPassword: openECOMP1.0 + enableClustering: true + configDir: /opt/onap/sdnc/data/properties + dmaapTopic: SUCCESS logstashServiceName: log-ls logstashPort: 5044 + +# dependency / sub-chart configuration +dmaap-listener: + nameOverride: sdnc-dmaap-listener + config: + sdncChartName: sdnc + mysqlChartName: sdnc-db + configDir: /opt/onap/sdnc/data/properties + +ueb-listener: + nameOverride: sdnc-ueb-listener + config: + sdncChartName: sdnc + mysqlChartName: sdnc-db + configDir: /opt/onap/sdnc/data/properties + +sdnc-portal: + config: + sdncChartName: sdnc + mysqlChartName: sdnc-db + configDir: /opt/onap/sdnc/data/properties + dbRootPassword: openECOMP1.0 + +mysql: + nameOverride: sdnc-db + service: + name: sdnc-dbhost + internalPort: 3306 + nfsprovisionerPrefix: sdnc + sdnctlPrefix: sdnc + persistence: + mountSubPath: sdnc/data + enabled: true + disableNfsProvisioner: true + replicaCount: 1 + +dgbuilder: + nameOverride: sdnc-dgbuilder + config: + dbPodName: sdnc-db + dbServiceName: sdnc-dbhost + dbRootPassword: openECOMP1.0 + service: + nodePort: "03" + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: sdnc + #targetPort + internalPort: 8181 + internalPort2: 8101 + internalPort3: 8080 + internalPort4: 2550 + + #port + externalPort: 8282 + nodePort: "02" + + externalPort2: 8202 + nodePort2: "08" + + externalPort3: 8280 + nodePort3: 46 + + clusterPort: 2550 + clusterPort2: 2650 + clusterPort3: 2681 + + geoNodePort1: 61 + geoNodePort2: 62 + geoNodePort3: 63 + geoNodePort4: 64 + geoNodePort5: 65 + geoNodePort6: 66 + +ingress: + enabled: false + +resources: {} +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/so/resources/config/mso/mso-docker.json b/kubernetes/so/resources/config/mso/mso-docker.json index 17f01931a6..92988ba2f0 100755 --- a/kubernetes/so/resources/config/mso/mso-docker.json +++ b/kubernetes/so/resources/config/mso/mso-docker.json @@ -9,9 +9,9 @@ "mso-api-handler-infra-config": { - "bpelURL": "http://so:8080", + "bpelURL": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}", "bpelAuth": "786864AA53D0DCD881AED1154230C0C3058D58B9339D2EFB6193A0F0D82530E1", - "camundaURL": "http://so:8080", + "camundaURL": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}", "camundaAuth": "5119D1AF37F671FC01FFAD2151D93EFB2BBB503E879FD07104D024EDDF118FD1" }, @@ -23,7 +23,7 @@ "consumerGroup": "sdc-OpenSource-Env1", "consumerId": "sdc-COpenSource-Env11", "environmentName": "{{ .Values.config.dmaapTopic }}", - "asdcAddress": "sdc-be:8443", + "asdcAddress": "{{.Values.config.sdc.serviceName}}:{{.Values.config.sdc.port}}", "password": "613AF3483E695524F9857643B697FA51C7A9A0951094F53791485BF3458F9EADA37DBACCCEBD0CB242B85B4062745247", "pollingInterval": 60, "pollingTimeout": 60, @@ -38,20 +38,20 @@ { "sdncurls": [ - "http://sdnhost:8282/restconf/operations/L3SDN-API:", - "http://sdnhost:8282/restconf/config/L3SDN-API:", - "http://sdnhost:8282/restconf/operations/Firewall-API:", - "http://sdnhost:8282/restconf/config", - "http://sdnhost:8282/restconf/operations/VNF-API:", - "http://sdnhost:8282/restconf/operations/NBNC-API:", - "http://sdnhost:8282/restconf/operations/NORTHBOUND-API:service-topology-operation", - "http://sdnhost:8282/restconf/operations/GENERIC-RESOURCE-API:", - "http://sdnhost:8282/restconf/operations/VNFTOPOLOGYAIC-API:" + "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/L3SDN-API:", + "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/config/L3SDN-API:", + "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/Firewall-API:", + "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/config", + "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/VNF-API:", + "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/NBNC-API:", + "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/NORTHBOUND-API:service-topology-operation", + "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/GENERIC-RESOURCE-API:", + "http://{{.Values.config.sdnc.serviceName}}:{{.Values.config.sdnc.port}}/restconf/operations/VNFTOPOLOGYAIC-API:" ], - "bpelurl": "http://so:8080/mso/SDNCAdapterCallbackService", - "restbpelurl": "http://so:8080/mso/WorkflowMessage", - "myurl": "http://so:8080/adapters/rest/SDNCNotify", + "bpelurl": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/SDNCAdapterCallbackService", + "restbpelurl": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/WorkflowMessage", + "myurl": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/adapters/rest/SDNCNotify", "sdncauth": "263f7d5f944d4d0c76db74b4148bec67d0bc796a874bc0d2a2a12aae89a866aa69133f700f391f784719a37f6a68d29bf5a2fbae1dab0402db7788c800c5ba73", "bpelauth": "5119D1AF37F671FC01FFAD2151D93EFB2BBB503E879FD07104D024EDDF118FD1", "sdncconnecttime": "5000" @@ -92,7 +92,7 @@ "mso-workflow-message-adapter-config": { - "wmbpelurl": "http://so:8080/mso/WorkflowMessage", + "wmbpelurl": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/WorkflowMessage", "wmbpelauth": "5119D1AF37F671FC01FFAD2151D93EFB2BBB503E879FD07104D024EDDF118FD1" }, @@ -128,37 +128,37 @@ "versionIdL3ToHigherLayerDeleteBonding": "52dbec20-47aa-42e4-936c-331d8e350d44", "infraCustomerId": "21014aa2-526b-11e6-beb8-9e71128cae77", "sniroAuth": "test:testpwd", - "sniroEndpoint": "http://sniro-emulator:8080/sniro/api/v2/placement", + "sniroEndpoint": "http://{{.Values.config.sniro.serviceName}}:{{.Values.config.sniro.port}}/sniro/api/v2/placement", "sniroTimeout": "PT30M", - "serviceAgnosticSniroHost": "http://sniro-emulator:8080", + "serviceAgnosticSniroHost": "http://{{.Values.config.sniro.serviceName}}:{{.Values.config.sniro.port}}", "serviceAgnosticSniroEndpoint": "/sniro/api/v2/placement", - "aaiEndpoint": "https://aai-service:8443", + "aaiEndpoint": "https://{{.Values.config.aai.serviceName}}:{{.Values.config.aai.port}}", "aaiAuth": "2630606608347B7124C244AB0FE34F6F", "adaptersNamespace": "http://org.openecomp.mso", - "adaptersCompletemsoprocessEndpoint": "http://so:8080/CompleteMsoProcess", - "adaptersDbEndpoint": "http://so:8080/dbadapters/MsoRequestsDbAdapter", - "adaptersOpenecompDbEndpoint": "http://so:8080/dbadapters/RequestsDbAdapter", - "catalogDbEndpoint": "http://so:8080/ecomp/mso/catalog", - "adaptersSdncEndpoint": "http://so:8080/adapters/SDNCAdapter", - "adaptersSdncRestEndpoint": "http://so:8080/adapters/rest/v1/sdnc", - "adaptersTenantEndpoint": "http://so:8080/tenants/TenantAdapter", + "adaptersCompletemsoprocessEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/CompleteMsoProcess", + "adaptersDbEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/dbadapters/MsoRequestsDbAdapter", + "adaptersOpenecompDbEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/dbadapters/RequestsDbAdapter", + "catalogDbEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/ecomp/mso/catalog", + "adaptersSdncEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/adapters/SDNCAdapter", + "adaptersSdncRestEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/adapters/rest/v1/sdnc", + "adaptersTenantEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/tenants/TenantAdapter", "adaptersDbAuth": "6B0E6863FB8EE010AB6F191B3C0489437601E81DC7C86305CB92DB98AFC53D74", - "adaptersWorkflowMessageEndpoint": "http://so:8080/workflows/messages/message", - "workflowMessageEndpoint": "http://so:8080/mso/WorkflowMessage", - "workflowSdncAdapterCallback": "http://so:8080/mso/SDNCAdapterCallbackService", + "adaptersWorkflowMessageEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/workflows/messages/message", + "workflowMessageEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/WorkflowMessage", + "workflowSdncAdapterCallback": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/SDNCAdapterCallbackService", "workflowSdncReplicationDelay": "PT5S", "workflowAaiDistributionDelay": "PT30S", "msoKey": "07a7159d3bf51a0e53be7a8f89699be7", "adaptersPoAuth": "6B0E6863FB8EE010AB6F191B3C0489437601E81DC7C86305CB92DB98AFC53D74", "sdncTimeout": "PT5M", "rollback": "true", - "adaptersNetworkEndpoint": "http://so:8080/networks/NetworkAdapter", - "adaptersNetworkRestEndpoint": "http://so:8080/networks/rest/v1/networks", - "adaptersVnfAsyncEndpoint": "http://so:8080/vnfs/VnfAdapterAsync", - "workflowVnfAdapterDeleteCallback": "http://so:8080/mso/vnfAdapterNotify", - "workflowVnfAdapterCreateCallback": "http://so:8080/mso/vnfAdapterNotify", - "adaptersVnfRestEndpoint": "http://so:8080/vnfs/rest/v1/vnfs", - "workflowVnfAdapterRestCallback": "http://so:8080/mso/vnfAdapterRestNotify", + "adaptersNetworkEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/networks/NetworkAdapter", + "adaptersNetworkRestEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/networks/rest/v1/networks", + "adaptersVnfAsyncEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/vnfs/VnfAdapterAsync", + "workflowVnfAdapterDeleteCallback": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/vnfAdapterNotify", + "workflowVnfAdapterCreateCallback": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/vnfAdapterNotify", + "adaptersVnfRestEndpoint": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/vnfs/rest/v1/vnfs", + "workflowVnfAdapterRestCallback": "http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/vnfAdapterRestNotify", "poTimeout": "PT5M", "sdncFirewallYangModel": "http://com/att/svc/mis/firewall-lite-gui", "sdncFirewallYangModelVersion": "2015-05-15", @@ -179,4 +179,3 @@ "mso-config": "~> 1.0.0" } } - diff --git a/kubernetes/so/resources/config/mso/mso.bpmn.urn.properties b/kubernetes/so/resources/config/mso/mso.bpmn.urn.properties new file mode 100644 index 0000000000..81c21f6ef2 --- /dev/null +++ b/kubernetes/so/resources/config/mso/mso.bpmn.urn.properties @@ -0,0 +1,129 @@ +log.debug.asyncQueryAAICustomer=false +log.debug.ChangeFeatureActivateV1=false +log.debug.ChangeLayer3ServiceActivateV1=false +log.debug.CompleteMsoProcess=false +log.debug.commonCompletion=false +log.debug.CreateCustomerV1=false +log.debug.CreateTenantV1=false +log.debug.DeleteTenantV1=false +log.debug.deleteVCEV1=false +log.debug.getLayer3ServiceDetailsV1=false +log.debug.l3ToHigherLayerAddBonding=false +log.debug.l3ToHigherLayerDeleteBonding=false +mso.workflow.l3ToHigherLayerAddBonding.model.invariantid=50359538-066f-4a8d-807f-f2bc8eaa79dc +mso.workflow.l3ToHigherLayerAddBonding.model.versionid=52dbec20-47aa-42e4-936c-331d8e350d44 +log.debug.Layer3ServiceActivateV1=false +log.debug.QueryAAICustomer=false +log.debug.QueryTenantInfo=false +log.debug.sdncAdapter=false +log.debug.sendAOTSTicket=false +log.debug.vnfAdapterCreateV1=false +log.debug.vnfAdapterDeleteV1=false +log.debug.RemoveLayer3Service=false +log.debug.Layer3TestAndTurnUpV1=false +log.debug.vnfAdapterRollbackV1=false +log.debug.vnfAdapterQueryV1=false +log.debug.CreateVfModuleVolume=false +log.debug.DeleteVfModuleVolume=false +log.debug.UpdateVfModuleVolume=false +log.debug.createCinderVolumeV1=false +log.debug.deleteCinderVolumeV1=false +log.debug.updateCinderVolumeV1=false +log.debug.CreateNetworkV2=false +log.debug.DeleteNetworkV2=false +log.debug.UpdateNetworkV2=false +log.debug.deleteGenericVNFV1=false +log.debug.DisconnectLayer3Service=false +log.debug.CreateVfModuleVolumeInfraV1=false +log.debug.DeleteVfModuleVolumeInfraV1=false +log.debug.UpdateVfModuleVolumeInfraV1=false +log.debug.CreateServiceInstanceInfra=false +log.debug.DeleteServiceInstanceInfra=false +log.debug.CreateNetworkInstanceInfra=false +log.debug.DeleteNetworkInstanceInfra=false +log.debug.UpdateNetworkInstanceInfra=false +log.debug.UpdateNetworkInstance=false +log.debug.DoUpdateNetworkInstance=false +log.debug.DoUpdateNetworkInstanceRollback=false +log.debug.CreateNetworkInstance=false +log.debug.DoCreateNetworkInstance=false +log.debug.DoCreateNetworkInstanceRollback=false +log.debug.DeleteNetworkInstance=false +log.debug.DoDeleteNetworkInstance=false +log.debug.DoDeleteNetworkInstanceRollback=false +log.debug.CreateViprAtmService=false +log.debug.DeleteViprAtmService=false +log.debug.GenericGetService=false +log.debug.GenericPutService=false +log.debug.GenericDeleteService=false +log.debug.CreateServiceInstance=false +log.debug.DelServiceInstance=false +log.debug.RollbackServiceInstance=false +log.debug.DoCreateServiceInstanceRollback=false +log.debug.DoDeleteServiceInstance=false +log.debug.DoCreateVfModuleVolumeRollback=false +log.debug.DoDeleteVfModuleVolumeRollback=false +log.debug.DoDeleteVfModuleVolumeV1=false +log.debug.DoCreateVfModuleVolumeV1=false +log.debug.VPECreateVfModule=false +log.debug.DHVCreateService=false +log.debug.DHVActivateService=false +log.debug.SNIROAdapter= +mso.infra.customer.id=21014aa2-526b-11e6-beb8-9e71128cae77 +mso.sniro.auth=test:testpwd +mso.sniro.endpoint=http://{{.Values.config.sniro.serviceName}}:{{.Values.config.sniro.port}}/sniro/api/v2/placement +mso.sniro.timeout=PT30M +mso.service.agnostic.sniro.host=http://{{.Values.config.sniro.serviceName}}:{{.Values.config.sniro.port}} +mso.service.agnostic.sniro.endpoint=/sniro/api/v2/placement +mso.catalog.db.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/ecomp/mso/catalog +aai.endpoint=https://{{.Values.config.aai.serviceName}}:{{.Values.config.aai.port}} +mso.adapters.namespace=http://org.openecomp.mso +mso.adapters.completemsoprocess.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/CompleteMsoProcess +mso.adapters.db.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/dbadapters/MsoRequestsDbAdapter +mso.adapters.openecomp.db.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/dbadapters/RequestsDbAdapter +mso.adapters.sdnc.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/adapters/SDNCAdapter +mso.adapters.sdnc.rest.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/adapters/rest/v1/sdnc +mso.adapters.tenant.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/tenants/TenantAdapter +mso.adapters.workflow.message.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/workflows/messages/message +mso.adapters.db.auth=6B0E6863FB8EE010AB6F191B3C0489437601E81DC7C86305CB92DB98AFC53D74 +mso.workflow.message.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/WorkflowMessage +mso.workflow.sdncadapter.callback=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/SDNCAdapterCallbackService +mso.workflow.sdnc.replication.delay=PT5S +mso.workflow.aai.distribution.delay=PT30S +mso.msoKey=07a7159d3bf51a0e53be7a8f89699be7 +mso.adapters.po.auth=6B0E6863FB8EE010AB6F191B3C0489437601E81DC7C86305CB92DB98AFC53D74 +mso.sdnc.timeout=PT5M +mso.rollback=true +mso.adapters.network.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/networks/NetworkAdapter +mso.adapters.network.rest.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/networks/rest/v1/networks +mso.adapters.vnf-async.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/vnfs/VnfAdapterAsync +mso.workflow.vnfadapter.delete.callback=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/vnfAdapterNotify +mso.workflow.vnfadapter.create.callback=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/vnfAdapterNotify +mso.adapters.vnf.rest.endpoint=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/vnfs/rest/v1/vnfs +mso.po.timeout=PT5M +mso.sdnc.firewall.yang.model=http://com/att/svc/mis/firewall-lite-gui +mso.sdnc.firewall.yang.model.version=2015-05-15 +mso.sdnc.timeout.firewall.minutes=20 +mso.callbackRetryAttempts=30 +mso.callbackRetrySleepTime=1000 +mso.use.qualified.host=false +mso.workflow.l3ToHigherLayerAddBonding.model.name=WAN Bonding +mso.workflow.l3ToHigherLayerAddBonding.model.version=2.0 +mso.sitename=mso-docker +mso.workflow.global.default.aai.version=11 +mso.workflow.global.default.aai.namespace=http://org.openecomp.aai.inventory/ +mso.workflow.default.aai.v11.generic-vnf.uri=/aai/v11/network/generic-vnfs/generic-vnf +mso.workflow.default.aai.v11.vpn-binding.uri=/aai/v11/network/vpn-bindings/vpn-binding +mso.workflow.default.aai.v11.network-policy.uri=/aai/v11/network/network-policies/network-policy +mso.workflow.default.aai.v11.route-table-reference.uri=/aai/v11/network/route-table-references/route-table-reference +mso.workflow.default.aai.v11.vce.uri=/aai/v11/network/vces/vce +mso.workflow.default.aai.v11.l3-network.uri=/aai/v11/network/l3-networks/l3-network +mso.workflow.default.aai.v11.customer.uri=/aai/v11/business/customers/customer +mso.workflow.default.aai.v11.tenant.uri=/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/DFW/tenants/tenant +mso.workflow.default.aai.v11.generic-query.uri=/aai/v11/search/generic-query +#note the CloudRegionURI is used for volume-groups +mso.workflow.default.aai.v11.cloud-region.uri=/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner +mso.workflow.default.aai.v11.nodes-query.uri=/aai/v11/search/nodes-query +mso.workflow.default.aai.v11.generic-vnf.uri=/aai/v11/network/generic-vnfs/generic-vnf +mso.workflow.default.aai.v11.cloud-region.uri=/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner +aai.auth=2630606608347B7124C244AB0FE34F6F diff --git a/kubernetes/so/resources/config/mso/mso.workflow-message-adapter.properties b/kubernetes/so/resources/config/mso/mso.workflow-message-adapter.properties new file mode 100644 index 0000000000..24b668bb7b --- /dev/null +++ b/kubernetes/so/resources/config/mso/mso.workflow-message-adapter.properties @@ -0,0 +1,7 @@ +# Workflow Adapter properties + +# BP notification endpoint that receives workflow messages +org.openecomp.mso.adapters.workflow.message.bpelurl=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/mso/WorkflowMessage + +# Authorization for connecting to workflow.message.bpelurl +org.openecomp.mso.adapters.workflow.message.bpelauth=5119D1AF37F671FC01FFAD2151D93EFB2BBB503E879FD07104D024EDDF118FD1 diff --git a/kubernetes/so/resources/config/mso/topology.properties b/kubernetes/so/resources/config/mso/topology.properties new file mode 100644 index 0000000000..833129e15b --- /dev/null +++ b/kubernetes/so/resources/config/mso/topology.properties @@ -0,0 +1,22 @@ +# This is the topology used by the global healthcheck +apih-load-balancer=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/ +jra-load-balancer=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/ +camunda-load-balancer=http://{{.Values.service.name}}:{{.Values.service.internalPort}}/ + +# will be used as entry in DB to say SITE OFF/ON for healthcheck +site-name=mso-docker + +server-port={{.Values.service.internalPort}} +ssl-enable=false + +apih-healthcheck-urn=/ecomp/mso/infra/healthcheck,/asdc/healthcheck,/dbadapters/healthcheck +jra-healthcheck-urn=/networks/rest/healthcheck,/adapters/rest/healthcheck,/vnfs/rest/healthcheck,/tenants/rest/healthcheck +camunda-healthcheck-urn=/mso/healthcheck + +apih-nodehealthcheck-urn=/ecomp/mso/infra/nodehealthcheck +jra-nodehealthcheck-urn=/adapters/rest/nodehealthcheck +camunda-nodehealthcheck-urn=/mso/nodehealthcheck +msb-ip={{.Values.config.msb.serviceName}} +msb-port={{.Values.config.msb.port}} +sdnc-ip={{.Values.config.sdnc.serviceName}} +sdnc-port={{.Values.config.sdnc.port}} diff --git a/kubernetes/so/templates/deployment.yaml b/kubernetes/so/templates/deployment.yaml index 0727ce80a3..67630d2619 100644 --- a/kubernetes/so/templates/deployment.yaml +++ b/kubernetes/so/templates/deployment.yaml @@ -86,6 +86,15 @@ spec: - mountPath: /opt/jboss/standalone/configuration/standalone-full-ha-mso.xml name: so-config subPath: standalone-full-ha-mso.xml + - mountPath: /etc/mso/config.d/topology.properties + name: so-config + subPath: topology.properties + - mountPath: /etc/mso/config.d/mso.workflow-message-adapter.properties + name: so-config + subPath: mso.workflow-message-adapter.properties + - mountPath: /etc/mso/config.d/mso.bpmn.urn.properties + name: so-config + subPath: mso.bpmn.urn.properties - mountPath: /var/log/onap name: so-logs @@ -176,6 +185,15 @@ spec: - key: standalone-full-ha-mso.xml path: standalone-full-ha-mso.xml mode: 0644 + - key: topology.properties + path: topology.properties + mode: 0644 + - key: mso.workflow-message-adapter.properties + path: mso.workflow-message-adapter.properties + mode: 0644 + - key: mso.bpmn.urn.properties + path: mso.bpmn.urn.properties + mode: 0644 - name: so-logs emptyDir: {} - name: so-data-filebeat diff --git a/kubernetes/so/values.yaml b/kubernetes/so/values.yaml index 3ca60b0395..705f3880e7 100644 --- a/kubernetes/so/values.yaml +++ b/kubernetes/so/values.yaml @@ -19,7 +19,7 @@ global: # global defaults nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 @@ -46,6 +46,21 @@ config: openStackEncryptedPasswordHere: "c124921a3a0efbe579782cde8227681e" logstashServiceName: log-ls logstashPort: 5044 + sniro: + serviceName: sniro-emulator + port: 80 + aai: + serviceName: aai + port: 8080 + msb: + serviceName: msb-iag + port: 80 + sdnc: + serviceName: sdnc + port: 8282 + sdc: + serviceName: sdc-be + port: 8443 # default number of instances replicaCount: 1 diff --git a/kubernetes/uui/templates/service.yaml b/kubernetes/uui/templates/service.yaml index 4570c99473..9e94784676 100644 --- a/kubernetes/uui/templates/service.yaml +++ b/kubernetes/uui/templates/service.yaml @@ -30,7 +30,7 @@ metadata: "url": "/usecase-ui", "path":"/iui/usecaseui", "protocol": "UI" - "port": "8080", + "port": "{{ .Values.service.internalPort }}", "visualRange":"1|0" } ]' diff --git a/kubernetes/vfc/Chart.yaml b/kubernetes/vfc/Chart.yaml index 2554d16ce5..a6a6065802 100644 --- a/kubernetes/vfc/Chart.yaml +++ b/kubernetes/vfc/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +description: ONAP Virtual Function Controller (VF-C) name: vfc -version: 0.1.0 +version: 2.0.0 diff --git a/kubernetes/vfc/charts/vfc-catalog/.helmignore b/kubernetes/vfc/charts/vfc-catalog/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-catalog/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-catalog/Chart.yaml b/kubernetes/vfc/charts/vfc-catalog/Chart.yaml new file mode 100644 index 0000000000..f90ad5b72e --- /dev/null +++ b/kubernetes/vfc/charts/vfc-catalog/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - Catalog +name: vfc-catalog +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-catalog/resources/config/logging/log.yml b/kubernetes/vfc/charts/vfc-catalog/resources/config/logging/log.yml new file mode 100644 index 0000000000..2daea32cae --- /dev/null +++ b/kubernetes/vfc/charts/vfc-catalog/resources/config/logging/log.yml @@ -0,0 +1,50 @@ +version: 1 +disable_existing_loggers: False + +loggers: + catalog: + handlers: [cataloglocal_handler, catalog_handler] + level: "DEBUG" + propagate: False + django: + handlers: [django_handler] + level: "DEBUG" + propagate: False +handlers: + cataloglocal_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/runtime_catalog.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 + catalog_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "/var/log/onap/vfc/catalog/runtime_catalog.log" + formatter: + "mdcFormat" + maxBytes: 52428800 + backupCount: 10 + django_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/django.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 +formatters: + standard: + format: + "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:%(message)s" + mdcFormat: + format: + "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t" + mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}" + datefmt: "%Y-%m-%d %H:%M:%S" + (): onaplogging.mdcformatter.MDCFormatter diff --git a/kubernetes/vfc/charts/vfc-catalog/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-catalog/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-catalog/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-catalog/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-catalog/templates/deployment.yaml new file mode 100644 index 0000000000..084c320e31 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-catalog/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logconfig + mountPath: /opt/vfc/catalog/config/log.yml + subPath: log.yml + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logconfig + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-catalog/templates/service.yaml b/kubernetes/vfc/charts/vfc-catalog/templates/service.yaml new file mode 100644 index 0000000000..7d3390e761 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-catalog/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "catalog", + "version": "v1", + "url": "/api/catalog/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-catalog/values.yaml b/kubernetes/vfc/charts/vfc-catalog/values.yaml new file mode 100644 index 0000000000..0485b57890 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-catalog/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/catalog:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-catalog + externalPort: 8806 + internalPort: 8806 +# nodePort: 30806 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-ems-driver/.helmignore b/kubernetes/vfc/charts/vfc-ems-driver/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-ems-driver/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-ems-driver/Chart.yaml b/kubernetes/vfc/charts/vfc-ems-driver/Chart.yaml new file mode 100644 index 0000000000..1bd751fa77 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-ems-driver/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - EMS Driver +name: vfc-ems-driver +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-ems-driver/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-ems-driver/templates/deployment.yaml new file mode 100644 index 0000000000..ba33ec587d --- /dev/null +++ b/kubernetes/vfc/charts/vfc-ems-driver/templates/deployment.yaml @@ -0,0 +1,83 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-ems-driver/templates/service.yaml b/kubernetes/vfc/charts/vfc-ems-driver/templates/service.yaml new file mode 100644 index 0000000000..16eee99872 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-ems-driver/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "emsdriver", + "version": "v1", + "url": "/api/emsdriver/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-ems-driver/values.yaml b/kubernetes/vfc/charts/vfc-ems-driver/values.yaml new file mode 100644 index 0000000000..5ddd22c7b6 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-ems-driver/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/emsdriver:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-ems-driver + externalPort: 8206 + internalPort: 8206 +# nodePort: 30296 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-generic-vnfm-driver/.helmignore b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-generic-vnfm-driver/Chart.yaml b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/Chart.yaml new file mode 100644 index 0000000000..c472770b31 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - Generic VNFM Driver +name: vfc-generic-vnfm-driver +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-generic-vnfm-driver/resources/config/logging/log.yml b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/resources/config/logging/log.yml new file mode 100644 index 0000000000..123bb298ab --- /dev/null +++ b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/resources/config/logging/log.yml @@ -0,0 +1,50 @@ +version: 1 +disable_existing_loggers: False + +loggers: + driver: + handlers: [gvnfmdriverlocal_handler, gvnfmdriver_handler] + level: "DEBUG" + propagate: False + django: + handlers: [django_handler] + level: "DEBUG" + propagate: False +handlers: + gvnfmdriverlocal_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/runtime_gvnfmdriver.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 + gvnfmdriver_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "/var/log/onap/vfc/gvnfmdriver/runtime_gvnfmdriver.log" + formatter: + "mdcFormat" + maxBytes: 52428800 + backupCount: 10 + django_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/django.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 +formatters: + standard: + format: + "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:%(message)s" + mdcFormat: + format: + "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t" + mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}" + datefmt: "%Y-%m-%d %H:%M:%S" + (): onaplogging.mdcformatter.MDCFormatter diff --git a/kubernetes/vfc/charts/vfc-generic-vnfm-driver/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-generic-vnfm-driver/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/templates/deployment.yaml new file mode 100644 index 0000000000..825bdcec63 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logconfig + mountPath: /opt/vfc/gvnfmdriver/config/log.yml + subPath: log.yml + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logconfig + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-generic-vnfm-driver/templates/service.yaml b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/templates/service.yaml new file mode 100644 index 0000000000..0e2f1a12e7 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "gvnfmdriver", + "version": "v1", + "url": "/api/gvnfmdriver/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-generic-vnfm-driver/values.yaml b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/values.yaml new file mode 100644 index 0000000000..119a12cfea --- /dev/null +++ b/kubernetes/vfc/charts/vfc-generic-vnfm-driver/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/gvnfmdriver:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-generic-vnfm-driver + externalPort: 8484 + internalPort: 8484 +# nodePort: 30484 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/.helmignore b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/Chart.yaml b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/Chart.yaml new file mode 100644 index 0000000000..550401c6ba --- /dev/null +++ b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - Huawei VNFM Driver +name: vfc-huawei-vnfm-driver +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/resources/config/logging/log4j.properties b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/resources/config/logging/log4j.properties new file mode 100644 index 0000000000..635bcc51ea --- /dev/null +++ b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/resources/config/logging/log4j.properties @@ -0,0 +1,29 @@ +############################################################################### +# Copyright 2016, Huawei Technologies Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +############################################################################### +log4j.rootLogger=INFO,root +log4j.appender.root.Append=true + +#Log Directory +logDir=/var/log/onap +componentName=vfc +subComponentName=huaweivnfmdriver +log4j.appender.root.File=${logDir}/${componentName}/${subComponentName}/vnfmadapterservice.log + +log4j.appender.root.layout.ConversionPattern=%d %-5p [%t][%X{moduleID}][%C %L] %m%n +log4j.appender.root.layout=org.apache.log4j.PatternLayout +log4j.appender.root.MaxBackupIndex=50 +log4j.appender.root.MaxFileSize=20MB +log4j.appender.root=org.apache.log4j.RollingFileAppender
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/templates/deployment.yaml new file mode 100644 index 0000000000..eed1906d26 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logconfig + mountPath: /opt/vfc/hwvnfmdriver/config/log4j.properties + subPath: log4j.properties + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logconfig + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/templates/service.yaml b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/templates/service.yaml new file mode 100644 index 0000000000..60bad3ed21 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/templates/service.yaml @@ -0,0 +1,58 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "huaweivnfmdriver", + "version": "v1", + "url": "/api/huaweivnfmdriver/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - name: {{ .Values.service.name }} + port: {{ .Values.service.internalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + - name: {{ .Values.service.name }}2 + port: {{ .Values.service.internalPort2 }} + targetPort: {{ .Values.service.internalPort2 }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + - port: {{ .Values.service.externalPort2 }} + targetPort: {{ .Values.service.internalPort2 }} + name: {{ .Values.service.name }}2 + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/values.yaml b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/values.yaml new file mode 100644 index 0000000000..988b80c4c7 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-huawei-vnfm-driver/values.yaml @@ -0,0 +1,88 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/nfvo/svnfm/huawei:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-huawei-vnfm-driver + externalPort: 8482 + internalPort: 8482 + externalPort2: 8483 + internalPort2: 8483 +# nodePort: 30482 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-juju-vnfm-driver/.helmignore b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-juju-vnfm-driver/Chart.yaml b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/Chart.yaml new file mode 100644 index 0000000000..d0d74071ad --- /dev/null +++ b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - Juju VNFM Driver +name: vfc-juju-vnfm-driver +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-juju-vnfm-driver/resources/config/logging/log4j.properties b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/resources/config/logging/log4j.properties new file mode 100644 index 0000000000..6c1dab20c4 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/resources/config/logging/log4j.properties @@ -0,0 +1,34 @@ +############################################################################### +# Copyright 2016 Huawei Technologies Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +############################################################################### +log4j.rootLogger=INFO,root +log4j.logger.org.openo.nfvo=DEBUG,stdout +log4j.appender.root.Append=true + +#Log Directory +logDir=/var/log/onap +componentName=vfc +subComponentName=jujudriver +log4j.appender.root.File=${logDir}/${componentName}/${subComponentName}/jujuvnfmadapterservice.log + +log4j.appender.root.layout.ConversionPattern=%d %-5p [%t][%X{moduleID}][%C %L] %m%n +log4j.appender.root.layout=org.apache.log4j.PatternLayout +log4j.appender.root.MaxBackupIndex=50 +log4j.appender.root.MaxFileSize=20MB +log4j.appender.root=org.apache.log4j.RollingFileAppender + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t][%X{moduleID}][%C %L] %m%n
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-juju-vnfm-driver/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-juju-vnfm-driver/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/templates/deployment.yaml new file mode 100644 index 0000000000..1d1a5d7702 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName}}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logconfig + mountPath: /opt/vfc/jujudriver/config/log4j.properties + subPath: log4j.properties + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logconfig + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-juju-vnfm-driver/templates/service.yaml b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/templates/service.yaml new file mode 100644 index 0000000000..3376ea9e91 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "jujuvnfmdriver", + "version": "v1", + "url": "/api/jujuvnfmdriver/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-juju-vnfm-driver/values.yaml b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/values.yaml new file mode 100644 index 0000000000..1f4c5ac9a1 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-juju-vnfm-driver/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/jujudriver:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-juju-vnfm-driver + externalPort: 8483 + internalPort: 8483 +# nodePort: 30483 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-multivim-proxy/.helmignore b/kubernetes/vfc/charts/vfc-multivim-proxy/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-multivim-proxy/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-multivim-proxy/Chart.yaml b/kubernetes/vfc/charts/vfc-multivim-proxy/Chart.yaml new file mode 100644 index 0000000000..3ceafe924c --- /dev/null +++ b/kubernetes/vfc/charts/vfc-multivim-proxy/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - MultiVIM Proxy +name: vfc-multivim-proxy +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-multivim-proxy/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-multivim-proxy/templates/deployment.yaml new file mode 100644 index 0000000000..ba33ec587d --- /dev/null +++ b/kubernetes/vfc/charts/vfc-multivim-proxy/templates/deployment.yaml @@ -0,0 +1,83 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-multivim-proxy/templates/service.yaml b/kubernetes/vfc/charts/vfc-multivim-proxy/templates/service.yaml new file mode 100644 index 0000000000..268cf0c768 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-multivim-proxy/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "multivimproxy", + "version": "v1", + "url": "/api/multivimproxy/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-multivim-proxy/values.yaml b/kubernetes/vfc/charts/vfc-multivim-proxy/values.yaml new file mode 100644 index 0000000000..4c1711af3b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-multivim-proxy/values.yaml @@ -0,0 +1,85 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/multivimproxy:1.0.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-multivim-proxy + externalPort: 8481 + internalPort: 8481 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/.helmignore b/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/Chart.yaml b/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/Chart.yaml new file mode 100644 index 0000000000..dbed709128 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - Nokia V2VNFM Driver +name: vfc-nokia-v2vnfm-driver +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/templates/deployment.yaml new file mode 100644 index 0000000000..ba33ec587d --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/templates/deployment.yaml @@ -0,0 +1,83 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/templates/service.yaml b/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/templates/service.yaml new file mode 100644 index 0000000000..b722e2471e --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "NokiaSVNFM", + "version": "v1", + "url": "/api/NokiaSVNFM/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/values.yaml b/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/values.yaml new file mode 100644 index 0000000000..2c5504c1ac --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-v2vnfm-driver/values.yaml @@ -0,0 +1,87 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/nfvo/svnfm/nokiav2:1.1.0-STAGING-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +# Example: +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-nokia-v2vnfm-driver + externalPort: 8089 + internalPort: 8089 +# nodePort: 13 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/.helmignore b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/Chart.yaml b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/Chart.yaml new file mode 100644 index 0000000000..eb3a6ce3e2 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - Nokia VNFM Driver +name: vfc-nokia-vnfm-driver +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/resources/config/logging/logback.xml b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/resources/config/logging/logback.xml new file mode 100644 index 0000000000..747c6b6551 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/resources/config/logging/logback.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + <include resource="org/springframework/boot/logging/logback/defaults.xml"/> + <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</pattern> + <charset>UTF-8</charset> + </encoder> + </appender> + <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>/var/log/onap/vfc/svnfm/nokiavnfmdriver.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>/var/log/onap/vfc/svnfm/nokiavnfmdriver.%i.log.zip + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>9</maxIndex> + </rollingPolicy> + <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>10MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{req.method} %X{req.remoteHost} %X{req.requestURI} [%t] %-5level %logger{50} %line - %m%n</pattern> + <charset>UTF-8</charset> + </encoder> + </appender> + <root level="INFO"> + <appender-ref ref="CONSOLE"></appender-ref> + <appender-ref ref="FILE"></appender-ref> + </root> +</configuration>
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/templates/deployment.yaml new file mode 100644 index 0000000000..9c4437ee0c --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logback + mountPath: /opt/vfc/nokiavnfmdriver/config/logback.xml + subPath: logback.xml + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logback + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/templates/service.yaml b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/templates/service.yaml new file mode 100644 index 0000000000..e55b1b2fb0 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "nokiavnfmdriver", + "version": "v1", + "url": "/api/nokiavnfmdriver/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/values.yaml b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/values.yaml new file mode 100644 index 0000000000..c3db239833 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nokia-vnfm-driver/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/nfvo/svnfm/nokia:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-nokia-vnfm-driver + externalPort: 8486 + internalPort: 8486 +# nodePort: 12 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-nslcm/.helmignore b/kubernetes/vfc/charts/vfc-nslcm/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nslcm/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-nslcm/Chart.yaml b/kubernetes/vfc/charts/vfc-nslcm/Chart.yaml new file mode 100644 index 0000000000..362857333a --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nslcm/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - NS Life Cycle Management +name: vfc-nslcm +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-nslcm/resources/config/logging/log.yml b/kubernetes/vfc/charts/vfc-nslcm/resources/config/logging/log.yml new file mode 100644 index 0000000000..4ae7ab16a8 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nslcm/resources/config/logging/log.yml @@ -0,0 +1,50 @@ +version: 1 +disable_existing_loggers: False + +loggers: + nslcm: + handlers: [nslcmlocal_handler, nslcm_handler] + level: "DEBUG" + propagate: False + django: + handlers: [django_handler] + level: "DEBUG" + propagate: False +handlers: + nslcmlocal_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/runtime_nslcm.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 + nslcm_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "/var/log/onap/vfc/nslcm/runtime_nslcm.log" + formatter: + "mdcFormat" + maxBytes: 52428800 + backupCount: 10 + django_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/django.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 +formatters: + standard: + format: + "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:%(message)s" + mdcFormat: + format: + "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t" + mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}" + datefmt: "%Y-%m-%d %H:%M:%S" + (): onaplogging.mdcformatter.MDCFormatter diff --git a/kubernetes/vfc/charts/vfc-nslcm/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-nslcm/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nslcm/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-nslcm/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-nslcm/templates/deployment.yaml new file mode 100644 index 0000000000..b2481c8f33 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nslcm/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logconfig + mountPath: /opt/vfc/nslcm/config/log.yml + subPath: log.yml + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logconfig + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-nslcm/templates/service.yaml b/kubernetes/vfc/charts/vfc-nslcm/templates/service.yaml new file mode 100644 index 0000000000..c854684cea --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nslcm/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "nslcm", + "version": "v1", + "url": "/api/nslcm/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-nslcm/values.yaml b/kubernetes/vfc/charts/vfc-nslcm/values.yaml new file mode 100644 index 0000000000..ab54b4d07f --- /dev/null +++ b/kubernetes/vfc/charts/vfc-nslcm/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/nslcm:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-nslcm + externalPort: 8403 + internalPort: 8403 +# nodePort: 30403 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-resmgr/.helmignore b/kubernetes/vfc/charts/vfc-resmgr/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-resmgr/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-resmgr/Chart.yaml b/kubernetes/vfc/charts/vfc-resmgr/Chart.yaml new file mode 100644 index 0000000000..604c6b64cf --- /dev/null +++ b/kubernetes/vfc/charts/vfc-resmgr/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - Resource Manager +name: vfc-resmgr +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-resmgr/resources/config/logging/log4j.properties b/kubernetes/vfc/charts/vfc-resmgr/resources/config/logging/log4j.properties new file mode 100644 index 0000000000..cde79b74d2 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-resmgr/resources/config/logging/log4j.properties @@ -0,0 +1,29 @@ +############################################################################### +# Copyright 2016, Huawei Technologies Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +############################################################################### +log4j.rootLogger=INFO,root +log4j.appender.root.Append=true + +#Log Directory +logDir=/var/log/onap +componentName=vfc +subComponentName=resmanagement +log4j.appender.root.File=${logDir}/${componentName}/${subComponentName}/resmanagement.log + +log4j.appender.root.layout.ConversionPattern=%d %-5p [%t][%X{moduleID}][%C %L] %m%n +log4j.appender.root.layout=org.apache.log4j.PatternLayout +log4j.appender.root.MaxBackupIndex=50 +log4j.appender.root.MaxFileSize=20MB +log4j.appender.root=org.apache.log4j.RollingFileAppender
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-resmgr/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-resmgr/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-resmgr/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-resmgr/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-resmgr/templates/deployment.yaml new file mode 100644 index 0000000000..27d5fcdd43 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-resmgr/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logconfig + mountPath: /opt/vfc/resmgr/config/log4j.properties + subPath: log4j.properties + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logconfig + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-resmgr/templates/service.yaml b/kubernetes/vfc/charts/vfc-resmgr/templates/service.yaml new file mode 100644 index 0000000000..993d4787e9 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-resmgr/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "resmgr", + "version": "v1", + "url": "/api/resmgr/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-resmgr/values.yaml b/kubernetes/vfc/charts/vfc-resmgr/values.yaml new file mode 100644 index 0000000000..a6ea0464b9 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-resmgr/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/resmanagement:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-resmgr + externalPort: 8480 + internalPort: 8480 +# nodePort: 30480 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-vnflcm/.helmignore b/kubernetes/vfc/charts/vfc-vnflcm/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnflcm/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-vnflcm/Chart.yaml b/kubernetes/vfc/charts/vfc-vnflcm/Chart.yaml new file mode 100644 index 0000000000..507d4e6b35 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnflcm/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - VNF Life Cycle Management +name: vfc-vnflcm +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-vnflcm/resources/config/logging/log.yml b/kubernetes/vfc/charts/vfc-vnflcm/resources/config/logging/log.yml new file mode 100644 index 0000000000..4af8faa40f --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnflcm/resources/config/logging/log.yml @@ -0,0 +1,50 @@ +version: 1 +disable_existing_loggers: False + +loggers: + mgr: + handlers: [vnfmgrlocal_handler, vnfmgr_handler] + level: "DEBUG" + propagate: False + django: + handlers: [django_handler] + level: "DEBUG" + propagate: False +handlers: + vnfmgrlocal_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/runtime_mgr.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 + vnfmgr_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "/var/log/onap/vfc/gvnfm-vnfmgr/runtime_mgr.log" + formatter: + "mdcFormat" + maxBytes: 52428800 + backupCount: 10 + django_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/django.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 +formatters: + standard: + format: + "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:%(message)s" + mdcFormat: + format: + "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t" + mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}" + datefmt: "%Y-%m-%d %H:%M:%S" + (): onaplogging.mdcformatter.MDCFormatter diff --git a/kubernetes/vfc/charts/vfc-vnflcm/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-vnflcm/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnflcm/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-vnflcm/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-vnflcm/templates/deployment.yaml new file mode 100644 index 0000000000..ccea328c0c --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnflcm/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logconfig + mountPath: /opt/vfc/gvnfm-vnflcm/config/log.yml + subPath: log.yml + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logconfig + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-vnflcm/templates/service.yaml b/kubernetes/vfc/charts/vfc-vnflcm/templates/service.yaml new file mode 100644 index 0000000000..ad4f716781 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnflcm/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "vnflcm", + "version": "v1", + "url": "/api/vnflcm/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-vnflcm/values.yaml b/kubernetes/vfc/charts/vfc-vnflcm/values.yaml new file mode 100644 index 0000000000..09ff8a4a8e --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnflcm/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/vnflcm:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-vnflcm + externalPort: 8801 + internalPort: 8801 +# nodePort: 30801 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-vnfmgr/.helmignore b/kubernetes/vfc/charts/vfc-vnfmgr/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfmgr/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-vnfmgr/Chart.yaml b/kubernetes/vfc/charts/vfc-vnfmgr/Chart.yaml new file mode 100644 index 0000000000..b70e11c762 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfmgr/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - VNF Manager +name: vfc-vnfmgr +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-vnfmgr/resources/config/logging/log.yml b/kubernetes/vfc/charts/vfc-vnfmgr/resources/config/logging/log.yml new file mode 100644 index 0000000000..4af8faa40f --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfmgr/resources/config/logging/log.yml @@ -0,0 +1,50 @@ +version: 1 +disable_existing_loggers: False + +loggers: + mgr: + handlers: [vnfmgrlocal_handler, vnfmgr_handler] + level: "DEBUG" + propagate: False + django: + handlers: [django_handler] + level: "DEBUG" + propagate: False +handlers: + vnfmgrlocal_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/runtime_mgr.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 + vnfmgr_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "/var/log/onap/vfc/gvnfm-vnfmgr/runtime_mgr.log" + formatter: + "mdcFormat" + maxBytes: 52428800 + backupCount: 10 + django_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/django.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 +formatters: + standard: + format: + "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:%(message)s" + mdcFormat: + format: + "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t" + mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}" + datefmt: "%Y-%m-%d %H:%M:%S" + (): onaplogging.mdcformatter.MDCFormatter diff --git a/kubernetes/vfc/charts/vfc-vnfmgr/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-vnfmgr/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfmgr/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-vnfmgr/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-vnfmgr/templates/deployment.yaml new file mode 100644 index 0000000000..9d31443088 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfmgr/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logconfig + mountPath: /opt/vfc/gvnfm-vnfmgr/config/log.yml + subPath: log.yml + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logconfig + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-vnfmgr/templates/service.yaml b/kubernetes/vfc/charts/vfc-vnfmgr/templates/service.yaml new file mode 100644 index 0000000000..df6ca313e4 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfmgr/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "vnfmgr", + "version": "v1", + "url": "/api/vnfmgr/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-vnfmgr/values.yaml b/kubernetes/vfc/charts/vfc-vnfmgr/values.yaml new file mode 100644 index 0000000000..d308fe8ae3 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfmgr/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/vnfmgr:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-vnfmgr + externalPort: 8803 + internalPort: 8803 +# nodePort: 30803 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-vnfres/.helmignore b/kubernetes/vfc/charts/vfc-vnfres/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfres/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-vnfres/Chart.yaml b/kubernetes/vfc/charts/vfc-vnfres/Chart.yaml new file mode 100644 index 0000000000..5fd923bcd7 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfres/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - VNF Resource Manager +name: vfc-vnfres +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-vnfres/resources/config/logging/log.yml b/kubernetes/vfc/charts/vfc-vnfres/resources/config/logging/log.yml new file mode 100644 index 0000000000..c4cc1e3072 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfres/resources/config/logging/log.yml @@ -0,0 +1,50 @@ +version: 1 +disable_existing_loggers: False + +loggers: + lcm: + handlers: [vnflcmlocal_handler, vnflcm_handler] + level: "DEBUG" + propagate: False + django: + handlers: [django_handler] + level: "DEBUG" + propagate: False +handlers: + vnflcmlocal_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/runtime_lcm.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 + vnflcm_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "/var/log/onap/vfc/gvnfm-vnflcm/runtime_lcm.log" + formatter: + "mdcFormat" + maxBytes: 52428800 + backupCount: 10 + django_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/django.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 +formatters: + standard: + format: + "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:%(message)s" + mdcFormat: + format: + "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t" + mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}" + datefmt: "%Y-%m-%d %H:%M:%S" + (): onaplogging.mdcformatter.MDCFormatter diff --git a/kubernetes/vfc/charts/vfc-vnfres/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-vnfres/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfres/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-vnfres/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-vnfres/templates/deployment.yaml new file mode 100644 index 0000000000..52e807abe5 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfres/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logconfig + mountPath: /opt/vfc/gvnfm-vnfres/config/log.yml + subPath: log.yml + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logconfig + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-vnfres/templates/service.yaml b/kubernetes/vfc/charts/vfc-vnfres/templates/service.yaml new file mode 100644 index 0000000000..d3a3dc980c --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfres/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "vnfres", + "version": "v1", + "url": "/api/vnfres/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-vnfres/values.yaml b/kubernetes/vfc/charts/vfc-vnfres/values.yaml new file mode 100644 index 0000000000..2b0651a3f2 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-vnfres/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/vnfres:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-vnfres + externalPort: 8802 + internalPort: 8802 +# nodePort: 30802 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-workflow-engine/.helmignore b/kubernetes/vfc/charts/vfc-workflow-engine/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-workflow-engine/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-workflow-engine/Chart.yaml b/kubernetes/vfc/charts/vfc-workflow-engine/Chart.yaml new file mode 100644 index 0000000000..913778b689 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-workflow-engine/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - Workflow Engine +name: vfc-workflow-engine +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-workflow-engine/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-workflow-engine/templates/deployment.yaml new file mode 100644 index 0000000000..adb077a518 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-workflow-engine/templates/deployment.yaml @@ -0,0 +1,91 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: SERVICE_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: SERVICE_PORT + value: "{{ .Values.config.workflowPort }}" + - name: OPENPALETTE_MSB_IP + value: "{{ .Values.global.config.msbServiceName }}" + - name: OPENPALETTE_MSB_PORT + value: "{{ .Values.global.config.msbPort | default 80 }}" + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-workflow-engine/templates/service.yaml b/kubernetes/vfc/charts/vfc-workflow-engine/templates/service.yaml new file mode 100644 index 0000000000..4a4ae0e402 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-workflow-engine/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "workflow-engine", + "version": "v1", + "url": "/activiti-rest", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-workflow-engine/values.yaml b/kubernetes/vfc/charts/vfc-workflow-engine/values.yaml new file mode 100644 index 0000000000..84daca3695 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-workflow-engine/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/wfengine-activiti:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-workflow-engine + externalPort: 8080 + internalPort: 8080 +# nodePort: 30807 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-workflow/.helmignore b/kubernetes/vfc/charts/vfc-workflow/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-workflow/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-workflow/Chart.yaml b/kubernetes/vfc/charts/vfc-workflow/Chart.yaml new file mode 100644 index 0000000000..a711c50671 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-workflow/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - Workflow +name: vfc-workflow +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-workflow/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-workflow/templates/deployment.yaml new file mode 100644 index 0000000000..e2b3d0bc96 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-workflow/templates/deployment.yaml @@ -0,0 +1,91 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: SERVICE_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: SERVICE_PORT + value: "{{ .Values.service.externalPort }}" + - name: OPENPALETTE_MSB_IP + value: "{{ .Values.global.config.msbServiceName }}" + - name: OPENPALETTE_MSB_PORT + value: "{{ .Values.global.config.msbPort | default 80 }}" + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-workflow/templates/service.yaml b/kubernetes/vfc/charts/vfc-workflow/templates/service.yaml new file mode 100644 index 0000000000..73e2c2c5b9 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-workflow/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "workflow", + "version": "v1", + "url": "/api/workflow/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-workflow/values.yaml b/kubernetes/vfc/charts/vfc-workflow/values.yaml new file mode 100644 index 0000000000..2c844414d0 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-workflow/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/wfengine-mgrservice:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-workflow + externalPort: 10550 + internalPort: 10550 +# nodePort: 30805 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-zte-sdnc-driver/.helmignore b/kubernetes/vfc/charts/vfc-zte-sdnc-driver/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-sdnc-driver/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-zte-sdnc-driver/Chart.yaml b/kubernetes/vfc/charts/vfc-zte-sdnc-driver/Chart.yaml new file mode 100644 index 0000000000..f1d71da2d2 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-sdnc-driver/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - ZTE SDNC Driver +name: vfc-zte-sdnc-driver +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-zte-sdnc-driver/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-zte-sdnc-driver/templates/deployment.yaml new file mode 100644 index 0000000000..ba33ec587d --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-sdnc-driver/templates/deployment.yaml @@ -0,0 +1,83 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-zte-sdnc-driver/templates/service.yaml b/kubernetes/vfc/charts/vfc-zte-sdnc-driver/templates/service.yaml new file mode 100644 index 0000000000..532f648716 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-sdnc-driver/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "ztesdncdriver", + "version": "v1", + "url": "/api/ztesdncdriver/v1", + "protocol": "REST", + "port": "{{.Values.service.externalPort}}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-zte-sdnc-driver/values.yaml b/kubernetes/vfc/charts/vfc-zte-sdnc-driver/values.yaml new file mode 100644 index 0000000000..19e480b8d9 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-sdnc-driver/values.yaml @@ -0,0 +1,86 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/ztesdncdriver:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-zte-sdnc-driver + externalPort: 8411 + internalPort: 8411 +# nodePort: 30411 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/charts/vfc-zte-vnfm-driver/.helmignore b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/kubernetes/vfc/charts/vfc-zte-vnfm-driver/Chart.yaml b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/Chart.yaml new file mode 100644 index 0000000000..b4e9f84e3d --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: ONAP VFC - ZTE VNFM Driver +name: vfc-zte-vnfm-driver +version: 2.0.0
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-zte-vnfm-driver/resources/config/logging/log.yml b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/resources/config/logging/log.yml new file mode 100644 index 0000000000..a0bf170fe6 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/resources/config/logging/log.yml @@ -0,0 +1,50 @@ +version: 1 +disable_existing_loggers: False + +loggers: + ztevnfmdriver: + handlers: [ztevnfmdriverlocal_handler, ztevnfmdriver_handler] + level: "DEBUG" + propagate: False + django: + handlers: [django_handler] + level: "DEBUG" + propagate: False +handlers: + ztevnfmdriverlocal_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/runtime_ztevnfmdriver.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 + ztevnfmdriver_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "/var/log/onap/vfc/ztevnfmdriver/runtime_ztevnfmdriver.log" + formatter: + "mdcFormat" + maxBytes: 52428800 + backupCount: 10 + django_handler: + level: "DEBUG" + class: + "logging.handlers.RotatingFileHandler" + filename: "logs/django.log" + formatter: + "standard" + maxBytes: 52428800 + backupCount: 10 +formatters: + standard: + format: + "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:%(message)s" + mdcFormat: + format: + "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t" + mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}" + datefmt: "%Y-%m-%d %H:%M:%S" + (): onaplogging.mdcformatter.MDCFormatter diff --git a/kubernetes/vfc/charts/vfc-zte-vnfm-driver/templates/configmap.yaml b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/templates/configmap.yaml new file mode 100644 index 0000000000..1d0751a01b --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.fullname" . }}-logging-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-zte-vnfm-driver/templates/deployment.yaml b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/templates/deployment.yaml new file mode 100644 index 0000000000..7a0f4a1132 --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/templates/deployment.yaml @@ -0,0 +1,121 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + spec: + initContainers: +#Example init container for dependency checking +# - command: +# - /root/ready.py +# args: +# - --container-name +# - mariadb +# env: +# - name: NAMESPACE +# valueFrom: +# fieldRef: +# apiVersion: v1 +# fieldPath: metadata.namespace +# image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" +# imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} +# name: {{ include "common.name" . }}-readiness + containers: + - name: {{ include "common.name" . }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + # disable liveness probe when breakpoints set in debugger + # so K8s doesn't restart unresponsive container + {{ if .Values.liveness.enabled }} + livenessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} + periodSeconds: {{ .Values.liveness.periodSeconds }} + {{ end }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + env: + - name: MSB_ADDR + value: "{{ .Values.global.config.msbServiceName }}:{{ .Values.global.config.msbPort }}" + volumeMounts: + - name: {{ include "common.fullname" . }}-localtime + mountPath: /etc/localtime + readOnly: true + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-logconfig + mountPath: /opt/vfc/ztevnfmdriver/config/log.yml + subPath: log.yml + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 10 }} + {{- end -}} + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 10 }} + {{- end }} + + # side car containers + - name: {{ include "common.name" . }}-filebeat-onap + image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + volumeMounts: + - name: {{ include "common.fullname" . }}-filebeat-conf + mountPath: /usr/share/filebeat/filebeat.yml + subPath: filebeat.yml + - name: {{ include "common.fullname" . }}-logs + mountPath: /var/log/onap + - name: {{ include "common.fullname" . }}-data-filebeat + mountPath: /usr/share/filebeat/data + + volumes: + - name: {{ include "common.fullname" . }}-localtime + hostPath: + path: /etc/localtime + - name: {{ include "common.fullname" . }}-logs + emptyDir: {} + - name: {{ include "common.fullname" . }}-logconfig + configMap: + name : {{ include "common.fullname" . }}-logging-configmap + + - name: {{ include "common.fullname" . }}-filebeat-conf + configMap: + name: {{ .Release.Name }}-vfc-filebeat-configmap + - name: {{ include "common.fullname" . }}-data-filebeat + emptyDir: {} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vfc/charts/vfc-zte-vnfm-driver/templates/service.yaml b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/templates/service.yaml new file mode 100644 index 0000000000..7ee544520d --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/templates/service.yaml @@ -0,0 +1,51 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + msb.onap.org/service-info: '[ + { + "serviceName": "ztevnfmdriver", + "version": "v1", + "url": "/api/ztevnfmdriver/v1", + "protocol": "REST", + "port": "{{ .Values.service.externalPort }}", + "visualRange":"1" + } + ]' +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + name: {{ .Values.service.name }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + name: {{ .Values.service.name }} + {{- end}} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }}
\ No newline at end of file diff --git a/kubernetes/vfc/charts/vfc-zte-vnfm-driver/values.yaml b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/values.yaml new file mode 100644 index 0000000000..d94e5da22f --- /dev/null +++ b/kubernetes/vfc/charts/vfc-zte-vnfm-driver/values.yaml @@ -0,0 +1,85 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/vfc/ztevnfmdriver:1.1.0-SNAPSHOT-latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +# application configuration +config: {} + +# default number of instances +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: vfc-zte-vnfm-driver + externalPort: 8410 + internalPort: 8410 + +ingress: + enabled: false + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # + # Example: + # Configure resource requests and limits + # ref: http://kubernetes.io/docs/user-guide/compute-resources/ + # Minimum memory for development is 2 CPU cores and 4GB memory + # Minimum memory for production is 4 CPU cores and 8GB memory +#resources: +# limits: +# cpu: 2 +# memory: 4Gi +# requests: +# cpu: 2 +# memory: 4Gi diff --git a/kubernetes/vfc/requirements.yaml b/kubernetes/vfc/requirements.yaml new file mode 100644 index 0000000000..1e8f788318 --- /dev/null +++ b/kubernetes/vfc/requirements.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dependencies: + - name: common + version: ~2.0.0 + repository: '@local'
\ No newline at end of file diff --git a/kubernetes/vfc/resources/config/logging/filebeat/filebeat.yml b/kubernetes/vfc/resources/config/logging/filebeat/filebeat.yml new file mode 100644 index 0000000000..5967963f1b --- /dev/null +++ b/kubernetes/vfc/resources/config/logging/filebeat/filebeat.yml @@ -0,0 +1,42 @@ +filebeat.prospectors: +#it is mandatory, in our case it's log +- input_type: log + #This is the canolical path as mentioned in logback.xml, *.* means it will monitor all files in the directory. + paths: + - /var/log/onap/*/*/*/*.log + - /var/log/onap/*/*/*.log + - /var/log/onap/*/*.log + #Files older than this should be ignored.In our case it will be 48 hours i.e. 2 days. It is a helping flag for clean_inactive + ignore_older: 48h + # Remove the registry entry for a file that is more than the specified time. In our case it will be 96 hours, i.e. 4 days. It will help to keep registry records with in limit + clean_inactive: 96h + + +# Name of the registry file. If a relative path is used, it is considered relative to the +# data path. Else full qualified file name. +#filebeat.registry_file: ${path.data}/registry + + +output.logstash: + #List of logstash server ip addresses with port number. + #But, in our case, this will be the loadbalancer IP address. + #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately. + #hosts: ["logstash.{{.Values.nsPrefix}}:5044"] + hosts: ["{{.Release.Name}}-{{.Values.config.logstashServiceName}}.{{.Release.Namespace}}:{{.Values.config.logstashPort}}"] + #If enable will do load balancing among availabe Logstash, automatically. + loadbalance: true + + #The list of root certificates for server verifications. + #If certificate_authorities is empty or not set, the trusted + #certificate authorities of the host system are used. + #ssl.certificate_authorities: $ssl.certificate_authorities + + #The path to the certificate for SSL client authentication. If the certificate is not specified, + #client authentication is not available. + #ssl.certificate: $ssl.certificate + + #The client certificate key used for client authentication. + #ssl.key: $ssl.key + + #The passphrase used to decrypt an encrypted key stored in the configured key file + #ssl.key_passphrase: $ssl.key_passphrase diff --git a/kubernetes/vfc/templates/all-services.yaml b/kubernetes/vfc/templates/all-services.yaml deleted file mode 100644 index 819ecffeb8..0000000000 --- a/kubernetes/vfc/templates/all-services.yaml +++ /dev/null @@ -1,448 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcNslcm }} -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-nslcm - name: vfc-nslcm - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "nslcm", - "version": "v1", - "url": "/api/nslcm/v1", - "protocol": "REST", - "port": "{{.Values.nslcm.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-nslcm - port: {{.Values.nslcm.port}} - nodePort: {{.Values.nslcm.nodePort}} - selector: - app: vfc-nslcm - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcResmgr }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-resmgr - name: vfc-resmgr - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "resmgr", - "version": "v1", - "url": "/api/resmgr/v1", - "protocol": "REST", - "port": "{{.Values.resmgr.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-resmgr - port: {{.Values.resmgr.port}} - nodePort: {{.Values.resmgr.nodePort}} - selector: - app: vfc-resmgr - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcGvnfmdriver }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-gvnfmdriver - name: vfc-gvnfmdriver - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "gvnfmdriver", - "version": "v1", - "url": "/api/gvnfmdriver/v1", - "protocol": "REST", - "port": "{{.Values.gvnfmdriver.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-gvnfmdriver - port: {{.Values.gvnfmdriver.port}} - nodePort: {{.Values.gvnfmdriver.nodePort}} - selector: - app: vfc-gvnfmdriver - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcztevnfmdriver }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-ztevnfmdriver - name: vfc-ztevnfmdriver - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "ztevnfmdriver", - "version": "v1", - "url": "/api/ztevnfmdriver/v1", - "protocol": "REST", - "port": "{{.Values.ztevnfmdriver.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-ztevnfmdriver - port: {{.Values.ztevnfmdriver.port}} - nodePort: {{.Values.ztevnfmdriver.nodePort}} - selector: - app: vfc-ztevnfmdriver - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcNokiavnfmdriver }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-nokiavnfmdriver - name: vfc-nokiavnfmdriver - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "nokiavnfmdriver", - "version": "v1", - "url": "/api/nokiavnfmdriver/v1", - "protocol": "REST", - "port": "{{.Values.nokiavnfmdriver.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-nokiavnfmdriver - port: {{.Values.nokiavnfmdriver.port}} - nodePort: {{.Values.nokiavnfmdriver.nodePort}} - selector: - app: vfc-nokiavnfmdriver - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcHwvnfmdriver }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-hwvnfmdriver - name: vfc-hwvnfmdriver - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "huaweivnfmdriver", - "version": "v1", - "url": "/api/huaweivnfmdriver/v1", - "protocol": "REST", - "port": "{{.Values.hwvnfmdriver.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-hwvnfmdriver - port: {{.Values.hwvnfmdriver.port}} - nodePort: {{.Values.hwvnfmdriver.nodePort}} - selector: - app: vfc-hwvnfmdriver - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcZtesdncdriver }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-ztesdncdriver - name: vfc-ztesdncdriver - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "ztesdncdriver", - "version": "v1", - "url": "/api/ztesdncdriver/v1", - "protocol": "REST", - "port": "{{.Values.ztesdncdriver.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-ztesdncdriver - port: {{.Values.ztesdncdriver.port}} - nodePort: {{.Values.ztesdncdriver.nodePort}} - selector: - app: vfc-ztesdncdriver - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcJujudriver }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-jujudriver - name: vfc-jujudriver - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "jujuvnfmdriver", - "version": "v1", - "url": "/api/jujuvnfmdriver/v1", - "protocol": "REST", - "port": "{{.Values.jujudriver.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-jujudriver - port: {{.Values.jujudriver.port}} - nodePort: {{.Values.jujudriver.nodePort}} - selector: - app: vfc-jujudriver - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcVnflcm }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-vnflcm - name: vfc-vnflcm - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "vnflcm", - "version": "v1", - "url": "/api/vnflcm/v1", - "protocol": "REST", - "port": "{{.Values.vnflcm.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-vnflcm - port: {{.Values.vnflcm.port}} - nodePort: {{.Values.vnflcm.nodePort}} - selector: - app: vfc-vnflcm - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcVnfres }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-vnfres - name: vfc-vnfres - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "vnfres", - "version": "v1", - "url": "/api/vnfres/v1", - "protocol": "REST", - "port": "{{.Values.vnfres.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-vnfres - port: {{.Values.vnfres.port}} - nodePort: {{.Values.vnfres.nodePort}} - selector: - app: vfc-vnfres - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcVnfmgr }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-vnfmgr - name: vfc-vnfmgr - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "vnfmgr", - "version": "v1", - "url": "/api/vnfmgr/v1", - "protocol": "REST", - "port": "{{.Values.vnfmgr.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-vnfmgr - port: {{.Values.vnfmgr.port}} - nodePort: {{.Values.vnfmgr.nodePort}} - selector: - app: vfc-vnfmgr - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcEmsdriver }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-emsdriver - name: vfc-emsdriver - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "emsdriver", - "version": "v1", - "url": "/api/emsdriver/v1", - "protocol": "REST", - "port": "{{.Values.emsdriver.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-emsdriver - port: {{.Values.emsdriver.port}} - nodePort: {{.Values.emsdriver.nodePort}} - selector: - app: vfc-emsdriver - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcWorkflow }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-workflow - name: vfc-workflow - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "workflow", - "version": "v1", - "url": "/api/workflow/v1", - "protocol": "REST", - "port": "{{.Values.workflow.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-workflow - port: {{.Values.workflow.port}} - nodePort: {{.Values.workflow.nodePort}} - selector: - app: vfc-workflow - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcWorkflowEngineActiviti }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-workflowengineactiviti - name: vfc-workflowengineactiviti - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "workflow", - "version": "v1", - "url": "/activiti-rest", - "protocol": "REST", - "port": "{{.Values.workflowengineactiviti.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-workflow - port: {{.Values.workflowengineactiviti.port}} - nodePort: {{.Values.workflowengineactiviti.nodePort}} - selector: - app: vfc-workflow - type: NodePort -#{{ end }} -#{{ if not .Values.disableVfcVfcCatalog }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: vfc-catalog - name: vfc-catalog - namespace: "{{ .Values.nsPrefix }}" - annotations: - msb.onap.org/service-info: '[ - { - "serviceName": "catalog", - "version": "v1", - "url": "/api/catalog/v1", - "protocol": "REST", - "port": "{{.Values.catalog.port}}", - "visualRange":"1" - } - ]' -spec: - ports: - - name: vfc-catalog - port: {{.Values.catalog.port}} - nodePort: {{.Values.catalog.nodePort}} - selector: - app: vfc-catalog - type: NodePort -#{{ end }}
\ No newline at end of file diff --git a/kubernetes/vfc/templates/configmap.yaml b/kubernetes/vfc/templates/configmap.yaml new file mode 100644 index 0000000000..f72ff132d9 --- /dev/null +++ b/kubernetes/vfc/templates/configmap.yaml @@ -0,0 +1,21 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Release.Name }}-vfc-filebeat-configmap + namespace: {{ include "common.namespace" . }} +data: +{{ tpl (.Files.Glob "resources/config/logging/filebeat/*").AsConfig . | indent 2 }}
\ No newline at end of file diff --git a/kubernetes/vfc/templates/vfc-catalog-deployment.yaml b/kubernetes/vfc/templates/vfc-catalog-deployment.yaml deleted file mode 100644 index af40cbce5b..0000000000 --- a/kubernetes/vfc/templates/vfc-catalog-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcCatalog }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-catalog - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.catalog.replicas }} - selector: - matchLabels: - app: vfc-catalog - template: - metadata: - labels: - app: vfc-catalog - name: vfc-catalog - spec: - hostname: vfc-catalog - containers: - - args: - image: {{.Values.catalog.image}} - name: "vfc-catalog" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.catalog.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.catalog.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-emsdriver-deployment.yaml b/kubernetes/vfc/templates/vfc-emsdriver-deployment.yaml deleted file mode 100644 index adfa3be416..0000000000 --- a/kubernetes/vfc/templates/vfc-emsdriver-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcEmsdriver }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-emsdriver - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.emsdriver.replicas }} - selector: - matchLabels: - app: vfc-emsdriver - template: - metadata: - labels: - app: vfc-emsdriver - name: vfc-emsdriver - spec: - hostname: vfc-emsdriver - containers: - - args: - image: {{.Values.emsdriver.image}} - name: "vfc-emsdriver" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.emsdriver.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.emsdriver.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-gvnfmdriver-deployment.yaml b/kubernetes/vfc/templates/vfc-gvnfmdriver-deployment.yaml deleted file mode 100644 index 5252c5e91a..0000000000 --- a/kubernetes/vfc/templates/vfc-gvnfmdriver-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcGvnfmdriver }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-gvnfmdriver - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.gvnfmdriver.replicas }} - selector: - matchLabels: - app: vfc-gvnfmdriver - template: - metadata: - labels: - app: vfc-gvnfmdriver - name: vfc-gvnfmdriver - spec: - hostname: vfc-gvnfmdriver - containers: - - args: - image: {{.Values.gvnfmdriver.image}} - name: "vfc-gvnfmdriver" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.gvnfmdriver.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.gvnfmdriver.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-hwvnfmdriver-deployment.yaml b/kubernetes/vfc/templates/vfc-hwvnfmdriver-deployment.yaml deleted file mode 100644 index 9725f72c5c..0000000000 --- a/kubernetes/vfc/templates/vfc-hwvnfmdriver-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcHwvnfmdriver }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-hwvnfmdriver - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.hwvnfmdriver.replicas }} - selector: - matchLabels: - app: vfc-hwvnfmdriver - template: - metadata: - labels: - app: vfc-hwvnfmdriver - name: vfc-hwvnfmdriver - spec: - hostname: vfc-hwvnfmdriver - containers: - - args: - image: {{.Values.hwvnfmdriver.image}} - name: "vfc-hwvnfmdriver" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.hwvnfmdriver.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.hwvnfmdriver.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-jujudriver-deployment.yaml b/kubernetes/vfc/templates/vfc-jujudriver-deployment.yaml deleted file mode 100644 index ea1a42d8e0..0000000000 --- a/kubernetes/vfc/templates/vfc-jujudriver-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcJujudriver }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-jujudriver - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.jujudriver.replicas }} - selector: - matchLabels: - app: vfc-jujudriver - template: - metadata: - labels: - app: vfc-jujudriver - name: vfc-jujudriver - spec: - hostname: vfc-jujudriver - containers: - - args: - image: {{.Values.jujudriver.image}} - name: "vfc-jujudriver" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.jujudriver.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.jujudriver.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-nokiavnfmdriver-deployment.yaml b/kubernetes/vfc/templates/vfc-nokiavnfmdriver-deployment.yaml deleted file mode 100644 index 843090c0d0..0000000000 --- a/kubernetes/vfc/templates/vfc-nokiavnfmdriver-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcNokiaVnfmDriver }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-nokiavnfmdriver - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.nokiavnfmdriver.replicas }} - selector: - matchLabels: - app: vfc-nokiavnfmdriver - template: - metadata: - labels: - app: vfc-nokiavnfmdriver - name: vfc-nokiavnfmdriver - spec: - hostname: vfc-nokiavnfmdriver - containers: - - args: - image: {{.Values.nokiavnfmdriver.image}} - name: "vfc-nokiavnfmdriver" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.nokiavnfmdriver.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.nokiavnfmdriver.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-nslcm-deployment.yaml b/kubernetes/vfc/templates/vfc-nslcm-deployment.yaml deleted file mode 100644 index 88d5cb6fc8..0000000000 --- a/kubernetes/vfc/templates/vfc-nslcm-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcNslcm }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-nslcm - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.nslcm.replicas }} - selector: - matchLabels: - app: vfc-nslcm - template: - metadata: - labels: - app: vfc-nslcm - name: vfc-nslcm - spec: - hostname: vfc-nslcm - containers: - - args: - image: {{.Values.nslcm.image}} - name: "vfc-nslcm" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.nslcm.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.nslcm.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-resmgr-deployment.yaml b/kubernetes/vfc/templates/vfc-resmgr-deployment.yaml deleted file mode 100644 index 71167d19a1..0000000000 --- a/kubernetes/vfc/templates/vfc-resmgr-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcResmgr }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-resmgr - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.resmgr.replicas }} - selector: - matchLabels: - app: vfc-resmgr - template: - metadata: - labels: - app: vfc-resmgr - name: vfc-resmgr - spec: - hostname: vfc-resmgr - containers: - - args: - image: {{.Values.resmgr.image}} - name: "vfc-resmgr" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.resmgr.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.resmgr.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-vnflcm-deployment.yaml b/kubernetes/vfc/templates/vfc-vnflcm-deployment.yaml deleted file mode 100644 index c5a3893244..0000000000 --- a/kubernetes/vfc/templates/vfc-vnflcm-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcVnflcm }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-vnflcm - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.vnflcm.replicas }} - selector: - matchLabels: - app: vfc-vnflcm - template: - metadata: - labels: - app: vfc-vnflcm - name: vfc-vnflcm - spec: - hostname: vfc-vnflcm - containers: - - args: - image: {{.Values.vnflcm.image}} - name: "vfc-vnflcm" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.vnflcm.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.vnflcm.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-vnfmgr-deployment.yaml b/kubernetes/vfc/templates/vfc-vnfmgr-deployment.yaml deleted file mode 100644 index 240bc74015..0000000000 --- a/kubernetes/vfc/templates/vfc-vnfmgr-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcVnfmgr }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-vnfmgr - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.vnfmgr.replicas }} - selector: - matchLabels: - app: vfc-vnfmgr - template: - metadata: - labels: - app: vfc-vnfmgr - name: vfc-vnfmgr - spec: - hostname: vfc-vnfmgr - containers: - - args: - image: {{.Values.vnfmgr.image}} - name: "vfc-vnfmgr" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.vnfmgr.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.vnfmgr.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-vnfres-deployment.yaml b/kubernetes/vfc/templates/vfc-vnfres-deployment.yaml deleted file mode 100644 index ea394f39d8..0000000000 --- a/kubernetes/vfc/templates/vfc-vnfres-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcVnfres }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-vnfres - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.vnfres.replicas }} - selector: - matchLabels: - app: vfc-vnfres - template: - metadata: - labels: - app: vfc-vnfres - name: vfc-vnfres - spec: - hostname: vfc-vnfres - containers: - - args: - image: {{.Values.vnfres.image}} - name: "vfc-vnfres" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.vnfres.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.vnfres.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-workflow-deployment.yaml b/kubernetes/vfc/templates/vfc-workflow-deployment.yaml deleted file mode 100644 index d6aee58bee..0000000000 --- a/kubernetes/vfc/templates/vfc-workflow-deployment.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcWorkflow }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-workflow - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.workflow.replicas }} - selector: - matchLabels: - app: vfc-workflow - template: - metadata: - labels: - app: vfc-workflow - name: vfc-workflow - spec: - hostname: vfc-workflow - containers: - - args: - image: {{.Values.workflow.image}} - name: "vfc-workflow" - env: - - name: SERVICE_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: SERVICE_PORT - value: "{{ .Values.workflow.port }}" - - name: OPENPALETTE_MSB_IP - value: msb-iag.{{ .Values.nsPrefix }} - - name: OPENPALETTE_MSB_PORT - value: "80" - ports: - - containerPort: {{ .Values.workflow.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.workflow.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-workflow-engine-activity.yaml b/kubernetes/vfc/templates/vfc-workflow-engine-activity.yaml deleted file mode 100644 index 7db01227dc..0000000000 --- a/kubernetes/vfc/templates/vfc-workflow-engine-activity.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcWorkflowEngineActiviti }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-workflowengineactiviti - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.workflowengineactiviti.replicas }} - selector: - matchLabels: - app: vfc-workflowengineactiviti - template: - metadata: - labels: - app: vfc-workflowengineactiviti - name: vfc-workflowengineactiviti - spec: - hostname: vfc-workflowengineactiviti - containers: - - args: - image: {{.Values.workflowengineactiviti.image}} - name: "vfc-workflowengineactiviti" - env: - - name: SERVICE_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: SERVICE_PORT - value: "{{ .Values.workflow.port }}" - - name: OPENPALETTE_MSB_IP - value: msb-iag.{{ .Values.nsPrefix }} - - name: OPENPALETTE_MSB_PORT - value: "80" - ports: - - containerPort: {{ .Values.workflowengineactiviti.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.workflowengineactiviti.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-ztesdncdriver-deployment.yaml b/kubernetes/vfc/templates/vfc-ztesdncdriver-deployment.yaml deleted file mode 100644 index 79e427f635..0000000000 --- a/kubernetes/vfc/templates/vfc-ztesdncdriver-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcZtesdncdriver }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-ztesdncdriver - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.ztesdncdriver.replicas }} - selector: - matchLabels: - app: vfc-ztesdncdriver - template: - metadata: - labels: - app: vfc-ztesdncdriver - name: vfc-ztesdncdriver - spec: - hostname: vfc-ztesdncdriver - containers: - - args: - image: {{.Values.ztesdncdriver.image}} - name: "vfc-ztesdncdriver" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.ztesdncdriver.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.ztesdncdriver.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/templates/vfc-ztevmanagerdriver-deployment.yaml b/kubernetes/vfc/templates/vfc-ztevmanagerdriver-deployment.yaml deleted file mode 100644 index 4874970545..0000000000 --- a/kubernetes/vfc/templates/vfc-ztevmanagerdriver-deployment.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVfcVfcztevnfmdriver }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vfc-ztevnfmdriver - namespace: "{{ .Values.nsPrefix }}" -spec: - replicas: {{ .Values.ztevnfmdriver.replicas }} - selector: - matchLabels: - app: vfc-ztevnfmdriver - template: - metadata: - labels: - app: vfc-ztevnfmdriver - name: vfc-ztevnfmdriver - spec: - hostname: vfc-ztevnfmdriver - containers: - - args: - image: {{.Values.ztevnfmdriver.image}} - name: "vfc-ztevnfmdriver" - env: - - name: MSB_ADDR - value: {{ tpl .Values.msbaddr . }} - ports: - - containerPort: {{ .Values.ztevnfmdriver.port }} - readinessProbe: - tcpSocket: - port: {{ .Values.ztevnfmdriver.port }} - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullPolicy: "{{ .Values.pullPolicy }}" - imagePullSecrets: - - name: "{{ .Values.nsPrefix }}-docker-registry-key" -#{{ end }} diff --git a/kubernetes/vfc/values.yaml b/kubernetes/vfc/values.yaml index b301d2de4c..5a8fa38eb9 100644 --- a/kubernetes/vfc/values.yaml +++ b/kubernetes/vfc/values.yaml @@ -12,81 +12,21 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap -pullPolicy: IfNotPresent -msbaddr: msb-iag.{{ .Values.nsPrefix }}:80 -nslcm: - image: nexus3.onap.org:10001/onap/vfc/nslcm:v1.0.2 - port: 8403 - nodePort: 30403 - replicas: 1 -resmgr: - image: nexus3.onap.org:10001/onap/vfc/resmanagement:v1.0.0 - port: 8480 - nodePort: 30480 - replicas: 1 -gvnfmdriver: - image: nexus3.onap.org:10001/onap/vfc/gvnfmdriver:v1.0.1 - port: 8484 - nodePort: 30484 - replicas: 1 -ztevnfmdriver: - image: nexus3.onap.org:10001/onap/vfc/ztevnfmdriver:v1.0.2 - port: 8410 - nodePort: 30410 - replicas: 1 -hwvnfmdriver: - image: nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/huawei:v1.0.2 - port: 8482 - nodePort: 30482 - replicas: 1 -ztesdncdriver: - image: nexus3.onap.org:10001/onap/vfc/ztesdncdriver:v1.0.0 - port: 8411 - nodePort: 30411 - replicas: 1 -nokiavnfmdriver: - image: nexus3.onap.org:10001/onap/vfc/nfvo/svnfm/nokia:v1.0.2 - port: 8486 - nodePort: 30412 - replicas: 1 -jujudriver: - image: nexus3.onap.org:10001/onap/vfc/jujudriver:v1.0.0 - port: 8483 - nodePort: 30483 - replicas: 1 -vnflcm: - image: nexus3.onap.org:10001/onap/vfc/vnflcm:v1.0.1 - port: 8801 - nodePort: 30801 - replicas: 1 -vnfres: - image: nexus3.onap.org:10001/onap/vfc/vnfres:v1.0.1 - port: 8802 - nodePort: 30802 - replicas: 1 -vnfmgr: - image: nexus3.onap.org:10001/onap/vfc/vnfmgr:v1.0.1 - port: 8803 - nodePort: 30803 - replicas: 1 -emsdriver: - image: nexus3.onap.org:10001/onap/vfc/emsdriver:v1.0.1 - port: 8206 - nodePort: 30296 - replicas: 1 -workflow: - image: nexus3.onap.org:10001/onap/vfc/wfengine-mgrservice:v1.0.0 - port: 10550 - nodePort: 30805 - replicas: 1 -workflowengineactiviti: - image: nexus3.onap.org:10001/onap/vfc/wfengine-activiti:v1.0.0 - port: 8080 - nodePort: 30807 - replicas: 1 -catalog: - image: nexus3.onap.org:10001/onap/vfc/catalog:v1.0.2 - port: 8806 - nodePort: 30806 - replicas: 1 +global: + config: + msbServiceName: msb-iag + msbPort: 80 + +# application configuration +config: + logstashServiceName: log-ls + logstashPort: 5044 + +# sub-chart configuration +vfc-workflow: + service: + externalPort: 10550 + +vfc-workflow-engine: + config: + workflowPort: 10550 diff --git a/kubernetes/vid/templates/deployment.yaml b/kubernetes/vid/templates/deployment.yaml index 89ed734dfb..847e636fa8 100644 --- a/kubernetes/vid/templates/deployment.yaml +++ b/kubernetes/vid/templates/deployment.yaml @@ -71,19 +71,19 @@ spec: periodSeconds: {{ .Values.readiness.periodSeconds }} env: - name: ASDC_CLIENT_REST_HOST - value: sdc-be.{{ include "common.namespace" . }}-sdc + value: sdc-be.{{ include "common.namespace" . }} - name: ASDC_CLIENT_REST_AUTH value: "{{ .Values.config.asdcclientrestauth }}" - name: ASDC_CLIENT_REST_PORT value: "{{ .Values.config.asdcclientrestport }}" - name: VID_AAI_HOST - value: aai-service.{{ include "common.namespace" . }}-aai + value: aai-service.{{ include "common.namespace" . }} - name: VID_AAI_PORT value: "{{ .Values.config.vidaaiport }}" - name: VID_ECOMP_SHARED_CONTEXT_REST_URL - value: http://portalapps.{{ include "common.namespace" . }}-portal:"{{ .Values.config.onapport }}"/ONAPPORTAL/context + value: http://portalapps.{{ include "common.namespace" . }}:"{{ .Values.config.onapport }}"/ONAPPORTAL/context - name: VID_MSO_SERVER_URL - value: http://mso.{{ include "common.namespace" . }}-mso:"{{ .Values.config.msoport }}" + value: http://mso.{{ include "common.namespace" . }}:"{{ .Values.config.msoport }}" - name: VID_MSO_PASS value: "{{ .Values.config.vidmsopass }}" - name: MSO_DME2_SERVER_URL @@ -91,15 +91,15 @@ spec: - name: MSO_DME2_ENABLED value: {{ .Values.global.debugEnabled | default .Values.debugEnabled | quote }} - name: VID_ECOMP_REDIRECT_URL - value: http://portalapps.{{ include "common.namespace" . }}-portal:"{{ .Values.config.onapport }}"/ONAPPORTAL/login.h\tm + value: http://portalapps.{{ include "common.namespace" . }}:"{{ .Values.config.onapport }}"/ONAPPORTAL/login.htm - name: VID_ECOMP_REST_URL - value: http://portalapps.{{ include "common.namespace" . }}-portal:"{{ .Values.config.onapport }}"/ONAPPORTAL/auxapi + value: http://portalapps.{{ include "common.namespace" . }}:"{{ .Values.config.onapport }}"/ONAPPORTAL/auxapi - name: VID_CONTACT_US_LINK value: "{{ .Values.config.vidcontactuslink }}" - name: VID_UEB_URL_LIST - value: dmaap.{{ include "common.namespace" . }}-message-router + value: dmaap.{{ include "common.namespace" . }} - name: VID_MYSQL_HOST - value: "{{ .Values.config.vidmysqlhost }}" + value: "{{ .Release.Name }}-{{ .Values.config.vidmysqlhost }}" - name: VID_MYSQL_PORT value: "{{ .Values.config.vidmysqlport }}" - name: VID_MYSQL_DBNAME diff --git a/kubernetes/vid/values.yaml b/kubernetes/vid/values.yaml index b42bceb093..ac68f2e9ad 100644 --- a/kubernetes/vid/values.yaml +++ b/kubernetes/vid/values.yaml @@ -19,7 +19,7 @@ global: nodePortPrefix: 302 repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== readinessRepository: oomk8s - readinessImage: readiness-check:1.1.0 + readinessImage: readiness-check:2.0.0 loggingRepository: docker.elastic.co loggingImage: beats/filebeat:5.5.0 @@ -56,7 +56,7 @@ config: # subchart configuration mariadb: - nameOverride: vid-db + nameOverride: vid-mariadb # default number of instances replicaCount: 1 diff --git a/kubernetes/vnfsdk/Chart.yaml b/kubernetes/vnfsdk/Chart.yaml index 3a1b4abbef..d11ff56434 100644 --- a/kubernetes/vnfsdk/Chart.yaml +++ b/kubernetes/vnfsdk/Chart.yaml @@ -13,6 +13,6 @@ # limitations under the License. apiVersion: v1 -description: A Helm chart for Kubernetes +description: ONAP VNF SDK name: vnfsdk -version: 1.1.0 +version: 2.0.0 diff --git a/kubernetes/vnfsdk/charts/vnfsdk-postgres/Chart.yaml b/kubernetes/vnfsdk/charts/vnfsdk-postgres/Chart.yaml new file mode 100644 index 0000000000..ea52e3b606 --- /dev/null +++ b/kubernetes/vnfsdk/charts/vnfsdk-postgres/Chart.yaml @@ -0,0 +1,18 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +description: Postgres Service +name: vnfsdk-postgres +version: 2.0.0 diff --git a/kubernetes/vnfsdk/charts/vnfsdk-postgres/templates/NOTES.txt b/kubernetes/vnfsdk/charts/vnfsdk-postgres/templates/NOTES.txt new file mode 100644 index 0000000000..652e69dc3d --- /dev/null +++ b/kubernetes/vnfsdk/charts/vnfsdk-postgres/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/vnfsdk/charts/vnfsdk-postgres/templates/job.yaml b/kubernetes/vnfsdk/charts/vnfsdk-postgres/templates/job.yaml new file mode 100644 index 0000000000..6c1a0c0e58 --- /dev/null +++ b/kubernetes/vnfsdk/charts/vnfsdk-postgres/templates/job.yaml @@ -0,0 +1,42 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ include "common.fullname" . }}-config + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }}-job + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + template: + metadata: + labels: + app: {{ include "common.name" . }}-job + release: {{ .Release.Name }} + spec: + restartPolicy: Never + hostname: postgres + containers: + - name: {{ include "common.name" . }}-job + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.pullPolicy | default .Values.global.pullPolicy }} + env: + - name: DB_HOST + value: "{{ .Release.Name }}-{{ .Values.service.name }}" + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vnfsdk/charts/vnfsdk-postgres/templates/service.yaml b/kubernetes/vnfsdk/charts/vnfsdk-postgres/templates/service.yaml new file mode 100644 index 0000000000..6aac9e603b --- /dev/null +++ b/kubernetes/vnfsdk/charts/vnfsdk-postgres/templates/service.yaml @@ -0,0 +1,38 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default "302" }}{{ .Values.service.nodePort }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + {{- end}} + name: {{ .Values.service.name }} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/vnfsdk/charts/vnfsdk-postgres/values.yaml b/kubernetes/vnfsdk/charts/vnfsdk-postgres/values.yaml new file mode 100644 index 0000000000..d99eab982d --- /dev/null +++ b/kubernetes/vnfsdk/charts/vnfsdk-postgres/values.yaml @@ -0,0 +1,63 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repository: nexus3.onap.org:10001 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/refrepo/postgres:latest +pullPolicy: Always + +# flag to enable debugging - application support required +debugEnabled: false + +replicaCount: 1 + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: ClusterIP + name: pgset + internalPort: 5432 + externalPort: 5432 + +ingress: + enabled: false diff --git a/kubernetes/sdnc/templates/sdnc-data-storageclass.yaml b/kubernetes/vnfsdk/requirements.yaml index 1e6bf53b21..caf41498fb 100644 --- a/kubernetes/sdnc/templates/sdnc-data-storageclass.yaml +++ b/kubernetes/vnfsdk/requirements.yaml @@ -12,13 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -#{{ if not .Values.disableSdncSdncDbhost }} -#{{ if not .Values.disableNfsProvisioner }} -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: "{{ .Values.nsPrefix }}-sdnc-data" - namespace: "{{ .Values.nsPrefix }}" -provisioner: sdnc/nfs -#{{ end }} -#{{ end }} +dependencies: + - name: common + version: ~2.0.0 + # local reference to common chart, as it is + # a part of this chart's package and will not + # be published independently to a repo (at this point) + repository: '@local' + - name: postgres + version: ~2.0.0 + repository: '@local' diff --git a/kubernetes/vnfsdk/templates/NOTES.txt b/kubernetes/vnfsdk/templates/NOTES.txt new file mode 100644 index 0000000000..652e69dc3d --- /dev/null +++ b/kubernetes/vnfsdk/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http://{{ . }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.externalPort }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ template "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }} +{{- end }} diff --git a/kubernetes/vnfsdk/templates/deployment.yaml b/kubernetes/vnfsdk/templates/deployment.yaml new file mode 100644 index 0000000000..2e5f40b83c --- /dev/null +++ b/kubernetes/vnfsdk/templates/deployment.yaml @@ -0,0 +1,61 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + selector: + matchLabels: + app: {{ include "common.name" . }} + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} + name: {{ include "common.name" . }} + spec: + initContainers: + - command: + - /root/ready.py + args: + - --container-name + - "{{ index .Values "vnfsdk-postgres" "nameOverride" }}" + env: + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}" + imagePullPolicy: {{ .Values.global.pullPolicy}} + name: {{ include "common.name" . }}-readiness + containers: + - image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.pullPolicy | default .Values.global.pullPolicy }} + name: {{ include "common.name" . }} + readinessProbe: + tcpSocket: + port: {{ .Values.service.internalPort }} + initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }} + periodSeconds: {{ .Values.readiness.periodSeconds }} + imagePullSecrets: + - name: "{{ include "common.namespace" . }}-docker-registry-key" diff --git a/kubernetes/vnfsdk/templates/postgres-deployment.yaml b/kubernetes/vnfsdk/templates/postgres-deployment.yaml deleted file mode 100644 index 14eb741157..0000000000 --- a/kubernetes/vnfsdk/templates/postgres-deployment.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVnfsdkPostgres }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: vnfsdk-postgres - namespace: {{ .Values.nsPrefix }} -spec: - replicas: 1 - selector: - matchLabels: - app: postgres - template: - metadata: - labels: - app: postgres - name: vnfsdk-postgres - spec: - hostname: postgres - containers: - - args: - image: {{ .Values.image.postgresImage }}:{{ .Values.image.postgresVersion }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: "postgres" - imagePullSecrets: - - name: {{ .Values.nsPrefix }}-docker-registry-key -#{{ end }} diff --git a/kubernetes/vnfsdk/templates/refrepo-deployment.yaml b/kubernetes/vnfsdk/templates/refrepo-deployment.yaml deleted file mode 100644 index 95d6fedad9..0000000000 --- a/kubernetes/vnfsdk/templates/refrepo-deployment.yaml +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright © 2017 Amdocs, Bell Canada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#{{ if not .Values.disableVnfsdkRefrepo }} -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - labels: - app: refrepo - name: vnfsdk-refrepo - namespace: "{{ .Values.nsPrefix }}" -spec: - selector: - matchLabels: - app: refrepo - template: - metadata: - labels: - app: refrepo - name: vnfsdk-refrepo - spec: - initContainers: - - command: - - /root/ready.py - args: - - --container-name - - postgres - env: - - name: NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: "{{ .Values.image.readiness }}:{{ .Values.image.readinessVersion }}" - imagePullPolicy: {{ .Values.pullPolicy }} - name: vnfsdk-readiness - containers: - - image: {{ .Values.image.refrepoImage }}:{{ .Values.image.refrepoVersion }} - imagePullPolicy: {{ .Values.pullPolicy }} - name: refrepo - readinessProbe: - tcpSocket: - port: 8702 - initialDelaySeconds: 5 - periodSeconds: 10 - imagePullSecrets: - - name: {{ .Values.nsPrefix }}-docker-registry-key -#{{ end }} diff --git a/kubernetes/vnfsdk/templates/service.yaml b/kubernetes/vnfsdk/templates/service.yaml new file mode 100644 index 0000000000..6aac9e603b --- /dev/null +++ b/kubernetes/vnfsdk/templates/service.yaml @@ -0,0 +1,38 @@ +# Copyright © 2017 Amdocs, Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + {{if eq .Values.service.type "NodePort" -}} + - port: {{ .Values.service.internalPort }} + nodePort: {{ .Values.global.nodePortPrefix | default "302" }}{{ .Values.service.nodePort }} + {{- else -}} + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + {{- end}} + name: {{ .Values.service.name }} + selector: + app: {{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/kubernetes/vnfsdk/values.yaml b/kubernetes/vnfsdk/values.yaml index 3c21d5cb28..0643d58c60 100644 --- a/kubernetes/vnfsdk/values.yaml +++ b/kubernetes/vnfsdk/values.yaml @@ -12,13 +12,54 @@ # See the License for the specific language governing permissions and # limitations under the License. -nsPrefix: onap +################################################################# +# Global configuration defaults. +################################################################# +global: + nodePortPrefix: 302 + repository: nexus3.onap.org:10001 + repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ== + readinessRepository: oomk8s + readinessImage: readiness-check:2.0.0 + loggingRepository: docker.elastic.co + loggingImage: beats/filebeat:5.5.0 + +################################################################# +# Application configuration defaults. +################################################################# +# application image +repository: nexus3.onap.org:10001 +image: onap/refrepo:1.1-STAGING-latest pullPolicy: Always -nodePortPrefix: 302 -image: - readiness: oomk8s/readiness-check - readinessVersion: 1.1.0 - postgresImage: nexus3.onap.org:10001/onap/refrepo/postgres - postgresVersion: latest - refrepoImage: nexus3.onap.org:10001/onap/refrepo - refrepoVersion: 1.0-STAGING-latest + +#subchart name +vnfsdk-postgres: + nameOverride: postgres + +# flag to enable debugging - application support required +debugEnabled: false + +nodeSelector: {} + +affinity: {} + +# probe configuration parameters +liveness: + initialDelaySeconds: 10 + periodSeconds: 10 + # necessary to disable liveness probe when setting breakpoints + # in debugger so K8s doesn't restart unresponsive container + enabled: true + +readiness: + initialDelaySeconds: 10 + periodSeconds: 10 + +service: + type: NodePort + name: refrepo + nodePort: 97 + internalPort: 8702 + +ingress: + enabled: false |