[VOL-4285] Helm charts for grpc migration

Change-Id: Ifa3423b43b236bab6c9de437b1dd7045069fe5de
diff --git a/README.md b/README.md
index 0566c58..36f4e89 100644
--- a/README.md
+++ b/README.md
@@ -136,8 +136,8 @@
 
 ```shell
 helm upgrade --install --create-namespace \
-  -n voltha1 voltha1 onf/voltha-stack \
-  --set global.stack_name=voltha1 \
+  -n voltha voltha onf/voltha-stack \
+  --set global.stack_name=voltha \
   --set global.voltha_infra_name=voltha-infra \
   --set global.voltha_infra_namespace=infra
 ```
@@ -157,8 +157,8 @@
 by adding it to the `voltha-stack` command. The following is an example for 3 ONOS instances.
 ```shell
 helm upgrade --install --create-namespace \
-  -n voltha1 voltha1 onf/voltha-stack \
-  --set global.stack_name=voltha1 \
+  -n voltha voltha onf/voltha-stack \
+  --set global.stack_name=voltha \
   --set global.voltha_infra_name=voltha-infra \
   --set global.voltha_infra_namespace=infra \
   --set voltha.onos_classic.replicas=3
@@ -168,8 +168,8 @@
 As an example to deploy VOLTHA 2.8 LTS release you can use `--version 2.8.0` like:
 ```shell
 helm upgrade --install --create-namespace \
-  -n voltha1 --version 2.8.0 voltha1 onf/voltha-stack \
-  --set global.stack_name=voltha1 \
+  -n voltha --version 2.8.0 voltha onf/voltha-stack \
+  --set global.stack_name=voltha \
   --set global.voltha_infra_name=voltha-infra \
   --set global.voltha_infra_namespace=infra
 ```
@@ -180,8 +180,8 @@
 
 ```shell
 helm upgrade --install --create-namespace \
-  -n voltha1 voltha1 onf/voltha-stack \
-  --set global.stack_name=voltha1 \
+  -n voltha voltha onf/voltha-stack \
+  --set global.stack_name=voltha \
   --set global.voltha_infra_name=voltha-infra \
   --set global.voltha_infra_namespace=infra \
   --set global.tracing.enabled=true
@@ -195,8 +195,8 @@
 
 ```shell
 helm upgrade --install --create-namespace \
-  -n voltha1 voltha1 onf/voltha-stack \
-  --set global.stack_name=voltha1 \
+  -n voltha voltha onf/voltha-stack \
+  --set global.stack_name=voltha \
   --set global.voltha_infra_name=voltha-infra \
   --set global.voltha_infra_namespace=infra \
   --set global.log_correlation.enabled=true
@@ -210,8 +210,8 @@
 
 ```shell
 helm upgrade --install --create-namespace \
-  -n voltha1 voltha1 onf/voltha-stack \
-  --set global.stack_name=voltha1 \
+  -n voltha voltha onf/voltha-stack \
+  --set global.stack_name=voltha \
   --set global.voltha_infra_name=voltha-infra \
   --set global.voltha_infra_namespace=infra \
   --set voltha-adapter-openonu.use_openonu_adapter_go=false
@@ -226,7 +226,7 @@
 you can use the BBSim helm chart:
 
 ```shell
-helm upgrade --install -n voltha1 bbsim0 onf/bbsim --set olt_id=10
+helm upgrade --install -n voltha bbsim0 onf/bbsim --set olt_id=10
 ```
 
 > _While it's not mandatory to install BBSim in the same namespace as the VOLTHA stack it's advised to do so to make explicit which stack is controlling it._
@@ -271,16 +271,16 @@
 
 ```shell
 helm upgrade --install -n infra voltha-infra onf/voltha-infra -f examples/dt-values.yaml
-helm upgrade --install -n voltha1 bbsim0 onf/bbsim --set olt_id=10 -f examples/dt-values.yaml
-helm upgrade --install --create-namespace   -n voltha1 voltha1 onf/voltha-stack   --set global.stack_name=voltha1   --set voltha_infra_name=voltha-infra   --set voltha_infra_namespace=infra
+helm upgrade --install -n voltha bbsim0 onf/bbsim --set olt_id=10 -f examples/dt-values.yaml
+helm upgrade --install --create-namespace   -n voltha voltha onf/voltha-stack   --set global.stack_name=voltha   --set voltha_infra_name=voltha-infra   --set voltha_infra_namespace=infra
 ```
 
 **TT**
 
 ```shell
 helm upgrade --install -n infra voltha-infra onf/voltha-infra -f examples/tt-values.yaml
-helm upgrade --install -n voltha1 bbsim0 onf/bbsim --set olt_id=10 -f examples/tt-values.yaml
-helm upgrade --install --create-namespace   -n voltha1 voltha1 onf/voltha-stack   --set global.stack_name=voltha1   --set voltha_infra_name=voltha-infra   --set voltha_infra_namespace=infra
+helm upgrade --install -n voltha bbsim0 onf/bbsim --set olt_id=10 -f examples/tt-values.yaml
+helm upgrade --install --create-namespace   -n voltha voltha onf/voltha-stack   --set global.stack_name=voltha   --set voltha_infra_name=voltha-infra   --set voltha_infra_namespace=infra
 ```
 
 ### Using an ingress controller
