summaryrefslogtreecommitdiff
path: root/todo.org
blob: ad2cf514d5c7eac571f5d6fd6d2d594fa1535314 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

- [X] escape strings in jprint
- [X] improve NgSendMsg error messages
- [X] destroy eiface if ifconfig_vnet fails
- [X] directly use nmount instead of fork+exec
- [X] mdkir for layers in lamina
- [X] remove target directory for layers
  - because of how unionfs works, union is not done on separate subdirectories with the same name
  - this confused me at first and to prevent further confusion I should probably remove target
- [X] escape strings when printing mounts in sf.lamina
- [X] move examples to a separate repository
- [X] add a bunch of missing checks to sf.lamina
- [ ] use rmslashes
- [ ] create getting started
- [ ] create documentation / man pages
  - [ ] sf system
  - [ ] sf.base
  - [ ] modules
    - [ ] sf.skeleton
    - [ ] sf.jail
    - [ ] sf.eiface
    - [ ] sf.bridge
    - [ ] sf.bhyve
  - [ ] UIs

- [-] sf.base
  - [X] load module specific data
  - [X] call modules on node start and stop operations
  - [X] call custom module functions
  - [X] call modules to get endpoints
  - [X] node start
  - [X] node stop
  - [X] link start
  - [X] link stop
  - [X] cmd
  - [X] mod
  - [X] make link creation simpler
  - [X] when stopping nodes, first disconnect their links
  - [X] lossy links using ng_pipe
  - [ ] allow caller to store arbitrary data in state

- [X] sf.skeleton

- [-] sf.jail
  - [X] parse configuration
  - [X] parse data
  - [X] start
    - [X] fs
    - [X] jail
    - [X] interfaces
    - [X] move interfaces to vnet
  - [X] stop
    - [X] fs
    - [X] jail
    - [X] interfaces
  - [X] get-endpoint
  - [X] cmd
    - [X] sh
    - [X] wireshark
  - [X] interface types
    - [X] eiface
    - [X] steal
  - [X] mount devfs
  - [X] init system
    - [X] start
    - [X] shutdown
    - [X] custom commands
  - [X] specify devfs ruleset
  - [X] remove unmount sleep
    - [X] we force unmount after jail_remove
  - [X] check that name is valid
  - [ ] investigate zfs whiteout support
  - [ ] mod

- [X] sf.eiface
  - [X] parse configuration
  - [X] parse data
  - [X] start
  - [X] stop
  - [X] get-endpoint
  - [X] allow automatic address assignment
  - [X] check that name is valid

- [X] sf.bridge
  - [X] parse configuration
  - [X] parse data
  - [X] start
  - [X] stop
  - [X] get-endpoint

- [ ] sf.bhyve
  - [ ] parse configuration
  - [ ] parse data
  - [ ] start
  - [ ] stop
  - [ ] get-endpoint
  - [ ] 9p
    - this will probably have to wait for 15.0-RELEASE

- [X] sf.lamina
  - [X] parse commands
  - [X] commands
    - [X] LAYER
    - [X] DEVFS
    - [X] RUN
    - [X] CHDIR
    - [X] COPY
    - [X] USER
  - [X] if a failure occurs, drop into a shell inside the chroot

- [ ] sf.gui
  - Web gui would be nice... I should first play with canvas a bit and javascript. I have no previous experience with this.
  - Considering we are handling UCL/json/yaml data, web client shouldn't be that hard.