AAF 2.1.15 Dockers

Issue-ID: AAF-902
Change-Id: I3a83eee98dfeb7fb9751019faf618897dbc9d34f
Signed-off-by: Instrumental <jonathan.gathman@att.com>
diff --git a/kubernetes/aaf/charts/aaf-cass/templates/deployment.yaml b/kubernetes/aaf/charts/aaf-cass/templates/deployment.yaml
index c664d03..5bbb1d7 100644
--- a/kubernetes/aaf/charts/aaf-cass/templates/deployment.yaml
+++ b/kubernetes/aaf/charts/aaf-cass/templates/deployment.yaml
@@ -32,7 +32,7 @@
     spec:
       containers:
       - name: {{ include "common.name" . }}
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_cass:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.cass.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         # installing with cmd "onap" will not only initialize the DB, but add ONAP bootstrap data as well
         command: ["/bin/bash","/opt/app/aaf/cass_init/cmd.sh","onap"]
diff --git a/kubernetes/aaf/charts/aaf-cm/templates/deployment.yaml b/kubernetes/aaf/charts/aaf-cm/templates/deployment.yaml
index 87bcaa4..19d7625 100644
--- a/kubernetes/aaf/charts/aaf-cm/templates/deployment.yaml
+++ b/kubernetes/aaf/charts/aaf-cm/templates/deployment.yaml
@@ -32,7 +32,7 @@
     spec:
       initContainers:
       - name: {{ include "common.name" . }}-config-container
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_config:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.config.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         command: ["bash","-c","cd /opt/app/aaf_config && bin/pod_wait.sh config aaf-service remove && bin/agent.sh"]
         volumeMounts:
@@ -57,14 +57,14 @@
             value: "{{ .Values.global.aaf.aaf_release }}"
           - name: aaf_locator_container_ns
             value: "{{ .Release.Namespace }}"
-          - name: aaf_locator_container
-            value: "oom"
           - name: aaf_locator_public_fqdn
             value: "{{.Values.global.aaf.public_fqdn}}"
           - name: aaf_locator_name
             value: "{{.Values.global.aaf.aaf_locator_name}}"
           - name: aaf_locator_name_oom
             value: "{{.Values.global.aaf.aaf_locator_name_oom}}"
+          - name: cm_always_ignore_ips
+            value: "true"
           - name: CASSANDRA_CLUSTER
             value: "{{.Values.global.aaf.cass.fqdn}}.{{ .Release.Namespace }}"
 #          - name: CASSANDRA_USER
@@ -76,7 +76,7 @@
       containers:
       - name: {{ include "common.name" . }}
         command: ["/bin/bash","-c","cd /opt/app/aaf && /bin/bash bin/pod_wait.sh aaf-cm aaf-locate && exec bin/cm"]
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_cm:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
         - mountPath: "/opt/app/osaaf"
diff --git a/kubernetes/aaf/charts/aaf-fs/templates/deployment.yaml b/kubernetes/aaf/charts/aaf-fs/templates/deployment.yaml
index 9f97da9..cd72fdd 100644
--- a/kubernetes/aaf/charts/aaf-fs/templates/deployment.yaml
+++ b/kubernetes/aaf/charts/aaf-fs/templates/deployment.yaml
@@ -32,7 +32,7 @@
     spec:
       initContainers:
       - name: {{ include "common.name" . }}-config-container
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_config:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.config.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         command: ["bash","-c","cd /opt/app/aaf_config && bin/pod_wait.sh config aaf-service remove && bin/agent.sh"]
         volumeMounts:
@@ -57,14 +57,14 @@
             value: "{{ .Values.global.aaf.aaf_release }}"
           - name: aaf_locator_container_ns
             value: "{{ .Release.Namespace }}"
-          - name: aaf_locator_container
-            value: "oom"
           - name: aaf_locator_public_fqdn
             value: "{{.Values.global.aaf.public_fqdn}}"
           - name: aaf_locator_name
             value: "{{.Values.global.aaf.aaf_locator_name}}"
           - name: aaf_locator_name_oom
             value: "{{.Values.global.aaf.aaf_locator_name_oom}}"