@@ -345,7 +345,7 @@
 
 - `--server`/`server` - the value of the external IP address of the ingress
 controller and the port on which it is listening (_ex:_ `localhost:443` or
-`voltha1.voltha.com:30474`).
+`voltha.voltha.com:30474`).
 
 - `--kvstore`/`kvstore` - the value of the external IP address of the ingress
 controller and the point on which it is listening (_ex:_ `localhost:443`)
@@ -357,13 +357,13 @@
 _CLI example_:
 
 ```bash
-voltctl --server=voltha1.voltha.com:443 --kvstore=localhost:443 --tls version
+voltctl --server=voltha.voltha.com:443 --kvstore=localhost:443 --tls version
 ```
 
 _`voltctl` configuration file example:_
 
 ```yaml
-server: voltha1.example.com:443
+server: voltha.example.com:443
 kafka: localhost:443
 kvstore: localhost:443
 tls:
@@ -408,11 +408,11 @@
 infra         voltha-infra-voltha-infra-onos-config-loader-whdtz    0/1     Completed   3          14m
 infra         voltha-infra-voltha-tracing-jaeger-7fffb6cdf6-l5r8s   1/1     Running     0          14m
 infra         voltha-infra-zookeeper-0                              1/1     Running     0          14m
-voltha1       bbsim0-6f9584b4dd-txtj4                              1/1     Running     0          66s
-voltha1       voltha1-voltha-adapter-openolt-5b5844b5b6-htlvp       1/1     Running     0          91s
-voltha1       voltha1-voltha-adapter-openonu-85749df5fc-n5kdd       1/1     Running     0          91s
-voltha1       voltha1-voltha-ofagent-5b5dc9b7b5-htxt6               1/1     Running     0          91s
-voltha1       voltha1-voltha-rw-core-7d69cb4567-9cn2n               1/1     Running     0          91s
+voltha       bbsim0-6f9584b4dd-txtj4                              1/1     Running     0          66s
+voltha       voltha-voltha-adapter-openolt-5b5844b5b6-htlvp       1/1     Running     0          91s
+voltha       voltha-voltha-adapter-openonu-85749df5fc-n5kdd       1/1     Running     0          91s
+voltha       voltha-voltha-ofagent-5b5dc9b7b5-htxt6               1/1     Running     0          91s
+voltha       voltha-voltha-rw-core-7d69cb4567-9cn2n               1/1     Running     0          91s
 ```
 > _Note that is completely fine if the `onos-config-loader` pod restarts a few times, it is a job that loads
 configuration into ONOS and will fail until ONOS is ready to accept the configuration._
@@ -421,7 +421,7 @@
 
 In order to use `voltctl` you need to expose the `voltha-api` service:
 ```shell
-kubectl -n voltha1 port-forward --address 0.0.0.0 svc/voltha1-voltha-api 55555
+kubectl -n voltha port-forward --address 0.0.0.0 svc/voltha-voltha-api 55555
 ```
 
 > _If you have deployed multiple stacks you need to change the `port-forward` command to connect to the stack you want to operate, eg:_
@@ -435,8 +435,8 @@
 ```shell
 $ voltctl adapter list
 ID                     VENDOR              TYPE                 ENDPOINT                     VERSION            CURRENTREPLICA    TOTALREPLICAS    LASTCOMMUNICATION
-brcm_openomci_onu_1    VOLTHA OpenONUGo    brcm_openomci_onu    voltha1_brcm_openomci_onu    unknown-version    1                 1
-openolt_1              VOLTHA OpenOLT      openolt              voltha1_openolt              3.0.2              1                 1
+brcm_openomci_onu_1    VOLTHA OpenONUGo    brcm_openomci_onu    voltha_brcm_openomci_onu    unknown-version    1                 1
+openolt_1              VOLTHA OpenOLT      openolt              voltha_openolt              3.0.2              1                 1
 ```
 
 ### Provisioning an OLT
@@ -447,7 +447,7 @@
 To create and enable the OLT device in VOLTHA you can use these `voltctl` commands:
 
 ```shell
-voltctl device create -t openolt -H bbsim0.voltha1.svc:50060
+voltctl device create -t openolt -H bbsim0.voltha.svc:50060
 voltctl device list --filter Type~openolt -q | xargs voltctl device enable
 ```
 
@@ -473,7 +473,7 @@
 export VOLTCONFIG="~/.volt/config"
 make sanity-kind
 ```
-> This assumes that both the `onos-ssh`, `onos-rest` and `voltha-api` ports are forwarded on the host and bbsim was installed with ` helm install -n voltha1 bbsim0 onf/bbsim --set olt_id=10`.
+> This assumes that both the `onos-ssh`, `onos-rest` and `voltha-api` ports are forwarded on the host and bbsim was installed with ` helm install -n voltha bbsim0 onf/bbsim --set olt_id=10`.
 
 ### Remove VOLTHA from your cluster
 
@@ -481,7 +481,7 @@
 
 If you need to completely uninstall everything that you installed following this guide, you can simply remove the installed `helm` charts:
 ```shell
