-
Notifications
You must be signed in to change notification settings - Fork 2
/
TODO
191 lines (124 loc) · 3.92 KB
/
TODO
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
Background
==========
Format of this file borrowed from the bluez project.
Global
======
- review package structure; compare to edgex-go
Priority: High
- decide on top-level package name; choices include deviceservice[-go] or device[-go]
Priority: High
Service Operation
=================
- [consul] if enabled, read config settings from consul
Priority: High
Effort: 5d
- [consul] after all dependencies have been verified, and
initialization finished, register as a service with consul
Priority: High
Effort: 2d
- [consul] ensure health mechanism is properly configured/implemented
Priority: High
Effort: 1d
- Add top-level service functions to add, remove, and update devices.
Priority: High
Effort: 3-4d
- Add top-level service functions to add, remove, and update device profiles.
Priority: High
Effort: 3-4d
- Validate device profiles during auto-import using a schema with
constraints (e.g. limits on maximum number of device resources,
commands, ...).
Priority: Medium
Devices
=======
- Implement a new object which encapsulates models.Device, and
adds an in-progress mutex so that devices can't be removed
while operations are pending.
Priority: High
Effort: 3d
- Review thread safety in devices.go
Priority: High
Effort: 2d
- Implement a device interface to allow unit testing.
Priority: High
Effort: 2d
- Implement device unit tests
Priority: High
Effort: 3d
Profiles
========
- Re-factor profiles.go to use a simpler approach (ie. a map
of DeviceProfiles vs. a number of derived data structs).
Priority: High
Effort: 5d
- Review thread safety in profiles.go
Priority: High
Effort: 2d
- Review composition of complex data types. Should arrays/maps/slices
use structs or pointers to structs? If latter, re-factor.
Priority: High
Effort: 3-4d
- [profiles] read existing deviceprofiles from metadata before
importing new profiles. This requires new code to be added
to DeviceProfileClient to return the list of existing deviceprofiles.
Priority: High
Effort: 2d
- [profiles] implement size constraints based on settings for both
local vars and members of the Profile struct.
Priority: Medium
- [objects] remove code from objects.go and add any code required
for command of async readings to other existing source files and/or
create a new source file for this miscellaneous code (eg. utils.go).
It was decided at the Palo Alto f2f that the device service SDKs
would perform no caching.
Priority: High
Effort: 2-3d
- [devices] add support for generic init and disconnect functions
when devices are added or removed from the cache. The code checks
for presence of device commands specified by the configuration
settings DeviceInitCmd and DeviceRemoveCmd. There also are settings
for both which specify the args to pass with the command.
Priority: Medium
Effort: 3-4d
Readings
========
- Implement assertions, transforms, and mappings.
Priority: High
Effort: 4-5d
- Implement binary encoding of CommandResults.
Priority: High
Effort: 2d
- Impement floating point base64 encoding of CommandResults.
Priority: High
Effort: 2d
- Implement ALL form of GET command endpoint.
Priority: High
Effort: 3-4d
- Implement PUT support for command actuation.
Priority: High
Effort: 5-6d
- Implement unit tests for command endpoint.
Priority: High
Effort: 5-7d
Discovery
=========
- Implement discovery logic: if discovery endpoint hit, call
protocoldriver.scan(), process ScanList, and add new devices
that match any provisionwatchers.
Priority: Medium
Effort: 5-7d
- Dynamically create provisionwatcher instances based on
configuration settings.
Priority: Medium
Effort: 3d
Scheduling
==========
- Default schecule init: create default schedules & schedule events
on startup.
Priority: High
Effort: 3d
Metadata
========
- Implement callback endpoint to handle device adminState.
Priority: High
Effort: 3d