ISC Open Source Projects issueshttps://gitlab.isc.org/groups/isc-projects/-/issues2023-02-23T20:45:05Zhttps://gitlab.isc.org/isc-projects/stork/-/issues/978Make lease search, searchable by wildcard and/or regex2023-02-23T20:45:05ZJohn WatkinsMake lease search, searchable by wildcard and/or regex---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
unable to search active/past leases by IPv4 octet/wildcard. 10.10 or 10.10.* etc. even searching ...---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
unable to search active/past leases by IPv4 octet/wildcard. 10.10 or 10.10.* etc. even searching by regex would be useful.
**Describe the solution you'd like**
search via octet such as 10* or 10.10 or regex.
**Describe alternatives you've considered**
none.
**Additional context**
Add any other context about the feature request here.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/976Please publish the stork image to a registry2023-02-14T16:32:03ZJinna KiisuoPlease publish the stork image to a registryRight now the stork image is not published on the isc-projects registry. Please publish the image so that it's easier to use the Open Source version.
Building it myself I have to jump through hoops:
```
STORK_CS_VERSION="*" docker build...Right now the stork image is not published on the isc-projects registry. Please publish the image so that it's easier to use the Open Source version.
Building it myself I have to jump through hoops:
```
STORK_CS_VERSION="*" docker build -f docker/images/stork.Dockerfile .
```
.. and contend with weird build issues:
```
=> ERROR [server-builder 1/1] RUN rake build:server_only_dist 1.9s
*snip*
#0 1.713 /app/tools/golang/goswagger generate server -m server/gen/models -s server/gen/restapi --exclude-main --name Stork --regenerate-configureapi --spec /app/api/swagger.yaml --template stratoscale
#0 1.832 runtime: mlock of signal stack failed: 12
#0 1.832 runtime: increase the mlock limit (ulimit -l) or
#0 1.832 runtime: update your kernel to 5.3.15+, 5.4.2+, or 5.5+
#0 1.832 fatal error: mlock failed
```
.. And still need to manually rebuild newer versions myself.
I'd imagine it would also be helpful for your own efforts if there's a canonical published image.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/2747unrecognized compiler flags2023-09-26T14:30:24ZAndrei Pavelandrei@isc.orgunrecognized compiler flagsCompiling Kea with the GNU compiler (`g++`) mentions an unrecognized flag because it's not compatible with said compiler:
```
cc1plus: note: unrecognized command-line option ‘-Wno-unused-private-field’ may have been intended to silence ...Compiling Kea with the GNU compiler (`g++`) mentions an unrecognized flag because it's not compatible with said compiler:
```
cc1plus: note: unrecognized command-line option ‘-Wno-unused-private-field’ may have been intended to silence earlier diagnostics
```
This flag is added in a Makefile. There are a few others like this.
Some include it inside the scope of `if USE_GXX`. I would instead remove these flags from Makefiles. Including a flag only for a library is arbitrary. If it should be included, it should either be for the entire repo, or not at all.
People who want to enable custom flags can use the `CXXFLAGS` environment variable which should be set before running `./configure`.
```
export CXXFLAGS="-Wno-unused-private-field"
./configure
```backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/968Empty last reloaded timestamp for CA daemon2023-02-07T14:29:07ZSlawek FigielEmpty last reloaded timestamp for CA daemonThe issue was found during 1.9.0 sanity checks by @slawek - [Source](https://gitlab.isc.org/isc-projects/stork/-/issues/962#note_348419).
The "Last Reloaded At" property of the "Daemon Information" section on the application page is emp...The issue was found during 1.9.0 sanity checks by @slawek - [Source](https://gitlab.isc.org/isc-projects/stork/-/issues/962#note_348419).
The "Last Reloaded At" property of the "Daemon Information" section on the application page is empty for the CA daemon.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/967Prevent resetting application tab on click the refresh button2023-02-07T14:25:57ZSlawek FigielPrevent resetting application tab on click the refresh buttonThe issue was found during 1.9.0 sanity checks by @slawek - [Source](https://gitlab.isc.org/isc-projects/stork/-/issues/962#note_348418).
After clicking the "Refresh App" button on the application page, the active tab is reset.The issue was found during 1.9.0 sanity checks by @slawek - [Source](https://gitlab.isc.org/isc-projects/stork/-/issues/962#note_348418).
After clicking the "Refresh App" button on the application page, the active tab is reset.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/965The role change doesn't affect the current user session2023-02-07T14:24:22ZSlawek FigielThe role change doesn't affect the current user sessionThe issue was found during 1.9.0 sanity checks by @slawek - [Source](https://gitlab.isc.org/isc-projects/stork/-/issues/962#note_348410).
The role change is not immediately affecting the current session. The old permissions are valid un...The issue was found during 1.9.0 sanity checks by @slawek - [Source](https://gitlab.isc.org/isc-projects/stork/-/issues/962#note_348410).
The role change is not immediately affecting the current session. The old permissions are valid until logout.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/964Prevent taking away super-admin role for the last super-admin2023-02-07T14:17:37ZSlawek FigielPrevent taking away super-admin role for the last super-adminThe issue was found during 1.9.0 sanity checks by @slawek - [Source](https://gitlab.isc.org/isc-projects/stork/-/issues/962#note_348409):
I took away the super admin role for the last user with this role. It shouldn't be possible.The issue was found during 1.9.0 sanity checks by @slawek - [Source](https://gitlab.isc.org/isc-projects/stork/-/issues/962#note_348409):
I took away the super admin role for the last user with this role. It shouldn't be possible.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/963Replace existing device on a HR, obtain the same address2023-07-26T12:42:39ZVicky Riskvicky@isc.orgReplace existing device on a HR, obtain the same addressSeveral users have reported on the ([Kea-users mailing list](https://lists.isc.org/pipermail/kea-users/2023-January/003847.html)) that they want to be able to replace a device, with a new device, but on the same host reservation, and hav...Several users have reported on the ([Kea-users mailing list](https://lists.isc.org/pipermail/kea-users/2023-January/003847.html)) that they want to be able to replace a device, with a new device, but on the same host reservation, and have the new device get the address that the old device had. The solution is to delete the lease for the old device, but this is quite a complicated process.
If we could automate this for admins via Stork, that would be great. The idea would be, when the admin updates a reservation to change or add the device details, to show if there is an existing lease for that reservation, and ask if they would like to delete the existing lease for that reservation, and then do that step first, before updating the reservation, so when the new device is added, it will get the ip just released by deleting the old lease.
This is considered a 'feature' of ISC DHCP that Kea lacks (because Kea is 'stricter').backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/956REST API calls to add a subnet2023-05-23T13:18:24ZMarcin SiodelskiREST API calls to add a subnetThere are several REST API calls to create new subnet (similar to the calls we have for the host reservations). Specifically, we need: `createSubnetAdd`, `commitSubnetAdd`. Internally they will make calls to the config manager's function...There are several REST API calls to create new subnet (similar to the calls we have for the host reservations). Specifically, we need: `createSubnetAdd`, `commitSubnetAdd`. Internally they will make calls to the config manager's functions: `BeginSubnetAdd`, `ApplySubnetAdd` and `Commit`.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/955Schedule host reservation creation and/or update2023-01-31T14:43:54ZMarcin SiodelskiSchedule host reservation creation and/or updateIt is possible to specify new host reservation or update an existing reservation in Stork. However, it is currently impossible to schedule adding or updating a host reservation at specified time in the future. Config manager is designed ...It is possible to specify new host reservation or update an existing reservation in Stork. However, it is currently impossible to schedule adding or updating a host reservation at specified time in the future. Config manager is designed to facilitate such a use case but the backend and UI logic for host reservations is missing. This ticket implements such a capability.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/954Fetch DHCP option definitions from the Kea servers and use them to specify op...2024-02-12T17:06:34ZMarcin SiodelskiFetch DHCP option definitions from the Kea servers and use them to specify optionsStork can use standard DHCP option definitions in the options form and in the backend to convert options from Kea to Stork format. However, Stork doesn't fetch custom option definitions from the Kea instances. Stork should fetch such opt...Stork can use standard DHCP option definitions in the options form and in the backend to convert options from Kea to Stork format. However, Stork doesn't fetch custom option definitions from the Kea instances. Stork should fetch such option definitions and use them aside standard option definitions in the form and in the backend. Creating custom option definitions is out of scope for this ticket.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/951Kea configuration versioning in the backend2023-01-31T14:43:54ZMarcin SiodelskiKea configuration versioning in the backendKea configuration can be modified from Stork or externally. Stork should be able to detect that the configuration has changed (someone modified a configuration file) and assign a version number/id to the detected configuration. It should...Kea configuration can be modified from Stork or externally. Stork should be able to detect that the configuration has changed (someone modified a configuration file) and assign a version number/id to the detected configuration. It should be possible to go back to one of the previous configurations and see what has changed.
This issue introduces suitable Stork backend changes to automatically store a trace of the old Kea configurations (perhaps in a separate table and perhaps using SQL triggers). Technically, configuration versioning is not required to implement other config-mgmnt tickets, e.g. subnet manipulation but it is related because subnet modification results in a Kea configuration change.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/2736valid-lifetime and required client classes2023-01-26T14:25:43ZPeter Daviesvalid-lifetime and required client classesvalid-lifetime and required client classes:
When defining "valid-lifetime" in a client class the value takes precedence over
the global and subnet values. This does not happen when the class is defined as
"only-if-required" and...valid-lifetime and required client classes:
When defining "valid-lifetime" in a client class the value takes precedence over
the global and subnet values. This does not happen when the class is defined as
"only-if-required" and the subnet is defined with "required-client-classes"
The Kea Arm suggests that "option-data" in required classes take precedence but
no mention is made of "valid-lifetime"
Quote: Required evaluation can be used to express complex dependencies like subnet membership. It can also be used to reverse
the precedence; if option-data is set in a subnet, it takes precedence over option-data in a class. If option-data
is moved to a required class and required in the subnet, a class evaluated earlier may take precedence.
The following offers a lease time with the default value of "7200" and not "123"
for clients classifed as "Class-1"
```
{
"Dhcp4": {
"interfaces-config": { "interfaces": [ "vethserver" ] },
"control-socket": { "socket-type": "unix", "socket-name": "../sockets/kea4_command" },
"lease-database": { "type": "memfile", "name": "./kea-lease4.csv", "lfc-interval": 0, "persist": true },
"client-classes": [ {
"name": "Class-1", "test": "(pkt4.mac == 0x1e503193e1a6)", "only-if-required": true, "valid-lifetime": 123 }],
"subnet4": [ {
"subnet": "10.0.1.0/24", "id": 1,
"pools": [ { "pool": "10.0.1.5 - 10.0.1.254",
"require-client-classes": [ "Class-1" ] } ] }],
"dhcp-ddns": { "enable-updates": false },
"option-data": [ {
"name": "domain-name-servers", "code": 6, "data": "1.1.1.1" }, {
"name": "routers", "code": 3, "data": "10.0.1.1" } ],
"loggers": [ {
"name": "kea-dhcp4", "output_options": [ { "output": "./kea-dhcp4.log" } ],
"severity": "DEBUG", "debuglevel": 99 } ] }
}
```
[RT #21738](https://support.isc.org/Ticket/Display.html?id=21738)backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/949Unify the clean-up testing tools with the sandbox2023-01-31T14:41:36ZSlawek FigielUnify the clean-up testing tools with the sandboxA sandbox utility is dedicated to cleaning up the unit test-related side effects but handles only the newly created files. We also have separate utilities to support replacing global variables and reverting environment variable changes. ...A sandbox utility is dedicated to cleaning up the unit test-related side effects but handles only the newly created files. We also have separate utilities to support replacing global variables and reverting environment variable changes. We can unify all these functions to create a universal tool for cleanup. Currently, the developer must know and remember each utility and call it correctly. It causes us sometimes to write the test-scope functions to clean up because we forget that the solution already exists. An all-in-one tool would allow us to write more consistent and idiomatic code.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/948Display Stork Agent configuration on Stork UI2023-01-31T14:39:57ZSlawek FigielDisplay Stork Agent configuration on Stork UIThere is no way to inspect the Stork agent configuration using Stork UI.
The Stork server should collect the Stork agent's runtime settings (combination of the environment variables, CLI flags, and default values) and HTTP credentials ...There is no way to inspect the Stork agent configuration using Stork UI.
The Stork server should collect the Stork agent's runtime settings (combination of the environment variables, CLI flags, and default values) and HTTP credentials JSON file. There should also be possible to gather and browse the Stork agent logs.
We need the possibility to write the config review checkers that analyze the Stork agent configuration and are triggered when it is changed.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/947E2E test to verify that all checkers have descriptions on the UI2023-01-31T14:38:02ZSlawek FigielE2E test to verify that all checkers have descriptions on the UIThe configuration review checkers are defined on the backend side, but their descriptions are specified on the UI side.
There is no verification if all checkers have descriptions assigned. If the developer forgot to provide the descripti...The configuration review checkers are defined on the backend side, but their descriptions are specified on the UI side.
There is no verification if all checkers have descriptions assigned. If the developer forgot to provide the description, UI displays no content.
We need to add the end-to-end test to check it.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/2728the Dhcpv4Srv::appendRequestedOptions and Dhcpv4Srv::buildCfgOptionList exit ...2023-07-31T14:14:19ZRazvan Becheriuthe Dhcpv4Srv::appendRequestedOptions and Dhcpv4Srv::buildCfgOptionList exit early if subnet is nullwhile working at #1518 and using v6 as an 'inspiration' for the code I have discovered that v4 functions exit early if subnet is null.
Dhcpv4Srv::buildCfgOptionList is used to build the list of persistent options, so I think it should a...while working at #1518 and using v6 as an 'inspiration' for the code I have discovered that v4 functions exit early if subnet is null.
Dhcpv4Srv::buildCfgOptionList is used to build the list of persistent options, so I think it should also check if there are any hosts with persistent options or client classes with persistent options that need to be added to the response.
also the Dhcpv4Srv::appendRequestedOptions is skipping the list built by the first function if the subnet is null.
I think that this has an effect on the information message.
both functions are called by Dhcpv4Srv::processInform so I think that the information message should add persistent options (always-sent set to true), either global or in matching client classes or hosts(?).
thread ignored in #1518:
https://gitlab.isc.org/isc-projects/kea/-/merge_requests/1889#note_345697
using the early exit in v6 will cause following UT to fail:
```
[ RUN ] Dhcpv6SrvTest.prlPersistency
dhcp6_srv_unittest.cc:2868: Failure
Value of: response->getOption(D6O_SUBSCRIBER_ID)
Actual: false
Expected: true
[ FAILED ] Dhcpv6SrvTest.prlPersistency (4 ms)
[ RUN ] InfRequestTest.infRequestNoSubnets
infrequest_unittest.cc:300: Failure
Value of: nis
Actual: false
Expected: true
[ FAILED ] InfRequestTest.infRequestNoSubnets (2 ms)
[ FAILED ] 2 tests, listed below:
[ FAILED ] Dhcpv6SrvTest.prlPersistency
[ FAILED ] InfRequestTest.infRequestNoSubnets
```backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/943Unstable unit test: TestSubnetPrefixInPrometheusMetrics2023-04-04T13:26:00ZSlawek FigielUnstable unit test: TestSubnetPrefixInPrometheusMetricsThe `TestSubnetPrefixInPrometheusMetrics` test from `backend/agent/promkeaexporter_test.go` unexpectedly fails one or two times per day.
```
=== RUN TestSubnetPrefixInPrometheusMetrics
time="2023-01-19T11:35:47Z" level=error msg="open...The `TestSubnetPrefixInPrometheusMetrics` test from `backend/agent/promkeaexporter_test.go` unexpectedly fails one or two times per day.
```
=== RUN TestSubnetPrefixInPrometheusMetrics
time="2023-01-19T11:35:47Z" level=error msg="open /var/lib/stork-agent/certs/ca.pem: no such file or directory\ncould not read CA certificate: /var/lib/stork-agent/certs/ca.pem\nisc.org/stork/agent.readTLSCredentials\n\t/builds/isc-projects/stork/backend/agent/caclient.go:112\nisc.org/stork/agent.NewHTTPClient\n\t/builds/isc-projects/stork/backend/agent/caclient.go:39\nisc.org/stork/agent.NewPromKeaExporter\n\t/builds/isc-projects/stork/backend/agent/promkeaexporter.go:347\nisc.org/stork/agent.TestSubnetPrefixInPrometheusMetrics\n\t/builds/isc-projects/stork/backend/agent/promkeaexporter_test.go:289\ntesting.tRunner\n\t/builds/isc-projects/stork/tools/golang/go/src/testing/testing.go:1439\nruntime.goexit\n\t/builds/isc-projects/stork/tools/golang/go/src/runtime/asm_amd64.s:1571"
time="2023-01-19T11:35:47Z" level=warning msg="cannot read TLS credentials, use HTTP protocol, open /var/lib/stork-agent/certs/ca.pem: no such file or directory\ncould not read CA certificate: /var/lib/stork-agent/certs/ca.pem\nisc.org/stork/agent.readTLSCredentials\n\t/builds/isc-projects/stork/backend/agent/caclient.go:112\nisc.org/stork/agent.NewHTTPClient\n\t/builds/isc-projects/stork/backend/agent/caclient.go:39\nisc.org/stork/agent.NewPromKeaExporter\n\t/builds/isc-projects/stork/backend/agent/promkeaexporter.go:347\nisc.org/stork/agent.TestSubnetPrefixInPrometheusMetrics\n\t/builds/isc-projects/stork/backend/agent/promkeaexporter_test.go:289\ntesting.tRunner\n\t/builds/isc-projects/stork/tools/golang/go/src/testing/testing.go:1439\nruntime.goexit\n\t/builds/isc-projects/stork/tools/golang/go/src/runtime/asm_amd64.s:1571"
time="2023-01-19T11:35:47Z" level=info msg="the Basic Auth credentials file (/etc/stork/agent-credentials.json) is missing - HTTP authentication is not used"
time="2023-01-19T11:35:47Z" level=info msg="Prometheus Kea Exporter listening on :1234, stats pulling interval: 1 seconds"
time="2023-01-19T11:35:48Z" level=info msg=GetApps
promkeaexporter_test.go:303:
Error Trace: promkeaexporter_test.go:303
Error: Not equal:
expected: 13
actual : 0
Test: TestSubnetPrefixInPrometheusMetrics
time="2023-01-19T11:35:48Z" level=info msg="Stopping Prometheus Kea Exporter"
time="2023-01-19T11:35:48Z" level=error msg="Problem serving Prometheus Kea Exporter: http: Server closed"
time="2023-01-19T11:35:48Z" level=info msg="Stopped Prometheus Kea Exporter"
--- FAIL: TestSubnetPrefixInPrometheusMetrics (1.01s)
```backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/2721naming inconsistency between keactrl parameters and the servers acted upon2023-07-31T12:45:46ZAndrei Pavelandrei@isc.orgnaming inconsistency between keactrl parameters and the servers acted uponIt's unclear what parameter should be specified to, for example, start `kea-dhcp6`. The usage message is not clear on that:
```
$ keactrl
ERROR/keactrl: missing command
usage is keactrl command [-c keactrl-config-file] [-s server[,serve...It's unclear what parameter should be specified to, for example, start `kea-dhcp6`. The usage message is not clear on that:
```
$ keactrl
ERROR/keactrl: missing command
usage is keactrl command [-c keactrl-config-file] [-s server[,server,..]]
commands: start stop reload status version
```
They end up being different than the server names. Without the leading `kea-`, and with dashes turned to underscores:
```
$ keactrl version -s dhcp4,dhcp6,dhcp_ddns,ctrl_agent,netconf
keactrl: 2.3.4-git
kea-dhcp4: 2.3.4-git
kea-dhcp6: 2.3.4-git
kea-dhcp-ddns: 2.3.4-git
kea-ctrl-agent: 2.3.4-git
kea-netconf: 2.3.4-git
```
There is a mention of the parameters in `man keactrl`:
```
-s|--server server[,server,...]
Specifies a subset of the enabled servers to which the command should be issued. The list of servers should be separated by commas, with
no intervening spaces. Acceptable values are:
dhcp4 DHCPv4 server (kea-dhcp4).
dhcp6 DHCPv6 server (kea-dhcp6).
dhcp_ddns
DHCP DDNS server (kea-dhcp-ddns).
ctrl_agent
Control Agent (kea-ctrl-agent).
netconf
NETCONF agent (kea-netconf).
all All servers, including NETCONF if it was configured to be built. This is the default.
```
It would be nice to have the parameter names be the same as the server names to avoid ambiguity.
First reported here: https://lists.isc.org/pipermail/kea-users/2022-July/003497.htmlbackloghttps://gitlab.isc.org/isc-projects/stork/-/issues/938Local subnet ID is missing if the subnet prefix is not in canonical form2023-02-01T10:13:27ZSlawek FigielLocal subnet ID is missing if the subnet prefix is not in canonical formThe local subnet ID is not fetched from the Kea configuration if the subnet ID is not in canonical form.
Steps to reproduce:
1. Run a demo
2. Authorize the `agent-kea` machine
3. Go to the Subnets page
4. Check that the `192.0.10.80/29...The local subnet ID is not fetched from the Kea configuration if the subnet ID is not in canonical form.
Steps to reproduce:
1. Run a demo
2. Authorize the `agent-kea` machine
3. Go to the Subnets page
4. Check that the `192.0.10.80/29` has no Kea config ID.
5. Open the `docker/config/agent-kea/kea-dhcp4.conf` configuration file
6. Check that the `192.0.10.82/29` subnet has assigned `17` IDbacklog