-helm del -n voltha1 voltha1 bbsim0
+helm del -n voltha voltha bbsim0
 helm del -n infra voltha-infra
 ```
 
@@ -500,8 +500,8 @@
 
 ```shell
 helm upgrade --install --create-namespace \
-  -n voltha1 voltha1 onf/voltha-stack \
-  --set global.stack_name=voltha1 \
+  -n voltha voltha onf/voltha-stack \
+  --set global.stack_name=voltha \
   --set voltha_infra_name=voltha-infra \
   --set voltha_infra_namespace=infra \
   --set voltha-adapter-openonu.images.adapter_open_onu_go.repository=voltha/voltha-openonu-adapter-go \
@@ -512,7 +512,7 @@
 by restarting the pod, for example:
 
 ```shell
-kubectl delete pod -n voltha1 $(kubectl get pods -n voltha1 | grep openonu | awk '{print $1}')
+kubectl delete pod -n voltha $(kubectl get pods -n voltha | grep openonu | awk '{print $1}')
 ```
 
 > In order for this to work the `imagePullPolicy` has to be set to `Always`.
@@ -525,8 +525,8 @@
 been officially tagged and release there is a provided `dev-values.yaml`. You can use it for the a `voltha-stack` like so:
 ```shell
 helm upgrade --install --create-namespace \
-  -n voltha1 voltha1 onf/voltha-stack \
-  --set global.stack_name=voltha1 \
+  -n voltha voltha onf/voltha-stack \
+  --set global.stack_name=voltha \
   --set voltha_infra_name=voltha-infra \
   --set voltha_infra_namespace=infra \
   -f examples/dev-values.yaml
@@ -541,18 +541,18 @@
 
 ```shell
 helm upgrade --install --create-namespace \
-  -n voltha1 voltha1 onf/voltha-stack \
-  --set global.stack_name=voltha1 \
+  -n voltha voltha onf/voltha-stack \
+  --set global.stack_name=voltha \
   --set voltha_infra_name=voltha-infra \
   --set voltha_infra_namespace=infra \
   --set voltha-adapter-openonu.enabled=false
 
 helm upgrade --install --create-namespace \
-  -n voltha1 opeonu-adapter voltha-adapter-openonu \
-  --set global.stack_name=voltha1 \
-  --set adapter_open_onu.kv_store_data_prefix=service/voltha/voltha1_voltha1 \
-  --set adapter_open_onu.topics.core_topic=voltha1_voltha1_rwcore \
-  --set adapter_open_onu.topics.adapter_open_onu_topic=voltha1_voltha1_brcm_openomci_onu \
+  -n voltha opeonu-adapter voltha-adapter-openonu \
+  --set global.stack_name=voltha \
+  --set adapter_open_onu.kv_store_data_prefix=service/voltha/voltha_voltha \
+  --set adapter_open_onu.topics.core_topic=voltha_voltha_rwcore \
+  --set adapter_open_onu.topics.adapter_open_onu_topic=voltha_voltha_brcm_openomci_onu \
   --set services.kafka.adapter.service=voltha-infra-kafka.infra.svc \
   --set services.kafka.cluster.service=voltha-infra-kafka.infra.svc \
   --set services.etcd.service=voltha-infra-etcd.infra.svc
diff --git a/VERSION b/VERSION
index ffd8a2b..2468aa9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.9.0-dev
+3.0.0-dev
diff --git a/examples/att-values.yaml b/examples/att-values.yaml
index 939606b..3c2385f 100644
--- a/examples/att-values.yaml
+++ b/examples/att-values.yaml
@@ -29,3 +29,10 @@
       needs_eapol: true
       needs_dhcp: true
       tp_id: 64
+
+# NOTE this is a temporary workaround as in the reconcile case the meter might get deleted while there is
+# a PENDING_ADD flow pointing to it.
+onos-classic:
+  config:
+    componentConfig:
+      "org.opencord.olt.impl.OltMeterService": '{"deleteMeters": "false"}'
diff --git a/voltha-adapter-openolt/Chart.yaml b/voltha-adapter-openolt/Chart.yaml
index f6e52bc..b0bf873 100644
--- a/voltha-adapter-openolt/Chart.yaml
+++ b/voltha-adapter-openolt/Chart.yaml
@@ -14,7 +14,7 @@
 ---
 apiVersion: "v1"
 name: "voltha-adapter-openolt"
-version: "2.10.5"
+version: "2.10.6"
 description: "A Helm chart for Voltha OpenOLT Adapter"
 keywords:
   - "onf"
@@ -33,4 +33,4 @@
 
 # appVersion refers to multiple components with potentially different
 # container image versions.
-appVersion: "3.5.5"
+appVersion: "4.0.0"
diff --git a/voltha-adapter-openolt/templates/openolt-deploy.yaml b/voltha-adapter-openolt/templates/openolt-deploy.yaml
index 3eb979f..9010d7c 100644
--- a/voltha-adapter-openolt/templates/openolt-deploy.yaml
+++ b/voltha-adapter-openolt/templates/openolt-deploy.yaml
@@ -116,15 +116,15 @@
               value: {{ tpl .Values.adapter_open_olt.kv_store_data_prefix . }}
           args:
             - "/app/openolt"