+          - name: cm_always_ignore_ips
+            value: "true"
           - name: CASSANDRA_CLUSTER
             value: "{{.Values.global.aaf.cass.fqdn}}.{{ .Release.Namespace }}"
 #          - name: CASSANDRA_USER
@@ -72,10 +72,11 @@
 #          - name: CASSANDRA_PASSWORD
 #            value: ""
 #         - name: CASSANDRA_PORT
+#            value: ""
       containers:
       - name: {{ include "common.name" . }}
         command: ["/bin/bash","-c","cd /opt/app/aaf && /bin/bash bin/pod_wait.sh aaf-fs aaf-locate && exec bin/fs"]
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_fs:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
         - mountPath: "/opt/app/osaaf"
diff --git a/kubernetes/aaf/charts/aaf-gui/templates/deployment.yaml b/kubernetes/aaf/charts/aaf-gui/templates/deployment.yaml
index d067b5e..4a433cc 100644
--- a/kubernetes/aaf/charts/aaf-gui/templates/deployment.yaml
+++ b/kubernetes/aaf/charts/aaf-gui/templates/deployment.yaml
@@ -32,7 +32,7 @@
     spec:
       initContainers:
       - name: {{ include "common.name" . }}-config-container
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_config:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.config.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         command: ["bash","-c","cd /opt/app/aaf_config && bin/pod_wait.sh config aaf-service remove && bin/agent.sh"]
         volumeMounts:
@@ -57,14 +57,14 @@
             value: "{{ .Values.global.aaf.aaf_release }}"
           - name: aaf_locator_container_ns
             value: "{{ .Release.Namespace }}"
-          - name: aaf_locator_container
-            value: "oom"
           - name: aaf_locator_public_fqdn
             value: "{{.Values.global.aaf.public_fqdn}}"
           - name: aaf_locator_name
             value: "{{.Values.global.aaf.aaf_locator_name}}"
           - name: aaf_locator_name_oom
             value: "{{.Values.global.aaf.aaf_locator_name_oom}}"
+          - name: cm_always_ignore_ips
+            value: "true"
           - name: CASSANDRA_CLUSTER
             value: "{{.Values.global.aaf.cass.fqdn}}.{{ .Release.Namespace }}"
 #          - name: CASSANDRA_USER
@@ -72,10 +72,11 @@
 #          - name: CASSANDRA_PASSWORD
 #            value: ""
 #         - name: CASSANDRA_PORT
+#            value: ""
       containers:
       - name: {{ include "common.name" . }}
         command: ["/bin/bash","-c","cd /opt/app/aaf && /bin/bash bin/pod_wait.sh aaf-gui aaf-locate && exec bin/gui"]  
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_gui:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
         - mountPath: "/opt/app/osaaf"
diff --git a/kubernetes/aaf/charts/aaf-hello/templates/NOTES.txt b/kubernetes/aaf/charts/aaf-hello/templates/NOTES.txt
index bd74a42..ef4d8e7 100644
--- a/kubernetes/aaf/charts/aaf-hello/templates/NOTES.txt
+++ b/kubernetes/aaf/charts/aaf-hello/templates/NOTES.txt
@@ -12,22 +12,3 @@
 # 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.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/aaf/charts/aaf-hello/templates/aaf-hello-pv.yaml b/kubernetes/aaf/charts/aaf-hello/templates/aaf-hello-pv.yaml
