mirror of
https://gitlab.com/arm-research/smarter/smarter-device-manager.git
synced 2024-11-21 18:23:34 +00:00
Fix access to files on subdirectorties on /dev
This commit is contained in:
parent
841471d149
commit
8adb22dc29
@ -17,6 +17,10 @@ The smarter-device-manager starts by reading a YAML configuration file. This con
|
|||||||
nummaxdevices: 10
|
nummaxdevices: 10
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Devices in subdirectories have the slash replaced with underscore in the
|
||||||
|
resource name, due to kubernetes naming restrictions: e.g. `/dev/net/tun`
|
||||||
|
becomes `smarter-devices/net_tun`.
|
||||||
|
|
||||||
The default config file provided will enable most of the devices available on a Raspberry Pi (vers 1-4) or equivalent boards. I2C, SPI, video devices, sound and others would be enabled. The config file can be replaced using a configmap to enable or disable access to different devices, like accelerators, GPUs, etc.
|
The default config file provided will enable most of the devices available on a Raspberry Pi (vers 1-4) or equivalent boards. I2C, SPI, video devices, sound and others would be enabled. The config file can be replaced using a configmap to enable or disable access to different devices, like accelerators, GPUs, etc.
|
||||||
|
|
||||||
The node will show the devices it recognizes as resources in the node object in Kubernetes. The example below shows a raspberry PI.
|
The node will show the devices it recognizes as resources in the node object in Kubernetes. The example below shows a raspberry PI.
|
||||||
|
25
main.go
25
main.go
@ -56,17 +56,33 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func readDevDirectory(dirToList string) (files []string, err error) {
|
func readDevDirectory(dirToList string) (files []string, err error) {
|
||||||
|
var foundFiles []string
|
||||||
|
|
||||||
f, err := os.Open(dirToList)
|
f, err := os.Open(dirToList)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
files, err = f.Readdirnames(-1)
|
files, err = f.Readdirnames(-1)
|
||||||
f.Close()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
f.Close()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
f.Close()
|
||||||
|
for _, subDir := range files {
|
||||||
|
foundFiles = append(foundFiles, subDir)
|
||||||
|
filesDir, err := readDevDirectory(dirToList+"/"+subDir)
|
||||||
|
if err == nil {
|
||||||
|
for _, fileName := range filesDir {
|
||||||
|
foundFiles = append(foundFiles, subDir+"/"+fileName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return files, nil
|
return foundFiles, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func sanitizeName(path string) string {
|
||||||
|
return strings.Replace(path, "/", "_" ,-1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func findDevicesPattern(listDevices []string, pattern string) ([]string,error) {
|
func findDevicesPattern(listDevices []string, pattern string) ([]string,error) {
|
||||||
@ -151,9 +167,10 @@ func main() {
|
|||||||
if len(foundDevices) > 0 {
|
if len(foundDevices) > 0 {
|
||||||
for _, deviceToCreate := range foundDevices {
|
for _, deviceToCreate := range foundDevices {
|
||||||
var newDevice DeviceInstance
|
var newDevice DeviceInstance
|
||||||
|
deviceSafeName := sanitizeName(deviceToCreate)
|
||||||
newDevice.deviceType = deviceFileType
|
newDevice.deviceType = deviceFileType
|
||||||
newDevice.deviceName = "smarter-devices/" + deviceToCreate
|
newDevice.deviceName = "smarter-devices/" + deviceSafeName
|
||||||
newDevice.socketName = pluginapi.DevicePluginPath + "smarter-" + deviceToCreate + ".sock"
|
newDevice.socketName = pluginapi.DevicePluginPath + "smarter-" + deviceSafeName + ".sock"
|
||||||
newDevice.deviceFile = "/dev/" + deviceToCreate
|
newDevice.deviceFile = "/dev/" + deviceToCreate
|
||||||
newDevice.numDevices = deviceToTest.NumMaxDevices
|
newDevice.numDevices = deviceToTest.NumMaxDevices
|
||||||
listDevicesAvailable = append(listDevicesAvailable, newDevice)
|
listDevicesAvailable = append(listDevicesAvailable, newDevice)
|
||||||
|
Loading…
Reference in New Issue
Block a user