@@ -79,3 +79,47 @@ Generate mocks like this:
7979go install github.com/vektra/mockery/v2@latest
8080make mock-generate
8181```
82+
83+ ## CLI
84+
85+ ### Storage
86+
87+ ``` bash
88+ alias dpu=" docker run --rm --network host ghcr.io/opiproject/godpu:main"
89+
90+ # connect to remote nvme/tcp controller
91+ nvmf0=$( dpu storage create backend nvme controller --id nvmf0 --multipath disable)
92+ path0=$( dpu storage create backend nvme path tcp --controller " $nvmf0 " --id path0 --ip " 11.11.11.2" --port 4444 --nqn nqn.2016-06.io.spdk:cnode1 --hostnqn nqn.2014-08.org.nvmexpress:uuid:feb98abe-d51f-40c8-b348-2753f3571d3c)
93+
94+ # connect to local nvme/pcie ssd controller
95+ nvmf1=$( dpu storage create backend nvme controller --id nvmf1 --multipath disable)
96+ path1=$( dpu storage create backend nvme path pcie --controller " $nvmf1 " --id path1 --bdf " 0000:40:00.0" )
97+
98+ # expose volume over nvme/tcp controller
99+ ss0=$( dpu storage create frontend nvme subsystem --id subsys0 --nqn " nqn.2022-09.io.spdk:opitest0" )
100+ ns0=$( dpu storage create frontend nvme namespace --id namespace0 --volume " Malloc0" --subsystem " $ss0 " )
101+ ctrl0=$( dpu storage create frontend nvme controller tcp --id ctrl0 --ip " 127.0.0.1" --port 4420 --subsystem " $ss0 " )
102+
103+ # expose volume over emulated nvme/pcie controller
104+ ss1=$( dpu storage create frontend nvme subsystem --id subsys1 --nqn " nqn.2022-09.io.spdk:opitest1" )
105+ ns1=$( dpu storage create frontend nvme namespace --id namespace1 --volume " Malloc1" --subsystem " $ss1 " )
106+ ctrl1=$( dpu storage create frontend nvme controller pcie --id ctrl1 --port 0 --pf 0 --vf 0 --subsystem " $ss1 " )
107+
108+ # delete emulated nvme/pcie controller
109+ dpu storage delete frontend nvme controller --name " $ctrl1 "
110+ dpu storage delete frontend nvme namespace --name " $ns1 "
111+ dpu storage delete frontend nvme subsystem --name " $ss1 "
112+
113+ # delete nvme/tcp controller
114+ dpu storage delete frontend nvme controller --name " $ctrl0 "
115+ dpu storage delete frontend nvme namespace --name " $ns0 "
116+ dpu storage delete frontend nvme subsystem --name " $ss0 "
117+
118+ # disconnect from local nvme/pcie ssd controller
119+ dpu storage delete backend nvme path --name " $path1 "
120+ dpu storage delete backend nvme controller --name " $nvmf1 "
121+
122+ # disconnect from remote nvme/tcp controller
123+ dpu storage delete backend nvme path --name " $path0 "
124+ dpu storage delete backend nvme controller --name " $nvmf0 "
125+ ```
0 commit comments