@@ -2,10 +2,13 @@ package dmfs
22
33import (
44 "context"
5+ "fmt"
56 "syscall"
67 "time"
78
9+ "github.com/DataManager-Go/libdatamanager"
810 "github.com/hanwen/go-fuse/v2/fs"
11+ "github.com/hanwen/go-fuse/v2/fuse"
912)
1013
1114type namespaceNode struct {
@@ -17,6 +20,8 @@ type namespaceNode struct {
1720
1821var _ = (fs .NodeOnAdder )((* namespaceNode )(nil ))
1922var _ = (fs .NodeRmdirer )((* namespaceNode )(nil ))
23+ var _ = (fs .NodeMkdirer )((* namespaceNode )(nil ))
24+ var _ = (fs .NodeRenamer )((* namespaceNode )(nil ))
2025
2126func (nsNode * namespaceNode ) OnAdd (ctx context.Context ) {
2227 // Use a no_group folder for files
@@ -50,7 +55,41 @@ func (nsNode *namespaceNode) Rmdir(ctx context.Context, name string) syscall.Err
5055 case <- time .After (2 * time .Second ):
5156 }
5257
53- // TODO do delete request
58+ // Do http delete request
59+ _ , err := data .libdm .DeleteAttribute (libdatamanager .GroupAttribute , nsNode .namespace , name )
60+ if err != nil {
61+ fmt .Println (err )
62+ return syscall .ENOENT
63+ }
64+
65+ return 0
66+ }
67+
68+ // On group renamed
69+ func (nsNode * namespaceNode ) Rename (ctx context.Context , name string , newParent fs.InodeEmbedder , newName string , flags uint32 ) syscall.Errno {
70+ if name == "no_group" {
71+ // TODO add groups to files with no group
72+ return 0
73+ }
74+
75+ _ , err := data .libdm .UpdateAttribute (libdatamanager .GroupAttribute , nsNode .namespace , name , newName )
76+ if err != nil {
77+ return syscall .ENOENT
78+ }
5479
5580 return 0
5681}
82+
83+ // On group created
84+ func (nsNode * namespaceNode ) Mkdir (ctx context.Context , name string , mode uint32 , out * fuse.EntryOut ) (* fs.Inode , syscall.Errno ) {
85+ node := nsNode .NewInode (ctx , & groupInode {
86+ group : name ,
87+ namespace : nsNode .namespace ,
88+ }, fs.StableAttr {
89+ Mode : syscall .S_IFDIR ,
90+ })
91+
92+ // TODO implement create group
93+
94+ return node , 0
95+ }
0 commit comments