-            - "--kafka_adapter_address={{ tpl .Values.services.kafka.adapter.address . }}"
+            - "--core_endpoint={{ tpl .Values.global.core_endpoint . }}"
+            - "--adapter_endpoint={{ tpl .Values.adapter_open_olt.endpoints.address . }}.{{ .Release.Namespace }}.svc:{{ print .Values.adapter_open_olt.endpoints.port }}"
             - "--kafka_cluster_address={{ tpl .Values.services.kafka.cluster.address . }}"
-            - "--core_topic={{ tpl .Values.adapter_open_olt.topics.core_topic . }}"
-            - "--adapter_topic={{ tpl .Values.adapter_open_olt.topics.adapter_open_olt_topic . }}"
             - "--event_topic={{ .Values.adapter_open_olt.topics.event_topic }}"
             - "--kv_store_address={{ tpl .Values.services.etcd.address . }}"
             - "--kv_store_request_timeout={{ tpl .Values.adapter_open_olt.kv_store_timeout . }}"
             - "--heartbeat_check_interval={{ tpl .Values.adapter_open_olt.heartbeat_check_interval . }}"
             - "--heartbeat_fail_interval={{ tpl .Values.adapter_open_olt.heartbeat_fail_interval . }}"
+            - "--rpc_timeout={{ tpl .Values.adapter_open_olt.rpc_timeout . }}"
             - "--log_level={{ $log_level }}"
             - "--current_replica={{ .Values.replicas.current_replica }}"
             - "--total_replica={{ .Values.replicas.total_replica }}"
@@ -139,18 +139,21 @@
           securityContext:
             allowPrivilegeEscalation: false
           {{- end }}
+          ports:
+            - containerPort: {{ .Values.adapter_open_olt.endpoints.port }}
+              name: grpc
           livenessProbe:
             httpGet:
               path: /healthz
               port: 8080
-            initialDelaySeconds: 10
-            periodSeconds: 5
+            initialDelaySeconds: {{ .Values.probe.liveness.initial_delay_seconds }}
+            periodSeconds: {{ .Values.probe.liveness.period_seconds }}
           readinessProbe:
             httpGet:
               path: /readz
               port: 8080
-            initialDelaySeconds: 10
-            periodSeconds: 5
+            initialDelaySeconds: {{ .Values.probe.readiness.initial_delay_seconds }}
+            periodSeconds: {{ .Values.probe.readiness.period_seconds }}
           resources:
             requests:
               {{- if .Values.resources.requests.memory }}
diff --git a/voltha-adapter-openolt/templates/openolt-svc.yaml b/voltha-adapter-openolt/templates/openolt-svc.yaml
new file mode 100644
index 0000000..49fe71e
--- /dev/null
+++ b/voltha-adapter-openolt/templates/openolt-svc.yaml
@@ -0,0 +1,28 @@
+# Copyright 2020-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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: "{{ tpl .Values.adapter_open_olt.endpoints.address . }}"
+  namespace: {{ .Release.Namespace }}
+spec:
+  clusterIP: None
+  ports:
+    - name: grpc
+      port: {{ .Values.adapter_open_olt.endpoints.port }}
+      targetPort: {{ .Values.adapter_open_olt.endpoints.port }}
+  selector:
+    app: adapter-open-olt
+    release: {{ .Release.Name }}
diff --git a/voltha-adapter-openolt/values.yaml b/voltha-adapter-openolt/values.yaml
index b5224b5..8c88b4c 100644
--- a/voltha-adapter-openolt/values.yaml
+++ b/voltha-adapter-openolt/values.yaml
@@ -17,16 +17,20 @@
 
 # Default overrides
 global:
+  voltha_release_name: voltha
   stack_name: voltha
   log_level: "WARN"
   image_registry: ""
   image_tag: ~
   image_org: "voltha/"
   image_pullPolicy: "Always"
+  core_endpoint: "{{ .Values.global.voltha_release_name }}-{{ .Values.global.stack_name }}-core.{{ .Release.Namespace }}.svc:55558"
   adapter_open_olt:
     timeout: "5s"
     heartbeat_check_interval: "15s"
     heartbeat_fail_interval: "31s"
+    # timeout for RPC request
+    rpc_timeout: "10s"
 
   #enable OMCC encryption
   omcc_encryption: false
@@ -43,6 +47,15 @@
   tracing:
     enabled: true
 
+# Probe values
+probe:
+  liveness:
+    initial_delay_seconds: 3
+    period_seconds: 3
+  readiness:
+    initial_delay_seconds: 3
+    period_seconds: 3
+
 # Default security context under which the containers run
 securityContext:
   enabled: true
@@ -59,8 +72,6 @@
 # Define connectivity to required services
 services:
   kafka:
-    adapter:
-      address: kafka:9092
     cluster:
       address: kafka:9092
 
@@ -87,9 +98,13 @@
   kv_store_data_prefix: 'service/{{ .Values.global.stack_name }}_voltha'
   heartbeat_check_interval: '{{ .Values.global.adapter_open_olt.heartbeat_check_interval }}'
   heartbeat_fail_interval: '{{ .Values.global.adapter_open_olt.heartbeat_fail_interval }}'