new file mode 100644
index 0000000..066bf38
--- /dev/null
+++ b/kubernetes/aaf/charts/aaf-hello/templates/aaf-hello-pv.yaml
@@ -0,0 +1,48 @@
+{{- if and .Values.global.persistence.enabled (not .Values.persistence.existingClaim) -}}
+#########
+##  ============LICENSE_START====================================================
+##  org.onap.aaf
+##  ===========================================================================
+##  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====================================================
+##
+
+kind: PersistentVolume
+apiVersion: v1
+metadata:
+  name: {{ .Release.Name }}-aaf-hello-pv
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ .Chart.Name  }}-hello
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    name: {{ include "common.fullname" . }}
+spec:
+  capacity:
+    storage: {{ .Values.persistence.config.size}}
+  accessModes:
+    - {{ .Values.persistence.config.accessMode }}
+  persistentVolumeReclaimPolicy: {{ .Values.persistence.config.volumeReclaimPolicy }}
+  hostPath:
+     path: {{ .Values.persistence.config.mountPath }}
+{{- if .Values.persistence.config.storageClass }}
+{{- if (eq "-" .Values.persistence.config.storageClass) }}
+  storageClassName: ""
+{{- else }}
+  storageClassName: "{{ .Values.persistence.config.storageClass }}"
+{{- end }}
+{{- end }}
+{{- end -}}
diff --git a/kubernetes/aaf/charts/aaf-hello/templates/aaf-hello-pvc.yaml b/kubernetes/aaf/charts/aaf-hello/templates/aaf-hello-pvc.yaml
new file mode 100644
index 0000000..7c45b8b
--- /dev/null
+++ b/kubernetes/aaf/charts/aaf-hello/templates/aaf-hello-pvc.yaml
@@ -0,0 +1,52 @@
+{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
+#########
+##  ============LICENSE_START====================================================
+##  org.onap.aaf
+##  ===========================================================================
+##  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====================================================
+##
+kind: PersistentVolumeClaim
+apiVersion: v1
+metadata:
+  name: {{ .Release.Name }}-aaf-hello-pvc
+  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:
+      app: {{ include "common.name" . }}-hello
+  accessModes:
+    - {{ .Values.persistence.config.accessMode }}
+  resources:
+    requests:
+      storage: {{ .Values.persistence.config.size }}
+{{- if .Values.persistence.config.storageClass }}
+{{- if (eq "-" .Values.persistence.config.storageClass) }}
+  storageClassName: ""
+{{- else }}
+  storageClassName: "{{ .Values.persistence.config.storageClass }}"
+{{- end }}
+{{- end }}
+{{- end -}}
+
diff --git a/kubernetes/aaf/charts/aaf-hello/templates/deployment.yaml b/kubernetes/aaf/charts/aaf-hello/templates/deployment.yaml
index 9faa580..c5fcf68 100644
--- a/kubernetes/aaf/charts/aaf-hello/templates/deployment.yaml
+++ b/kubernetes/aaf/charts/aaf-hello/templates/deployment.yaml
@@ -11,7 +11,6 @@
 # WITHOUT 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:
@@ -30,75 +29,71 @@
         app: {{ include "common.name" . }}
         release: {{ .Release.Name }}
     spec:
+      volumes:
+      - name: localtime
+        hostPath:
+          path: /etc/localtime
+      - name: aaf-hello-vol
+        persistentVolumeClaim:
+          claimName: {{ .Release.Name }}-aaf-hello-pvc
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
       initContainers:
-      - name: {{ include "common.name" . }}-config-container
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_agent:{{.Values.global.aaf.imageVersion}}
+      - name: {{ include "common.name" . }}-config
+        image: {{ .Values.global.repository }}/{{.Values.aaf_init.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
-        - mountPath: "/opt/app/osaaf/local"
+        - mountPath: "/opt/app/osaaf"
           name: aaf-hello-vol
-        command: ["bash","-c","/opt/app/aaf_config/bin/pod_wait.sh config nc aaf-cm.{{.Release.Namespace}} 8150 remove && cd /opt/app/osaaf/local && /opt/app/aaf_config/bin/agent.sh"]
+# NOTE: Before this, need Liveness Attached to aaf-certman
+        command: ["bash","-c","exec /opt/app/aaf_config/bin/agent.sh"]
         env:
-          - name: aaf_env
-            value: "{{ .Values.global.aaf.aaf_env }}"
-          - name: cadi_latitude
-            value: "{{ .Values.global.aaf.cadi_latitude }}"
-          - name: cadi_longitude
-            value: "{{ .Values.global.aaf.cadi_longitude }}"
+          - name: APP_FQI
+            value: "{{ .Values.aaf_init.fqi }}"
           - name: aaf_locate_url
-            value: "https://aaf-locate.{{ .Release.Namespace}}:{{.Values.global.aaf.locate.internal_port}}"
-          - name: aaf_locator_container
-            value: "oom"
-          - name: aaf_release
-            value: "{{ .Values.global.aaf.aaf_release }}"
-          - name: aaf_locator_container_ns
-            value: "{{ .Release.Namespace }}"
+            value: "https://aaf-locate.{{ .Release.Namespace}}:8095"
           - name: aaf_locator_container
             value: "oom"
           - name: aaf_locator_container_ns
             value: "{{ .Release.Namespace }}"
+          - name: aaf_locator_fqdn
+            value: "{{ .Values.aaf_init.fqdn }}"
           - name: aaf_locator_app_ns
-            value: "org.osaaf.aaf"
-          - name: "APP_FQDN"
-            value: "{{ .Values.global.aaf.hello.fqdn }}"
-          - name: "APP_FQI"
-            value: "aaf@aaf.osaaf.org"
-          - name: "DEPLOY_FQI"
+            value: "{{ .Values.aaf_init.app_ns }}"
+          - name: DEPLOY_FQI
             value: "deployer@people.osaaf.org"
-          - name: "DEPLOY_PASSWORD"
+# Note: We want to put this in Secrets or at LEAST ConfigMaps
+          - name: DEPLOY_PASSWORD
             value: "demo123456!"
-# Hello specific.  Clients don't necessarily need this
+# Note: want to put this on Nodes, evenutally
+          - name: cadi_longitude
+            value: "{{ .Values.aaf_init.cadi_longitude }}"
+          - name: cadi_latitude
+            value: "{{ .Values.aaf_init.cadi_latitude }}"
+# Hello specific.  Clients don't don't need this, unless Registering with AAF Locator
           - name: aaf_locator_public_fqdn
             value: "{{.Values.global.aaf.public_fqdn}}"
-          - name: aaf_locator_name
-            value: "{{.Values.global.aaf.aaf_locator_name}}"
-          - name: aaf_locator_name_oom
-            value: "{{.Values.global.aaf.aaf_locator_name_oom}}"
-          - name: aaf_locator_fqdn_oom
-            value: "%N.%CNS"
       containers:
       - name: {{ include "common.name" . }}
-        command: ["/bin/bash","-c","cd /opt/app/aaf && exec bin/hello"]
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_hello:{{.Values.global.aaf.imageVersion}}
+        command: ["bash","-c","cd /opt/app/aaf && if [ ! -d /opt/app/osaaf/etc ]; then cp -Rf etc logs /opt/app/osaaf; fi && exec bin/hello"]
+        image: {{ .Values.global.repository }}/{{.Values.service.image }}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
-        - mountPath: "/opt/app/osaaf/local"
+        - mountPath: "/opt/app/osaaf"
           name: aaf-hello-vol
-        - mountPath: "/opt/app/aaf/status"
-          name: aaf-status-vol
         - mountPath: /etc/localtime
           name: localtime
           readOnly: true
         {{- if eq .Values.liveness.enabled true }}
         livenessProbe:
           tcpSocket:
-            port: {{ .Values.service.internalPort }}
+            port: {{ .Values.service.port }}
           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
           periodSeconds: {{ .Values.liveness.periodSeconds }}
         {{ end -}}
         readinessProbe:
           tcpSocket:
-            port: {{ .Values.service.internalPort }}
+            port: {{ .Values.service.port }}
           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
           periodSeconds: {{ .Values.readiness.periodSeconds }}
         resources:
@@ -111,14 +106,3 @@
       affinity:
 {{ toYaml .Values.affinity | indent 10 }}
       {{- end }}
-      volumes:
-      - name: localtime
-        hostPath:
-          path: /etc/localtime
-      - name: aaf-status-vol
-        persistentVolumeClaim:
-          claimName: {{ .Release.Name }}-aaf-status-pvc
-      - name: aaf-hello-vol
-        emptyDir: {}
-      imagePullSecrets:
-      - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/aaf/charts/aaf-hello/templates/service.yaml b/kubernetes/aaf/charts/aaf-hello/templates/service.yaml
index 102e85d..ab89171 100644
--- a/kubernetes/aaf/charts/aaf-hello/templates/service.yaml
+++ b/kubernetes/aaf/charts/aaf-hello/templates/service.yaml
@@ -24,8 +24,8 @@
     heritage: {{ .Release.Service }}
 spec:
   ports:
-    - port: {{ .Values.global.aaf.hello.internal_port }}
-      nodePort: {{ .Values.global.aaf.hello.public_port }}
+    - port: {{ .Values.service.port }}
+      nodePort: {{ .Values.service.public_port }}
       name: aaf-hello
   selector:
     app: {{ include "common.name" . }}
diff --git a/kubernetes/aaf/charts/aaf-hello/values.yaml b/kubernetes/aaf/charts/aaf-hello/values.yaml
index c3ed9e1..ea6665c 100644
--- a/kubernetes/aaf/charts/aaf-hello/values.yaml
+++ b/kubernetes/aaf/charts/aaf-hello/values.yaml
@@ -24,7 +24,34 @@
 # Application configuration defaults.
 #################################################################
 # application image
+aaf_init:
+  # You might want this in your own app.  For AAF, we store in global
+  # replicas: 1
+  fqdn: "aaf-hello"
+  image: onap/aaf/aaf_agent:2.1.15
+  app_ns: "org.osaaf.aaf"
+  fqi: "aaf@aaf.osaaf.org"
+  fqdn: "aaf-hello"
+  public_fqdn: "aaf.osaaf.org"
+  deploy_fqi: "deployer@people.osaaf.org"
+  cadi_latitude: "38.0"
+  cadi_longitude: "-72.0"
 
+service:
+  image: onap/aaf/aaf_hello:2.1.15
+  port: "8130"
+  public_port: "31119"
+
+persistence:
+  enabled: true
+  config:
+    #existingClaim:
+    # You will want "Reatan" in non-Hello Example.
+    volumeReclaimPolicy: Delete
+    accessMode: ReadWriteMany
+    size: 40M
+    storageClass: "manual"
+    mountPath: "/mnt/data/aaf/hello"
 
 nodeSelector: {}
 
@@ -42,15 +69,6 @@
   initialDelaySeconds: 5
   periodSeconds: 10
 
-service:
-  name: aaf-hello
-  type: ClusterIP
-  portName: aaf-hello
-  #targetPort
-  internalPort: 8130
-  #port
-  externalPort: 8130
-
 ingress:
   enabled: false
 
diff --git a/kubernetes/aaf/charts/aaf-locate/templates/deployment.yaml b/kubernetes/aaf/charts/aaf-locate/templates/deployment.yaml
index f504063..69d1612 100644
--- a/kubernetes/aaf/charts/aaf-locate/templates/deployment.yaml
+++ b/kubernetes/aaf/charts/aaf-locate/templates/deployment.yaml
@@ -32,7 +32,7 @@
     spec:
       initContainers:
       - name: {{ include "common.name" . }}-config-container
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_config:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.config.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         command: ["bash","-c","cd /opt/app/aaf_config && bin/pod_wait.sh config aaf-service remove && bin/agent.sh"]
         volumeMounts:
@@ -57,14 +57,14 @@
             value: "{{ .Values.global.aaf.aaf_release }}"
           - name: aaf_locator_container_ns
             value: "{{ .Release.Namespace }}"
-          - name: aaf_locator_container
-            value: "oom"
           - name: aaf_locator_public_fqdn
             value: "{{.Values.global.aaf.public_fqdn}}"
           - name: aaf_locator_name
             value: "{{.Values.global.aaf.aaf_locator_name}}"
           - name: aaf_locator_name_oom
             value: "{{.Values.global.aaf.aaf_locator_name_oom}}"
+          - name: cm_always_ignore_ips
+            value: "true"
           - name: CASSANDRA_CLUSTER
             value: "{{.Values.global.aaf.cass.fqdn}}.{{ .Release.Namespace }}"
 #          - name: CASSANDRA_USER
@@ -72,10 +72,11 @@
 #          - name: CASSANDRA_PASSWORD
 #            value: ""
 #         - name: CASSANDRA_PORT
+#            value: ""
       containers:
       - name: {{ include "common.name" . }}
         command: ["/bin/bash","-c","cd /opt/app/aaf && /bin/bash bin/pod_wait.sh aaf-locate aaf-service && exec bin/locate"]
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_locate:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
         - mountPath: "/opt/app/osaaf"
diff --git a/kubernetes/aaf/charts/aaf-oauth/templates/deployment.yaml b/kubernetes/aaf/charts/aaf-oauth/templates/deployment.yaml
index cc328d5..b371c86 100644
--- a/kubernetes/aaf/charts/aaf-oauth/templates/deployment.yaml
+++ b/kubernetes/aaf/charts/aaf-oauth/templates/deployment.yaml
@@ -32,7 +32,7 @@
     spec:
       initContainers:
       - name: {{ include "common.name" . }}-config-container
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_config:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.config.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         command: ["bash","-c","cd /opt/app/aaf_config && bin/pod_wait.sh config aaf-service remove && bin/agent.sh"]
         volumeMounts:
@@ -57,14 +57,14 @@
             value: "{{ .Values.global.aaf.aaf_release }}"
           - name: aaf_locator_container_ns
             value: "{{ .Release.Namespace }}"
-          - name: aaf_locator_container
-            value: "oom"
           - name: aaf_locator_public_fqdn
             value: "{{.Values.global.aaf.public_fqdn}}"
           - name: aaf_locator_name
             value: "{{.Values.global.aaf.aaf_locator_name}}"
           - name: aaf_locator_name_oom
             value: "{{.Values.global.aaf.aaf_locator_name_oom}}"
+          - name: cm_always_ignore_ips
+            value: "true"
           - name: CASSANDRA_CLUSTER
             value: "{{.Values.global.aaf.cass.fqdn}}.{{ .Release.Namespace }}"
 #          - name: CASSANDRA_USER
@@ -72,10 +72,11 @@
 #          - name: CASSANDRA_PASSWORD
 #            value: ""
 #         - name: CASSANDRA_PORT
+#            value: ""
       containers:
       - name: {{ include "common.name" . }}
         command: ["/bin/bash","-c","cd /opt/app/aaf && /bin/bash bin/pod_wait.sh aaf-oauth aaf-service && exec bin/oauth"]
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_oauth:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
         - mountPath: "/opt/app/osaaf"
diff --git a/kubernetes/aaf/charts/aaf-service/templates/deployment.yaml b/kubernetes/aaf/charts/aaf-service/templates/deployment.yaml
index 1801bfe..1c09718 100644
--- a/kubernetes/aaf/charts/aaf-service/templates/deployment.yaml
+++ b/kubernetes/aaf/charts/aaf-service/templates/deployment.yaml
@@ -32,7 +32,7 @@
     spec:
       initContainers:
       - name: {{ include "common.name" . }}-config-container
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_config:{{.Values.global.aaf.imageVersion}}
+        image: {{ .Values.global.repository }}/{{.Values.global.aaf.config.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         command: ["bash","-c","cd /opt/app/aaf_config && bin/pod_wait.sh config nc aaf-cass.{{ .Release.Namespace }} 9042 sleep 15 remove && bin/agent.sh"]
         volumeMounts:
@@ -63,6 +63,8 @@
             value: "{{.Values.global.aaf.aaf_locator_name}}"
           - name: aaf_locator_name_oom
             value: "{{.Values.global.aaf.aaf_locator_name_oom}}"
+          - name: cm_always_ignore_ips
+            value: "true"
           - name: CASSANDRA_CLUSTER
             value: "{{.Values.global.aaf.cass.fqdn}}.{{ .Release.Namespace }}"
 #          - name: CASSANDRA_USER
@@ -73,9 +75,12 @@
 #            value: ""
       containers:
       - name: {{ include "common.name" . }}
-        command: ["/bin/bash","-c","cd /opt/app/aaf && bin/pod_wait.sh aaf-service aaf-cass  && exec bin/service"]
-        image: {{ .Values.global.repository }}/onap/aaf/aaf_service:{{.Values.global.aaf.imageVersion}}
+        command: ["/bin/bash","-c","cd /opt/app/aaf  && bin/pod_wait.sh aaf-service aaf-cass  && exec bin/service"]
+        image: {{.Values.global.repository}}/{{.Values.global.aaf.image}}
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        env:
+          - name: cm_always_ignore_ips
+            value: "true"
         lifecycle:
           preStop:
             exec:
diff --git a/kubernetes/aaf/charts/aaf-sms/charts/aaf-sms-vault/templates/service.yaml b/kubernetes/aaf/charts/aaf-sms/charts/aaf-sms-vault/templates/service.yaml
index de6130c..04e9a5a 100644
--- a/kubernetes/aaf/charts/aaf-sms/charts/aaf-sms-vault/templates/service.yaml
+++ b/kubernetes/aaf/charts/aaf-sms/charts/aaf-sms-vault/templates/service.yaml
@@ -28,7 +28,7 @@
   - name: {{ .Values.service.portName }}
     {{if eq .Values.service.type "NodePort" -}}
     port: {{ .Values.service.internalPort }}
-    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+    nodePort: {{ .Values.global.nodePortPrefix | default "302" }}{{ .Values.service.nodePort }}
     {{- else -}}
     port: {{ .Values.service.externalPort }}
     targetPort: {{ .Values.service.internalPort }}
diff --git a/kubernetes/aaf/charts/aaf-sms/templates/service.yaml b/kubernetes/aaf/charts/aaf-sms/templates/service.yaml
index 5e6bffb..18334a3 100644
--- a/kubernetes/aaf/charts/aaf-sms/templates/service.yaml
+++ b/kubernetes/aaf/charts/aaf-sms/templates/service.yaml
@@ -28,7 +28,7 @@
   - name: {{ .Values.service.PortName }}
     {{if eq .Values.service.type "NodePort" -}}
     port: {{ .Values.service.internalPort }}
-    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+    nodePort: {{ .Values.global.nodePortPrefix | default "302" }}{{ .Values.service.nodePort }}
     {{- else -}}
     port: {{ .Values.service.externalPort }}
     targetPort: {{ .Values.service.internalPort }}
diff --git a/kubernetes/aaf/values.yaml b/kubernetes/aaf/values.yaml
index 1ddb604..0109a5e 100644
--- a/kubernetes/aaf/values.yaml
+++ b/kubernetes/aaf/values.yaml
@@ -23,30 +23,35 @@
   ubuntuInitImage: oomk8s/ubuntu-init:2.0.0
   persistence:
     enabled: true
-  pullPolicy: Always
+  # Standard OOM
+  pullPolicy: "Always"
   repository: "nexus3.onap.org:10001"
-  # pullPolicy: IfNotPresent
-  # repository: "nexus3.onap.org:10003"
+
+  # Use Local
+  #pullPolicy: IfNotPresent
+  #repository: "nexus3.onap.org:10003"
 
   aaf:
-    imageVersion: 2.1.13
-    #imageVersion: latest
     readiness: false
+    image: onap/aaf/aaf_core:2.1.15
     aaf_env: "DEV"
     public_fqdn: "aaf.osaaf.org"
-    aaf_release: "Dublin"
+    aaf_release: "El Alto"
   # DUBLIN ONLY - for M4 compatibility with Casablanca
-    aaf_locator_name: "public.%NS.%N"
-    aaf_locator_name_oom: "%NS.%N"
+  #  aaf_locator_name: "public.%NS.%N"
+  #  aaf_locator_name_oom: "%NS.%N"
   # EL ALTO and Beyond
-  #  aaf_locator_name: "%NS.%N"
-  #  aaf_locator_name_oom: "%CNS.%NS.%N"
+    aaf_locator_name: "%NS.%N"
+    aaf_locator_name_oom: "%CNS.%NS.%N"
     cadi_latitude: "38.0"
     cadi_longitude: "-72.0"
     cadi_x509_issuers: "CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US"
 
+    config:
+      image: onap/aaf/aaf_config:2.1.15
     cass:
       replicas: 1
+      image: onap/aaf/aaf_cass:2.1.15
       fqdn: "aaf-cass"
       cluster_name: "osaaf"
       heap_new_size: "512M"
@@ -88,9 +93,6 @@
       public_port: 31115
     hello:
       replicas: 0
-      fqdn: "aaf-hello"
-      internal_port: 8130
-      public_port: 31116
 
 #################################################################
 # Application configuration defaults.