apiVersion: v1
description: A1 Helm chart for Kubernetes
name: a1mediator
-version: 1.0.0
+version: 2.0.0
+++ /dev/null
-{
- "controls":[
- {
- "name":"admission_control_policy",
- "description":"various parameters to control admission of dual connection",
- "control_state_request_rmr_type":"DC_ADM_GET_POLICY",
- "control_state_request_reply_rmr_type":"DC_ADM_GET_POLICY_ACK",
- "message_receives_rmr_type":"DC_ADM_INT_CONTROL",
- "message_receives_payload_schema":{
- "$schema":"http://json-schema.org/draft-07/schema#",
- "type":"object",
- "properties":{
- "enforce":{
- "type":"boolean",
- "default":true
- },
- "window_length":{
- "type":"integer",
- "default":1,
- "minimum":1,
- "maximum":60,
- "description":"Sliding window length (in minutes)"
- },
- "blocking_rate":{
- "type":"number",
- "default":10,
- "minimum":1,
- "maximum":100,
- "description":"% Connections to block"
- },
- "trigger_threshold":{
- "type":"integer",
- "default":10,
- "minimum":1,
- "description":"Minimum number of events in window to trigger blocking"
- }
- },
- "required":[
- "enforce",
- "blocking_rate",
- "trigger_threshold",
- "window_length"
- ],
- "additionalProperties":false
- },
- "message_sends_rmr_type":"DC_ADM_INT_CONTROL_ACK",
- "message_sends_payload_schema":{
- "$schema":"http://json-schema.org/draft-07/schema#",
- "type":"object",
- "properties":{
- "status":{
- "type":"string",
- "enum":[
- "SUCCESS",
- "FAIL"
- ]
- },
- "message":{
- "type":"string"
- }
- },
- "required":[
- "status"
- ],
- "additionalProperties":false
- }
- }
- ]
-}
+++ /dev/null
-DC_ADM_INT_CONTROL:20000
-DC_ADM_INT_CONTROL_ACK:20001
-DC_ADM_GET_POLICY: 20002
-DC_ADM_GET_POLICY_ACK: 20003
-
data:
local.rt: |
newrt|start
- rte|10060|{{ include "common.servicename.e2term.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.e2term.rmr.data" . }}
- rte|10061|{{ include "common.servicename.e2mgr.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.e2mgr.rmr.data" . }}
- rte|10062|{{ include "common.servicename.e2mgr.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.e2mgr.rmr.data" . }}
- rte|10080|{{ include "common.servicename.e2mgr.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.e2mgr.rmr.data" . }}
- rte|10360|{{ include "common.servicename.e2term.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.e2term.rmr.data" . }}
- rte|10361|{{ include "common.servicename.e2mgr.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.e2mgr.rmr.data" . }}
- rte|10362|{{ include "common.servicename.e2mgr.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.e2mgr.rmr.data" . }}
- rte|12010|{{ include "common.servicename.e2term.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.e2term.rmr.data" . }}
- rte|12011|service-ricxapp-admctrl-rmr.{{ include "common.namespace.xapp" . }}:4563
- rte|12012|service-ricxapp-admctrl-rmr.{{ include "common.namespace.xapp" . }}:4563
- rte|12021|service-ricxapp-admctrl-rmr.{{ include "common.namespace.xapp" . }}:4563;service-ricxapp-ueec-rmr.{{ include "common.namespace.xapp" . }}:4560
- rte|12022|service-ricxapp-admctrl-rmr.{{ include "common.namespace.xapp" . }}:4563;service-ricxapp-ueec-rmr.{{ include "common.namespace.xapp" . }}:4560
- rte|12050|service-ricxapp-admctrl-rmr.{{ include "common.namespace.xapp" . }}:4563;service-ricxapp-ueec-rmr.{{ include "common.namespace.xapp" . }}:4560
- rte|20000|service-ricxapp-admctrl-rmr.{{ include "common.namespace.xapp" . }}:4563
- rte|20002|service-ricxapp-admctrl-rmr.{{ include "common.namespace.xapp" . }}:4563
- rte|20001|{{ include "common.servicename.a1mediator.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.a1mediator.rmr.data" . }}
- rte|20003|{{ include "common.servicename.a1mediator.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.a1mediator.rmr.data" . }}
+ # Warning! this is not a functioning table because the subscription manager and route manager are now involved in a1 flows
+ # the real routing table requires subscription ids as routing is now done over sub ids, but this isn't known until xapp deploy time, it's a dynamic process triggered by the xapp manager
+ # there is a single message type for all messages a1 sends out now, subid is the other necessary piece of info
+ # there are two message types a1 listens for; 20011 (instance response) and 20012 (query)
+ # xapps likely use rts to reply with 20012 so the routing entry isn't needed for that in most cases
+ mse|20010|SUBID|service-ricxapp-admctrl-rmr.{{ include "common.namespace.xapp" . }}:4563
+ rte|20011|{{ include "common.servicename.a1mediator.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.a1mediator.rmr.data" . }}
+ rte|20012|{{ include "common.servicename.a1mediator.rmr" . }}.{{ include "common.namespace.platform" . }}:{{ include "common.serviceport.a1mediator.rmr.data" . }}
newrt|end
- rmr_string_int_mapping.txt: {{ tpl (.Files.Get "resources/rmr_string_int_mapping.txt") . | quote }}
- ricmanifest.json: {{ tpl (.Files.Get "resources/ricmanifest.json") . | quote }}
containers:
- name: {{ include "common.containername.a1mediator" . }}
volumeMounts:
- - name: a1conf
- mountPath: /opt/ricmanifest.json
- subPath: ricmanifest.json
- - name: a1conf
- mountPath: /opt/rmr_string_int_mapping.txt
- subPath: rmr_string_int_mapping.txt
- name: a1conf
mountPath: /opt/route/local.rt
subPath: local.rt
DBAAS_SERVICE_HOST: {{ include "common.servicename.dbaas.tcp" . | quote }}
DBAAS_SERVICE_PORT: {{ include "common.serviceport.dbaas.tcp" . | quote }}
DBAAS_PORT_6379_TCP_ADDR: {{ include "common.servicename.dbaas.tcp" . | quote }}
- DBAAS_PORT_6379_TCP_PORT: {{ include "common.serviceport.dbaas.tcp" . | quote }}
+ DBAAS_PORT_6379_TCP_PORT: {{ include "common.serviceport.dbaas.tcp" . | quote }}
RMR_RTG_SVC: {{ include "common.serviceport.a1mediator.rmr.route" . | quote }}
- PYTHONUNBUFFERED: "0"
- RMR_RCV_RETRY_INTERVAL: "{{ .Values.a1mediator.rmr_timeout_config.rcv_retry_interval_ms }}"
- RMR_RETRY_TIMES: "{{ .Values.a1mediator.rmr_timeout_config.rcv_retry_times }}"
-
+ PYTHONUNBUFFERED: "1"
+ A1_RMR_RETRY_TIMES: "{{ .Values.a1mediator.rmr_timeout_config.a1_rcv_retry_times }}"
+ # this sets the source field in messages from a1 to point back to a1s service name, rather than it's random pod name
+ # In my private testing, this is needed! however it wasn't here in it/dep. If routing doesn't work, possibly add this back.
+ # RMR_SRC_ID: curlybrace curlybrace .Values.rmrservice.name curlybrace curlybrace
+ INSTANCE_DELETE_NO_RESP_TTL: "{{ .Values.a1mediator.rmr_timeout_config.ins_del_no_resp_ttl }}"
+ INSTANCE_DELETE_RESP_TTL: "{{ .Values.a1mediator.rmr_timeout_config.ins_del_resp_ttl }}"
selector:
app: {{ include "common.namespace.platform" . }}-{{ include "common.name.a1mediator" . }}
release: {{ .Release.Name }}
-
image:
name: ric-plt-a1
- tag: 0.10.3
+ tag: 2.0.0
# Service ports are now defined in
# ric-common/Common-Template/helm/ric-common/templates/_ports.tpl file.
# these are ENV variables that A1 takes; see docs
rmr_timeout_config:
- rcv_retry_interval_ms: 500
- rcv_retry_times: 20
+ a1_rcv_retry_times: 20
+ ins_del_no_resp_ttl: 5
+ ins_del_resp_ttl: 10
app: {{ include "common.namespace.platform" . }}-{{ include "common.name.rsm" . }}
release: {{ .Release.Name }}
spec:
+ initContainers:
+ - name: redis-init
+ image: "redis"
+ imagePullPolicy: IfNotPresent
+ command: ['sh', '-c', 'redis-cli -h service-ricplt-dbaas-tcp -p 6379 set "{rsm},CFG:GENERAL:v1.0.0" "{\"enableResourceStatus\":true,\"partialSuccessAllowed\":true,\"prbPeriodic\":true,\"tnlLoadIndPeriodic\":true,\"wwLoadIndPeriodic\":true,\"absStatusPeriodic\":true,\"rsrpMeasurementPeriodic\":true,\"csiPeriodic\":true,\"periodicityMs\":1,\"periodicityRsrpMeasurementMs\":3,\"periodicityCsiMs\":4}" nx']
+
hostname: {{ include "common.name.rsm" . }}
imagePullSecrets:
- name: {{ include "common.repositoryCred" . }}