+  rpc_timeout: '{{ .Values.global.adapter_open_olt.rpc_timeout }}'
+  endpoints:
+    # core_endpoint: '{{ .Values.global.adapter_open_olt.core_endpoint }}'
+    # adapter_endpoint: '{{ template "fullname" . }}-api:55560'
+    address: '{{ template "fullname" . }}-api'
+    port: 50060
   topics:
-    core_topic: "{{ .Values.global.stack_name }}_rwcore"
-    adapter_open_olt_topic: "{{ .Values.global.stack_name }}_openolt"
     event_topic: "voltha.events"
 
 images:
diff --git a/voltha-adapter-openonu/Chart.yaml b/voltha-adapter-openonu/Chart.yaml
index a089697..258c20a 100644
--- a/voltha-adapter-openonu/Chart.yaml
+++ b/voltha-adapter-openonu/Chart.yaml
@@ -14,7 +14,7 @@
 ---
 apiVersion: "v1"
 name: "voltha-adapter-openonu"
-version: "2.9.6"
+version: "2.9.7"
 description: "A Helm chart for Voltha OpenONU Adapter"
 keywords:
   - "onf"
@@ -33,4 +33,4 @@
 
 # appVersion refers to multiple components with potentially different
 # container image versions.
-appVersion: "1.3.13"
+appVersion: "2.0.0"
diff --git a/voltha-adapter-openonu/templates/openonu-go-deploy.yaml b/voltha-adapter-openonu/templates/openonu-go-deploy.yaml
index 72c2771..2360d84 100644
--- a/voltha-adapter-openonu/templates/openonu-go-deploy.yaml
+++ b/voltha-adapter-openonu/templates/openonu-go-deploy.yaml
@@ -82,10 +82,9 @@
             - "/app/openonu"
             - "--banner=true"
             - "--kafka_reconnect_retries=-1"
-            - "--kafka_adapter_address={{ tpl .Values.services.kafka.adapter.address . }}"
+            - "--core_endpoint={{ tpl .Values.global.core_endpoint . }}"
+            - "--adapter_endpoint={{ tpl .Values.adapter_open_onu.endpoints.address . }}.{{ .Release.Namespace }}.svc:{{ print .Values.adapter_open_onu.endpoints.port }}"
             - "--kafka_cluster_address={{ tpl .Values.services.kafka.cluster.address . }}"
-            - "--core_topic={{ tpl .Values.adapter_open_onu.topics.core_topic . }}"
-            - "--adapter_topic={{ tpl .Values.adapter_open_onu.topics.adapter_open_onu_topic . }}"
             - "--event_topic={{ .Values.adapter_open_onu.topics.event_topic }}"
             - "--kv_store_address={{ tpl .Values.services.etcd.address . }}"
             - "--kv_store_request_timeout={{ tpl .Values.adapter_open_onu.kv_store_timeout . }}"
@@ -95,6 +94,7 @@
             - "--max_timeout_interadapter_comm={{ tpl .Values.adapter_open_onu.max_timeout_interadapter_comm . }}"
             - "--max_timeout_reconciling={{ tpl .Values.adapter_open_onu.max_timeout_reconciling . }}"
             - "--omci_timeout={{ tpl .Values.adapter_open_onu.omci_timeout . }}"
+            - "--rpc_timeout={{ tpl .Values.adapter_open_onu.rpc_timeout . }}"
             - "--trace_enabled={{ .Values.global.tracing.enabled }}"
             - "--trace_agent_address={{ tpl .Values.services.tracing_agent.address . }}"
             - "--log_correlation_enabled={{ .Values.global.log_correlation.enabled }}"
@@ -107,18 +107,21 @@
           securityContext:
             allowPrivilegeEscalation: false
           {{- end }}
+          ports:
+            - containerPort: {{ .Values.adapter_open_onu.endpoints.port }}
+              name: grpc
           livenessProbe:
             httpGet:
               path: /healthz
               port: 8080
-            initialDelaySeconds: 10
-            periodSeconds: 5
+            initialDelaySeconds: {{ .Values.probe.liveness.initial_delay_seconds }}
+            periodSeconds: {{ .Values.probe.liveness.period_seconds }}
           readinessProbe:
             httpGet:
               path: /readz
               port: 8080
-            initialDelaySeconds: 10
-            periodSeconds: 5
+            initialDelaySeconds: {{ .Values.probe.readiness.initial_delay_seconds }}
+            periodSeconds: {{ .Values.probe.readiness.period_seconds }}
           resources:
             requests:
               {{- if .Values.resources.requests.memory }}
