stork issueshttps://gitlab.isc.org/isc-projects/stork/-/issues2022-09-12T13:42:40Zhttps://gitlab.isc.org/isc-projects/stork/-/issues/44Req 2.1 - Leases list2022-09-12T13:42:40ZVicky Riskvicky@isc.orgReq 2.1 - Leases listAs an administrator I want to browse a list of leases sorted by default from most recent to oldest, with sorting by any fields in the lease. (perhaps we can limit the fields to sort on once we see what fields are available, in order to m...As an administrator I want to browse a list of leases sorted by default from most recent to oldest, with sorting by any fields in the lease. (perhaps we can limit the fields to sort on once we see what fields are available, in order to make the sorting faster with indices)
I am often going to be looking for information on a particular device or lease, so I want to search based on MAC address or IP address (omnibox search).
1. [ ] I would like to see current leases as well as historical information in the same display, *if possible*. So, for example, if I enter a Mac address, I would want to see the current lease, and prior lease(s).
1. [ ] This will be a long, multi-page list so it would be convenient if I could filter based on some column contents (such as a partial MAC or IP address)
1. [ ] It is not necessary that this be updated in real time. A list of leases that is current as of say, 5 - 15 minutes ago is adequate. It is more important that the lookup is responsive.
1. [ ] It is not necessary that the screen is refreshed automatically while this panel is active on the display, it is ok to require that I push a button to 'refresh' the list. I would prefer that there is some data in the panel when I click on it, rather than having it blank and have to wait for it to populate.
1. [ ] This should not require querying all the dhcp servers - it should come from a central lease db in Stork. I am thinking it is updated by notification from the dhcp servers, after some initialization process where it gets all the current leases.
Details
* If we can also do a reverse DNS lookup on the IP address (this can be a process triggered by the admin, it doesn't have to happen magically) to popular a hostname field, that would be good too.
* The Lease list must also include which *server* owns the lease.
* I may need to save a lot of lease history. It should be possible for me to configure how many hours or days of history I want to preserve, and at some point we should have some kind of log rotation.
* [ ] Total active leases per server
* [ ] Total active leases per service (if there is more than 1 server in the service)
* [ ] # of New leases in the past (configurable period, start with 15 minutes)
* [ ] Leases per second (could be a toggle to display this or the # of new leases in the past period). both metrics could be based on just the most recent period.
* [ ] Historic register of each MAC address seen by the system, with leases assigned, dates, times. This may be exactly the same as the forensic log, so it is fine if we just link to the default location for the forensic log.
* [ ] Ability to browse current lease list. This does not have to be real time, and can/probably should be read-only. This should work for Memfile.
* [ ] Ability to browse current lease list. This does not have to be real time, and can/probably should be read-only. This should work for lease backend.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/46Req 2.3 - Kea Degradation Canary2023-07-25T13:39:26ZVicky Riskvicky@isc.orgReq 2.3 - Kea Degradation CanaryAs an administrator, I need a clear visual indicator when a Kea server/service is becoming overloaded. This alerts me that I need to take some action to prevent further degradation or failure of the service.
As an administrator, if this...As an administrator, I need a clear visual indicator when a Kea server/service is becoming overloaded. This alerts me that I need to take some action to prevent further degradation or failure of the service.
As an administrator, if this alarm occurs frequently I would like to be able to customize the level that constitutes an alarming value.
If there is a separate panel of alerts or logged events, I would expect to see these threshold-crossing alarms included there.
It would be ideal if this is available without requiring that I install Grafana or Prometheus, as I may have a small deployment of one or two servers.
possible use cases:
- increasing `secs` reported by clients
- users with external lease db, query to see how long it takes the db to do a select to see if the db itself, or the connection to the db is degraded
- any sort of statistics about the ring buffer, to alert when the buffer is growing excessively (this might be possible with the Stork agent but not with Kea)
- something that could help people detect conflicts when they are running multiple Keas with the same address range, using a shared lease db, because these can also lead to cascading performance issues
Details
* We will need to decide what metric or combination of metrics to base this alarm condition on.
* We discussed the fact that increasing delay in responding to client requests might be an indicator of a service degradation and a leading indicator of Kea server failure.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/48Req 2.4.2 - Pool Utilization alerts2022-11-16T11:54:51ZVicky Riskvicky@isc.orgReq 2.4.2 - Pool Utilization alertsAs a user I need to quickly be able to see the utilization % (per pool), and quickly identify pools that have very high utilization. This is often done with colors or other graphical indicators to make it easy to spot pools with high uti...As a user I need to quickly be able to see the utilization % (per pool), and quickly identify pools that have very high utilization. This is often done with colors or other graphical indicators to make it easy to spot pools with high utilization with a quick visual scan.
See req 2.4 (subnets list) and 2.4.1 (displaying pool utilization) for dependencies required for this.
1. [ ] I would like to have some sort of ALARM or alert when a pool passes a threshold of utilization so this can be displayed at the server level rather than the pool level.
1. [ ] I would like to be able to configure the threshold that constitutes an alert.
1. [ ] I would expect this alert to be prominent, and included in an alerts panel so that I will notice that I need to take action or clients may be denied services.
1. [ ] I would also like to identify pools with very low utilization, because I am going to have to make a configuration change to ensure address availability and I may want to identify a low-utilization pool for a shared network or something.
* [ ] This request for an alert refers to the Stork UI. If it is possible to also have an alarm raised in Prometheus and/or Grafana, that is highly desirable because those apps will have the ability to send these alarms to external services (email, slack, pager duty)
Details
* Default pool utilization% for alarm? 80%?
* If there is any way to extrapolate from recent usage patterns to estimate how long the pool will last (e.g. you have another 24 hours until this pool will likely be exhausted) that could be cool.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/53Req 4.4 - Clients refusing offers2022-11-16T11:54:51ZVicky Riskvicky@isc.orgReq 4.4 - Clients refusing offersAs administrator I want to be able to see per server which clients are declining offers by subnets. (this is a possible indication that there are duplicate ip addresses out there)
If we are fairly sure the reason is an IP address confl...As administrator I want to be able to see per server which clients are declining offers by subnets. (this is a possible indication that there are duplicate ip addresses out there)
If we are fairly sure the reason is an IP address conflict, it would be good to label this in the UI as IP address conflicts. Perhaps later on we would also like to see offers not responded to. This is an indication of a misconfiguration and is useful for troubleshooting.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/113Test kea application is inactive when subset of daemons is not running2023-09-11T08:42:49ZMatthijs Mekkingmatthijs@isc.orgTest kea application is inactive when subset of daemons is not runningAdd a test that would verify that the kea application is inactive when a subset of the related daemons is inactive.Add a test that would verify that the kea application is inactive when a subset of the related daemons is inactive.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/125Kea CA, rndc, Stork Agent and absolute paths2021-06-01T08:44:42ZMarcin SiodelskiKea CA, rndc, Stork Agent and absolute pathsKea detection requires absolute paths to the configuration files of the Control Agent. Starting the agent like this:
```
sudo sbin/kea-ctrl-agent -c etc/kea/kea-ctrl-agent.conf
```
would confuse the Stork Agent as it cannot find `etc/...Kea detection requires absolute paths to the configuration files of the Control Agent. Starting the agent like this:
```
sudo sbin/kea-ctrl-agent -c etc/kea/kea-ctrl-agent.conf
```
would confuse the Stork Agent as it cannot find `etc/kea/kea-ctrl-agent.conf` if it assumes that this an absolute path.
And similar for BIND 9.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/158DHCP active test tool2024-02-01T14:52:14ZVicky Riskvicky@isc.orgDHCP active test toolAs a DHCP system administrator, I would like to have a process running, that I can control via Stork, that is constantly requesting and renewing leases. This would approximate a 'real user' client.
- I would like to be able to set this ...As a DHCP system administrator, I would like to have a process running, that I can control via Stork, that is constantly requesting and renewing leases. This would approximate a 'real user' client.
- I would like to be able to set this up to run at regular intervals (suggested default = 5 minutes)
- I would like to set up this active test vs any one or all of my dhcp servers
- I would like to have this release the lease by default (so it is also exercising the address selection), or to have a configuration option to determine whether it is renewing or releasing/and getting a new address each time.
- I would like the results displayed in stork (success/failure
- I would like stork to display the time elapsed to get the lease (from discover to offer perhaps?). This might be best if the figure displayed is an average of the last say, 5 tries, something like that?
- I would like an alarm if this fails (once we have established what the mechanism is for raising an alarm, I would like this both in the Stork UI and via whatever mechanism Stork uses for issuing external alarms)
- I realize this is not going to be 'that much' like a real user if it is not on the same network as the users - that is ok. This is more of a 'canary' test to ensure the dhcp server process is working.
- As an administrator, I want this little test to also see that the dhcp server is reachable via the network. It would be ideal if the client process running the test does not have to be ON the same machine as the Kea server (so don't put it in the local agent). I realize that my Stork instance may be on a different network than my production clients (it probably will be) - but that is ok.
- As an administrator, I need to be able to run this test vs Kea DHCPv4 and Kea DHCPv6 servers (so, simulate both kinds of clients).
- For the basic test, all we are looking for is an address. At some point we may also ask for a prefix delegation and or options, but not in this feature request.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/198HA Failover event display - reasons2022-11-16T11:54:51ZVicky Riskvicky@isc.orgHA Failover event display - reasonsRequest from a Kea user
When viewing HA status, if the status is 'failed over', can we pull out the information about WHY it has failed over?
What if it fails and doesn’t ‘failover’
I interpret this to mean the following:
* [ ] Keep h...Request from a Kea user
When viewing HA status, if the status is 'failed over', can we pull out the information about WHY it has failed over?
What if it fails and doesn’t ‘failover’
I interpret this to mean the following:
* [ ] Keep history (at least 1 deep) of 'failover events' per HA pair and allow inspection.
* [ ] Capture failover reason and store that with the failover event (time stamp, what server, any other info we have).
* [ ] Capture uptime/date stamp from when the failover event was resolved and the pair resumed 'regular' operation. Not sure how this could or should be done, since it might be a popular choice in an active/passive set up to just let the new active server continue on, and restore the failed server as the new passive partner. It should be more straightforward with a LB set-up, because the failover is resolved when both partners are operating again.
* [ ] Display 'failover status' along side other metrics that demonstrate that the server is currently operational, such as 'New leases in last 15 minutes' so that it is possible to detect a situation in which the server hasn't officially failed over, but appears to not be working. I realize, this is like putting in a feature that won't ever work unless there is a bug, but it does increase user confidence.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/254Update templates for new Kea cumulative assigned statistics2022-11-16T11:54:50ZFrancis DupontUpdate templates for new Kea cumulative assigned statisticsKea 1.7.7 now has a new statistic that shows an ever increasing number of assigned addresses. The customer wanted to observe how many devices were provisioned in his network each day (he'll be resetting this every midnight).Kea 1.7.7 now has a new statistic that shows an ever increasing number of assigned addresses. The customer wanted to observe how many devices were provisioned in his network each day (he'll be resetting this every midnight).backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/321Sort reservations2022-11-16T11:54:50ZTomek MrugalskiSort reservationsReq 2.2 (#45) calls for being able to sort host reservations by IP address, which is one of the possible sorting scheme. Another sorting orders to consider:
- by subnet
- by hostnameReq 2.2 (#45) calls for being able to sort host reservations by IP address, which is one of the possible sorting scheme. Another sorting orders to consider:
- by subnet
- by hostnamebackloghttps://gitlab.isc.org/isc-projects/stork/-/issues/341Self-documenting stats (--list-stats switch for agent)2021-06-01T08:44:42ZTomek MrugalskiSelf-documenting stats (--list-stats switch for agent)@matthijs and @tomek discussed the need to have a good statistics list for BIND 9. One way to achieve that would be to implement a `--list-stats` kind of command line switch. It would export the list of currently supported stats by the a...@matthijs and @tomek discussed the need to have a good statistics list for BIND 9. One way to achieve that would be to implement a `--list-stats` kind of command line switch. It would export the list of currently supported stats by the agent, along with some reasonably easy to understand, non-cryptic, non-overly abbreviated description.
For bonus points, that list could be in a format that could be integreated into Stork ARM.
This would address a real issue many BIND 9 users are having: BIND 9 has lots of stats, but nobody really knows what they mean. We won't solve the problem instantly. Incremental steps are the way to go.
We want to have something similar for Kea. However, Kea stats are well documented, so there is less pressing need for this (which also makes the issue easier to solve for Kea, by employing well proven copy-paste programming techniques) ;)backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/414Partner down in Kea HA is reported awkwardly2022-11-16T11:54:51ZTomek MrugalskiPartner down in Kea HA is reported awkwardlyHere's what I did:
1. started demo as usual `rake docker_up`
1. added agent-kea-ha1, agent-kea-ha2
1. used traffic generator to stop kea-dhcp4 on agent-kea-ha2
1. After a while this was shown in the dashboard:
![stork-partner-down](/up...Here's what I did:
1. started demo as usual `rake docker_up`
1. added agent-kea-ha1, agent-kea-ha2
1. used traffic generator to stop kea-dhcp4 on agent-kea-ha2
1. After a while this was shown in the dashboard:
![stork-partner-down](/uploads/8c3fa57bbcb46f66136c670cb172648b/stork-partner-down.png)
The problem is "Detected failure w/HA" for agent-kea-ha2. It says "never".
This is not a major problem, more like confusion. The HA state correctly says "partner down", so there's indication. It's just one column contradicts another.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/415Basic access control Stork user -> Kea access2022-11-03T14:54:25ZVicky Riskvicky@isc.orgBasic access control Stork user -> Kea accessThe Kea administrator would like to be able to control who can access Kea. This includes individual Stork users, as Stork is just one channel for accessing Kea.
At the moment Stork is read-only, but it won't always be, and even control...The Kea administrator would like to be able to control who can access Kea. This includes individual Stork users, as Stork is just one channel for accessing Kea.
At the moment Stork is read-only, but it won't always be, and even controlling read-only access is important.
So it would be desirable if Stork would forward the userID of the authenticated Stork user to the Stork agent, and for this userID to be used to control the user's access to Kea, based on the privileges assigned to that user in Kea.
It is also as important as controlling access to log that access, with a time/date stamp, and what commands/api calls were executed. When there is write access (in the future) via Stork to make configuration changes, it will be particularly critical to identify who changed the configuration at what time.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/428HA reports incorrect IP address for remote peer2022-11-16T11:54:50ZTomek MrugalskiHA reports incorrect IP address for remote peerAs reported here https://gitlab.isc.org/isc-projects/stork/-/issues/426#note_169306 by @godfryd:
![image](/uploads/11c8c2e8ebb90feae6df7a4f05908065/image.png)
Kea HA status, in case of remote party, displays CA address (127.0.0.1) inst...As reported here https://gitlab.isc.org/isc-projects/stork/-/issues/426#note_169306 by @godfryd:
![image](/uploads/11c8c2e8ebb90feae6df7a4f05908065/image.png)
Kea HA status, in case of remote party, displays CA address (127.0.0.1) instead of Stork Agent address.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/462Show user who authenticated reconfigure in Kea2022-11-16T11:54:50ZTomek MrugalskiShow user who authenticated reconfigure in KeaThe goal of this ticket is to show the username who authorized reconfigure (or say that auth was disabled or not possible to determine, because it was a server restart or a signal was sent).
This is a follow-up to https://gitlab.isc.org...The goal of this ticket is to show the username who authorized reconfigure (or say that auth was disabled or not possible to determine, because it was a server restart or a signal was sent).
This is a follow-up to https://gitlab.isc.org/isc-projects/stork/-/issues/353#note_164884.
Once https://gitlab.isc.org/isc-projects/kea/-/issues/1590 is implemented, we should retrieve this information and extend the event that was introduced in #460.
For reconfig done due to signal received, we could say `root` did it, although this would be somewhat imprecise. The owner of the process can send the signal as well. Kea is usually ran as root, but it doesn't have to. So perhaps better would be say `signal` in such cases?backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/611Add new Kea config checkers2023-01-31T14:26:52ZMarcin SiodelskiAdd new Kea config checkersWe have gathered the following ideas for the new config checkers:
- [x] 1. if there is only one subnet in a shared network, suggest disabling shared network;
- [x] 2. if there is in-pool reservation enabled, but there are no in-pool res...We have gathered the following ideas for the new config checkers:
- [x] 1. if there is only one subnet in a shared network, suggest disabling shared network;
- [x] 2. if there is in-pool reservation enabled, but there are no in-pool reservations, suggest out-of-pool as better performant;
- [ ] 3. if there is custom option definition, but no option-data that uses it, suggest removing unused defintions;
- [x] 4. if there are subnets without any pools and no reservations, suggest removing unused subnets;
- [ ] 5. inspect HA configs of both servers and make sure there are no discrepancies;
- [ ] 6. it's possible to misconfigure ports in HA+MT configuration, so it's still connecting via CA rather than with DHCP directly. #611
- [ ] 7. if there is the Stork Agent configured to use Basic Auth, but the Kea CAs use HTTP only (@slawek)
- [ ] 8. you might check whether the customer has both the subnet commands hook and the config backend hook. a lot of people don't seem to understand these are sort of mutually exclusive (@vicky) #940
- [ ] 9. db backends configured and no secrets provided for the connection (@vicky)
- [ ] 10. if your pool equals the number of reservations, warn that devices not in the reserved list will not get an address (support) #941
- [ ] 11. HA ST but Kea MT - suggest to enable MT for HA #611
We could pick one, two or three and add them for the 1.0. Other to be postponed.
UPDATE: A nice list of ideas was discussed on [DHCP/support call on 2021-11-03](https://pad.isc.org/p/dhcp-call-2021-11-03#L119).backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/735Handle Unauthorized Kea message gracefully2024-01-15T15:38:59ZSlawek FigielHandle Unauthorized Kea message gracefullyStork produces a very verbose event detail message if Kea returns an Unauthorized error.
I think that details should be just "Unauthorized" without a trace log.
```
'json: cannot unmarshal object into Go value of ...Stork produces a very verbose event detail message if Kea returns an Unauthorized error.
I think that details should be just "Unauthorized" without a trace log.
```
'json: cannot unmarshal object into Go value of type '
'[]kea.VersionGetResponse\n'
'failed to parse responses from Kea: { "result": 401, '
'"text": "Unauthorized" }\n'
'isc.org/stork/appctrl/kea.UnmarshalResponseList\n'
'\t/app/backend/appctrl/kea/kea_command.go:134\n'
'isc.org/stork/server/agentcomm.(*connectedAgentsData).ForwardToKeaOverHTTP\n'
'\t/app/backend/server/agentcomm/grpcli.go:542\n'
'isc.org/stork/server/apps/kea.getStateFromCA\n'
'\t/app/backend/server/apps/kea/appkea.go:84\n'
'isc.org/stork/server/apps/kea.GetAppState\n'
'\t/app/backend/server/apps/kea/appkea.go:291\n'
'isc.org/stork/server/apps.GetMachineAndAppsState\n'
'\t/app/backend/server/apps/statepuller.go:272\n'
'isc.org/stork/server/restservice.(*RestAPI).UpdateMachine\n'
'\t/app/backend/server/restservice/machines.go:589\n'
'isc.org/stork/server/gen/restapi.HandlerAPI.func42\n'
'\t'
'/app/backend/server/gen/restapi/configure_stork.go:404\n'
'isc.org/stork/server/gen/restapi/operations/services.UpdateMachineHandlerFunc.Handle\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:19\n'
'isc.org/stork/server/gen/restapi/operations/services.(*UpdateMachine).ServeHTTP\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:69\n'
'github.com/go-openapi/runtime/middleware.NewOperationExecutor.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/operation.go:28\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/alexedwards/scs/v2.(*SessionManager).LoadAndSave.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/alexedwards/scs/v2@v2.2.0/session.go:136\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.NewRouter.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/router.go:76\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Redoc.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/redoc.go:72\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Spec.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/spec.go:46\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.fileServerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:103\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.agentInstallerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:207\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.sseMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:124\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.metricsMiddleware.func2\n'
'\t/app/backend/server/restservice/middleware.go:232\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.loggingMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:83\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'net/http.serverHandler.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2879\n'
'net/http.(*conn).serve\n'
'\t/app/tools/golang/go/src/net/http/server.go:1930\n'
'runtime.goexit\n'
'\t/app/tools/golang/go/src/runtime/asm_amd64.s:1581\n'
'failed to parse Kea response from '
'http://127.0.0.1:8000/, response was: '
'response:"\\x1f\\x8b\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xaaVP*J-.\\xcd)Q\\xb2R010\\xd4QP*I\\xad\\x00q\\x94B\\xf3\\x12KK2\\xf2\\x8b2\\xabRS\\x94\\x14j\\x01\\x01\\x00\\x00\\xff\\xffG\\x0c\\x12\\xed)\\x00\\x00\\x00" '
'status:{}\n'
'isc.org/stork/server/agentcomm.(*connectedAgentsData).ForwardToKeaOverHTTP\n'
'\t/app/backend/server/agentcomm/grpcli.go:544\n'
'isc.org/stork/server/apps/kea.getStateFromCA\n'
'\t/app/backend/server/apps/kea/appkea.go:84\n'
'isc.org/stork/server/apps/kea.GetAppState\n'
'\t/app/backend/server/apps/kea/appkea.go:291\n'
'isc.org/stork/server/apps.GetMachineAndAppsState\n'
'\t/app/backend/server/apps/statepuller.go:272\n'
'isc.org/stork/server/restservice.(*RestAPI).UpdateMachine\n'
'\t/app/backend/server/restservice/machines.go:589\n'
'isc.org/stork/server/gen/restapi.HandlerAPI.func42\n'
'\t'
'/app/backend/server/gen/restapi/configure_stork.go:404\n'
'isc.org/stork/server/gen/restapi/operations/services.UpdateMachineHandlerFunc.Handle\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:19\n'
'isc.org/stork/server/gen/restapi/operations/services.(*UpdateMachine).ServeHTTP\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:69\n'
'github.com/go-openapi/runtime/middleware.NewOperationExecutor.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/operation.go:28\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/alexedwards/scs/v2.(*SessionManager).LoadAndSave.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/alexedwards/scs/v2@v2.2.0/session.go:136\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.NewRouter.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/router.go:76\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Redoc.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/redoc.go:72\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Spec.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/spec.go:46\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.fileServerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:103\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.agentInstallerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:207\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.sseMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:124\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.metricsMiddleware.func2\n'
'\t/app/backend/server/restservice/middleware.go:232\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.loggingMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:83\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'net/http.serverHandler.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2879\n'
'net/http.(*conn).serve\n'
'\t/app/tools/golang/go/src/net/http/server.go:1930\n'
'runtime.goexit\n'
'\t/app/tools/golang/go/src/runtime/asm_amd64.s:1581\n'
'json: cannot unmarshal object into Go value of type '
'[]keactrl.HashedResponse\n'
'failed to parse responses from Kea: { "result": 401, '
'"text": "Unauthorized" }\n'
'isc.org/stork/appctrl/kea.UnmarshalResponseList\n'
'\t/app/backend/appctrl/kea/kea_command.go:134\n'
'isc.org/stork/server/agentcomm.(*connectedAgentsData).ForwardToKeaOverHTTP\n'
'\t/app/backend/server/agentcomm/grpcli.go:542\n'
'isc.org/stork/server/apps/kea.getStateFromCA\n'
'\t/app/backend/server/apps/kea/appkea.go:84\n'
'isc.org/stork/server/apps/kea.GetAppState\n'
'\t/app/backend/server/apps/kea/appkea.go:291\n'
'isc.org/stork/server/apps.GetMachineAndAppsState\n'
'\t/app/backend/server/apps/statepuller.go:272\n'
'isc.org/stork/server/restservice.(*RestAPI).UpdateMachine\n'
'\t/app/backend/server/restservice/machines.go:589\n'
'isc.org/stork/server/gen/restapi.HandlerAPI.func42\n'
'\t'
'/app/backend/server/gen/restapi/configure_stork.go:404\n'
'isc.org/stork/server/gen/restapi/operations/services.UpdateMachineHandlerFunc.Handle\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:19\n'
'isc.org/stork/server/gen/restapi/operations/services.(*UpdateMachine).ServeHTTP\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:69\n'
'github.com/go-openapi/runtime/middleware.NewOperationExecutor.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/operation.go:28\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/alexedwards/scs/v2.(*SessionManager).LoadAndSave.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/alexedwards/scs/v2@v2.2.0/session.go:136\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.NewRouter.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/router.go:76\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Redoc.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/redoc.go:72\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Spec.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/spec.go:46\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.fileServerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:103\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.agentInstallerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:207\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.sseMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:124\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.metricsMiddleware.func2\n'
'\t/app/backend/server/restservice/middleware.go:232\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.loggingMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:83\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'net/http.serverHandler.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2879\n'
'net/http.(*conn).serve\n'
'\t/app/tools/golang/go/src/net/http/server.go:1930\n'
'runtime.goexit\n'
'\t/app/tools/golang/go/src/runtime/asm_amd64.s:1581\n'
'failed to parse Kea response from '
'http://127.0.0.1:8000/, response was: '
'response:"\\x1f\\x8b\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xaaVP*J-.\\xcd)Q\\xb2R010\\xd4QP*I\\xad\\x00q\\x94B\\xf3\\x12KK2\\xf2\\x8b2\\xabRS\\x94\\x14j\\x01\\x01\\x00\\x00\\xff\\xffG\\x0c\\x12\\xed)\\x00\\x00\\x00" '
'status:{}\n'
'isc.org/stork/server/agentcomm.(*connectedAgentsData).ForwardToKeaOverHTTP\n'
'\t/app/backend/server/agentcomm/grpcli.go:544\n'
'isc.org/stork/server/apps/kea.getStateFromCA\n'
'\t/app/backend/server/apps/kea/appkea.go:84\n'
'isc.org/stork/server/apps/kea.GetAppState\n'
'\t/app/backend/server/apps/kea/appkea.go:291\n'
'isc.org/stork/server/apps.GetMachineAndAppsState\n'
'\t/app/backend/server/apps/statepuller.go:272\n'
'isc.org/stork/server/restservice.(*RestAPI).UpdateMachine\n'
'\t/app/backend/server/restservice/machines.go:589\n'
'isc.org/stork/server/gen/restapi.HandlerAPI.func42\n'
'\t'
'/app/backend/server/gen/restapi/configure_stork.go:404\n'
'isc.org/stork/server/gen/restapi/operations/services.UpdateMachineHandlerFunc.Handle\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:19\n'
'isc.org/stork/server/gen/restapi/operations/services.(*UpdateMachine).ServeHTTP\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:69\n'
'github.com/go-openapi/runtime/middleware.NewOperationExecutor.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/operation.go:28\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/alexedwards/scs/v2.(*SessionManager).LoadAndSave.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/alexedwards/scs/v2@v2.2.0/session.go:136\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.NewRouter.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/router.go:76\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Redoc.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/redoc.go:72\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Spec.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/spec.go:46\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.fileServerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:103\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.agentInstallerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:207\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.sseMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:124\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.metricsMiddleware.func2\n'
'\t/app/backend/server/restservice/middleware.go:232\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.loggingMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:83\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'net/http.serverHandler.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2879\n'
'net/http.(*conn).serve\n'
'\t/app/tools/golang/go/src/net/http/server.go:1930\n'
'runtime.goexit\n'
'\t/app/tools/golang/go/src/runtime/asm_amd64.s:1581',
```backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/784Generate IPv6 traffic in system tests2022-10-25T13:23:08ZSlawek FigielGenerate IPv6 traffic in system testsThere is a problem with starting the Kea DHCPv6 daemon.
It cannot bind the sockets. I didn't find any way to check if the binding would be available. The Kea has implemented a solution to retry the binding in kea#1716, but there is no po...There is a problem with starting the Kea DHCPv6 daemon.
It cannot bind the sockets. I didn't find any way to check if the binding would be available. The Kea has implemented a solution to retry the binding in kea#1716, but there is no possibility to check if the binding has already finished successfully. I opened kea#2434 to add an opportunity to inspect the binding status.
We can use the interface statuses to wait until the Kea is ready to allocate the leases.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/800Host reservations migration from Kea config to the host database2024-03-05T12:16:14ZMarcin SiodelskiHost reservations migration from Kea config to the host databaseStork supports managing host reservations in the host database. It doesn't support managing host reservations specified in the Kea config file. Some users may wish to migrate their host reservations from the config file to a database for...Stork supports managing host reservations in the host database. It doesn't support managing host reservations specified in the Kea config file. Some users may wish to migrate their host reservations from the config file to a database for scalability reasons and to be able to manage them from Stork. This ticket proposes to add migration capability in Stork so the users can get their host reservations from the config file, move them to the Kea host database and remove from the config file.1.16Slawek FigielSlawek Figielhttps://gitlab.isc.org/isc-projects/stork/-/issues/862Pre-release CI pipelines2022-12-13T12:58:56ZSlawek FigielPre-release CI pipelinesI'm introducing in #817 the possibility of running system tests with different Kea and Bind9 versions.
Our standard system test pipeline now uses Kea 2.0 and Bind9 9.18. But we can prepare additional CI tasks/pipelines to test other conf...I'm introducing in #817 the possibility of running system tests with different Kea and Bind9 versions.
Our standard system test pipeline now uses Kea 2.0 and Bind9 9.18. But we can prepare additional CI tasks/pipelines to test other configurations.
Unfortunately, the system tests pipeline executes quite long ~15 minutes. It is inconvenient to run it many times for every pushed commit. But we can run the additional CI pipelines only for pre-releases merge requests, i.e., merge requests that pump the Stork version. They are usually merged after code freeze but a day before sanity checks. We should have enough time to check the bugs found.
I think the pre-release pipelines may also contain the installation and de-installation tests.
There should be a possibility to run the pipelines manually on demand.backlog