Upgrade AAI to use common shared Cassandra

Change-Id: I0186b09697f32115595383c4e409e608e2cf767f
Issue-ID: OOM-1652
Signed-off-by: Mahendra Raghuwanshi <mahendra.raghuwanshi@amdocs.com>
diff --git a/kubernetes/aai/charts/aai-cassandra/.helmignore b/kubernetes/aai/charts/aai-cassandra/.helmignore
deleted file mode 100644
index daebc7d..0000000
--- a/kubernetes/aai/charts/aai-cassandra/.helmignore
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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
deleted file mode 100644
index 3987a11..0000000
--- a/kubernetes/aai/charts/aai-cassandra/Chart.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright © 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.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 Cassandra
-name: aai-cassandra
-version: 4.0.0
diff --git a/kubernetes/aai/charts/aai-cassandra/templates/service.yaml b/kubernetes/aai/charts/aai-cassandra/templates/service.yaml
deleted file mode 100644
index 17176f1..0000000
--- a/kubernetes/aai/charts/aai-cassandra/templates/service.yaml
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright © 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.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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.servicename" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ .Release.Name }}
-    heritage: {{ .Release.Service }}
-  annotations:
-    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
-spec:
-  type: {{ .Values.service.type }}
-# Not working, open k8s bug: https://github.com/kubernetes/kubernetes/issues/58662
-  publishNotReadyAddresses: true
-  ports:
-  {{if eq .Values.service.type "NodePort" -}}
-  - port: {{ .Values.service.internalPort }}
-    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
-    name: {{ .Values.service.portName }}
-  - port: {{ .Values.service.internalPort2 }}
-    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
-    name: {{ .Values.service.portName3 }}
-  - port: {{ .Values.service.internalPort3 }}
-    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
-    name: {{ .Values.service.portName3 }}
-  {{- else -}}
-  - port: {{ .Values.service.internalPort }}
-    name: {{ .Values.service.portName }}
-  - port: {{ .Values.service.internalPort2 }}
-    name: {{ .Values.service.portName2 }}
-  - port: {{ .Values.service.internalPort3 }}
-    name: {{ .Values.service.portName3 }}
-  {{- end}}
-  selector:
-    app: {{ include "common.name" . }}
-    release: {{ .Release.Name }}
-  clusterIP: None
diff --git a/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml b/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml
deleted file mode 100644
index bd62c56..0000000
--- a/kubernetes/aai/charts/aai-cassandra/templates/statefulset.yaml
+++ /dev/null
@@ -1,132 +0,0 @@
-# Copyright © 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.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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: {{ include "common.servicename" . }}
-  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 }}
-        {{- 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 }}
-          periodSeconds: {{ .Values.readiness.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 }}.{{ include "common.servicename" $global }},{{- 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
-        resources:
-{{ include "common.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 }}
-        selector:
-          matchLabels:
-            app: {{ include "common.name" . }}
-            release: "{{ .Release.Name }}"
-  {{- end }}
diff --git a/kubernetes/aai/charts/aai-cassandra/templates/volumes.yaml b/kubernetes/aai/charts/aai-cassandra/templates/volumes.yaml
deleted file mode 100644
index b949064..0000000
--- a/kubernetes/aai/charts/aai-cassandra/templates/volumes.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright © 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.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 .Values.persistence.enabled }}
-{{- $root := . -}}
-{{ range $i, $e := until (atoi (quote $root.Values.replicaCount) | default 3) }}
----
-apiVersion: v1
-kind: PersistentVolume
-metadata:
-  name: {{ $root.Release.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 }}
diff --git a/kubernetes/aai/charts/aai-cassandra/values.yaml b/kubernetes/aai/charts/aai-cassandra/values.yaml
deleted file mode 100644
index 1e1d2c1..0000000
--- a/kubernetes/aai/charts/aai-cassandra/values.yaml
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright © 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.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Default values for cassandra.
-# This is a YAML-formatted file.
-# Declare variables to be passed into your templates.
-global: # global defaults
-  nodePortPrefix: 302
-
-
-# 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: 9042
-  portName: cql
-  internalPort2: 9160
-  portName2: thrift
-  internalPort3: 61621
-  portName3: agent
-
-podManagementPolicy: OrderedReady
-updateStrategy:
-  type: OnDelete
-
-ingress:
-  enabled: false
-
-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: 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/resources/config/dynamic/conf/champ-beans.xml b/kubernetes/aai/charts/aai-champ/resources/config/dynamic/conf/champ-beans.xml
index 38fd64c..3977a68 100644
--- a/kubernetes/aai/charts/aai-champ/resources/config/dynamic/conf/champ-beans.xml
+++ b/kubernetes/aai/charts/aai-champ/resources/config/dynamic/conf/champ-beans.xml
@@ -47,12 +47,9 @@
         <entry key="storage.backend" value="cassandra"/>
         <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-factor" value="{{ .Values.global.cassandra.replicas }}"/>
         <entry key="storage.cassandra.replication-strategy-class" value="org.apache.cassandra.locator.SimpleStrategy"/>
-
-        {{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}}
-        {{- $global := . }}
-        <entry key="storage.hostname" value="{{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-{{$global.Values.global.cassandra.serviceName}}-{{ $i }}.{{$global.Values.global.cassandra.serviceName}},{{- end }}"/>
+        <entry key="storage.hostname" value="{{ .Values.global.cassandra.serviceName }}"/>
     </util:map>
 
     <!-- Janus Implementation -->
diff --git a/kubernetes/aai/charts/aai-champ/templates/deployment.yaml b/kubernetes/aai/charts/aai-champ/templates/deployment.yaml
index 8e4d7f4..a311f68 100644
--- a/kubernetes/aai/charts/aai-champ/templates/deployment.yaml
+++ b/kubernetes/aai/charts/aai-champ/templates/deployment.yaml
@@ -36,7 +36,11 @@
           - /root/ready.py
           args:
           - --container-name
+          {{- if .Values.global.cassandra.localCluster }}
           - aai-cassandra
+          {{- else }}
+          - cassandra
+          {{- end }}
           env:
           - name: NAMESPACE
             valueFrom:
diff --git a/kubernetes/aai/charts/aai-graphadmin/resources/config/janusgraph-cached.properties b/kubernetes/aai/charts/aai-graphadmin/resources/config/janusgraph-cached.properties
index 6a28dee..82e7ea9 100644
--- a/kubernetes/aai/charts/aai-graphadmin/resources/config/janusgraph-cached.properties
+++ b/kubernetes/aai/charts/aai-graphadmin/resources/config/janusgraph-cached.properties
@@ -22,17 +22,14 @@
 
 {{ if .Values.global.config.cluster.cassandra.dynamic }}
 
-{{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}}
-{{- $global := . }}
-
 storage.backend=cassandra
-storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-{{$global.Values.global.cassandra.serviceName}}-{{ $i }}.{{$global.Values.global.cassandra.serviceName}},{{- end }}
+storage.hostname={{.Values.global.cassandra.serviceName}}
 
 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-factor={{.Values.global.cassandra.replicas}}
 storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy
 
 {{ else }}
diff --git a/kubernetes/aai/charts/aai-graphadmin/resources/config/janusgraph-realtime.properties b/kubernetes/aai/charts/aai-graphadmin/resources/config/janusgraph-realtime.properties
index 7832d1a..e9e9a9e 100644
--- a/kubernetes/aai/charts/aai-graphadmin/resources/config/janusgraph-realtime.properties
+++ b/kubernetes/aai/charts/aai-graphadmin/resources/config/janusgraph-realtime.properties
@@ -20,17 +20,13 @@
 
 {{ if .Values.global.config.cluster.cassandra.dynamic }}
 
-{{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}}
-{{- $global := . }}
-
 storage.backend=cassandra
-storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-{{$global.Values.global.cassandra.serviceName}}-{{ $i }}.{{$global.Values.global.cassandra.serviceName}},{{- end }}
-
+storage.hostname={{.Values.global.cassandra.serviceName}}
 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-factor={{.Values.global.cassandra.replicas}}
 storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy
 
 {{ else }}
diff --git a/kubernetes/aai/charts/aai-graphadmin/templates/deployment.yaml b/kubernetes/aai/charts/aai-graphadmin/templates/deployment.yaml
index b595ac8..2888a64 100644
--- a/kubernetes/aai/charts/aai-graphadmin/templates/deployment.yaml
+++ b/kubernetes/aai/charts/aai-graphadmin/templates/deployment.yaml
@@ -54,7 +54,11 @@
         - /root/ready.py
         args:
         - --container-name
+        {{- if .Values.global.cassandra.localCluster }}
         - aai-cassandra
+        {{- else }}
+        - cassandra
+        {{- end }}
         - --container-name
         - aai-schema-service
       {{  end  }}
diff --git a/kubernetes/aai/charts/aai-graphadmin/templates/job.yaml b/kubernetes/aai/charts/aai-graphadmin/templates/job.yaml
index a62202b..55fce01 100644
--- a/kubernetes/aai/charts/aai-graphadmin/templates/job.yaml
+++ b/kubernetes/aai/charts/aai-graphadmin/templates/job.yaml
@@ -55,7 +55,11 @@
         - /root/ready.py
         args:
         - --container-name
+        {{- if .Values.global.cassandra.localCluster }}
         - aai-cassandra
+        {{- else }}
+        - cassandra
+        {{- end }}
         - --container-name
         - aai-schema-service
         env:
diff --git a/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-cached.properties b/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-cached.properties
index 2c22d14..9dc6636 100644
--- a/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-cached.properties
+++ b/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-cached.properties
@@ -25,17 +25,13 @@
 
 {{ if .Values.global.config.cluster.cassandra.dynamic }}
 
-{{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}}
-{{- $global := . }}
-
 storage.backend=cassandra
-storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-{{$global.Values.global.cassandra.serviceName}}-{{ $i }}.{{$global.Values.global.cassandra.serviceName}},{{- end }}
-
+storage.hostname={{.Values.global.cassandra.serviceName}}
 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-factor={{.Values.global.cassandra.replicas}}
 storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy
 
 {{ else }}
diff --git a/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-realtime.properties b/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-realtime.properties
index b19c9b6..8791a0b 100644
--- a/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-realtime.properties
+++ b/kubernetes/aai/charts/aai-resources/resources/config/janusgraph-realtime.properties
@@ -23,17 +23,13 @@
 
 {{ if .Values.global.config.cluster.cassandra.dynamic }}
 
-{{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}}
-{{- $global := . }}
-
 storage.backend=cassandra
-storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-{{$global.Values.global.cassandra.serviceName}}-{{ $i }}.{{$global.Values.global.cassandra.serviceName}},{{- end }}
-
+storage.hostname={{.Values.global.cassandra.serviceName}}
 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-factor={{.Values.global.cassandra.replicas}}
 storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy
 
 {{ else }}
diff --git a/kubernetes/aai/charts/aai-resources/templates/deployment.yaml b/kubernetes/aai/charts/aai-resources/templates/deployment.yaml
index 9fe4c17..84438c1 100644
--- a/kubernetes/aai/charts/aai-resources/templates/deployment.yaml
+++ b/kubernetes/aai/charts/aai-resources/templates/deployment.yaml
@@ -814,7 +814,11 @@
         - /root/ready.py
         args:
         - --container-name
+        {{- if .Values.global.cassandra.localCluster }}
         - aai-cassandra
+        {{- else }}
+        - cassandra
+        {{- end }}
         - --container-name
         - aai-schema-service
       {{  end  }}
diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-cached.properties b/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-cached.properties
index 2c22d14..9dc6636 100644
--- a/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-cached.properties
+++ b/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-cached.properties
@@ -25,17 +25,13 @@
 
 {{ if .Values.global.config.cluster.cassandra.dynamic }}
 
-{{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}}
-{{- $global := . }}
-
 storage.backend=cassandra
-storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-{{$global.Values.global.cassandra.serviceName}}-{{ $i }}.{{$global.Values.global.cassandra.serviceName}},{{- end }}
-
+storage.hostname={{.Values.global.cassandra.serviceName}}
 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-factor={{.Values.global.cassandra.replicas}}
 storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy
 
 {{ else }}
diff --git a/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-realtime.properties b/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-realtime.properties
index b19c9b6..8791a0b 100644
--- a/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-realtime.properties
+++ b/kubernetes/aai/charts/aai-traversal/resources/config/janusgraph-realtime.properties
@@ -23,17 +23,13 @@
 
 {{ if .Values.global.config.cluster.cassandra.dynamic }}
 
-{{- $seed_size := default 1 .Values.global.cassandra.replicas | int -}}
-{{- $global := . }}
-
 storage.backend=cassandra
-storage.hostname={{- range $i, $e := until $seed_size }}{{ $global.Release.Name }}-{{$global.Values.global.cassandra.serviceName}}-{{ $i }}.{{$global.Values.global.cassandra.serviceName}},{{- end }}
-
+storage.hostname={{.Values.global.cassandra.serviceName}}
 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-factor={{.Values.global.cassandra.replicas}}
 storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.SimpleStrategy
 
 {{ else }}
diff --git a/kubernetes/aai/charts/aai-traversal/templates/deployment.yaml b/kubernetes/aai/charts/aai-traversal/templates/deployment.yaml
index be4b863..c783f7d 100644
--- a/kubernetes/aai/charts/aai-traversal/templates/deployment.yaml
+++ b/kubernetes/aai/charts/aai-traversal/templates/deployment.yaml
@@ -449,7 +449,11 @@
         - /root/ready.py
         args:
         - --container-name
+        {{- if .Values.global.cassandra.localCluster }}
         - aai-cassandra
+        {{- else }}
+        - cassandra
+        {{- end }}
         - --container-name
         - aai-schema-service
       {{  end  }}
diff --git a/kubernetes/aai/requirements.yaml b/kubernetes/aai/requirements.yaml
index 01f6f1a..24f69b2 100644
--- a/kubernetes/aai/requirements.yaml
+++ b/kubernetes/aai/requirements.yaml
@@ -19,3 +19,10 @@
     # a part of this chart's package and will not
     # be published independently to a repo (at this point)
     repository: '@local'
+  - name: cassandra
+    version: ~4.x-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'
+    condition: global.cassandra.localCluster
diff --git a/kubernetes/aai/values.yaml b/kubernetes/aai/values.yaml
index 1d3a3a5..1b359fc 100644
--- a/kubernetes/aai/values.yaml
+++ b/kubernetes/aai/values.yaml
@@ -56,7 +56,15 @@
     serverPort: 30247
 
   cassandra:
-    serviceName: aai-cassandra
+    #This will instantiate AAI cassandra cluster, default:shared cassandra.
+    localCluster: false
+
+    #Service Name of the cassandra cluster to connect to.
+    #Override it to aai-cassandra if localCluster is enabled.
+    serviceName: cassandra
+
+    #This should be same as shared cassandra instance or if localCluster is enabled 
+    #then it should be same as aai-cassandra replicaCount 
     replicas: 3
 
   aai:
@@ -252,6 +260,20 @@
   # in debugger so K8s doesn't restart unresponsive container
   enabled: true
 
+#This section is used when localCluster is enabled. AAI will create its own cassandra cluster for its specific use.
+#Below command will instantiate the aai cassandra instances:
+#helm deploy demo local/onap --version=4.0.0 --namespace onap --set aai.enabled=true \
+#                            --set aai.global.cassandra.localCluster=true \
+#                            --set aai.global.cassandra.serviceName=aai-cassandra
+cassandra:
+  nameOverride: aai-cassandra
+  replicaCount: 3
+  service:
+    name: aai-cassandra
+  persistence:
+    mountSubPath: aai/cassandra
+    enabled: true
+
 readiness:
   initialDelaySeconds: 10
   periodSeconds: 10