diff --git a/voltha-adapter-openonu/templates/openonu-svc.yaml b/voltha-adapter-openonu/templates/openonu-svc.yaml
new file mode 100644
index 0000000..c8cfedd
--- /dev/null
+++ b/voltha-adapter-openonu/templates/openonu-svc.yaml
@@ -0,0 +1,28 @@
+# Copyright 2020-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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: "{{ tpl .Values.adapter_open_onu.endpoints.address . }}"
+  namespace: {{ .Release.Namespace }}
+spec:
+  clusterIP: None
+  ports:
+    - name: grpc
+      port: {{ .Values.adapter_open_onu.endpoints.port }}
+      targetPort: {{ .Values.adapter_open_onu.endpoints.port }}
+  selector:
+    app: adapter-open-onu
+    release: {{ .Release.Name }}
diff --git a/voltha-adapter-openonu/values.yaml b/voltha-adapter-openonu/values.yaml
index 0d4b7f5..bd30a4c 100644
--- a/voltha-adapter-openonu/values.yaml
+++ b/voltha-adapter-openonu/values.yaml
@@ -18,12 +18,14 @@
 
 # Default overrides
 global:
+  voltha_release_name: voltha
   stack_name: voltha
   log_level: "WARN"
   image_registry: ""
   image_tag: ~
   image_org: "voltha/"
   image_pullPolicy: "Always"
+  core_endpoint: "{{ .Values.global.voltha_release_name }}-{{ .Values.global.stack_name }}-core.{{ .Release.Namespace }}.svc:55558"
   incremental_evto_update: False
   # timeout for deadline for interadapter communication
   # should be in format as expected by parseDuration golang.
@@ -32,6 +34,8 @@
   max_timeout_reconciling: "10s"
   # timeout for OMCI channel
   omci_timeout: "1s"
+  # timeout for RPC request
+  rpc_timeout: "10s"
   # kv store timeout
   adapter_open_onu:
     timeout: "5s"
@@ -52,6 +56,14 @@
   # configure "0s" to disable omci alarm audit
     interval: 300s
 
+# Probe values
+probe:
+  liveness:
+    initial_delay_seconds: 3
+    period_seconds: 3
+  readiness:
+    initial_delay_seconds: 3
+    period_seconds: 3
 
 # Default security context under which the containers run
 securityContext:
@@ -63,8 +75,6 @@
 # Define connectivity to required services
 services:
   kafka:
-    adapter:
-      address: kafka:9092
     cluster:
       address: kafka:9092
 
@@ -109,13 +119,15 @@
   max_timeout_interadapter_comm: '{{ .Values.global.max_timeout_interadapter_comm }}'
   max_timeout_reconciling: '{{ .Values.global.max_timeout_reconciling }}'
   omci_timeout: '{{ .Values.global.omci_timeout }}'
+  rpc_timeout: '{{ .Values.global.rpc_timeout }}'
   kv_store_timeout: '{{ .Values.global.adapter_open_onu.timeout }}'
   kv_store_data_prefix: 'service/{{ .Values.global.stack_name }}_voltha'
   alarm_audit_interval: '{{ .Values.global.alarm_audit.interval }}'
   uni_port_mask: "0x0001"
+  endpoints:
+    address: '{{ template "fullname" . }}-api'
+    port: 50060
   topics:
-    core_topic: "{{ .Values.global.stack_name }}_rwcore"
-    adapter_open_onu_topic: "{{ .Values.global.stack_name }}_brcm_openomci_onu"
     event_topic: "voltha.events"
 
 images:
diff --git a/voltha-stack/Chart.yaml b/voltha-stack/Chart.yaml
index 0f8f665..be4c336 100644
--- a/voltha-stack/Chart.yaml
+++ b/voltha-stack/Chart.yaml
@@ -28,18 +28,18 @@
 name: voltha-stack
 
 appVersion: "2.9-dev"
-version: 2.9.8
+version: 2.9.9
 
 dependencies:
   - name: voltha
     repository: file://../voltha
-    version: 2.10.4
+    version: 2.10.5
     condition: voltha.enabled
   - name: voltha-adapter-openonu
     repository: file://../voltha-adapter-openonu
-    version: 2.9.6
+    version: 2.9.7
     condition: voltha-adapter-openonu.enabled
   - name: voltha-adapter-openolt
     repository: file://../voltha-adapter-openolt
-    version: 2.10.5
+    version: 2.10.6
     condition: voltha-adapter-openolt.enabled
diff --git a/voltha-stack/values.yaml b/voltha-stack/values.yaml
index 0bd6b77..7f69868 100644
--- a/voltha-stack/values.yaml
+++ b/voltha-stack/values.yaml
@@ -18,6 +18,7 @@
   log_level: "WARN"
   voltha_infra_name: "voltha-infra"
   voltha_infra_namespace: "infra"
+  core_endpoint: "{{ .Release.Name }}-{{ .Values.global.stack_name }}-core.{{ .Release.Namespace }}.svc:55558"
   log_correlation:
     enabled: true
   tracing:
@@ -34,12 +35,8 @@
   rw_core:
     kv_store_data_prefix: 'service/voltha/{{ .Release.Name }}_{{ .Values.global.stack_name }}'
     stack_id: "{{ .Values.global.stack_name }}"
-    topics:
-      core_topic: "{{ .Release.Name }}_{{ .Values.global.stack_name }}_rwcore"
   services:
     kafka:
-      adapter:
-        address: "{{ .Values.global.voltha_infra_name }}-kafka.{{ .Values.global.voltha_infra_namespace }}.svc:9092"
       cluster:
         address: "{{ .Values.global.voltha_infra_name }}-kafka.{{ .Values.global.voltha_infra_namespace }}.svc:9092"
     etcd:
