... | ... | @@ -585,24 +585,27 @@ There is a quasi-related issue https://gitlab.isc.org/isc-projects/kea/-/issues/ |
|
|
|
|
|
## Task Breakdown
|
|
|
|
|
|
A very preliminary task break down is shown below:
|
|
|
The work breaks down into two parallel tracks: Query fulfillment and LeaseQueryListener implementation. They interface at the class, BulkLeaseQuery, should be stubbed early on. A preliminary task break down is shown below:
|
|
|
|
|
|
```
|
|
|
1. Query Fulfillment
|
|
|
1.1 Kea core and/or leasequery hook changes to store explicit parameters in user-context
|
|
|
1.2 Implement LeaseMgr BulkLeaseQuery base class(es) and interface
|
|
|
1.2 Implement LeaseMgr query functions
|
|
|
|
|
|
1.3 Memfile Lease Mgr
|
|
|
1.3 BulkLeaseQuery class(es) and interface (in LeaseQuery hook)
|
|
|
Need stubs for this pretty early on so Track 2 can keep moving.
|
|
|
|
|
|
1.4 Memfile Lease Mgr
|
|
|
a. New index(es) using predicate objects
|
|
|
b. V6 cross-reference multi-index container
|
|
|
c. Implement MemfileBulkLeaseQuery<4/6>
|
|
|
b. V6 cross-reference multi-index container
|
|
|
c. Implement MemfileBulkLeaseQuery<4/6>
|
|
|
|
|
|
1.4 MySQL Lease Mgr
|
|
|
1.5 MySQL Lease Mgr
|
|
|
a. V4 Generated columns/indexes (schema + SQL queries)
|
|
|
b. V6 Cross-reference table and triggers (schema + SQL queries)
|
|
|
c. Implement MySQLBulkLeaseQuery<4/6>
|
|
|
|
|
|
1.5 PostgresSQL Lease Mgr
|
|
|
1.6 PostgresSQL Lease Mgr
|
|
|
a. Change lease4/6 user_context column from TEXT to JSONB, update existing SQL as needed
|
|
|
b. V4 JSONB/GIN (schema + SQL queries)
|
|
|
c. V6 JSONB/GIN (schema + SQL queries)
|
... | ... | @@ -610,11 +613,19 @@ A very preliminary task break down is shown below: |
|
|
|
|
|
2. LeaseQueryListener
|
|
|
2.1 Create the initial class hierarchy from CmdHttpListener hierarchy
|
|
|
2.2 Implement TcpConnection packet read and write logic (i.e. replace Transaction logic)
|
|
|
a. HttpThreadPool -> IoServiceThreadPool, this class could probably be in asiolink, there
|
|
|
really is nothing in it that is Htttp or even Tcp specifie. It's really a pool of IOService
|
|
|
driven threads.
|
|
|
b. HttpListener* -> TcpListener*, these classes could reside in asiolink and possibly also used
|
|
|
as base classes for Http code, though this would be ancillary to making BLQ work.
|
|
|
c. LeaseQueryConnection (not shown yet) would derive from TcpConnection
|
|
|
d. CmdHttpListener -> LeaseQueryListener, self explanatory
|
|
|
|
|
|
2.2 Implement LeaseQueryConnection packet read and write logic (i.e. replace Transaction logic)
|
|
|
2.3 Implement query queueing and QueryWorker, QueryWorker management
|
|
|
2.4 Utilize LeaseMgr BLQ interface to fetch results and build responses
|
|
|
|
|
|
3. LeaseQuery Hooks
|
|
|
3. LeaseQuery Hook/Integration
|
|
|
3.1 Add callouts as needed
|
|
|
3.2 Extend configuration parsing
|
|
|
3.4 Instantiate LeaseQueryListener (when enabled)
|
... | ... | |