@@ -35,21 +35,81 @@ def run_cmd(cmd):
35
35
return output
36
36
37
37
def fetch_dpu_files ():
38
+ api_helper_platform = apiHelper .get_platform ()
39
+ platform = api_helper_platform if api_helper_platform != None else "arm64-elba-asic-r0"
38
40
docker_id = apiHelper .get_dpu_docker_imageID ()
39
- cmd = "sudo docker cp {}:/tmp/fru.json /home/admin" .format (docker_id )
40
- run_cmd (cmd )
41
- cmd = "sudo docker cp {}:/nic/bin/cpldapp /home/admin" .format (docker_id )
42
- run_cmd (cmd )
43
- cmd = "sudo docker cp {}:/nic/lib/libpal.so /home/admin" .format (docker_id )
44
- run_cmd (cmd )
45
- cmd = "sudo docker cp {}:/nic/lib/liblogger.so /home/admin" .format (docker_id )
41
+ cmd = "sudo docker cp {}:/tmp/fru.json /usr/share/sonic/device/{}/fru.json" .format (docker_id , platform )
46
42
run_cmd (cmd )
47
- cmd = "sudo docker cp {}:/nic/etc/VERSION.json /home/admin " .format (docker_id )
43
+ cmd = "sudo docker cp {}:/nic/etc/VERSION.json /usr/share/sonic/device/{}/VERSION.json " .format (docker_id , platform )
48
44
run_cmd (cmd )
49
45
cmd = "sudo docker cp {}:/usr/bin/mmc /usr/local/bin" .format (docker_id )
50
46
run_cmd (cmd )
47
+ try :
48
+ slot_id = apiHelper .run_docker_cmd ("cpldapp -r 0xA" ).strip ()
49
+ file = "/usr/share/sonic/device/{}/dpu_slot_id" .format (apiHelper .get_platform ())
50
+ with open (file , "w" ) as f :
51
+ f .write (slot_id )
52
+ except Exception as e :
53
+ log_err ("failed to setup slot_id at platform dir due to {}" .format (e ))
54
+
55
+ try :
56
+ board_id = apiHelper .run_docker_cmd ("cpldapp -r 0x80" ).strip ()
57
+ file = "/usr/share/sonic/device/{}/dpu_board_id" .format (apiHelper .get_platform ())
58
+ with open (file , "w" ) as f :
59
+ f .write (board_id )
60
+ except Exception as e :
61
+ log_err ("failed to setup board_id at platform dir due to {}" .format (e ))
62
+
63
+
64
+ def setup_platform_components_json (slot_id ):
65
+ try :
66
+ api_helper_platform = apiHelper .get_platform ()
67
+ platform = api_helper_platform if api_helper_platform != None else "arm64-elba-asic-r0"
68
+ filename = "/usr/share/sonic/device/{}/platform_components.json" .format (platform )
69
+ with open (filename , "r" ) as f :
70
+ data = json .load (f )
71
+
72
+ def replace_keys (obj ):
73
+ if isinstance (obj , dict ):
74
+ return {key .replace ("-0" , f"-{ slot_id } " ): replace_keys (value ) for key , value in obj .items ()}
75
+ elif isinstance (obj , list ):
76
+ return [replace_keys (item ) for item in obj ]
77
+ return obj
78
+
79
+ updated_data = replace_keys (data )
80
+
81
+ with open (filename , "w" ) as f :
82
+ json .dump (updated_data , f , indent = 4 )
83
+ log_info ("successfully updated platform_components.json" )
84
+ except Exception as e :
85
+ log_err ("failed to setup platform_components.json due to {}" .format (e ))
86
+
87
+ def config_setup ():
88
+ try :
89
+ from sonic_platform .chassis import Chassis
90
+ slot_id = Chassis ().get_my_slot ()
91
+ except Exception as e :
92
+ log_err ("failed to get slot id due to {}" .format (e ))
93
+
94
+ try :
95
+ cmd = f'sonic-cfggen -a "{{\\ "INTERFACE\\ ": {{\\ "Ethernet0\\ ": {{}},\\ "Ethernet0|18.{ slot_id } .202.1/31\\ ": {{}}}}}}" --write-to-db'
96
+ run_cmd (cmd )
97
+ except Exception as e :
98
+ log_err ("failed to set Ethernet0 ip due to {}" .format (e ))
99
+
100
+ setup_platform_components_json (slot_id )
101
+
102
+ try :
103
+ run_cmd ("mkdir -p /host/images" )
104
+ run_cmd ("mkdir -p /data" )
105
+ run_cmd ("chmod +x /boot/install_file" )
106
+ except Exception as e :
107
+ log_err ("failed to setup fwutil due to {}" .format (e ))
108
+
51
109
52
110
def set_onie_version ():
111
+ api_helper_platform = apiHelper .get_platform ()
112
+ platform = api_helper_platform if api_helper_platform != None else "arm64-elba-asic-r0"
53
113
version = ''
54
114
try :
55
115
cmd = 'cat /host/machine.conf | grep -i onie_version'
@@ -66,36 +126,14 @@ def set_onie_version():
66
126
version = "Not Available"
67
127
pass
68
128
try :
69
- fru_file = "/home/admin/ fru.json"
129
+ fru_file = "/usr/share/sonic/device/{}/ fru.json" . format ( platform )
70
130
data = json .load (open (fru_file ))
71
131
data ["onie_version" ] = version
72
132
with open (fru_file , "w" ) as json_file :
73
133
json .dump (data , json_file , indent = 4 )
74
134
except :
75
135
pass
76
136
77
- def cp_to_shared_mem ():
78
- api_helper_platform = apiHelper .get_platform ()
79
- platform = api_helper_platform if api_helper_platform != None else "arm64-elba-asic-r0"
80
- cmd = "sudo cp /home/admin/fru.json /usr/share/sonic/device/{}/fru.json" .format (platform )
81
- run_cmd (cmd )
82
- cmd = "sudo cp /home/admin/cpldapp /usr/share/sonic/device/{}/cpldapp" .format (platform )
83
- run_cmd (cmd )
84
- cmd = "sudo cp /home/admin/libpal.so /usr/share/sonic/device/{}/libpal.so" .format (platform )
85
- run_cmd (cmd )
86
- cmd = "sudo cp /home/admin/liblogger.so /usr/share/sonic/device/{}/liblogger.so" .format (platform )
87
- run_cmd (cmd )
88
- cmd = "sudo cp /home/admin/VERSION.json /usr/share/sonic/device/{}/VERSION.json" .format (platform )
89
- run_cmd (cmd )
90
-
91
- def set_cpldapp ():
92
- cmd = "sudo cp /home/admin/cpldapp /usr/local/bin"
93
- run_cmd (cmd )
94
- cmd = "sudo cp /home/admin/libpal.so /lib/libpal.so"
95
- run_cmd (cmd )
96
- cmd = "sudo cp /home/admin/liblogger.so /lib/liblogger.so"
97
- run_cmd (cmd )
98
-
99
137
def set_ubootenv_config ():
100
138
cmd = "cat /proc/mtd | grep -e 'ubootenv' | awk '{print $1}' | tr -dc '0-9'"
101
139
mtd_ubootenv = run_cmd (cmd )
@@ -111,7 +149,7 @@ def configure_iptable_rules():
111
149
pass
112
150
113
151
def pcie_tx_setup ():
114
- dpu_slot_id = int (run_cmd ("cpldapp -r 0xA" ).strip (), 16 )
152
+ dpu_slot_id = int (apiHelper . run_docker_cmd ("cpldapp -r 0xA" ).strip (), 16 )
115
153
if dpu_slot_id == 6 or dpu_slot_id == 7 :
116
154
run_cmd ("docker exec polaris /nic/tools/run-aacs-server.sh -p 9001 export SERDES_DUT_IP=localhost:9001" )
117
155
run_cmd ("docker exec -e SERDES_ADDR=1:1-1:3f -e SERDES_DUT_IP=localhost:9001 -e SERDES_SBUS_RINGS=4 polaris aapl serdes -addr 1:39 -pre 0 -post 0 -atten 10" )
@@ -131,13 +169,12 @@ def main():
131
169
set_ubootenv_config ()
132
170
except :
133
171
pass
134
- time .sleep (10 )
172
+ time .sleep (5 )
135
173
configure_iptable_rules ()
136
174
fetch_dpu_files ()
175
+ config_setup ()
137
176
time .sleep (5 )
138
177
set_onie_version ()
139
- cp_to_shared_mem ()
140
- set_cpldapp ()
141
178
pcie_tx_setup ()
142
179
143
180
if __name__ == "__main__" :
0 commit comments