@@ -51,13 +48,10 @@
   enabled: true
   adapter_open_onu:
     kv_store_data_prefix: 'service/voltha/{{ .Release.Name }}_{{ .Values.global.stack_name }}'
-    topics:
-      core_topic: "{{ .Release.Name }}_{{ .Values.global.stack_name }}_rwcore"
-      adapter_open_onu_topic: "{{ .Release.Name }}_{{ .Values.global.stack_name }}_brcm_openomci_onu"
+    endpoints:
+      address: '{{ .Release.Name }}-voltha-adapter-openonu-api'
   services:
     kafka:
-      adapter:
-        address: "{{ .Values.global.voltha_infra_name }}-kafka.{{ .Values.global.voltha_infra_namespace }}.svc:9092"
       cluster:
         address: "{{ .Values.global.voltha_infra_name }}-kafka.{{ .Values.global.voltha_infra_namespace }}.svc:9092"
     etcd:
@@ -69,13 +63,10 @@
   enabled: true
   adapter_open_olt:
     kv_store_data_prefix: 'service/voltha/{{ .Release.Name }}_{{ .Values.global.stack_name }}'
-    topics:
-      core_topic: "{{ .Release.Name }}_{{ .Values.global.stack_name }}_rwcore"
-      adapter_open_olt_topic: "{{ .Release.Name }}_{{ .Values.global.stack_name }}_openolt"
+    endpoints:
+      address: '{{ .Release.Name }}-voltha-adapter-openolt-api'
   services:
     kafka:
-      adapter:
-        address: "{{ .Values.global.voltha_infra_name }}-kafka.{{ .Values.global.voltha_infra_namespace }}.svc:9092"
       cluster:
         address: "{{ .Values.global.voltha_infra_name }}-kafka.{{ .Values.global.voltha_infra_namespace }}.svc:9092"
     etcd:
diff --git a/voltha/Chart.yaml b/voltha/Chart.yaml
index 394da55..791e5fc 100644
--- a/voltha/Chart.yaml
+++ b/voltha/Chart.yaml
@@ -14,7 +14,7 @@
 ---
 apiVersion: "v1"
 name: "voltha"
-version: "2.10.4"
+version: "2.10.5"
 description: "A Helm chart for Voltha based on K8S resources in Voltha project"
 keywords:
   - "onf"
@@ -33,4 +33,4 @@
 
 # app version applies to multiple components with potentially different
 # container image versions
-appVersion: "2.9.0-dev"
+appVersion: "2.9-dev"
diff --git a/voltha/templates/api-svc.yaml b/voltha/templates/api-svc.yaml
index 7edc0ea..add4aba 100644
--- a/voltha/templates/api-svc.yaml
+++ b/voltha/templates/api-svc.yaml
@@ -19,7 +19,7 @@
   namespace: "{{ .Release.Namespace }}"
 spec:
   ports:
-    - name: grpc
+    - name: nbi-grpc
       port: 55555
       targetPort: 50057
   selector:
diff --git a/voltha/templates/core-deploy.yaml b/voltha/templates/core-deploy.yaml
index 84f13e4..fa5731b 100644
--- a/voltha/templates/core-deploy.yaml
+++ b/voltha/templates/core-deploy.yaml
@@ -88,24 +88,27 @@
             - "/app/rw_core"
             - "--kv_store_type=etcd"
             - "--kv_store_address={{ tpl .Values.services.etcd.address . }}"
-            - "--grpc_address=0.0.0.0:50057"
+            - "--grpc_nbi_address=0.0.0.0:50057"
+            - "--grpc_sbi_address=0.0.0.0:50058"
             - "--banner"
-            - "--kafka_adapter_address={{ tpl .Values.services.kafka.adapter.address . }}"
             - "--kafka_cluster_address={{ tpl .Values.services.kafka.cluster.address . }}"
-            - "--rw_core_topic={{ tpl .Values.rw_core.topics.core_topic . }}"
+            - "--rpc_timeout={{ tpl .Values.rw_core.rpc_timeout . }}"
+            - "--internal_timeout={{ tpl .Values.rw_core.internal_timeout . }}"
             - "--event_topic={{ .Values.rw_core.topics.event_topic }}"
-            - "--core_timeout={{ tpl .Values.rw_core.core_timeout . }}"
-            - "--timeout_long_request={{ tpl .Values.rw_core.timeout_long_request . }}"
-            - "--timeout_request={{ tpl .Values.rw_core.timeout_request . }}"
             - "--log_level={{ $log_level }}"
             - "--probe_address=:8080"
             - "--trace_enabled={{ .Values.global.tracing.enabled }}"
             - "--trace_agent_address={{ tpl .Values.services.tracing_agent.address . }}"
             - "--log_correlation_enabled={{ .Values.global.log_correlation.enabled }}"
             - "--stack_id={{ tpl .Values.rw_core.stack_id . }}"
+            - "--backoff_retry_initial_interval={{ .Values.rw_core.backoff_initial_interval }}"
+            - "--backoff_retry_max_interval={{ .Values.rw_core.backoff_max_interval }}"
+            - "--backoff_retry_max_elapsed_time={{ .Values.rw_core.backoff_max_elapsed_time }}"
           ports:
             - containerPort: 50057
