@@ -79,3 +79,47 @@ Generate mocks like this:
79
79
go install github.com/vektra/mockery/v2@latest
80
80
make mock-generate
81
81
```
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