-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathsimple_ccc_xapp.py
More file actions
executable file
·70 lines (59 loc) · 3.56 KB
/
simple_ccc_xapp.py
File metadata and controls
executable file
·70 lines (59 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/env python3
import time
import datetime
import argparse
import signal
from lib.xAppBase import xAppBase
class MyXapp(xAppBase):
def __init__(self, config, http_server_port, rmr_port):
super(MyXapp, self).__init__(config, http_server_port, rmr_port)
pass
# Mark the function as xApp start function using xAppBase.start_function decorator.
# It is required to start the internal msg receive loop.
@xAppBase.start_function
def start(self, e2_node_id):
while self.running:
min_prb_ratio = 10
max_prb_ratio = 25
current_time = datetime.datetime.now()
print("{} Send RIC Control Request to E2 node ID: {} E2SM-CCC:O-RRMPolicyRatio, PRB_min_ratio: {}, PRB_max_ratio: {}".format(current_time.strftime("%H:%M:%S"), e2_node_id, min_prb_ratio, max_prb_ratio))
self.e2sm_ccc.control_o_rrm_policy_ratio(e2_node_id, min_prb_ratio, max_prb_ratio, dedicated_prb_ratio=100)
time.sleep(5)
min_prb_ratio = 10
max_prb_ratio = 50
current_time = datetime.datetime.now()
print("{} Send RIC Control Request to E2 node ID: {} E2SM-CCC:O-RRMPolicyRatio, PRB_min_ratio: {}, PRB_max_ratio: {}".format(current_time.strftime("%H:%M:%S"), e2_node_id, min_prb_ratio, max_prb_ratio))
self.e2sm_ccc.control_o_rrm_policy_ratio(e2_node_id, min_prb_ratio, max_prb_ratio, dedicated_prb_ratio=100)
time.sleep(5)
min_prb_ratio = 10
max_prb_ratio = 75
current_time = datetime.datetime.now()
print("{} Send RIC Control Request to E2 node ID: {} E2SM-CCC:O-RRMPolicyRatio, PRB_min_ratio: {}, PRB_max_ratio: {}".format(current_time.strftime("%H:%M:%S"), e2_node_id, min_prb_ratio, max_prb_ratio))
self.e2sm_ccc.control_o_rrm_policy_ratio(e2_node_id, min_prb_ratio, max_prb_ratio, dedicated_prb_ratio=100)
time.sleep(5)
min_prb_ratio = 10
max_prb_ratio = 100
current_time = datetime.datetime.now()
print("{} Send RIC Control Request to E2 node ID: {} E2SM-CCC:O-RRMPolicyRatio, PRB_min_ratio: {}, PRB_max_ratio: {}".format(current_time.strftime("%H:%M:%S"), e2_node_id, min_prb_ratio, max_prb_ratio))
self.e2sm_ccc.control_o_rrm_policy_ratio(e2_node_id, min_prb_ratio, max_prb_ratio, dedicated_prb_ratio=100)
time.sleep(5)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='My example xApp')
parser.add_argument("--config", type=str, default='', help="xApp config file path")
parser.add_argument("--http_server_port", type=int, default=8090, help="HTTP server listen port")
parser.add_argument("--rmr_port", type=int, default=4560, help="RMR port")
parser.add_argument("--e2_node_id", type=str, default='gnbd_001_001_00019b_0', help="E2 Node ID")
parser.add_argument("--ran_func_id", type=int, default=4, help="E2SM RC RAN function ID")
args = parser.parse_args()
config = args.config
e2_node_id = args.e2_node_id # TODO: get available E2 nodes from SubMgr, now the id has to be given.
ran_func_id = args.ran_func_id # TODO: get available E2 nodes from SubMgr, now the id has to be given.
# Create MyXapp.
myXapp = MyXapp(config, args.http_server_port, args.rmr_port)
myXapp.e2sm_ccc.set_ran_func_id(ran_func_id)
# Connect exit signals.
signal.signal(signal.SIGQUIT, myXapp.signal_handler)
signal.signal(signal.SIGTERM, myXapp.signal_handler)
signal.signal(signal.SIGINT, myXapp.signal_handler)
# Start xApp.
myXapp.start(e2_node_id)