-              name: grpc
+              name: nbi-grpc
+            - containerPort: 50058
+              name: core-grpc
           {{- if .Values.securityContext.enabled }}
           securityContext:
             allowPrivilegeEscalation: false
@@ -114,14 +117,14 @@
             httpGet:
               path: /healthz
               port: 8080
-            initialDelaySeconds: 3
-            periodSeconds: 3
+            initialDelaySeconds: {{ .Values.probe.liveness.initial_delay_seconds }}
+            periodSeconds: {{ .Values.probe.liveness.period_seconds }}
           readinessProbe:
             httpGet:
               path: /readz
               port: 8080
-            initialDelaySeconds: 3
-            periodSeconds: 3
+            initialDelaySeconds: {{ .Values.probe.readiness.initial_delay_seconds }}
+            periodSeconds: {{ .Values.probe.readiness.period_seconds }}
           resources:
             requests:
               {{- if .Values.resources.rw_core.requests.memory }}
diff --git a/voltha/templates/core-svc.yaml b/voltha/templates/core-svc.yaml
new file mode 100644
index 0000000..e5aa343
--- /dev/null
+++ b/voltha/templates/core-svc.yaml
@@ -0,0 +1,27 @@
+# Copyright 2019-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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: "{{ template "fullname" . }}-core"
+  namespace: "{{ .Release.Namespace }}"
+spec:
+  ports:
+    - name: core-grpc
+      port: 55558
+      targetPort: 50058
+  selector:
+    app: rw-core
+    release: "{{ .Release.Name }}"
diff --git a/voltha/values.yaml b/voltha/values.yaml
index b25670b..f703115 100644
--- a/voltha/values.yaml
+++ b/voltha/values.yaml
@@ -27,7 +27,8 @@
   image_tag: ~
   image_pullPolicy: "Always"
   rw_core:
-    timeout: "10s"
+    rpc_timeout: "10s"
+    internal_timeout: "10s"
   # Configure Log Correlation
   log_correlation:
     enabled: true
@@ -35,6 +36,15 @@
   tracing:
     enabled: true
 
+# Probe values
+probe:
+  liveness:
+    initial_delay_seconds: 3
+    period_seconds: 3
+  readiness:
+    initial_delay_seconds: 3
+    period_seconds: 3
+
 # Default security context under which the containers run
 securityContext:
   enabled: true
@@ -45,8 +55,6 @@
 # Define connectivity to services on which VOLTHA depends
 services:
   kafka:
-    adapter:
-      address: kafka:9092
     cluster:
       address: kafka:9092
 
@@ -79,14 +87,15 @@
 
 rw_core:
   log_level: '{{ .Values.global.log_level }}'
-  core_timeout: '{{ .Values.global.rw_core.timeout }}'
-  timeout_long_request: '{{ .Values.global.rw_core.timeout }}'
-  timeout_request: '{{ .Values.global.rw_core.timeout }}'
+  rpc_timeout: '{{ .Values.global.rw_core.rpc_timeout }}'
+  internal_timeout: '{{ .Values.global.rw_core.internal_timeout }}'
   kv_store_data_prefix: 'service/{{ .Values.global.stack_name }}_voltha'
   stack_id: "{{ .Values.global.stack_name }}"
   topics:
-    core_topic: "{{ .Values.global.stack_name }}_rwcore"
     event_topic: "voltha.events"
+  backoff_initial_interval: 500ms
+  backoff_max_interval: 5s
+  backoff_max_elapsed_time: 0s
 
 ofagent:
   log_level: '{{ .Values.global.log_level }}'
@@ -97,13 +106,13 @@
   ofagent:
     registry: '{{ .Values.global.image_registry }}'
     repository: '{{ .Values.global.image_org }}voltha-ofagent-go'
-    tag: '{{- if hasKey .Values.global "image_tag" }}{{- if .Values.global.image_tag }}{{ .Values.global.image_tag }}{{- else }}1.6.5{{- end }}{{- else }}1.6.5{{- end }}'
+    tag: '{{- if hasKey .Values.global "image_tag" }}{{- if .Values.global.image_tag }}{{ .Values.global.image_tag }}{{- else }}2.0.0{{- end }}{{- else }}2.0.0{{- end }}'
     pullPolicy: '{{ .Values.global.image_pullPolicy }}'
 
   rw_core:
     registry: '{{ .Values.global.image_registry }}'
     repository: '{{ .Values.global.image_org }}voltha-rw-core'
-    tag: '{{- if hasKey .Values.global "image_tag" }}{{- if .Values.global.image_tag }}{{ .Values.global.image_tag }}{{- else }}2.9.3{{- end }}{{- else }}2.9.3{{- end }}'
+    tag: '{{- if hasKey .Values.global "image_tag" }}{{- if .Values.global.image_tag }}{{ .Values.global.image_tag }}{{- else }}3.0.0{{- end }}{{- else }}3.0.0{{- end }}'
     pullPolicy: '{{ .Values.global.image_pullPolicy }}'
 
 ingress: